From: Asterisk Development Team Date: Fri, 21 Jan 2022 17:26:53 +0000 (-0500) Subject: Update for certified/18.9-cert1-rc1 X-Git-Tag: certified/18.9-cert1-rc1^0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b211cb932ac28e8cfdea70eff24b61c96f47a393;p=thirdparty%2Fasterisk.git Update for certified/18.9-cert1-rc1 --- diff --git a/.version b/.version index a4ea6ec612..84b967801b 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -certified/18.9 +certified/18.9-cert1-rc1 \ No newline at end of file diff --git a/ChangeLog b/ChangeLog index 1dd0512f29..cb26d4ca0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,72 @@ -2021-12-09 16:44 +0000 Asterisk Development Team +2022-01-21 17:26 +0000 Asterisk Development Team - * asterisk 18.9.0 Released. + * asterisk certified/18.9-cert1-rc1 Released. -2021-12-02 18:26 +0000 Asterisk Development Team +2022-01-14 13:56 +0000 [fefe1cac3a] Mike Bradeen - * asterisk 18.9.0-rc1 Released. + * Asterisk Certified 18.9 Preparation + + * Updated .gitreview default branch to certified/18.9 + * Updated .version to certified/18.9 + * Set all extended support modules to be disabled by default + * fixed MODULEINFO order introduced by default script on wiki + + Change-Id: Id12804325c31b1112b6c559fa97c8a6401c051b3 + +2022-01-12 13:20 +0000 [059eca1546] Sean Bright + + * say.c: Prevent erroneous failures with 'say' family of functions. + + A regression was introduced in ASTERISK~29531 that caused 'say' + functions to fail with file lists that would previously have + succeeded. This caused affected channels to hang up where previously + they would have continued. + + We now explicitly check for the empty string to restore the previous + behavior. + + ASTERISK-29859 #close + + Change-Id: Ia2e5769868e2792313c2d7c07996efe009c6f8d5 + (cherry picked from commit 3fd47840c93bd834cda82562f121eec5883b5a23) + +2021-12-23 15:57 +0000 [5274bfdc07] Sean Bright + + * say.c: Honor requests for DTMF interruption. + + SayAlpha, SayAlphaCase, SayDigits, SayMoney, SayNumber, SayOrdinal, + and SayPhonetic all claim to allow DTMF interruption if the + SAY_DTMF_INTERRUPT channel variable is set to a truthy value, but we + are failing to break out of a given 'say' application if DTMF actually + occurs. + + ASTERISK-29816 #close + + Change-Id: I6a96e0130560831d2cb45164919862b9bcb6287e + (cherry picked from commit 4fe94bab097d01e7524e4462c005e5a57f0ad1f4) + +2021-12-27 07:28 +0000 [c1129fdd8c] Joshua C. Colp + + * bridge: Unlock channel during Local peer check. + + It's not safe to keep the channel locked while locking + the peer Local channel, as it can result in a deadlock. + + This change unlocks it during this time but keeps the + bridge locked to ensure nothing changes about the bridge. + + ASTERISK-29821 + + Change-Id: Ib68eb7037e5a479bcc2aceee77337cdde1fbdde6 + (cherry picked from commit d83a46869ed5e13d0ed5a898bac8faed61d91203) + +2021-12-09 10:44 +0000 [85601849c6] Asterisk Development Team + + * Update for 18.9.0 + +2021-12-02 12:26 +0000 [82637aaa18] Asterisk Development Team + + * Update for 18.9.0-rc1 2021-12-02 11:59 +0000 [868d2d5e53] Asterisk Development Team @@ -1458,10 +1520,6 @@ Change-Id: Iaf2f7a16ea5a7eee6375319347e4b40b8e7b10e3 -2021-10-13 10:26 +0000 Asterisk Development Team - - * asterisk 18.8.0-rc1 Released. - 2021-10-13 05:21 +0000 [9063680148] Asterisk Development Team * Update CHANGES and UPGRADE.txt for 18.8.0 @@ -1689,10 +1747,6 @@ Change-Id: Ib18d4392d51ac80ca5481dabf6e498a4e3e49e6f -2021-09-16 13:43 +0000 Asterisk Development Team - - * asterisk 18.7.0-rc1 Released. - 2021-09-16 08:39 +0000 [00cf86dafe] Asterisk Development Team * Update CHANGES and UPGRADE.txt for 18.7.0 @@ -2336,10 +2390,6 @@ Change-Id: I8f6ddc7cc3b15da30803be3b1cf68e2ba0fbce91 -2021-08-05 14:28 +0000 Asterisk Development Team - - * asterisk 18.6.0-rc1 Released. - 2021-06-28 08:48 +0000 [adf707f2ae] Naveen Albert * cdr_adaptive_odbc: Prevent filter warnings @@ -2738,10 +2788,6 @@ Change-Id: Icde805a819399d5123b688e1ed1d2bcd9d5b0f75 -2021-06-17 14:44 +0000 Asterisk Development Team - - * asterisk 18.5.0-rc1 Released. - 2021-06-17 09:39 +0000 [0747162d4f] Asterisk Development Team * Update CHANGES and UPGRADE.txt for 18.5.0 @@ -3389,10 +3435,6 @@ Change-Id: Ie70d657d580d9a1f2877e25a6ef161c5ad761cf7 -2021-04-29 15:32 +0000 Asterisk Development Team - - * asterisk 18.4.0-rc1 Released. - 2021-04-29 10:25 +0000 [1949d828b7] Asterisk Development Team * Update CHANGES and UPGRADE.txt for 18.4.0 @@ -3795,10 +3837,6 @@ Change-Id: Ifbfd5c700049cf320a3e45351ac65dd89bc99d90 -2021-03-11 17:23 +0000 Asterisk Development Team - - * asterisk 18.3.0-rc1 Released. - 2021-03-11 10:33 +0000 [263f906af4] Kevin Harwell * manager: Increase the non breaking AMI version number @@ -4682,10 +4720,6 @@ Change-Id: Ia51be086a0708be905e73d1f433572c49c7e38f8 -2021-01-14 16:26 +0000 Asterisk Development Team - - * asterisk 18.2.0-rc1 Released. - 2021-01-14 09:56 +0000 [89fea9bafe] Asterisk Development Team * Update CHANGES and UPGRADE.txt for 18.2.0 @@ -5237,10 +5271,6 @@ Change-Id: I78d4dc36728c2d7bc187b97d82673fc77f2bcf41 -2020-11-12 12:36 +0000 Asterisk Development Team - - * asterisk 18.1.0-rc1 Released. - 2020-11-12 05:50 +0000 [98d1537c1e] Asterisk Development Team * Update CHANGES and UPGRADE.txt for 18.1.0 @@ -5664,7 +5694,7 @@ Change-Id: I1e0c1e324598a437932c0b7836bcb626aba8e287 -2020-09-28 07:42 +0000 [b3b6b5e9f7] lvl +2020-09-28 07:42 +0000 [b3b6b5e9f7] laszlovl * res_musiconhold: Load all realtime entries, not just the first @@ -5997,10 +6027,6 @@ Change-Id: Ic48715c0c041615d17d286790ae3e8c61bb28814 -2020-09-09 15:43 +0000 Asterisk Development Team - - * asterisk 18.0.0-rc1 Released. - 2020-09-09 09:08 +0000 [f589985840] Asterisk Development Team * Update CHANGES and UPGRADE.txt for 18.0.0 @@ -8947,7 +8973,7 @@ Change-Id: I1b19aea711488cb1ecd63843cddce05010e39376 -2020-03-03 10:57 +0000 [d1a2ff0aaf] lvl +2020-03-03 10:57 +0000 [d1a2ff0aaf] laszlovl * res_pjsip_refer: ensure refer progress is still sent after Proceeding() @@ -10763,7 +10789,7 @@ Change-Id: Ibe27df4971fd4c82cc6850020bce4a8b2692c996 -2019-11-07 11:05 +0000 [772b59034f] lvl +2019-11-07 11:05 +0000 [772b59034f] laszlovl * app_senddtmf: Add receive mode to AMI Action PlayDTMF @@ -11199,7 +11225,7 @@ Change-Id: I3ff4ca983d8e753fe2971f3439bd154705693c41 -2019-10-01 06:29 +0000 [c03f50c1c8] lvl +2019-10-01 06:29 +0000 [c03f50c1c8] laszlovl * chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel @@ -12203,273 +12229,6 @@ Change-Id: Ie0fb9316f08a321434f3f85aecf3c7d2ede8b956 -2019-08-28 15:58 +0000 Asterisk Development Team - - * asterisk 17.0.0-rc1 Released. - -2019-08-22 13:19 +0000 [c961d3d9ad] Alexei Gradinari - - * Fix misname 'res_external_mwi' to 'res_mwi_external' in comments. - - Change-Id: Ic784be8500e5cb75dcb34bae9f03cfd93b6b34fb - -2019-08-21 10:58 +0000 [64a2eeef89] Dan Cropp - - * pjproject: Configurable setting for cnonce to include hyphens or not - - NEC SIP Station interface with authenticated registration only supports cnonce - up to 32 characters. In Linux, PJSIP would generate 36 character cnonce - which included hyphens. Teluu developed this patch adding a compile time - setting to default to not include the hyphens. They felt it best to still - generate the UUID and strip the hyphens. - They have indicated it will be part of PJSIP 2.10. - - ASTERISK-28509 - Reported-by: Dan Cropp - - Change-Id: Ibdfcf845d4f8c0a14df09fd983b11f2d72c5f470 - -2019-08-20 13:04 +0000 [fe6551f69b] George Joseph - - * res_ari.c: Prefer exact handler match over wildcard - - Given the following request path and 2 handler paths... - Request: /channels/externalMedia - Handler: /channels/{channelId} "wildcard" - Handler: /channels/externalmedia "non-wildcard" - - ...if /channels/externalMedia was registered as a handler after - /channels/{channelId} as shown above, the request would automatically - match the wildcard handler and attempt to parse "externalMedia" into - the channelId variable which isn't what was intended. It'd work - if the non-wildard entry was defined in rest-api/api-docs/channels.json - before the wildcard entry but that makes the json files - order-dependent which isn't a good thing. - - To combat this issue, the search loop saves any wildcard match but - continues looking for exact matches at the same level. If it finds - one, it's used. If it hasn't found an exact match at the end of - the current level, the wildcard is used. Regardless, after - searching the current level, the wildcard is cleared so it won't - accidentally match for a different object or a higher level. - - BTW, it's currently not possible for more than 1 wildcard entry - to be defined for a level. For instance, there couldn't be: - Handler: /channels/{channelId} - Handler: /channels/{channelName} - We wouldn't know which one to match. - - Change-Id: I574aa3cbe4249c92c30f74b9b40e750e9002f925 - -2019-08-14 14:52 +0000 [7591e0f3a4] Alexei Gradinari - - * app_voicemail/IMAP: check mailstream not NULL in leave_voicemail - - The function leave_voicemail checks if expungeonhangup is set, - but does not check if IMAP stream is closed, - so it could call imap function with NULL stream. - This leads to segfault. - - ASTERISK-28505 #close - - Change-Id: Ib66c57c1f1ba97774e447b36349198e2626a8d7c - -2019-08-09 05:51 +0000 [fa7883c492] Sean Bright - - * menuselect: Fix curses build on Gentoo Linux - - Because keypad() is exported by libtinfo, it needs to be explicitly - added to the linker options. - - ASTERISK-28487 #close - - Change-Id: I6c2ad5b95f422c263d078b5c0e84c111807dffc6 - -2019-08-07 17:54 +0000 [a92f9f595b] Kevin Harwell - - * srtp: Fix possible race condition, and add NULL checks - - Somehow it's possible for the srtp session object to be NULL even though the - Asterisk srtp object itself is valid. When this happened it would cause a - crash down in the srtp code when attempting to protect or unprotect data. - - After looking at the code there is at least one spot that makes this situation - possible. If Asterisk fails to unprotect the data, and after several retries - it still can't then the srtp->session gets freed, and set to NULL while still - leaving the Asterisk srtp object around. However, according to the original - issue reporter this does not appear to be their situation since they found - no errors logged stating the above happened (which Asterisk does for that - situation). - - An issue was found however, where a possible race condition could occur between - the pjsip incoming negotiation, and the receiving of RTP packets. Both places - could attempt to create/setup srtp for the same rtp instance at the same time. - This potentially could be the cause of the problem as well. - - Given the above this patch adds locking around srtp setup for a given rtp, or - rtcp instance. NULL checks for the session have also been added within the - protect and unprotect functions as a precaution. These checks should at least - stop Asterisk from crashing if it gets in this situation again. - - This patch also fixes one other issue noticed during investigation. When doing - a replace the old object was freed before creating the replacement. If the new - replacement object failed to create then the rtp/rtcp instance would now point - to freed srtp data which could potentially cause a crash as well when the next - attempt to reference it was made. This is now fixed so the old srtp object is - kept upon replacement failure. - - Lastly, more logging has been added to help diagnose future issues. - - ASTERISK-28472 - - Change-Id: I240e11cbb1e9ea8083d59d50db069891228fe5cc - -2019-08-08 12:10 +0000 [b083537d84] George Joseph - - * CI: Escape backslashes in printenv/sort/tr - - Change-Id: I52be64c8f6af2bbe15148a856d1f10cb113e1e94 - (cherry picked from commit c6558e09af3ac15b31377de735cc96d8df0275a7) - -2019-08-08 07:12 +0000 [c4b6e3c1af] George Joseph - - * CI: Add "throttle" label and "skip_gate" capability - - To make throttling by label fully active, the "throttle" option - has to be specified with a specific label. - - You can now specify "skip_gate" in the Gerrit comments when you - do a +2 code review to tell Jenkins not to actually run the - gate. You'd do this if you plan to manually merge the change. - - Also updated the "printenv" debug output to better sort multi-line - comments. - - Change-Id: I4c0b1085acec4805f2ca207eebac50aad81f27e2 - -2019-08-05 07:23 +0000 [37a49cc6d3] Joshua Colp - - * cdr / cel: Use event time at event creation instead of processing. - - When updating times on CDR or CEL records using the time at which - it is done can result in times being incorrect if the system is - heavily loaded and stasis message processing is delayed. - - This change instead makes it so CDR and CEL use the time at which - the stasis messages that drive the systems are created. This allows - them to be backed up while still producing correct records. - - ASTERISK-28498 - - Change-Id: I6829227e67aefa318efe5e183a94d4a1b4e8500a - -2019-08-06 10:40 +0000 [6d610a6b56] George Joseph - - * CI: Make node labels job-specific - - Originally, the eligible nodes for a job were labelled only by - "swdev-docker". So basically any node could run any job. We had - found that allowing a node to run more than 1 gate at a time was - problematic so we limited the nodes to processing 1 job at a time. - With the creation of the Asterisk 17 branches however, we now have - so many active branches that getting checks and gates through in - a timely manner is problematic when a node can run only 1 job - at a time. - - Now the nodes are also labelled by the job type they can run. - For instance: "asterisk-check", "asterisk-gate", etc. With the - "Throttle Concurrent Builds" plugin, we can now allow a node to - run more than 1 job BUT throttle by job type. For instance: - Allow 2 jobs but only 1 asterisk-gate at a time. - Now a node can run 2 checks or 1 check and 1 gate or 1 gate but - not 2 gates at a time. - - Change-Id: I2032bf6afbcec5c341d9b852214c0c812d3d6db5 - -2019-08-01 16:22 +0000 [66b607db88] Kevin Harwell - - * various modules: json integer overflow - - There were still a few places in the code that could overflow when "packing" - a json object with a value outside the base type integer's range. For instance: - - unsigned int value = INT_MAX + 1 - ast_json_pack("{s: i}", value); - - would result in a negative number being "packed". In those situations this patch - alters those values to a ast_json_int_t, which widens the value up to a long or - long long. - - ASTERISK-28480 - - Change-Id: Ied530780d83e6f1772adba0e28d8938ef30c49a1 - -2019-08-06 08:20 +0000 [40e3bdc50c] Sean Bright - - * app_voicemail: Remove extra menuselect build options - - You now select voicemail backends like normal dialplan applications, so - there is no longer a need for their own menuselect category. - - Reported by snuff-work in #asterisk-dev - - Change-Id: Idfa4c9c8349726074318a9e6b68d24c374521005 - -2019-08-01 05:07 +0000 [02826c20f5] Joshua Colp - - * res_pjsip: Fix multiple of the same contact in "pjsip show contacts". - - The code for gathering contacts could result in the same contact - being retrieved and added to the list multiple times. The container - which stores the contacts to display will now only allow a contact - to be added to it once instead of multiple times. - - ASTERISK-28228 - - Change-Id: I805185cfcec03340f57d2b9e6cc43c49401812df - -2019-07-17 07:35 +0000 [6af55244a7] Torrey Searle - - * main/udptl.c: correctly handle udptl sequence wrap around - - incorrect handling of UDPTL squence number wrap arounds causes - loss of packets every time the wrap around occurs - - ASTERISK-28483 #close - - Change-Id: I33caeb2bf13c574a1ebb81714b58907091d64234 - -2019-07-29 11:46 +0000 [8b3fd0f564] Asterisk Development Team - - * Update CHANGES and UPGRADE.txt for 17.0.0 - -2019-07-29 11:10 +0000 [7b3a612d69] George Joseph - - * doc: Add "master-only" flag back to the CHANGES and UPGRADE files - - In order to run the documentation scripts the flags needs to be - added back to the staging files. - - Change-Id: Ia10a153c50c970cfa1e85815208dfaddb3f2ccd4 - -2019-07-29 08:31 +0000 [2938679ff2] George Joseph - - * loader.c: Fix possible SEGV when a module fails to register - - When a module fails to register itself (usually a coding error - in the module), dlerror() can return NULL. We weren't checking - for that in load_dlopen() before trying to strdup the error message - so a SEGV was thrown. dlerror() is now surrounded with an S_OR - so we don't SEGV. - - Change-Id: Ie0fb9316f08a321434f3f85aecf3c7d2ede8b956 - -2019-07-26 13:06 +0000 [80d8dce6af] George Joseph - - * Prepare Asterisk 17 Branch - - Change-Id: Idb79a69646d2511e7bf1573b9b0322cc22ea54e8 - 2019-07-24 15:15 +0000 [03813e51f0] George Joseph * CI: Don't enable non-core modules in Certified branches @@ -15981,7 +15740,7 @@ Change-Id: I5b82be3a75d702cf1933d8d1417f44aa10ad1029 -2018-10-22 07:47 +0000 [140702ba2d] lvl +2018-10-22 07:47 +0000 [140702ba2d] laszlovl * app_queue: Revert broken queue channel reference patch @@ -17940,7 +17699,7 @@ Change-Id: I8df66a7007f807840414bb348511a8c14c05a9fc -2018-09-03 06:50 +0000 [012272a114] lvl +2018-09-03 06:50 +0000 [012272a114] laszlovl * manager: Set AMI event "Newexten" to the EVENT_FLAG_DIALPLAN class @@ -18007,7 +17766,7 @@ Change-Id: Ieadada07b068a7aa426e8763f1b73a18e1ac34a9 -2018-09-03 06:28 +0000 [1174759f0c] lvl +2018-09-03 06:28 +0000 [1174759f0c] laszlovl * app_queue: Update realtime queuemembers after wait_a_bit(), not before @@ -19324,59524 +19083,120541 @@ Change-Id: I4210e53f8022a2a68c7653595bdd13fbebac41ee -2018-08-08 16:02 +0000 Asterisk Development Team +2021-10-21 12:54 +0000 Asterisk Development Team - * asterisk 16.0.0-rc1 Released. + * asterisk certified/16.8-cert12 Released. -2018-07-27 13:23 +0000 [d3789cc420] George Joseph +2021-10-19 11:35 +0000 [b433fcc58c] 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". + * BuildSystem: Check for alternate openssl packages - Change-Id: Iedec4e7390b3e821987681da24d0298632b9873d + OpenSSL is one of those packages that often have alternatives + with later versions. For instance, CentOS/EL 7 has an + openssl package at version 1.0.2 but there's an openssl11 + package from the epel repository that has 1.1.1. This gets + installed to /usr/include/openssl11 and /usr/lib64/openssl11. + Unfortunately, the existing --with-ssl and --with-crypto + ./configure options expect to point to a source tree and + don't work in this situation. Also unfortunately, the + checks in ./configure don't use pkg-config. -2018-07-27 10:46 +0000 [0028db48cc] Joshua Colp + In order to make this work with the existing situation, you'd + have to run... + ./configure --with-ssl=/usr/lib64/openssl11 \ + --with-crypto=/usr/lib64/openssl11 \ + CFLAGS=-I/usr/include/openssl11 - * res_pjsip_pubsub: Treat "prune_on_boot" as a yes / no. + BUT... those options don't get passed down to bundled pjproject + so when you run make, you have to include the CFLAGS again + which is a big pain. - 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". + Oh... To make matters worse, although you can specify + PJPROJECT_CONFIGURE_OPTS on the ./configure command line, + they don't get saved so if you do a make clean, which will + force a re-configure of bundled pjproject, those options + don't get used. - Change-Id: Ic8b9211b36babefe78f70def6828a135a6ae7ab6 + So... -2018-07-26 18:54 +0000 [24e4e45177] George Joseph + * In configure.ac... Since pkg-config is installed by install_prereq + anyway, we now use it to check for the system openssl >= 1.1.0. + If that works, great. If not, we check for the openssl11 + package. If that works, great. If not, we fall back to just + checking for any openssl. If pkg-config isn't installed for some + reason, or --with-ssl= or --with-crypto= were specified + on the ./configure command line, we fall back to the existing + logic that uses AST_EXT_LIB_CHECK(). - * CI: Fix placement of job summary statments + * The whole OpenSSL check process has been moved up before + THIRD_PARTY_CONFIGURE(), which does the initial pjproject + bundled configure, is run. This way the results of the above + checks, which may result in new include or library directories, + is included. - Change-Id: Iace19e718f4e8fb48eb7dc9f98af53b115cc45f3 + * Although not strictly needed for openssl, We now save the value of + PJPROJECT_CONFIGURE_OPTS in the makeopts file so it can be used + again if a re-configure is triggered. -2018-07-26 12:52 +0000 [c384a4cdcd] Corey Farrell + ASTERISK-29693 - * loader: Process dependencies for built-in modules. + Change-Id: I341ab7603e6b156aa15a66f43675ac5029d5fbde - 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. +2021-08-12 16:43 +0000 Asterisk Development Team - 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. + * asterisk certified/16.8-cert11 Released. - Change-Id: I482ed6bca6c1064b05bb538d7861cd7a4f02d9fc +2021-02-24 07:04 +0000 [7b43f9f3e9] Joshua C. Colp -2018-07-26 11:34 +0000 [9f1041c4d0] George Joseph + * res_pjsip_nat: Don't rewrite Contact on REGISTER responses. - * CI: Add docker info to job summary + When sending a SIP response to an incoming REGISTER request + we don't want to change the Contact header as it will + contain the Contacts registered to the AOR and not our own + Contact URI. - Change-Id: I45d52005a9b692ad303c11792f226ace1e449901 + ASTERISK-29235 -2018-07-25 15:33 +0000 [c5761ee58e] Kevin Harwell + Change-Id: I35a0723545281dd01fcd5cae497baab58720478c + (cherry picked from commit d65041ebea0d54b5306419866a08e6e171fb444d) - * json.c: improve ast_json_to_ast_variables performance +2021-07-22 22:12 +0000 Asterisk Development Team - 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. + * asterisk certified/16.8-cert10 Released. - This patch makes it so the list is no longer traversed for each new ast - variable being appended. +2021-07-22 17:00 +0000 [0964440c7d] Asterisk Development Team - Change-Id: I8bf496a1fc449485150d6db36bfc0354934a3977 + * Update CHANGES and UPGRADE.txt for certified/16.8-cert10 +2021-05-10 17:59 +0000 [7de850f476] Kevin Harwell -2018-07-25 10:20 +0000 [cfd61ba237] George Joseph + * AST-2021-008 - chan_iax2: remote crash on unsupported media format - * CI: Explicitly pass BRANCH_NAME to buildAsterisk and installAsterisk + If chan_iax2 received a packet with an unsupported media format, for + example vp9, then it would set the frame's format to NULL. This could + then result in a crash later when an attempt was made to access the + format. - Change-Id: I652f4a0ea5107c778e27a78bccb67b18b0c4e087 + This patch makes it so chan_iax2 now ignores/drops frames received + with unsupported media format types. -2018-07-24 13:29 +0000 [a81870110a] George Joseph + ASTERISK-29392 #close - * CI: Add options to initialize and cleanup database to runTestsuite.sh + Change-Id: Ifa869a90dafe33eed8fd9463574fe6f1c0ad3eb1 - Change-Id: I352333233bab5377723bf37d490ba84fc55bc853 +2021-06-16 11:27 +0000 [e7bf2dff2c] Kevin Harwell -2018-07-25 09:07 +0000 [4a01be5c80] Corey Farrell + * AST-2021-009 - pjproject-bundled: Avoid crash during handshake for TLS - * CI: Do not `mkdir 2`. + If an SSL socket parent/listener was destroyed during the handshake, + depending on timing, it was possible for the handling callback to + attempt access of it after the fact thus causing a crash. - Change-Id: Ib7377d26a6c98b38bad463f47c84f1875ac84eb7 + ASTERISK-29415 #close -2018-07-25 07:34 +0000 [e6f2bae0cc] Corey Farrell + Change-Id: I105dacdcd130ea7fdd4cf2010ccf35b5eaf1432d - * Build System: Silence build of bundled jansson. +2021-06-22 15:25 +0000 Asterisk Development Team - Change-Id: I7392c79c0173057f5378010bf1fe65e300e8fc56 + * asterisk certified/16.8-cert9 Released. -2018-07-25 07:13 +0000 [f1156f0cfd] George Joseph +2021-06-21 06:31 +0000 [a3481f07f2] Joshua C. Colp - * CI: RefDebug: Fix reference to testsuite URL + * core: Don't play silence for Busy() and Congestion() applications. - Change-Id: I0ee41d95a87f0d97b01f2757012b846bcfe6443d + When using the Busy() and Congestion() applications the + function ast_safe_sleep is used by wait_for_hangup to safely + wait on the channel. This function may send silence if Asterisk + is configured to do so using the transmit_silence option. -2018-07-24 14:28 +0000 [7e99090c9d] Corey Farrell + In a scenario where an answered channel dials a Local channel + either directly or through call forwarding and the Busy() + or Congestion() dialplan applications were executed with the + transmit_silence option enabled the busy or congestion + tone would not be heard. - * Build System: Fix bundled jansson install. + This is because inband generation of tones (such as busy + and congestion) is stopped when other audio is sent to + the channel they are being played to. In the given + scenario the transmit_silence option would result in + silence being sent to the channel, thus stopping the + inband generation. - 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. + This change adds a variant of ast_safe_sleep which can be + used when silence should not be played to the channel. The + wait_for_hangup function has been updated to use this + resulting in the tones being generated as expected. - Change-Id: I7643cc3d39af9feba8fc0da676b646efc5f8b3bb + ASTERISK-29485 -2018-07-24 10:43 +0000 [b32adca9b4] Corey Farrell + Change-Id: I066bfc987a3ad6f0ccc88e0af4cd63f6a4729133 - * CI: Use bundled jansson if needed. +2021-03-25 17:43 +0000 Asterisk Development Team - Use pkg-config to determine if jansson is at least 2.11, enabled bundled - version otherwise. + * asterisk certified/16.8-cert8 Released. - Change-Id: Ib555a8b72ff6f6925f9280ef035caa0b91ca4bd2 +2021-03-25 12:40 +0000 [8616ea0504] Asterisk Development Team -2018-07-24 05:39 +0000 [e22cbe7c17] George Joseph + * Update CHANGES and UPGRADE.txt for certified/16.8-cert6 +2021-03-18 11:14 +0000 [a41edfb46f] George Joseph - * CI: Add --privileged flag to docker options + * res_pjsip_session: Make reschedule_reinvite check for NULL topologies - Change-Id: If92d55f15306e55dd7091ac3c47b13ebbbb03488 + When the check for equal topologies was added to reschedule_reinvite() + it was assumed that both the pending and active media states would + actually have non-NULL topologies. We since discovered this isn't + the case. -2018-07-24 05:22 +0000 [3509ada06f] George Joseph + We now only test for equal topologies if both media states have + non-NULL topologies. The logic had to be rearranged a bit to make + sure that we cloned the media states if their topologies were + non-NULL but weren't equal. - * CI: Set correct user:group when publishing docs + ASTERISK-29215 - Change-Id: Ibabeb9ac730d9755cf54318d0da74771c939b86b + Change-Id: I61313cca7fc571144338aac826091791b87b6e17 -2018-07-23 12:21 +0000 [008d304be2] Richard Mudgett +2021-03-17 10:28 +0000 [8713492758] Joshua C. Colp - * core: AST_DEVMODE no longer affects ABI. + * res_rtp_asterisk: Force resync on SSRC change. - Remove AST_DEVMODE from the AST_BUILDOPTS list and the AST_BUILDOPTS_SUM - calculation as it no longer affects API/ABI compatibility. + When an SSRC change occurs the timestamps are likely + to change as well. As a result we need to reset the + timestamp mapping done in the calc_rxstamp function + so that they map properly from timestamp to real + time. - Change-Id: Id5bd6dfade173a53b3a49f715586b86e3fb24acb + This previously occurred but due to packet + retransmission support the explicit setting + of the marker bit was not effective. -2018-07-23 10:23 +0000 [5dbbc68311] Corey Farrell + ASTERISK-29352 - * CI: Split --test-command argument. + Change-Id: I2d4c8f93ea24abc1030196706de2d70facf05a5a - The --test-command argument has now been split, unit tests now use - `--unittest-command` and the testsuite uses --testsuite-command. +2021-03-09 18:35 +0000 [d1057ac427] Joshua C. Colp - This will make it easier to create a script which run everything by - forwarding the same arguments to all CI scripts. + * channel: Fix crash in suppress API. - Change-Id: Ia54aa4848eaffbdf13175fcda40fc0b23080ad71 + There exists an inconsistency with framehook usage + such that it is only on reads that the frame should + be freed, not on writes as well. -2018-07-21 11:58 +0000 [2a13a4344e] Corey Farrell + ASTERISK-29071 - * CI: Fix mkdir CACHE_DIR. + Change-Id: I5ef918ebe4debac8a469e8d43bf9d6b673e8e472 - Change-Id: Ic9f9a61e230047836c836206731f8ff7eb3538c9 +2021-03-03 12:44 +0000 [3875f7ac37] Joshua C. Colp -2018-07-22 10:41 +0000 [9742fb07c9] Joshua Colp + * asterisk: Update copyright. - * sched: Make ABI compatible between dev mode and non-dev mode. + ASTERISK-29326 - 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. + Change-Id: Ia95dbfb66e2d11ac4d1228444283bb2e4d77396a - This assertion is no longer present so the special logic can be - removed to make it the same between them both. +2021-03-04 16:49 +0000 Asterisk Development Team - Change-Id: Icbc69c801e357d7004efc5cf2ab936d9b83b6ab8 + * asterisk certified/16.8-cert7 Released. -2018-07-20 15:52 +0000 [2c51079d05] Richard Mudgett +2021-02-25 13:50 +0000 [b9fc07ca53] Ben Ford - * asterisk.c: Update displayed copyright year for v16 release. + * AST-2021-006 - res_pjsip_t38.c: Check for session_media on reinvite. - Change-Id: I60622731d928ee9506b1d28934095f0dc3e5306e + When Asterisk sends a reinvite negotiating T38 faxing, it's possible a + crash can occur if the response contains a m=image and zero port. The + reinvite callback code now checks session_media to see if it is null or + not before trying to access the udptl variable on it. -2018-07-16 15:08 +0000 [3cdffa1342] Corey Farrell + ASTERISK-29305 - * Enable bundling of jansson, require 2.11. + Change-Id: I1dfc51c5fa586e38579ede4bc228edee213ccaa9 - Change-Id: Ib3111b151d37cbda40768cf2a8a9c6cf6c5c7cbd +2021-03-03 07:32 +0000 [54f4be115f] Joshua C. Colp -2018-07-20 09:25 +0000 [136d855f69] Corey Farrell + * channel: Fix memory leak in suppress API. - * CI: Fix logger.conf for unit tests. + A frame suppression API exists as part of channels + which allows audio frames to or from a channel to + be dropped. The MuteAudio AMI action uses this + API to perform its job. - Change-Id: Idea59d60eab20105de50b34f0f0d506e6ef55d5c + This API uses a framehook to intercept flowing + audio and drop it when appropriate. It is the + responsibility of the framehook to free the + frame it is given if it changes the frame. The + suppression API failed to do this resulting in + a leak of audio frames. -2018-07-19 10:34 +0000 [0c1513d8a0] George Joseph + This change adds the freeing of these frames. - * CI: Add wiki doc publish to periodics + ASTERISK-29071 - Change-Id: I29ba26134e5083bc6788ede235f1a5d4383c148a + Change-Id: Ie50acd454d672d36af914050c327d2e120d8ba7b -2018-07-20 06:20 +0000 [61a974ed4e] George Joseph +2020-05-18 09:05 +0000 [df34b007d9] Joshua C. Colp - * xmldoc.c: Fix dump of xml document + * bridge: Don't try to match audio formats. - 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. + When bridging channels we were trying to match the audio + formats of both sides in combination with the configured + formats. While this is allowed in SDP in practice this + causes extra reinvites and problems. This change ensures + that audio streams use the formats of the first existing + active audio stream. It is only when other stream types + (like video) exist that this will result in re-negotiation + occurring for those streams only. - * 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. + ASTERISK-28871 - * 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: I22f5a3e7db29e00c165e74d05d10856f6086fe47 - Change-Id: I3f182d38c75776aee76413dadd2d489d54a85c07 +2021-02-15 12:24 +0000 [b12fcaaaf0] Ben Ford -2018-07-20 06:54 +0000 [50a26b15a3] Joshua Colp + * res_pjsip_session.c: Check topology on re-invite. - * res_pjsip: Update default keepalive interval to 90 seconds. + Removes an unnecessary check for the conditional that compares the + stream topologies to see if they are equal to suppress re-invites. This + was a problem when a Digium phone received an INVITE that offered codecs + different than what it supported, causing Asterisk to send the + re-invite. - 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. + ASTERISK-29303 - This change makes our default keepalive interval 90 seconds - to match the previous behavior and preserve it. + Change-Id: I04dc91befb2387904e28a9aaeaa3bcdbcaa7fa63 - ASTERISK-27978 +2021-02-18 16:51 +0000 Asterisk Development Team - Change-Id: Ibd9a45f3cbe5d9bb6d2161268696645ff781b1d6 + * asterisk certified/16.8-cert6 Released. -2018-07-18 14:19 +0000 [958f76205b] Joshua Colp +2021-02-01 15:24 +0000 [bb5b336f78] Kevin Harwell - * Update mainline version for the 16 branch. + * AST-2021-002: Remote crash possible when negotiating T.38 - Change-Id: I4d36277d10335349d83ae218fa10fee99c3e4c14 + When an endpoint requests to re-negotiate for fax and the incoming + re-invite is received prior to Asterisk sending out the 200 OK for + the initial invite the re-invite gets delayed. When Asterisk does + finally send the re-inivite the SDP includes streams for both audio + and T.38. -2018-07-18 14:18 +0000 [e7a76ffee1] Joshua Colp + This happens because when the pending topology and active topologies + differ (pending stream is not in the active) in the delayed scenario + the pending stream is appended to the active topology. However, in + the fax case the pending stream should replace the active. - * Update ARI version for master/16. + This patch makes it so when a delay occurs during fax negotiation, + to or from, the audio stream is replaced by the T.38 stream, or vice + versa instead of being appended. - ARI goes from 3.0.0 to 4.0.0 + Further when Asterisk sent the re-invite with both audio and T.38, + and the endpoint responded with a declined T.38 stream then Asterisk + would crash when attempting to change the T.38 state. - Change-Id: I0649fa34926dc4fc89a166f1d2e3bbd965ef9ebe + This patch also puts in a check that ensures the media state has a + valid fax session (associated udptl object) before changing the + T.38 state internally. -2018-05-29 09:31 +0000 [fe78d374b0] Alexander Traud + ASTERISK-29203 #close - * pjproject_bundled: Repair ./configure --with-ssl=PATH. + Change-Id: I407f4fa58651255b6a9030d34fd6578cf65ccf09 - Previously, Asterisk did not tell its bundled PJProject about this configure - parameter. Therefore, PJProject used the platform provided OpenSSL always. +2021-01-26 11:09 +0000 [93468c531a] Alexander Traud - ASTERISK-27880 + * rtp: Enable srtp replay protection - Change-Id: Iea545aec854dd0e2c061c69bb118a76ce56c5dc6 + Add option "srtpreplayprotection" rtp.conf to enable srtp + replay protection. -2018-05-10 13:11 +0000 [5bacde37a2] Ben Ford + ASTERISK-29260 + Reported by: Alexander Traud - * res_rtp_asterisk: Add support for sending NACK requests. + Change-Id: I5cd346e3c6b6812039d1901aa4b7be688173b458 - 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. +2020-12-11 14:49 +0000 [07eddbd56a] Sean Bright - 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. + * res_rtp_asterisk.c: Fix signed mismatch that leads to overflow - 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. + ASTERISK-29205 #close - Also added additional functionality to ast_data_buffer, along with some - testing. + Change-Id: Ib7aa65644e8df76e2378d7613ee7cf751b9d0bea - For more information, refer to the wiki page: - https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements +2021-02-05 05:26 +0000 [23e96e6e17] Joshua C. Colp - ASTERISK-27810 #close + * pjsip: Make modify_local_offer2 tolerate previous failed SDP. - Change-Id: Idab644b08a1593659c92cda64132ccc203fe991d + If a remote side is broken and sends an SDP that can not be + negotiated the call will be torn down but there is a window + where a second 183 Session Progress or 200 OK that is forked + can be received that also attempts to negotiate SDP. Since + the code marked the SDP negotiation as being done and complete + prior to this it assumes that there is an active local and remote + SDP which it can modify, while in fact there is not as the SDP + did not successfully negotiate. Since there is no local or remote + SDP a crash occurs. -2018-07-18 11:12 +0000 [59323121f3] Joshua Colp + This patch changes the pjmedia_sdp_neg_modify_local_offer2 + function to no longer assume that a previous SDP negotiation + was successful. - * res_sorcery_config: Allow configuration section to be used based on name. + ASTERISK-29196 - 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. + Change-Id: I22de45916d3b05fdc2a67da92b3a38271ee5949e - 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. +2020-12-16 06:17 +0000 [6b5306ecc5] Joshua C. Colp - 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. + * res_pjsip_pidf_digium_body_supplement: Support Sangoma user agent. - ASTERISK-27972 + This adds support for both Digium and Sangoma user agent strings + for the Sangoma specific body supplement. - Change-Id: Ie22723663c1ddd24f869af8c9b4c1b59e2476893 + Change-Id: Ib99362b24b91d3cbe888d8b2fce3fad5515d9482 + (cherry picked from commit 7e4bb4ed11b2741ff6cd47a95fb6e815a5e1d901) -2018-07-17 05:24 +0000 [134e2f0ddc] Joshua Colp +2020-11-05 21:06 +0000 Asterisk Development Team - * module: Remove deprecated modules and update support levels. + * asterisk certified/16.8-cert5 Released. - I have removed the STATIC_BUILD option immediately as it has not - been maintained in many years and is non-functional. +2020-10-19 17:21 +0000 [81b48f2d10] Kevin Harwell - ASTERISK-27965 + * AST-2020-001 - res_pjsip: Return dialog locked and referenced - Change-Id: I64783d017b86dba9ee3c7bcfb97e59889a3f76d7 + pjproject returns the dialog locked and with a reference. However, + in Asterisk the method that handles this decrements the reference + and removes the lock prior to returning. This makes it possible, + under some circumstances, for another thread to free said dialog + before the thread that created it attempts to use it again. Of + course when the thread that created it tries to use a freed dialog + a crash can occur. -2018-07-18 11:34 +0000 [94dd0544e5] Chris-Savinovich + This patch makes it so Asterisk now returns the newly created + dialog both locked, and with an added reference. This allows the + caller to de-reference, and unlock the dialog when it is safe to + do so. - * stasis: Improve message type "Use of before/init after destruction" + In the case of a new SIP Invite the lock, and reference are now + held for the entirety of the new invite handling process. + Otherwise it's possible for the dialog, or its dependent objects, + like the transaction, to disappear. For example if there is a TCP + transport error. - 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-29057 #close - ASTERISK-25548 - Change-Id: Ie0d866d1cbc60c16dbef08bc65e99505c3c1adfa + Change-Id: I5ef645a47829596f402cf383dc02c629c618969e -2018-07-17 14:12 +0000 [993ba84cd3] Nick French +2020-11-02 10:29 +0000 [6057050899] Ben Ford - * SRTP: Lower SDES key lifetime minimum to 2^20 + * AST-2020-002 - res_pjsip: Stop sending INVITEs after challenge limit. - SRTP SDES key lifetime support was added in ASTERISK_17899. + If Asterisk sends out an INVITE and receives a challenge with a + different nonce value each time, it will continuously send out INVITEs, + even if the call is hung up. The endpoint must be configured for + outbound authentication for this to occur. A limit has been set on + outbound INVITEs so that, once reached, Asterisk will stop sending + INVITEs and the transaction will terminate. - In that addition, the minimum key lifetime to be accepted was - set at the 10 hours @ 20ms/packet = 1800000 packets. + ASTERISK-29013 - The firmware in the obi1xx ATA uses a hardcoded lifetime of - 2^20 packets. + Change-Id: I2d001ca745b00ca8aa12030f2240cd72363b46f7 - Lower the limit to 2^20 to support a wider field of clients. +2020-11-05 17:58 +0000 Asterisk Development Team - ASTERISK-27967 #close + * asterisk certified/16.8-cert4 Released. - Change-Id: I81a0703c595a0c9101dfdf02300149a3cc39bf94 +2020-11-05 11:53 +0000 [5e146dde81] Asterisk Development Team -2018-07-17 11:09 +0000 [fcc0a6fe8a] George Joseph + * Update CHANGES and UPGRADE.txt for certified/16.8-cert4 +2020-11-04 11:31 +0000 [f777a0d879] Asterisk Development Team - * CI: Fix merge strategy + * Update for certified/16.8-cert4-rc4 - Change-Id: I5e3fb6adfa6cbf694c0deecf02e3879297b0c12e +2020-11-04 09:11 +0000 [0757a5113d] George Joseph -2018-07-17 10:41 +0000 [3e5a6a6cfc] George Joseph + * Revert "Revert "Revert "core_unreal / core_local: Add multistream and re-negotiation.""" - * CI: Fix regex in daily and ref_debug jobs + First it was in. + Then it was out. + Then it was in again. + Now it's out again because of a faxing issue discovered by the swvx team. - Change-Id: Icf2e67818b2155a158d2390b138613e1f653ea92 + Reason for revert: Faxing issue -2018-07-17 09:09 +0000 [0e8976116f] Nick French + Change-Id: Ia417853130361b69f83f70bbc799493bb9f2fe27 - * res_pjsip: Remove spurious error logging when printing silent headers +2020-10-06 17:53 +0000 [cb9f1759fb] Asterisk Development Team - 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. + * Update for certified/16.8-cert4-rc3 - pjproject has since applied a similar patch to their baseline to avoid - crashes, but their version also avoids the spurious error logging. +2020-09-22 05:05 +0000 [d5df3b95c8] Joshua C. Colp - Lets use their patch instead. + * res_pjsip_session: Fix stream name memory leak. - ASTERISK-27961 #close + When constructing a stream name based on the media type + and position the allocated name was not being freed + causing a leak. - Change-Id: I2ddbd82c8da10e0dcc9807a48089d1f3c2d6e389 + Change-Id: I52510863b24a2f531f0a55b440bb2c81844029de -2018-07-17 10:15 +0000 [fa333dedd0] George Joseph +2020-09-22 05:13 +0000 [3e54af3afb] Joshua C. Colp - * CI: Add pre-build merge back in as RECURSIVE + * res_pjsip_session: Fix session reference leak. - Change-Id: I0ff1730ef4a4f0ac9f18ccc9bc0dfe7a782f57a8 + The ast_sip_dialog_get_session function returns the session + with reference count increased. This was not taken into + account and was causing sessions to remain around when they + should not be. -2018-07-17 09:01 +0000 [2553255ace] George Joseph + ASTERISK-29089 - * CI: Remove pre-build merge from gates and checks + Change-Id: I430fa721b0a824311a59effec6056e9ec528e3e8 - Change-Id: Ibc151f63dcec4db847915c2f3cbe5b467dd59574 +2020-09-17 11:40 +0000 [f74ecc4498] George Joseph -2018-07-17 07:13 +0000 [524f900382] George Joseph + * logger.h: Fix ast_trace to respect scope_level - * CI: Fix logic inversion in runTestsuite + ast_trace() was always emitting messages when it's level was set to -1 + because it was ignoring scope_level. - Change-Id: I56399aa384468f45494c2c3650420563a0b6efe1 + Change-Id: I849c8f4f4613899c37f82be0202024e7d117e506 -2018-07-17 04:03 +0000 [0af4a558da] George Joseph +2020-09-17 13:01 +0000 [251c9a1891] George Joseph - * CI: Add teardownRealtime + * bridge_softmix/sfu_topologies_on_join: Ignore topology change failures - Change-Id: I2fe55c38607eaec2fbf69ef23a5019e0c443a64b + When a channel joins a bridge, we do topology change requests on all + existing channels to add the new participant to them. However the + announcer channel will return an error because it doesn't support + topology in the first place. Unfortunately, there doesn't seem to be a + reliable way to tell if the error is expected or not so the error is + ignored for all channels. If the request fails on a "real" channel, + that channel just won't get the new participant's video. -2018-07-15 13:58 +0000 [49f83a7490] Corey Farrell + Change-Id: Ic95db4683f27d224c1869fe887795d6b9fdea4f0 - * loader: Fix startup issues. +2020-09-11 11:09 +0000 [1620e94af5] George Joseph - * 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. + * res_pjsip_session: Fix issue with COLP and 491 - Change-Id: Ie4176699133f0e3a823b43f90c3348677e43a5f3 + The recent 491 changes introduced a check to determine if the active + and pending topologies were equal and to suppress the re-invite if they + were. When a re-invite is sent for a COLP-only change, the pending + topology is NULL so that check doesn't happen and the re-invite is + correctly sent. Of course, sending the re-invite sets the pending + topology. If a 491 is received, when we resend the re-invite, the + pending topology is set and since we didn't request a change to the + topology in the first place, pending and active topologies are equal so + the topologies-equal check causes the re-invite to be erroneously + suppressed. -2018-07-16 13:30 +0000 [a9cef123d9] George Joseph + This change checks if the topologies are equal before we run the media + state resolver (which recreates the pending topology) so that when we + do the final topologies-equal check we know if this was a topology + change request. If it wasn't a change request, we don't suppress + the re-invite even though the topologies are equal. - * CI: Prevent Jenkins from triggering jobs back to itself + ASTERISK-29014 - Change-Id: I9cae8bb3d1a2cea335d3ccd88d471832549666fd + Change-Id: Iffd7dd0500301156a566119ebde528d1a9573314 -2018-07-13 18:26 +0000 [5febc995df] Richard Mudgett +2020-08-20 15:09 +0000 [f67c58aa13] George Joseph - * Build: Fix modules getting their optimization setting overridden. + * debugging: Add enough to choke a mule - Asterisk modules that use PJPROJECT services have their compiler - optimization and possibly their symbolic debug options overridden by the - PJPROJECT configure script selected settings. + Added to: + * bridges/bridge_softmix.c + * channels/chan_pjsip.c + * include/asterisk/res_pjsip_session.h + * main/channel.c + * res/res_pjsip_session.c - * 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. + There NO functional changes in this commit. - NOTE: This patch only has an effect when using bundled PJPROJECT. + Change-Id: I06af034d1ff3ea1feb56596fd7bd6d7939dfdcc3 - ASTERISK-27563 +2020-08-20 11:21 +0000 [9e54db24b6] George Joseph - Change-Id: If124169735ecf572ad1535cd43bff94cb44d5b30 + * res_pjsip_session: Handle multi-stream re-invites better -2018-07-16 11:08 +0000 [d15ef68892] George Joseph + When both Asterisk and a UA send re-invites at the same time, both + send 491 "Transaction in progress" responses to each other and back + off a specified amount of time before retrying. When Asterisk + prepares to send its re-invite, it sets up the session's pending + media state with the new topology it wants, then sends the + re-invite. Unfortunately, when it received the re-invite from the + UA, it partially processed the media in the re-invite and reset + the pending media state before sending the 491 losing the state it + set in its own re-invite. - * CI: runUnittests: loop a few times on waitfullybooted + Asterisk also was not tracking re-invites received while an existing + re-invite was queued resulting in sending stale SDP with missing + or duplicated streams, or no re-invite at all because we erroneously + determined that a re-invite wasn't needed. - Change-Id: Icebc0d013896f3b2a7214945cac60647435c1651 + There was also an issue in bridge_softmix where we were using a stream + from the wrong topology to determine if a stream was added. This also + caused us to erroneously determine that a re-invite wasn't needed. -2018-07-16 10:49 +0000 [252c4284df] George Joseph + Regardless of how the delayed re-invite was triggered, we need to + reconcile the topology that was active at the time the delayed + request was queued, the pending topology of the queued request, + and the topology currently active on the session. To do this we + need a topology resolver AND we need to make stream named unique + so we can accurately tell what a stream has been added or removed + and if we can re-use a slot in the topology. - * CI: Add realtime checks to dailies + Summary of changes: - Change-Id: I6dc8ab1679b3505c6dde1d47e1b9276df47814f8 + * bridge_softmix: + * We no longer reset the stream name to "removed" in + remove_all_original_streams(). That was causing multiple streams + to have the same name and wrecked the checks for duplicate streams. -2018-07-16 09:13 +0000 [1a52ab70c7] George Joseph + * softmix_bridge_stream_sources_update() was checking the old_stream + to see if it had the softmix prefix and not considering the stream + as "new" if it did. If the stream in that slot has something in it + because another re-invite happened, then that slot in old might + have a softmix stream but the same stream in new might actually + be a new one. Now we check the new_stream's name instead of + the old_stream's. - * CI: Add weekly REF_DEBUG testsuite run + * stream: + * Instead of using plain media type name ("audio", "video", etc) as + the default stream name, we now append the stream position to it + to make it unique. We need to do this so we can distinguish multiple + streams of the same type from each other. - Change-Id: I5b581d0a0d1d1bb9b38961d40b112fb448355037 + * When we set a stream's state to REMOVED, we no longer reset its + name to "removed" or destroy its metadata. Again, we need to + do this so we can distinguish multiple streams of the same + type from each other. -2018-07-16 08:44 +0000 [9633e9dfd7] George Joseph + * res_pjsip_session: + * Added resolve_refresh_media_states() that takes in 3 media states + and creates an up-to-date pending media state that includes the changes + that might have happened while a delayed session refresh was in the + delayed queue. - * CI: Fix bad reporting of status by the verification pub + * Added is_media_state_valid() that checks the consistency of + a media state and returns a true/false value. A valid state has: + * The same number of stream entries as media session entries. + Some media session entries can be NULL however. + * No duplicate streams. + * A valid stream for each non-NULL media session. + * A stream that matches each media session's stream_num + and media type. - Change-Id: I6f31a130b3ba0187149aaaa2ce94195a79e0f6a6 + * Updated handle_incoming_sdp() to set the stream name to include the + stream position number in the name to make it unique. -2018-07-16 07:16 +0000 [b8d75bbb37] George Joseph + * Updated the ast_sip_session_delayed_request structure to include both + the pending and active media states and updated the associated delay + functions to process them. - * CI: Make build tag an acceptable docker name + * Updated sip_session_refresh() to accept both the pending and active + media states that were in effect when the request was originally queued + and to pass them on should the request need to be delayed again. - Change-Id: I3a4b8a4a9c488ddabf9daf651dc1334222056f38 + * Updated sip_session_refresh() to call resolve_refresh_media_states() + and substitute its results for the pending state passed in. -2018-07-13 22:44 +0000 [0885ab8afc] Corey Farrell + * Updated sip_session_refresh() with additional debugging. - * Fix declaration of PBX_CURL for ./configure --without-libcurl + * Updated session_reinvite_on_rx_request() to simply return PJ_FALSE + to pjproject if a transaction is in progress. This stops us from + creating a partial pending media state that would be invalid later on. - When `--without-libcurl` is used PBX_CURL is never set. Set default - value 0 so the proper value is passed to menuselect. + * Updated reschedule_reinvite() to clone both the current pending and + active media states and pass them to delay_request() so the resolver + can tell what the original intention of the re-invite was. - Change-Id: I03e2842a00899cbca2dbde52bb1f6636d54bae1e + * Added a large unit test for the resolver. -2018-07-10 13:28 +0000 [34f3fe9552] George Joseph + ASTERISK-29014 - * app_confbridge: Use the SDP 'label' attribute to correlate users + Change-Id: Id3440972943c611a15f652c6c569fa0e4536bfcb - 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. +2020-08-31 11:14 +0000 [c2701d8069] Ben Ford - 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. + * Bridging: Use a ref to bridge_channel's channel to prevent crash. - Change-Id: I6cbaa87fb59a2e0688d956e72d2d09e4ac20d5a5 + There's a race condition with bridging where a bridge can be torn down + causing the bridge_channel's ast_channel to become NULL when it's still + needed. This particular case happened with attended transfers, but the + crash occurred when trying to publish a stasis message. Now, the + bridge_channel is locked, a ref to the ast_channel is obtained, and that + ref is passed down the chain. -2018-07-13 06:56 +0000 [e8727fcfa8] George Joseph + Change-Id: Ic48715c0c041615d17d286790ae3e8c61bb28814 - * CI: Add daily periodics to CI +2020-08-20 08:32 +0000 [fb78adce21] George Joseph - Change-Id: I26933e73928e091ae72e838c02f4f2ec7c3983d6 + * stream.c: Added 2 more debugging utils and added pos to stream string -2018-07-11 11:57 +0000 [e19080a184] Alexander Traud (License 6520) + * Added ast_stream_to_stra and ast_stream_topology_to_stra() macros + which are shortcuts for + ast_str_tmp(256, ast_stream_to_str(stream, &STR_TMP)) - * Bundled PJPROJECT: Disable internal connection oriented keep-alive. + * Added the stream position to the string representation of the + stream. - 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. + * Fixed some formatting in ast_stream_to_str(). - patches: - pjsip_keep_not_alive.patch submitted by Alexander Traud (License 6520) + Change-Id: Idaf4cb0affa46d4dce58a73a111f35435331cc4b - ASTERISK-27347 +2020-08-19 07:37 +0000 [d942fe4837] George Joseph - Change-Id: I6a197f56e1830d3b7e5ec70f17025840a290b057 + * scope_trace: Added debug messages and added additional macros -2018-07-09 04:42 +0000 [1445384699] Torrey Searle + The SCOPE_ENTER and SCOPE_EXIT* macros now print debug messages + at the same level as the scope level. This allows the same + messages to be printed to the debug log when AST_DEVMODE + isn't enabled. - * res_pjsip_sdp_rtp: include ice in ANSWER only if offered + Also added a few variants of the SCOPE_EXIT macros that will + also call ast_log instead of ast_debug to make it easier to + use scope tracing and still print error messages. - Keep track if ICE candidates were in the SDP offer & only put them - in the corresponding SDP answer if the offer condaind ICE candidates + Change-Id: I7fe55f7ec28069919a0fc0b11a82235ce904cc21 - ASTERISK-27957 #close +2020-08-14 11:13 +0000 [0430e1b3c3] George Joseph - Change-Id: Idf2597ee48e9a287e07aa4030bfa705430a13a92 + * logger.c: Added a new log formatter called "plain" -2018-07-12 16:34 +0000 [33a84745d0] George Joseph + Added a new log formatter called "plain" that always prints + file, function and line number if available (even for verbose + messages) and never prints color control characters. It also + doesn't apply any special formatting for verbose messages. + Most suitable for file output but can be used for other channels + as well. - * CI: Add Asterisk Gates + You use it in logger.conf like so: + debug => [plain]debug + console => [plain]error,warning,debug,notice,pjsip_history + messages => [plain]warning,error,verbose - Change-Id: I7e2467f9120812551238d8005deb97f965279205 + Change-Id: I4fdfe4089f66ce2f9cb29f3005522090dbb5243d -2018-07-11 15:55 +0000 [65b002ab8f] George Joseph +2020-08-28 09:34 +0000 [950784a446] George Joseph - * CI: Remove duplicate checkout + * ast_coredumper: Fix issues with naming - Change-Id: If5f925b4c4ed7000b153f3ed8386ce2140c886f8 + If you run ast_coredumper --tarball-coredumps in the same directory + as the actual coredump, tar can fail because the link to the + actual coredump becomes recursive. The resulting tarball will + have everything _except_ the coredump (which is usually what + you need) -2018-07-11 15:09 +0000 [ba8f8a2813] George Joseph + There's also an issue that the directory name in the tarball + is the same as the coredump so if you extract the tarball the + directory it creates will overwrite the coredump. - * CI: Update cleanup steps and permissions + So: - Change-Id: I7ca92935979d94845af8e1caf4468cbd6209b7de + * Made the link to the coredump use the absolute path to the + file instead of a relative one. This prevents the recursive + link and allows tar to add the coredump. -2018-07-11 14:54 +0000 [ad36c4ba9b] George Joseph + * The tarballed directory is now named .output instead + of just so if you expand the tarball it won't + overwrite the coredump. - * CI: Fix log artifact paths + Change-Id: I8b3eeb26e09a577c702ff966924bb0a2f9a759ea - Change-Id: I55136de8f4d9c3b56bd4d054306a187bb04a4b7d +2020-08-18 04:36 +0000 [7b1ace9040] Joshua C. Colp -2018-07-11 14:45 +0000 [4842af6364] George Joseph + * res_pjsip_session: Don't aggressively terminate on failed re-INVITE. - * CI: Remove CleanBeforeCheckout option for testsuite + Per the RFC when an outgoing re-INVITE is done we should + only terminate the dialog if a 481 or 408 is received. - Change-Id: I510231c9087f7be5272b8ef3f3223eadaaffb754 + ASTERISK-29033 -2018-07-11 14:00 +0000 [3dfc37c60a] George Joseph + Change-Id: I6c3ff513aa41005d02de0396ba820083e9b18503 - * CI: Move gates into source repo +2020-07-23 14:47 +0000 [d189bf9ae5] George Joseph - Change-Id: If028ede5f3b127fa274c63ce166bc04ad7c1e5db + * res_pjsip_session: Ensure reused streams have correct bundle group -2018-07-11 06:14 +0000 [b302ee6bd5] George Joseph + When a bundled stream is removed, its bundle_group is reset to -1. + If that stream is later reused, the bundle parameters on session + media need to be reset correctly it could mistakenly be rebundled + with a stream that was removed and never reused. Since the removed + stream has no rtp instance, a crash will result. - * CI: Initial commit for moving CI into source repo + Change-Id: Ie2b792220f9291587ab5f9fd123145559dba96d7 - Create tests/CI directory and add files used by Jenkins to - build and test Asterisk. +2020-07-13 04:41 +0000 [b8bb63c82f] Joshua C. Colp - 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. + * pjsip: Add timer refactor patch and timer 0 cancellation. - Change-Id: I9448065465e6de2b878634510ace8fd1ef378608 + There have been numerous timer issues over the years which + resulted in Teluu doing a major refactor of the timer + implementation whereby the timer entries themselves are not + trusted. This change backports this refactor which has + been shown to resolve timer crashes. -2018-07-06 17:00 +0000 [f7137e1230] Joshua Elson + Additionally another patch has been backported to prevent + timer entries with an internal id of 0 from being canceled. + This would result in the invalid timer id of 0 being placed + into the timer heap causing issues. This is also a backport. - * res_parking: Add dialplan function for lot channel + Change-Id: I1ba318b1f153a6dd7458846396e2867282b428e7 + (cherry picked from commit 9ce6d46aea3a7ec70fe923a58cb2aafaa1ea64a8) - This commit adds a new function to res_parking. +2020-06-10 17:05 +0000 [5e58fc3939] Kevin Harwell - This function, PARK_GET_CHANNEL allows the retrieval - of the channel name of the channel occupying the parking slot. + * manager - Add Content-Type parameter to the SendText action - ASTERISK-22825 #close + This patch allows a user of AMI to now specify the type of message + content contained within by setting the 'Content-Type' parameter. - Change-Id: Idba6ae55b8a53f734238cb3d995cedb95c0e7b74 + Note, the AMI version has been bumped for this change. -2018-06-23 01:33 +0000 [10de9fcbf1] Alexander Traud + ASTERISK-28945 #close - * chan_ooh323: IPTOS_MINCOST is not defined on Solaris. + Change-Id: Ibb5315702532c6b954e1498beddc8855fabdf4bb - Furthermore, is required for SIOCGIF*. +2020-08-06 12:51 +0000 [4e9e503132] cmaj - ASTERISK-27938 + * Makefile: Fix certified version numbers - Change-Id: Idc9153ece769944765b66122efb11728d8d8ebde + Adds sed before awk to produce reasonable ASTERISKVERSIONNUM + on certified versions of Asterisk eg. 16.8-cert3 is 160803 + instead of the previous 00800. -2018-07-06 15:05 +0000 [5bb874ee09] Kevin Harwell + ASTERISK-29021 #close - * res_pjsip_session: sdp group:BUNDLE attribute being truncated + Change-Id: Icf241df0ff6db09011b8c936a317a84b0b634e16 - 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. +2020-07-05 18:51 +0000 [8ebe4c772e] George Joseph - This patch makes it so a '0' is passed as in for the 'max_len', which means - "no maximum length". + * Scope Trace: Make it easier to trace through synchronous tasks - ASTERISK-27955 #close + Tracing through synchronous tasks was a little troublesome because + the new thread's stack counter reset to 0. This change allows + a synchronous task to set its trace level to be the same as the + thread that pushed the task. For now, the task's level has to be + passed in the task's data structure but a future enhancement to the + taskprocessor subsystem could automatically set the trace level + of the servant to be that of the caller. - Change-Id: Iec565df6600401d54a502854a53d19bb4cc34876 + This doesn't really make sense for async tasks because you never + know when they're going to run anyway. -2018-07-05 16:02 +0000 [96abe79ddf] Alexei Gradinari + Change-Id: Ib8049c0b815063a45d8c7b0cb4e30b7b87b1d825 - * res_pjsip_pubsub: segfault in function publish_expire +2020-08-07 06:58 +0000 [8076ed59f0] George Joseph - The function pubsub_on_rx_publish_request incorrectly uses - of AST_SCHED_REPLACE_UNREF. + * scope_trace: Add/update utilities - The AST_SCHED_REPLACE_UNREF should unref old '_data'. + * Added a AST_STREAM_STATE_END sentinel + * Add ast_stream_to_str() + * Add ast_stream_state_to_str() + * Add ast_stream_get_format_count() + * Add ast_stream_topology_to_str() + * Add ast_stream_topology_get_active_count() + * Add ast_format_cap_append_names() + * Add ast_sip_session_get_name() - 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. + Change-Id: I132eb5971ea41509c660f64e9113cda8c9013b0b - ASTERISK-27956 #close +2020-06-30 08:56 +0000 [9d3b01e874] George Joseph - Change-Id: Ie0f0cfc7e036953d890b188656010b325a5cdc82 + * Scope Trace: Add some new tracing macros and an ast_str helper -2018-07-06 09:04 +0000 [c1e49720fa] George Joseph + Created new SCOPE_ functions that don't depend on RAII_VAR. Besides + generating less code, the use of the explicit SCOPE_EXIT macros + capture the line number where the scope exited. The RAII_VAR + versions can't do that. - * test.c: Make output jUnit compatible + * SCOPE_ENTER(level, ...): Like SCOPE_TRACE but doesn't use + RAII_VAR and therefore needs needs one of... - Separate "name" into "classname" and "name". - Use '.' for classname separator instead of '/'. - Prefix reserved words with '_'. - Wrap output with a top-level "testsuites" element. + * SCOPE_EXIT(...): Decrements the trace stack counter and optionally + prints a message. - Change-Id: Iec1a985eba1c478e5c1d65d5dfd95cb708442099 + * SCOPE_EXIT_EXPR(__expr, ...): Decrements the trace stack counter, + optionally prints a message, then executes the expression. + SCOPE_EXIT_EXPR(break, "My while got broken\n"); -2018-07-06 07:57 +0000 [8f42447c68] George Joseph + * SCOPE_EXIT_RTN(, ...): Decrements the trace stack counter, + optionally prints a message, then returns without a value. + SCOPE_EXIT_RTN("Bye\n"); - * res_pjsip: Add 'suppress_q850_reason_headers' option to endpoint + * SCOPE_EXIT_RTN_VALUE(__return_value, ...): Decrements the trace + stack counter, optionally prints a message, then returns the value + specified. + SCOPE_EXIT_RTN_VALUE(rc, "Returning with RC: %d\n", rc); - 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'. + Create an ast_str helper ast_str_tmp() that allocates a temporary + ast_str that can be passed to a function that needs it, then frees + it. This makes using the above macros easier. Example: - ASTERISK-27949 - Reported-by: Ross Beer + SCOPE_ENTER(1, Format Caps 1: %s Format Caps 2: %s\n", + ast_str_tmp(32, ast_format_cap_get_names(cap1, &STR_TMP), + ast_str_tmp(32, ast_format_cap_get_names(cap2, &STR_TMP)); - Change-Id: I54cf37a827d77de2079256bb3de7e90fa5e1deb1 + The calls to ast_str_tmp create an ast_str of the specified initial + length which can be referenced as STR_TMP. It then calls the + expression, which must return a char *, ast_strdupa's it, frees + STR_TMP, then returns the ast_strdupa'd string. That string is + freed when the function returns. -2018-07-05 15:43 +0000 [c9f8e068ed] Joshua Colp + Change-Id: I44059b20d55a889aa91440d2f8a590865998be51 + (cherry picked from commit 43ba72dea099b5448fdeb0fcab44b6186a0ddf75) - * res_pjsip_t38: Decline T.38 stream on failure case. +2020-05-14 13:24 +0000 [360efdd94f] George Joseph - 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. + * Scope Tracing: A new facility for tracing scope enter/exit - 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. + What's wrong with ast_debug? - ASTERISK-27763 + ast_debug is fine for general purpose debug output but it's not + really geared for scope tracing since it doesn't present its + output in a way that makes capturing and analyzing flow through + Asterisk easy. - Change-Id: I88bcf793788c412a9839d111a5c736bf6867807c + How is scope tracing better? -2018-07-02 18:43 +0000 [d5db664d70] Richard Mudgett + Scope tracing uses the same "cleanup" attribute that RAII_VAR + uses to print messages to a separate "trace" log level. Even + better, the messages are indented and unindented based on a + thread-local call depth counter. When output to a separate log + file, the output is uncluttered and easy to follow. - * res_pjsip_t38.c: Be smarter about how we respond when T.38 is disabled. + Here's an example of the output. The leading timestamps and + thread ids are removed and the output cut off at 68 columns for + commit message restrictions but you get the idea. - 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. + --> res_pjsip_session.c:3680 handle_incoming PJSIP/1173-00000001 + --> res_pjsip_session.c:3661 handle_incoming_response PJSIP/1173 + --> res_pjsip_session.c:3669 handle_incoming_response PJSIP/ + --> chan_pjsip.c:3265 chan_pjsip_incoming_response_after + --> chan_pjsip.c:3194 chan_pjsip_incoming_response P + chan_pjsip.c:3245 chan_pjsip_incoming_respon + <-- chan_pjsip.c:3194 chan_pjsip_incoming_response P + <-- chan_pjsip.c:3265 chan_pjsip_incoming_response_after + <-- res_pjsip_session.c:3669 handle_incoming_response PJSIP/ + <-- res_pjsip_session.c:3661 handle_incoming_response PJSIP/1173 + <-- res_pjsip_session.c:3680 handle_incoming PJSIP/1173-00000001 - * Made the T.38 framehook only respond to request frames and ignore - response frames. + The messages with the "-->" or "<--" were produced by including + the following at the top of each function: - ASTERISK-27657 - ASTERISK-27080 + SCOPE_TRACE(1, "%s\n", ast_sip_session_get_name(session)); - Change-Id: I5fb5967c7d1efb30a7ff375f82887ca82a55b05b + Scope isn't limited to functions any more than RAII_VAR is. You + can also see entry and exit from "if", "for", "while", etc blocks. -2018-07-03 12:10 +0000 [0aff1a278e] Richard Mudgett + There is also an ast_trace() macro that doesn't track entry or + exit but simply outputs a message to the trace log using the + current indent level. The deepest message in the sample + (chan_pjsip.c:3245) was used to indicate which "case" in a + "select" was executed. - * res_pjsip/pjsip_transport_management.c: Fix deadlock with transport keep alive. + How do you use it? - 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. + More documentation is available in logger.h but here's an overview: - * 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. + * Configure with --enable-dev-mode. Like debug, scope tracing + is #ifdef'd out if devmode isn't enabled. - ASTERISK-26686 + * Add a SCOPE_TRACE() call to the top of your function. - Change-Id: I5d5392a52e698bbe41a93f7d8e92bf0e61fe3951 + * Set a logger channel in logger.conf to output the "trace" level. -2018-07-02 18:44 +0000 [de5144e751] Joshua Colp + * Use the CLI (or cli.conf) to set a trace level similar to setting + debug level... CLI> core set trace 2 res_pjsip.so - * pjsip: Clarify certificate configuration for Websocket. + Summary Of Changes: - 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. + * Added LOG_TRACE logger level. Actually it occupies the slot + formerly occupied by the now defunct "event" level. - This change adds a warning if this is configured in pjsip.conf and - also clarifies in the sample configuration file. + * Added core asterisk option "trace" similar to debug. Includes + ability to specify global trace level in asterisk.conf and CLI + commands to turn on/off and set levels. Levels can be set + globally (probably not a good idea), or by module/source file. - Change-Id: I187d994d328c3ed274b6754fd4c2a4955bdc6dd9 + * Updated sample asterisk.conf and logger.conf. Tracing is + disabled by default in both. -2018-06-23 04:50 +0000 [804d931f27] Alexander Traud + * Added __ast_trace() to logger.c which keeps track of the indent + level using TLS. It's #ifdef'd out if devmode isn't enabled. - * bridge_softmix_binaural: Enable FFTW3 in Solaris 11. + * Added ast_trace() and SCOPE_TRACE() macros to logger.h. + These are all #ifdef'd out if devmode isn't enabled. - ASTERISK-27939 + Why not use gcc's -finstrument-functions capability? - Change-Id: Ice5640e08385a64a0a6555deaccd91e86bca154f + gcc's facility doesn't allow access to local data and doesn't + operate on non-function scopes. -2018-06-29 18:28 +0000 [1aa45ffdfa] Richard Mudgett + Known Issues: - * res_pjsip_t38.c: Fix crash by ignoring 1xx messages. + The only know issue is that we currently don't know the line + number where the scope exited. It's reported as the same place + the scope was entered. There's probably a way to get around it + but it might involve looking at the stack and doing an 'addr2line' + to get the line number. Kind of like ast_backtrace() does. + Not sure if it's worth it. - 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. + Change-Id: Ic5ebb859883f9c10a08c5630802de33500cad027 + (cherry picked from commit 6a0c47237480d750023561b004f2c4052bfab210) - * 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. +2020-07-06 10:57 +0000 [944d691319] George Joseph - ASTERISK-27944 + * frame.c: Make debugging easier - Change-Id: I0ca88aae708d091db7335af73f41035a212adff4 + * ast_frame_subclass2str() and ast_frame_type2str() now return + a pointer to the buffer that was passed in instead of void. + This makes it easier to use these functions inline in + printf-style debugging statements. -2018-07-01 13:54 +0000 [f30ebd3823] Joshua Colp + * Added many missing control frame entries in + ast_frame_subclass2str. - * res_pjsip_pubsub: Hold module reference for publications. + Change-Id: Ifd0d6578e758cd644c96d17a5383ff2128c572fc + (cherry picked from commit fdcb3e2ead11243cd8becb2a9778a4fb4ac8b63c) - 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. +2020-07-23 13:57 +0000 [017416381f] Asterisk Development Team - ASTERISK-27783 + * Update for certified/16.8-cert4-rc2 - Change-Id: Ia98c95a15e11af25728d5fb3e56e12cda0cfc7c0 +2020-07-22 12:57 +0000 [bd86f382ed] Joshua C. Colp -2018-05-21 07:24 +0000 [9d3f3a4b0a] Robert Mordec + * websocket / pjsip: Increase maximum packet size. - * app_confbridge: Bridge and announcers not removed if conference ends quickly + When dealing with a lot of video streams on WebRTC + the resulting SDPs can grow to be quite large. This + effectively doubles the maximum size to allow more + streams to exist. - 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. + The res_http_websocket module has also been changed + to use a buffer on the session for reading in packets + to ensure that the stack space usage is not excessive. - 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(). + Change-Id: I31d4351d70c8e2c11564807a7528b984f3fbdd01 - 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. +2020-06-26 05:18 +0000 [5eec77b452] Joshua C. Colp - 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. + * res_pjsip: Apply AOR outbound proxy to static contacts. - ASTERISK-27870 #close + The outbound proxy for an AOR was not being applied to + any statically configured Contacts. This resulted in the + OPTIONS requests being sent to the wrong target. - Change-Id: I947a50fb121422d90fd1816d643a54d75185a477 + This change sets the outbound proxy on statically configured + contacts once the AOR configuration is done being + applied. -2018-06-21 00:28 +0000 [db02218db2] Matthew Fredrickson + ASTERISK-28965 - * main/cdr.c: Alleviate CDR deadlock + Change-Id: Ia60f3e93ea63f819c5a46bc8b54be2e588dfa9e0 - 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. +2020-06-29 04:03 +0000 [aabb04054a] Asterisk Development Team - ASTERISK-27909 + * Update for certified/16.8-cert4-rc1 - Change-Id: I6333e865db7c593c102c2fd948cecdb96481974d - Reported-by: Denis Lebedev +2020-06-23 17:23 +0000 [2d7ae83990] Joshua Colp -2018-06-25 22:08 +0000 [4b9bf4f5e0] Kirsty Tyerman + * Revert "Revert "core_unreal / core_local: Add multistream and re-negotiation."" - * pbx_dundi: reordered unloading of module pbx_dundi + This reverts commit ec8b3850d21d63c627e8f9d97c34b780c13d941a. - Destroy scheduler after peers are pruned to stop dundi crashing when - unloading module. + Reason for revert: Time for this to return. - ASTERISK-26987 - Reported-by: Kirsty Tyerman + Change-Id: I5858f279bd523c609830c09333902b5d7d048aaf - Change-Id: Ic12e562cd90d8d813a9e97f302045091f59e3c05 +2020-06-19 17:47 +0000 Asterisk Development Team -2018-06-28 12:07 +0000 [7a238fe74d] Richard Mudgett + * asterisk certified/16.8-cert3 Released. - * AMI SendText action: Fix to use correct thread to send the text. +2020-06-19 12:04 +0000 [ec8b3850d2] Kevin Harwell - 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. + * Revert "core_unreal / core_local: Add multistream and re-negotiation." - * 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. + This reverts commit 2b5b9cd8e0b76f303d567187c4553a2a7edbc1ae. - ASTERISK-27943 + Reason for revert: - Change-Id: I9dce343d8fa634ba5a416a1326d8a6340f98c379 + Change-Id: I37c31857c5f16715a2debb99e1d68a0202fd1186 -2018-06-25 07:37 +0000 [e3585353f6] George Joseph +2020-06-17 03:58 +0000 [6777ec0340] Joshua C. Colp - * res_pjsip_messaging: Allow application/* for in-dialog MESSAGEs + * res_pjsip_session: Preserve label on incoming re-INVITE. - In addition to text/* content types, incoming_in_dialog_request now - accepts application/* content types. + When a re-INVITE is received we create a new set of + streams that are then swapped in as the active streams. + We did not preserve the SDP label from the previous + streams, resulting in the label getting lost. - Also fixed a length issue when copying the body text. It was one - character short. + This change ensures that if an SDP label is present + on the previous stream then it is set on the new stream. - ASTERISK-27942 + ASTERISK-28953 - Change-Id: I4e54d8cc6158dc47eb8fdd6ba0108c6fd53f2818 + Change-Id: I9dd63b88b562fe96ce5c791a3dae5bcaca258445 -2018-06-25 15:42 +0000 [5f12e2bd07] George Joseph +2020-06-03 11:47 +0000 [2b5b9cd8e0] Joshua C. Colp - * app_confbridge: Move participant info code to confbridge_manager. + * core_unreal / core_local: Add multistream and re-negotiation. - 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. + When requesting a Local channel the requested stream topology + or a converted stream topology will now be placed onto the + resulting channels. - Change-Id: I228806ac153074f45e0b35d5236166e92e132abd + Frames written in on streams will now also preserve the stream + identifier as they are queued on the opposite channel. -2018-06-18 21:22 +0000 [880fbff6b7] George Joseph + Finally when a stream topology change is requested it is + immediately accepted and reflected on both channels. Each + channel also receives a queued frame to indicate that the + topology has changed. - * res_pjsip_session: Add ability to accept multiple sdp answers + ASTERISK-28938 - 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. + Change-Id: I4e9d94da5230d4bd046dc755651493fce1d87186 - 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. +2020-06-08 06:27 +0000 [744bfb049c] Joshua C. Colp - The default behavior for "different tags" remains the same at TRUE and - the default for "same tag" is FALSE. + * res_rtp_asterisk: Don't assume setting retrans props means to enable. - Change-Id: I64d071942b79adb2f0a4e13137389b19404fe3d6 - ASTERISK-27936 - Reported-by: Ross Beer + The "value" passed in when setting an RTP property determines + whether it should be enabled or disabled. The RTP send and + receive retrans props did not examine this to know if the + buffers should be enabled. They assumed they always should be. -2018-06-21 11:45 +0000 [675e2ddb49] Alexander Traud + This change makes it so that the "value" passed in is + respected. - * uuid: Enable UUID in Solaris 11. + ASTERISK-28939 - ASTERISK-27933 - Reported by: bautsche + Change-Id: I9244cdbdc5fd065c7f6b02cbfa572bc55c7123dc - Change-Id: I9b8362824efbfb2a16981e46e85f7c8322908c49 +2020-06-10 12:11 +0000 [53a3be1891] Joshua C. Colp -2018-06-13 02:25 +0000 [184b375b41] Kristian F. Høgh + * bridge_softmix: Add additional old states for adding new source. - * app_queue: Add option for predial handlers on caller and callee channels + There are three states that an old stream can be in to allow + becoming a source stream in a new stream: - 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. + 1. Removed + 2. Inactive + 3. Sendonly - ASTERISK-27912 + This change adds the two missing ones, inactive and sendonly, + so if a stream transitions from those to a state where they are + providing video to Asterisk we properly re-negotiate the other + participants. - Change-Id: I5acf5c32587ee008658d12e8a8049eb8fa4d0f24 + ASTERISK-28944 -2018-06-21 16:39 +0000 [cad50d6dbf] Richard Mudgett + Change-Id: Id8256b9b254b403411586284bbaedbf50452de01 - * VECTOR: Passing parameters with side effects to macros is dangerous. +2020-06-07 19:02 +0000 [0fe63c2f87] George Joseph - * 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. + * app_confbridge: Plug ref leak of bridge channel with send_events - Change-Id: I2847872a455b11ea7e5b7ce697c0a455a1d0ac9a + When send_events is enabled for a user, we were leaking a reference + to the bridge channel in confbridge_manager.c:send_message(). This + also caused the bridge snapshot to not be destroyed. -2018-06-20 16:57 +0000 [aaaa6f4a4b] Richard Mudgett + Change-Id: I87a7ae9175e3cd29f6d6a8750e0ec5427bd98e97 - * bridge_softmix.c: Fix memory leak. +2020-06-03 12:06 +0000 [10dad4ea3a] Kevin Harwell - Made release the media_types vector in - softmix_bridge_stream_topology_changed(). + * Compiler fixes for gcc 10 - Change-Id: Ide3f47e379b614879220dfeeb13843f9f2b177b5 + This patch fixes a few compile warnings/errors that now occur when using gcc + 10+. -2018-06-21 11:22 +0000 [bfeded7e62] Alexander Traud + Also, the Makefile.rules check to turn off partial inlining in gcc versions + greater or equal to 8.2.1 had a bug where it only it only checked against + versions with at least 3 numbers (ex: 8.2.1 vs 10). This patch now ensures + any version above the specified version is correctly compared. - * smsq: Remove an left-over special case for Solaris. + Change-Id: I54718496eb0c3ce5bd6d427cd279a29e8d2825f9 - Actually, this case was never needed because the check below does the same. +2020-04-30 18:43 +0000 Asterisk Development Team - Change-Id: Ia2fca4ba6c58c644a8b7cb2d9db8539728c14ffb + * asterisk certified/16.8-cert2 Released. -2018-06-21 11:17 +0000 [bbea9cfc3b] Alexander Traud +2020-04-30 10:56 +0000 [d3fae6d7a1] George Joseph - * res_http_post: Enable GMime in Solaris 11. + * app_voicemail: Add workaround for a gcc 10 issue with -Wrestrict - Change-Id: Ie434541f18f894c751d2e44bcb3efb3cac626019 + The gcc 10 -Wrestrict option was causing "overlap" errors when + snprintf was copying one char[256] structure member to another + char[256] member in the same structure. -2018-06-21 05:08 +0000 [7f3882c8e9] Alexander Traud + Using ast_alloca instead of declaring the structure inline + solves the issue. - * codecs/ilbc: Compile in Solaris 11. + Here's a link to the "enhancement": + https://gcc.gnu.org/legacy-ml/gcc-patches/2019-10/msg00570.html - 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. + We may follow up with a gcc bug report. - Change-Id: I91ddbe5be7c00069c3a25abd5f58d7b2f04c51b1 + Change-Id: Ie0099adcb0a9727bd9aa99e024dd912a67eaf534 -2018-06-21 05:07 +0000 [9704c424f5] Alexander Traud +2020-04-20 10:18 +0000 [02188feb32] Joshua C. Colp - * chan_oss: Compile in Solaris 11. + * fax: Fix crashes in PJSIP re-negotiation scenarios. - M_READ existed already and was conflicting in name. + This change fixes a few re-negotiation issues + uncovered with fax. - Change-Id: I02108e07ae7d2dc314fe1e6c706c17731095a3e4 + 1. The fax support uses its own mechanism for + re-negotiation by conveying T.38 information in + its own frames. The new support for re-negotiating + when adding/removing/changing streams was also + being triggered for this causing multiple re-INVITEs. + The new support will no longer trigger when + transitioning between fax. -2018-06-21 05:04 +0000 [6f47b84fbd] Alexander Traud + 2. In off-nominal re-negotiation cases it was + possible for some state information to be left + over and used by the next re-negotiation. This + is now cleared. - * func_env: Compile in Solaris 11. + ASTERISK-28811 + ASTERISK-28839 - Change-Id: Idc9b36720f3d29c90a35a6a1ae79a7f9e1aaf50e + Change-Id: I8ed5924b53be9fe06a385c58817e5584b0f25cc2 + (cherry picked from commit f3ac42b9bd0d436ce2128e5bbb0502ddb587f98a) -2018-06-21 05:01 +0000 [a5c53bd323] Alexander Traud +2020-04-12 09:53 +0000 [eeab038b01] Alexander Traud - * utils: Avoid an unused variable in Solaris 11. + * BuildSystem: Search for Python/C API when possibly needed only. - 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. + The Python/C API is used only if the Test Framework was enabled in Asterisk + 'make menuselect'. The Test Framework is available only if the Developer Mode + was enabled in Asterisk './configure --enable-dev-mode'. And that Python/C API + is used only if the PJProject was found and not disabled in Asterisk; the user + did not go for './configure --without-pjproject'. - Change-Id: I63dd2bc4833b9bdb04602f83422d16caf289d46a + Furthermore, because version 2 of that Python/C API is required (currently) and + because some platforms do not offer a generic version 2, the script searches + for 2.7 explicitly as well. -2018-06-21 04:59 +0000 [92109cf496] Alexander Traud + To avoid version mismatch between the Python/C API and the Python environment, + the script searches for the latter in the same versions, in the same the order + as well. Because this Python/C API is just for (some) Asterisk contributors, + the script also goes for the Python 3 environment as a last resort for all + other Asterisk users. This allows 'make full' even on minimal installations of + Ubuntu 18.04 LTS and newer. - * BuildSystem: Enable ./configure in Solaris 11. + Because the Python/C API is Asterisk contributor specific, the Python packages + are removed from the script './contrib/scripts/install_prereq' as this script + is intended for Asterisk users. Asterisk contributors have to install much more + packages in any case, like: + sudo apt install autoconf automake git git-review python2.7-dev - ASTERISK-27931 + ASTERISK-28824 + ASTERISK-27717 - Change-Id: If298ce7f03be227a3687b9c20d382c9c55a72404 + Change-Id: Id46d357e18869f64dcc217b8fdba821b63eeb876 + (cherry picked from commit dfdff0f9ec99ad80a385df99f4e5bf493f6d0b06) -2018-06-20 13:24 +0000 [d6721e1e4c] Alexander Traud +2020-04-29 15:42 +0000 [40d379f59e] Joshua Colp - * BuildSystem: Enable autotools in Solaris 11. + * Revert "Revert "res_rtp_asterisk: Free payload when error on insertion to data buffer"" - 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. + This reverts commit fe3dc091b57bf16ba62e185fe05f77069062a3b1. - ASTERISK-27929 - ASTERISK-27926 + Reason for revert: This will be merged once 16.8-cert1 is released. - Change-Id: Id4cf433a1a7fa861d0210e1a2e16ca592b49fd5a + Change-Id: I5c29f96a70ed7e1fa146a69e7b48bfe31cbee929 -2018-06-13 11:33 +0000 [eb8bbe660e] Richard Mudgett +2020-04-28 10:31 +0000 [05671db0c3] Joshua C. Colp - * channel.c: Make CHECK_BLOCKING() save thread LWP id for messages. + * pjsip: Increase maximum ICE candidate count. - * Removed an unnecessary call to ast_channel_blocker_set() in - __ast_read(). + In practice it has been seen that some users come + close to our maximum ICE candidate count of 32. + In case people have gone over this increases the + count to 64, giving ample room. - ASTERISK-27625 + ASTERISK-28859 - Change-Id: I342168b999984666fb869cd519fe779583a73834 + Change-Id: I35cd68948ec0ada86c14eb53092cdaf8b62996cf + (cherry picked from commit 4374f8621920da032117662222fa0eb76b00bf76) -2018-06-13 16:41 +0000 [da54605b8a] Richard Mudgett +2020-04-29 15:43 +0000 [491f0bae7d] Joshua Colp - * ARI POST DTMF: Make not compete with channel's media thread. + * Revert "Revert "res_rtp_asterisk: Resolve loop when receive buffer is flushed"" - 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. + This reverts commit a75317ce247b913d1cb92b9ffa47a49aa56b172a. - ASTERISK-27625 + Reason for revert: This will be merged once 16.8-cert1 is released. - Change-Id: I4d6a2fe7386ea447ee199003bf8ad681cb30454e + Change-Id: Ic2f4dbb19c5756fabe71b9e35c5a924214f5af08 -2018-06-13 13:05 +0000 [7d874c1af7] Richard Mudgett +2020-04-30 13:30 +0000 Asterisk Development Team - * AMI PlayDTMF Action: Make not compete with channel's media thread. + * asterisk certified/16.8-cert1 Released. - 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. +2020-04-20 11:14 +0000 [fe3dc091b5] Joshua Colp - ASTERISK-27625 + * Revert "res_rtp_asterisk: Free payload when error on insertion to data buffer" - Change-Id: Ia341f1a6f4d54f2022261abec9021fe5b2eb4905 + This reverts commit fef8a04aadf759bf08f12827de18f970ae7e3e8c. -2018-06-12 14:09 +0000 [080508d2eb] Richard Mudgett + Reason for revert: Waiting for future release. - * channel.c: Fix usage of CHECK_BLOCKING() + Change-Id: I67e9837a352b252f8a75ebaa9a5fb7e5b35d41f7 - 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. +2020-04-20 11:14 +0000 [a75317ce24] Joshua Colp - ASTERISK-27625 + * Revert "res_rtp_asterisk: Resolve loop when receive buffer is flushed" - Change-Id: I4dfc33e01e60627d962efa29d0a4244cf151a84d + This reverts commit 22bc8a71680e4099ffd3ccff7b3fe33d26291c36. -2018-06-18 18:04 +0000 [0989b63047] Richard Mudgett + Reason for revert: Waiting for future release. - * autoservice: Don't start channel autoservice if the thread is a user interface. + Change-Id: If924f0b7fa02a72b52c708aa80addc361a87b490 - 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. +2020-04-14 10:48 +0000 [22bc8a7168] Pirmin Walthert - 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. + * res_rtp_asterisk: Resolve loop when receive buffer is flushed - ASTERISK-27625 + When the receive buffer was flushed by a received packet while it + already contained a packet with the same sequence number, Asterisk + never left the while loop which tried to order the packets. - Change-Id: If2dc94ce15ddabf923ed1e2a65ea0ef56e013e49 + This change makes it so if the packet is in the receive buffer it + is retrieved and freed allowing the buffer to empty. -2018-06-18 16:07 +0000 [91c3ac19cb] Richard Mudgett + ASTERISK-28827 - * Dialplan functions: Fix some channel autoservice misuse. + Change-Id: Idaa376101bc1ac880047c49feb6faee773e718b3 - * Fix off nominal paths leaving the channel in autoservice. - * Remove unnecessary start/stop channel autoservice. - * Fix channel locking around a channel datastore search. +2020-04-14 10:31 +0000 [fef8a04aad] Pirmin Walthert - Change-Id: I7ff2e42388064fe3149034ecae57604040b8b540 + * res_rtp_asterisk: Free payload when error on insertion to data buffer -2018-06-19 10:43 +0000 [720c2d1da2] Richard Mudgett + When the ast_data_buffer_put rejects to add a packet, for example because + the buffer already contains a packet with the same sequence number, the + payload will never be freed, resulting in a memory leak. - * Fix some doxygen and curly placement. + The data buffer will now return an error if this situation occurs + allowing the caller to free the payload. The res_rtp_asterisk module + has also been updated to do this. - Change-Id: I9a784a7c804120a8fa826c2a4cb9957e4b0b2fc8 + ASTERISK-28826 -2018-06-18 13:17 +0000 [c1686b8b3e] Richard Mudgett + Change-Id: Ie6c49495d1c921d5f997651c7d0f79646f095cf1 - * tcptls.h: Remove redundant SSL_CTX typedef. +2020-04-06 14:56 +0000 [81d34554ab] Asterisk Development Team - It is invalid to typedef something more than once. Though not all gcc - compilers on different OS's complain about it. + * Update for certified/16.8-cert1-rc5 - Change-Id: I5a7d4565990c985822d61ce75bde0b45f9870540 +2020-04-01 04:00 +0000 [25e2274e48] Jaco Kroon -2018-06-12 15:13 +0000 [a470bb9e27] Richard Mudgett + * main/backtrace: binutils-2.34 fix. - * channel: Fix some more unprotected channel flag setting. + My tester missed this one previously, have confirmed a positive build + this time round. - Change-Id: I34c3b1201b1de539945bcfdcb264fff30332d48c + Change-Id: Id06853375954a200f03f9a1b9c97fe0b10d31fbf -2018-06-15 15:21 +0000 [8732d62334] Matthew Fredrickson +2020-03-16 05:11 +0000 [2af88e7ca2] Jaco Kroon - * menuselect/menuselect_curses: Resolves sprintf usage error + * Update main/backtrace.c to deal with changes in binutils 2.34. - 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. + binutils 2.34 merged this commit: - ASTERISK-27903 - Reported-by: Alexander Traud + https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;\ + h=fd3619828e94a24a92cddec42cbc0ab33352eeb4 - Change-Id: I2213dcb454aff26457e2e4cc9c6821276463ae3a + Which effectively does things like: -2018-06-12 09:30 +0000 [4c7ab73468] Sam Wierema + -#define bfd_section_size(bfd, ptr) ((ptr)->size) + -#define bfd_get_section_size(ptr) ((ptr)->size) - * app_mp3: remove 10 seconds of silence after mp3 playback + +#define bfd_section_size(sec) ((sec)->size) - 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. + So in order to remain backwards compatible we need to detect this API + change, and adjust accordingly. The simplest is to notice that the + bfd_get_section_size and bfd_get_section_vma MACROs are no longer + defined, and define then onto the new API. The alternative is to litter + the code with a number of #ifdef #else #endif splatters right through + the code. - The main difference is that for every timeout asterisk receives it now - checks if mpg123 is still running before poll again. + Change-Id: I3efe0f8e8f3e338d16fcbc2b26a505367b6e172f + (cherry picked from commit 33b2c7f79b33693be502e4707c936f8dba392b5f) - ASTERISK-27752 +2020-03-31 12:52 +0000 [3297df5a61] Kevin Harwell - Change-Id: Ib7df8462e3e380cb328011890ad9270d9e9b4620 + * channel: write to a stream on multi-frame writes -2018-06-13 04:40 +0000 [9d7958672b] Alexander Traud + If a frame handling routine returns a list of frames (vs. a single frame) + those frames are never passed to a tech's write_stream handler even if one is + available. For instance, if a codec translation occurred and that codec + returned multiple frames then those particular frames were always only sent + to the tech's "write" handler. If that tech (pjsip for example) was stream + capable then those frames were essentially ignored. Thus resulting in bad + audio. - * tests/test_utils: Repair ./configure --with-ssl=PATH. + This patch makes it so the "write_stream" handler is appropriately called + for all cases, and for all frames if available. - ASTERISK-27914 + ASTERISK-28795 #close - Change-Id: Ibcab8f556ee77776f203cff8b06d776a673b7bc4 + Change-Id: I868faea0b73a07ed5a32c2b05bb9cf4b586f739d -2018-06-04 20:31 +0000 [e1908ea484] Kirsty Tyerman +2020-03-26 11:48 +0000 [3d317239d5] Asterisk Development Team - * chan_iax2: better handling for timeout and EINTR + * Update for certified/16.8-cert1-rc4 - 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. +2020-03-26 11:46 +0000 [096db19662] Asterisk Development Team - The proposed patch is for the iax module, so that timeout and EINTR does not - exit the thread. + * Update CHANGES and UPGRADE.txt for certified/16.8-cert1-rc4 +2020-03-26 11:42 +0000 [c9cd681261] Joshua C. Colp - ASTERISK-27705 - Reported-by: Kirsty Tyerman + * CHANGES: Change md file extension to txt. - Change-Id: Ib4c32562f69335869adc1783608e940c3535fbfb + Change-Id: I168e2d3a65d444fb0961bd228257441fe718f6a7 -2018-05-31 16:22 +0000 [e7a7506f9c] George Joseph +2020-03-23 05:49 +0000 [bdf4d159fd] Joshua C. Colp - * app_confbridge: Enable sending events to participants + * res_pjsip_session: Apply intention behind requested formats. - 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. + When an outgoing channel is created a list of formats may + optionally be provided which is used as a request that the + formats be used if possible. If an endpoint is not configured + for any of the formats we ignore this request and use what is + configured. This has the side effect of also including other + stream types (such as video) that were not present in the + requested formats. - 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. + This change makes it so that the intention of the request is + preserved - that is if only an audio format is requested then + even if there is no joint audio format between the request and + the configuration we will still only place an audio stream in + the outgoing call. - To control this behavior, the following options have been added to - confbridge.conf: + ASTERISK-28787 - bridge_profile/enable_events: This must be enabled on any bridge where - events are desired. + Change-Id: Ia54c0c63e94aca176169b9bae4bb8a8380ea245f - 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. +2020-03-25 04:38 +0000 [3d22ecb1e2] Joshua C. Colp - 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. + * res_rtp_asterisk: Ensure sufficient space for worst case NACK. - 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. + ASTERISK-28790 - Change-Id: I26420aa9f101f0b2387dc9e2fd10733197f1318e + Change-Id: I10df52f98b19ed62575f25dab36e82d136dccd99 -2018-06-13 05:06 +0000 [b01fc2ef3d] Alexander Traud +2020-03-17 15:54 +0000 [904f6b7c2f] Kevin Harwell - * res_rtp_asterisk: Instead of ./configure use OPENSSL_NO_SRTP. + * ast_coredumper: add Asterisk information dump - 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. + This patch makes it so ast_coredumper now outputs the following information to + a *-info.txt file when processing a core file: - 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. + asterisk version and "built by" string + BUILD_OPTS + system start, and last reloaded date/time + taskprocessor list + equivalent of "bridge show all" + equivalent of "core show channels verbose" - Change-Id: I3c77c7b00b2ffa2e935632097fa057b9fdf480c0 + Also a slight modification was made when trying to obtain the pid(s) of a + running Asterisk. If it fails to retrieve any it now reports an error. -2018-06-05 04:36 +0000 [41175caee0] Joshua Colp + Change-Id: I54f35c19ab69b8f8dc78cc933c3fb7c99cef346b - * rtp: Don't negotiate dynamic codecs using payload. +2020-03-19 08:48 +0000 [aa04c3f49b] Joshua C. Colp - 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. + * res_pjsip_session: Don't restrict non-audio default streams to sendrecv. - This change makes it so that only static payloads - will be negotiated using their payload number. + The state of the default audio stream is used for hold/unhold so we + restrict it to sendrecv as the core does not handle when it changes as + a result of hold/unhold. - ASTERISK-27848 + This restriction does not apply to other media types though so we now + only restrict it to audio. This allows the other default streams to + store their state at all values, and not just sendrecv and removed. - Change-Id: Ia865830170fd3f808cdb33104f3d4c4ffdc77570 + ASTERISK-28783 -2018-04-16 14:13 +0000 [b649682caa] Sean Bright + Change-Id: I139740f38cea7f7d92a876ec2631ef50681f6625 - * AST-2018-007: iostreams potential DoS when client connection closed prematurely +2020-03-04 15:45 +0000 [7ecbcdf22f] George Joseph - 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. + * CI: Create generic jenkinsfile - ASTERISK-27807 + This is a generic jenkinsfile to build Asterisk and optionally + perform one or more of the following: + * Publish the API docs to the wiki + * Run the Unit tests + * Run Testsuite Tests - Change-Id: I945c5fc888ed92be625b8c35039fc6d2aa89c762 + This job can be triggered manually from Jenkins or be triggered + automatically on a schedule based on a cron string. -2018-04-30 17:38 +0000 [81ac32a85f] Richard Mudgett + Change-Id: Id9d22a778a1916b666e0e700af2b9f1bacda0852 - * AST-2018-008: Fix enumeration of endpoints from ACL rejected addresses. +2020-03-04 09:43 +0000 [d1bb76a27d] Asterisk Development Team - 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. + * Update for certified/16.8-cert1-rc3 - * 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. +2020-03-04 09:41 +0000 [b922e387d1] Asterisk Development Team - ASTERISK-27818 + * Update CHANGES and UPGRADE.txt for certified/16.8-cert1 +2020-02-20 11:33 +0000 [4458b7a52a] Joshua C. Colp - Change-Id: Icb275a54ff8e2df6c671a6d9bda37b5d732b3b32 + * res_rtp_asterisk: Improve video performance in certain networks. -2018-06-08 15:02 +0000 [0743ad6422] Alexander Traud + The receive buffer will now grow if we end up flushing the + receive queue after not receiving the expected packet in time. + This is done in hopes that if this is encountered again the + extra buffer size will allow more time to pass and any missing + packets to be received. - * res_rtp_asterisk: Allow OpenSSL configured with no-deprecated. + The send buffer will now grow if we are asked for packets and + can't find them. This is done in hopes that the packets are + from the past and have simply been expired. If so then in + the future with the extra buffer space the packets should be + available. - 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. + Sequence number cycling has been handled so that the + correct sequence number is calculated and used in + various places, including for sorting packets and + for determining if a packet is old or not. - ASTERISK-27910 + NACK sending is now more aggressive. If a substantial number + of missing sequence numbers are added a NACK will be sent + immediately. Afterwards once the receive buffer reaches 25% + a single NACK is sent. If the buffer continues to grow and + reaches 50% or greater a NACK will be sent for each received + future packet to aggressively ask the remote endpoint to + retransmit. - Change-Id: I5b0dd47c5194ee17f830f869d629d7ef212cf537 + ASTERISK-28764 -2018-06-08 06:01 +0000 [99aed78078] Alexander Traud + Change-Id: I97633dfa8a09a7889cef815b2be369f3f0314b41 - * crypto.h: Repair ./configure --with-ssl=PATH. +2020-02-10 05:04 +0000 [d515dea9c6] Joshua C. Colp - ASTERISK-27908 + * res_pjsip_session: Fix off-nominal session refreshes. - Change-Id: Iac49d9f82faeb8a4611c6805906bd6d650b1b1d8 + Given a scenario where session refreshes occur close to + each other while another is finishing it was possible for + the session refreshes to occur out of order. It was + also possible for session refreshes to be delayed for + quite some time if a session refresh did not result in + a topology change. -2018-06-08 04:03 +0000 [ca682f0030] Alexander Traud + For the out of order session refreshes the first session + refresh would be queued due to a transaction in progress. + This transaction would then finish. When finished a + separate task to process the delayed requests queue + would be queued for handling. A second refresh would + be requested internally before this delayed request + queued task was processed. As no transaction was in + progress this session refresh would be immediately + handled before the queued session refresh. - * res_crypto: Allow OpenSSL configured with no-deprecated. + The code will now check if any delayed requests exist + before allowing a session refresh to immediately occur. + If any exist then the session refresh is queued. - The header had to be included explicitly. + For the delayed session refreshes if a session refresh + did not result in a topology change the attempt would + be immediately stopped and no other delayed requests would + be processed. - ASTERISK-27906 + The code will now go through the entire delayed requests + queue until a delayed request results in a request + actually being sent. - Change-Id: I41743801eed998c039d73db7a0762d104a4f75b2 + ASTERISK-28730 -2018-06-08 02:41 +0000 [234bf4b7ff] Alexander Traud + Change-Id: Ied640280133871f77d3f332be62265e754605088 + (cherry picked from commit b438d1d9adc8c5200214e41876e9abc02c5b5288) - * res_srtp: Repair ./configure --with-ssl=PATH. +2020-01-04 18:11 +0000 [5fccf6d1c6] Joshua C. Colp - ASTERISK-27905 + * bridging: Add better support for adding/removing streams. - Change-Id: Ibb7dc148a0048f4f9c3b12937ba4240dff0d15e2 + This change adds support to bridge_softmix to allow the addition + and removal of additional video source streams. When such a change + occurs each participant is renegotiated as needed to reflect the + update. If another video source is added then each participant + gets another source. If a video source is removed then it is + removed from each participant. This functionality allows you to + have both your webcam and screenshare providing video if you + desire, or even more streams. Mapping has been changed to use + the topology index on the source channel as a unique identifier + for outgoing participant streams, this will never change and + provides an easy way to establish the mapping. -2018-05-31 10:25 +0000 [65ff2f057a] Alexei Gradinari + The bridge_simple and bridge_native_rtp modules have also been + updated to renegotiate when the stream topology of a party changes + allowing the same behavior to occur as added to bridge_softmix. + If a screen share is added then the opposite party is renegotiated. + If that screen share is removed then the opposite party is + renegotiated again. - * func_odbc: NODATA if SQLNumResultCols returned 0 columns on readsql + Some additional fixes are also included in here. Stream state is + now conveyed in SDP so sendonly/recvonly/inactive streams can + be requested. Removed streams now also remove previous state + from themselves so consumers don't get confused. - 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-28733 - ASTERISK-27888 #close + Change-Id: I93f41fb41b85646bef71408111c17ccea30cb0c5 - Change-Id: Ie0f7bdac6c405aa5bbd38932c7b831f90729ee19 +2020-02-19 08:24 +0000 [7b8157645f] Asterisk Development Team -2018-06-07 08:46 +0000 [1725eaf8fb] George Joseph + * Update for certified/16.8-cert1-rc2 - * chan_pjsip: Register for "BEFORE_MEDIA" responses +2020-02-13 13:39 +0000 [bb19e7feb5] George Joseph - 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". + * res_pjsip_outbound_registration: Fix SRV failover on timeout - * 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". + In order to retry outbound registrations for some situations, we + need access to the tdata from the original request. For instance, + for 401/407 responses we need it to properly construct the + subsequent request with the authentication. We also need it if + we're iterating over a DNS SRV response record set so we can skip + entries we've already tried. - * Also cleaned up some cleanup code in load module. + We've been getting the tdata from the server response rdata and + transaction but that only works for the failures where there was + actually a response (4XX, 5XX, etc). For timeouts there's no + response and therefore no rdata or transaction from which to get + the tdata. When processing a single A/AAAA record for a server, + this wasn't an issue as we just retried that same server after the + retry timer expired. If we got an SRV record set for the server + though, without the state from the tdata, we just kept trying the + first entry in the set repeatedly instead of skipping to the next + one in the list. - ASTERISK-27902 + * Added a "last_tdata" member to the client state structure to keep + track of the sent tdata. - Change-Id: If9b860541887aca8ac2c9f2ed51ceb0550fb007a + * Updated registration_client_send() to save the tdata it used into + the client_state. -2018-06-07 07:19 +0000 [9f2eb17005] Alexander Traud + * Updated sip_outbound_registration_response_cb() to use the tdata + saved in client_state when we don't get a response from the + server. We still use the tdata from the transaction when we DO + get a response from the server so we can properly handle 4XX + responses where our new request depends on it. - * ooh323c: GCC 8.1 warned about output truncated before terminating nul. + General note on timeouts: - ASTERISK-27901 + Although res_pjsip_outbound_registration skips to the next record + immediately when a timeout occurs during SRV set traversal, it's + pjproject that determines how long to wait before a timeout is + declared. As with other SIP message types, pjproject will continue + trying the same server at an interval specified by "timer_t1" until + "timer_b" expires. Both of those timers are set in the pjsip.conf + "system" section. - Change-Id: I5a8e894f4924ef52e3094f6870656a559d67f3d7 + ASTERISK-28746 -2018-06-05 13:43 +0000 [7af5e86821] Alexei Gradinari + Change-Id: I199b8274392d17661dd3ce3b4d69a3968368fa06 - * pjsip_options: show/reload AOR qualify options using CLI +2020-02-13 15:08 +0000 [43ca35b831] Kevin Harwell - Currentrly pjsip_options code does not handle the situation when the - AOR qualify options were changed. + * res_rtp_asterisk: bad audio (static) due to incomplete dtls/srtp setup - Also there is no way to find out what qualify options are using. + There was a race condition between client initiated DTLS setup, and handling + of server side ice completion that caused the underlying SSL object to get + cleared during DTLS initialization. If this happened Asterisk would be left + in a partial DTLS setup state. RTP packets were sent and received, but were + not being encrypted and decrypted. This resulted in no audio, or static. - 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. + Specifically, this occurred when '__rtp_recvfrom' was processing the handshake + sequence from the client to the server, and then 'ast_rtp_on_ice_complete' + gets called from another thread and clears the SSL object when calling the + 'dtls_perform_setup' function. The timing had to be just right in the sense + that from the external SSL library perspective SSL initialization completed + (rtp recv), Asterisk clears/resets the SSL object (ice done), and then checks + to see if SSL is intialized (rtp recv). Since it was cleared, Asterisk thinks + it is not finished, thus not completing 'dtls_srtp_setup'. - ASTERISK-27872 + This patch removes calls to 'dtls_perform_setup', which clears the SSL object, + in 'ast_rtp_on_ice_complete'. When ice completes, there is no reason to clear + the underlying SSL object. If an ice candidate changes a full protocol level + renegotiation occurs. Also, in the case of bundled ICE candidates are reused + when a stream is added. So no real reason to have to clear, and reset in this + instance. - Change-Id: I1746d10ef2b7954f2293f2e606cdd7428068c38c + Also, this patch adds a bit of extra logging to aid in diagnosis of any future + problems. -2018-05-22 16:21 +0000 [e46b442e38] Alexei Gradinari + ASTERISK-28742 #close - * pjsip_options: handle modification of qualify options in realtime + Change-Id: I34c9e6bad5a39b087164646e2836e3e48fe6892f - Currentrly pjsip_options code does not handle the situation when the - qualify options were changed in realtime database. - Only 'module reload res_pjsip' helps. +2020-02-07 14:42 +0000 [476bbcf3a3] Asterisk Development Team - 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. + * Update for certified/16.8-cert1-rc1 - ASTERISK-27872 +2020-02-07 14:22 +0000 [b3a0387fc0] Asterisk Development Team - Change-Id: Id55210a18e62ed5d35a88e408d5fe84a3c513c62 + * Update CHANGES and UPGRADE.txt for certified/16.8-cert1 +2020-02-07 13:44 +0000 [7416703f04] George Joseph -2018-05-30 01:12 +0000 [e078558038] Pirmin Walthert + * doc: Fix CHANGES entries to have .txt suffix and update READMEs - * bridge_channel.c: Fix Deadlock when using Local channels and fax gateway + Although the wiki page for the new CHANGES and UPGRADE scheme + states that the files must have the ".txt" suffix, the READMEs + didn't. - 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. + Change-Id: I490306aa2cc24d6f014738e9ebbc78592efe0f05 - ASTERISK-27094 #close - Reported-by: David Brillert +2020-02-05 10:37 +0000 [443230f5d5] George Joseph - Change-Id: I5f86c1e2ce75b9929a36ab589b18c450e62ea35f + * Asterisk Certified 16.8 Preparation -2018-06-04 09:50 +0000 [437ab41881] George Joseph + * Updated .gitreview default branch to certified/16.8 + * Updated .version to certified/16.8 + * Set all extended support modules to be disabled by default - * app_sendtext: Allow content types other than text/plain + Change-Id: I11c9b5f33865fb541192a786dc25dddf8558e09b - 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. +2020-02-04 08:18 +0000 [40e331ff90] Joshua C. Colp - Change-Id: I94a90cfee98b4bc8e22aa5c0b6afb7b862f979d9 + * res_rtp_asterisk: Don't produce transport-cc if no packets. -2018-05-28 19:17 +0000 [a7f4121238] William McCall + The code assumed that when the transport-cc feedback + function was called at least one packet will have been + received. In practice this isn't always true, so now + we just reschedule the sending and do nothing. - * app_confbridge: Add talking indicator for ConfBridgeList AMI response + Change-Id: Iabe7b358704da446fc3b0596b847bff8b8a0da6a - 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. +2020-02-03 10:24 +0000 [8b0922a101] George Joseph - ASTERISK-27877 #close + * message.c: Add option to suppress the Message channel AMI and ARI events - Change-Id: I19b5284f34966c3fda94f5b99a7e40e6b89767c6 + In order to reduce the amount of AMI and ARI events generated, + the global "Message/ast_msg_queue" channel can be set to suppress + it's normal channel housekeeping events such as "Newexten", + "VarSet", etc. This can greatly reduce load on the manager + and ARI applications when the Digium Phone Module for Asterisk + is in use. To enable, set "hide_messaging_ami_events" in + asterisk.conf to "yes" In Asterisk versions <18, the default + is "no" preserving existing behavior. Beginning with + Asterisk 18, the option will default to "yes". -2018-05-29 12:28 +0000 [6bbede84fb] Richard Mudgett + NOTE: This change does not affect UserEvents or the ARI + TextMessageReceived events. - * app_meetme: Fix manager event documentation for several events. + * Added the "hide_messaging_ami_events" option to asterisk.conf. - 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. + * Changed message.c to set the AST_CHAN_TP_INTERNAL property on + the "Message/ast_msg_queue" channel if the option is set in + asterisk.conf. This suppresses the reporting of the events. - * Change the online documentation to match reality. + Change-Id: Ia2e3516d43f4e0df994fc6598565d6bba2d7018b + (cherry picked from commit bfe9e1b2e7a489b7eb49a98d290f2e3a68a34dca) - ASTERISK-27873 - ASTERISK-25261 +2020-02-04 09:03 +0000 [d436f56858] Asterisk Development Team - Change-Id: I437bc70618d07c183c9624b7069c2fcae7f17a39 + * Update for 16.8.0 -2018-05-28 10:29 +0000 [24503fb600] Alexander Traud +2020-02-04 07:35 +0000 [126beb3e6c] Joshua Colp - * tcptls.h: Repair ./configure --with-ssl=PATH. + * REVERT: Add option to suppress the Message channel AMI and ARI events - asterisk/tcptls.h was included (explicitly, implicitly, or transitively). Those - inclusions got replaced by forward declarations. As side effect, the inclusions - got completed. + This reverts commit bfe9e1b2e7a489b7eb49a98d290f2e3a68a34dca. - ASTERISK-27878 + Reason for revert: Per discussion on IRC we're sticking to policy. - Change-Id: I9d102728e30336d6522e5e4ae9e964013a0835f7 + Change-Id: I61691a9ffa1bc30807cbe618a4a72b4d214481aa -2018-05-25 09:55 +0000 [d36338ce2b] Alexander Traud +2020-02-03 10:24 +0000 [bfe9e1b2e7] George Joseph - * tcptls: Allow OpenSSL configured with no-dh. + * message.c: Add option to suppress the Message channel AMI and ARI events - 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. + In order to reduce the amount of AMI and ARI events generated, + the global "Message/ast_msg_queue" channel can be set to suppress + it's normal channel housekeeping events such as "Newexten", + "VarSet", etc. This can greatly reduce load on the manager + and ARI applications when the Digium Phone Module for Asterisk + is in use. To enable, set "hide_messaging_ami_events" in + asterisk.conf to "yes" In Asterisk versions <18, the default + is "no" preserving existing behavior. Beginning with + Asterisk 18, the option will default to "yes". - ASTERISK-27876 + NOTE: This change does not affect UserEvents or the ARI + TextMessageReceived events. - Change-Id: I62c2aba4a630aefc231b71f646207e8c027d9497 + * Added the "hide_messaging_ami_events" option to asterisk.conf. -2018-05-25 07:22 +0000 [91616f4524] Alexander Traud + * Changed message.c to set the AST_CHAN_TP_INTERNAL property on + the "Message/ast_msg_queue" channel if the option is set in + asterisk.conf. This suppresses the reporting of the events. - * tcptls: Allow OpenSSL 1.1.x configured with enable-ssl3-method no-deprecated. + Change-Id: Ia2e3516d43f4e0df994fc6598565d6bba2d7018b - ASTERISK-27874 +2020-01-30 10:36 +0000 [c92e2bb09f] Asterisk Development Team - Change-Id: Ica65113511c7a1c13f7988e7d9e7d9e7f3f620dd + * Update for 16.8.0-rc2 -2018-05-15 08:45 +0000 [2bf26ce5ac] George Joseph +2020-01-27 11:44 +0000 [1627e8eddc] Kevin Harwell - * ast_coredumper: Fix output directory and variable precedence + * res_stasis: trigger cleanup after update - The OUTPUTDIR variable in ast_debug_tools.conf.sample is now set - to "/tmp" instead of "/some/directory". + The cleanup code in stasis shuts down applications if they are in a deactivated + state, and no longer have explicit subscriptions. When registering an app the + cleanup code was running before calling 'update'. When it should be executed + after 'update' since a call to register may re-activate the app. We don't want + it to shutdown before the 'update' otherwise the app won't be re-activated, + or registered. - Variables set on the command line or that are already in the - environment now take predecence over variables set in the config files. + This patch makes it so the cleanup code is executed post 'update'. - ASTERISK-27846 - Reported by: Ted G + ASTERISK-28679 #close - Change-Id: Ie8baec52d531886bf5849ec1d59bb59dc87ad387 + Change-Id: I8f2c0b17e33bb8128441567b97fd4c7bf74a327b + (cherry picked from commit dc9875815c441bcb78370cbf0d331ec46e7abb1d) -2018-05-09 08:31 +0000 [c5d2bf05f4] Torrey Searle +2020-01-27 12:01 +0000 [42c51263b9] Kevin Harwell - * res/res_rtp_asterisk: ensure marker bit is correctly set on ssrc change + * stasis/app: don't lock an app before a call to send - 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. + Calling 'app_send' eventually calls the app's message handler. It's possible + for a handler to obtain a lock on another object, and then need/want to lock + the app object. If the caller of 'app_send' locks the app object prior to + calling then there's a potential for a deadlock, if another thread calls + 'app_send' without locking. - 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. + This patch makes it so 'app_send' is not called with the app object locked in + the section of code doing such. - ASTERISK-27845 + ASTERISK-28423 #close - Change-Id: I01858bd0235f1e5e629e20de71b422b16f55759b + Change-Id: I6767c6d0933c7db1b984018966eefca4c0638a27 + (cherry picked from commit e103339f02f0445b8c77b1c3c6f7d1c80e37f675) -2018-04-23 09:04 +0000 [a507c73a78] Joshua Colp +2020-01-28 09:18 +0000 [939e18d63e] Joshua C. Colp - * rtp: Add support for RTP extension negotiation and abs-send-time. + * res_pjsip_pubsub: Increment persistence data ref when recreating. - 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. + Each subscription needs to have a reference to the persisted data + for it, as well as the main JSON contained within the tree. When + recreating a subscription this did not occur and they both shared + the same reference. - 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. + ASTERISK-28714 - 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. + Change-Id: I706abd49ea182ea367a4ac3feca2706460ae9f4a + (cherry picked from commit 4d32f5747c2db25d63005bbb94ee9d27e09059c2) - ASTERISK-27831 +2020-01-23 10:40 +0000 [b7b813eb34] Asterisk Development Team - [1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 + * Update for 16.8.0-rc1 - Change-Id: I508deac557867b1e27fc7339be890c8018171588 +2020-01-23 10:12 +0000 [eb1ec0498d] Asterisk Development Team -2018-05-22 17:17 +0000 [1bec0c73b3] Richard Mudgett + * Update CHANGES and UPGRADE.txt for 16.8.0 +2020-01-22 12:56 +0000 [1b452ebb51] George Joseph - * channel.c: Fix off nominal channel allocation failure path. + * cdr.c: Set event time on party b when leaving a parking bridge - __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. + When Alice calls Bob and Bob does a blind transfer to Charlie, + Bob's bridge leave event generates a finalize on both the party_a + and party_b CDRs but while the party_a CDR has the correct end time + set from the event time, party_b's leg did not. This caused that + CDR's end time to be equal to the answered time and resulted in a + billsec of 0. - Change-Id: Icf21093f36c60781e8cf6ee9d586536302af33e3 + * We now pass the bridge leave message event time to + cdr_object_party_b_left_bridge_cb() and set it on that CDR before + calling cdr_object_finalize() on it. -2018-05-18 12:46 +0000 [d402594f74] Rodrigo Ramírez Norambuena + NOTE: This issue affected transfers using chan_sip most of the + time but also occasionally affected chan_pjsip probably due to + message timing. - * app_queue: Update year Copyright and fix missing tabs in documentation + ASTERISK-28677 + Reported by: Maciej Michno - Change-Id: Ieb8faf37dc765463ee5dbca1d1343242c756b1c7 + Change-Id: I790720f1e7326f9b8ce8293028743b0ef0fb2cca -2018-05-18 16:45 +0000 [39632c7e00] Alexei Gradinari +2020-01-22 09:39 +0000 [a2a4e1026c] Sean Bright - * config.c: Fix successful DELETE treated as failure + * http: Add ability to disable /httpstatus URI - 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. + Add a new configuration option 'enable_status' which allows the + /httpstatus URI handler to be administratively disabled. - ASTERISK-27863 + We also no longer unconditionally register the /static and /httpstatus + URI handlers, but instead do it based upon configuration. - Change-Id: Ied02b38e8196cb03043e609a0679feebd288d17b + Behavior change: If enable_static was turned off, the URI handler was + still installed but returned a 403 when it was accessed. Because we + now register/unregister the URI handlers as appropriate, if the + /static URI is disabled we will return a 404 instead. -2018-05-14 06:07 +0000 [9f9dce05b2] Matthew Fredrickson + Additionally: - * netsock2: Add ast_sockaddr_resolve_first_af to netsock2 public API + * Change 'enablestatic' to 'enable_static' but keep the former for + backwards compatibility. + * Improve some internal variable names - 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. + ASTERISK-28710 #close - Change-Id: Id52e23be885601c51d70259f62de1a5e59d38d04 + Change-Id: I647510f796473793b1d3ce1beb32659813be69e1 -2018-05-20 06:36 +0000 [1424f42d25] Alexander Traud +2020-01-18 15:54 +0000 [9895e94dba] Andrew Siplas - * libasteriskssl: Allow OpenSSL 1.0.2 configured with no-deprecated. + * chan_dahdi: Change 999999 to INT_MAX to better reflect "no timeout" - Use CRYPTO_set_id_callback(.) only with OpenSSL 0.9.8 and older. + The no-entry timeout set to 999999 == 16⅔ minutes, change to INT_MAX + to match behavior of "no timeout" defined in comment. - ASTERISK-27867 + ASTERISK-28702 #close - Change-Id: Iadd58d5bf6f538eb224203970a4e88e26f259655 + Change-Id: I4ea015986e061374385dba247b272f7aac60bf11 -2018-05-19 08:23 +0000 [2228ae3f27] Alexander Traud +2020-01-20 13:53 +0000 [efecc9d139] Sean Bright - * tcptls: Repair ./configure --with-ssl=PATH. + * translate.c: Fix silk 24kHz truncation in 'core show translation' - SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 got discovered without honoring a PATH. + SILK @ 24kHz is not shown in the 'core show translation' output because of an + off-by-one-error. Discovered while looking into ASTERISK~19871. - ASTERISK-27865 + ASTERISK-28706 + Reported by: Sean Bright - Change-Id: I8cd358eed7411726d08fa7b01691bef122fbeb71 + Change-Id: Ie1a551a8a484e07b45c8699cc0c90f1061029510 -2018-03-27 18:53 +0000 [2ca3b6d9cc] Nic Colledge +2020-01-20 15:26 +0000 [a7aaca9eaa] Sean Bright - * app_voicemail: Fix data-type mismatch between app_voicemail and database + * func_odbc.conf.sample: Add example lookup - Fix data-type mismatch between app_voicemail and database columns - exposed by new version of MariaDB + Change-Id: Ia05aab1f579597963d2ea23920d2210cfcb97c84 - ASTERISK-27760 +2020-01-20 11:18 +0000 [04c81f9748] Sean Bright - Change-Id: I8543ad480a08c98be78bde1ee870e6e6c84b2c5b + * res_statsd: Document that res_statsd does nothing on its own -2018-05-12 06:53 +0000 [97f20fe5ed] Nic Colledge + ASTERISK-24484 #close + Reported by: Dan Jenkins - * app_voicemail: Fix incorrect msg leaving/retrieving an ODBC voicemail + Change-Id: I05f298904511d6739aefb1486b6fcbee27efa9ec - 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. +2016-09-30 21:56 +0000 [f49517efb9] Rodrigo Ramírez Norambuena - ASTERISK-27853 + * queue_log: Add alembic script for generate db table for queue_log - Change-Id: Ic36e97d5eb070a23a12ba45972f6b53e2182a3f4 + Change-Id: I35b928a6251f9da9a1742b2cd14c63a00c3d0f0c -2018-04-17 21:15 +0000 [52ed6bcc8f] Brian P. Martin +2020-01-16 13:47 +0000 [13fa33588f] Sean Bright - * chan_mobile: support handling of caller-id names ("cnam"). + * app_voicemail, say: Fix various leading whitespace problems - 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. + In af90afd90c64c5183c2207d061f9aa15138081b2, Japanese language support + was added to app_voicemail and main/say.c, but the leading whitespace + is not consistent with Asterisk coding guidelines. This patch fixes + that. - 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.). + Whitespace only, no functional change. - Reported by: Brian Martin - Tested by: Brian Martin - ASTERISK-27726 + ASTERISK~23324 + Reported by: Kevin McCoy - Change-Id: I89490d85fa406c36261879c50ae5e65595538ba5 + Change-Id: I72c725f5930084673749bd7c9cc426a987f08e87 -2018-05-17 01:58 +0000 [f10fc135d4] Alexander Traud +2020-01-16 07:32 +0000 [f5a1e8b04d] Sean Bright - * res_pjsip_endpoint_identifier_ip: Unregister the module for headers. + * pbx.c: Include filesystem cache in free memory calculation - 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-28695 #close + Reported by: Kevin Flyn - ASTERISK-27861 + Change-Id: Ief098bb6eb77378daeace8f97ba30701c8de55b8 - Change-Id: I261abcb411d026bbb0691cc78f28300bfd3103a3 +2020-01-16 09:09 +0000 [31027f33db] Sean Bright -2018-05-11 12:49 +0000 [71d1e8d8c8] Alexander Traud + * chan_sip.c: Stop handling continuation lines after reading headers - * rtp_engine: Remove the double assigned RTP payload ID of H.263+. + lws2sws() does not stop trying to handle header continuation lines + even after all headers have been found. This is problematic if the + first character of a SIP message body is a space or tab character, so + we update to recognize the end of the message header. - 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. + ASTERISK-28693 #close + Reported by: Frank Matano - Change-Id: I90e35b158487f8f1f8187da6241b54cd3b74e667 + Change-Id: Idec8fa58545cd3fd898cbe0075d76c223f8d33df -2018-05-11 12:26 +0000 [4722a653f4] Corey Farrell +2020-01-15 14:29 +0000 [293600724d] Sean Bright - * cli: Display correct unit for HTTP timeout in "manager show settings". + * app_voicemail: Prevent crash when saving message with realtime voicemail - HTTP timeout is in seconds, not minutes. + ast_store_realtime() is not NULL tolerant, so we need to initialize + the field values we pass to it to the empty string to avoid a crash. - ASTERISK-27852 #close + ASTERISK-23739 #close + Reported by: Stas Kobzar - Change-Id: Ie6640835cb07307555741f9b559c2eb876d9343e + Change-Id: I756c5dd0299c77f4274368f7c99eb0464367466c -2018-05-11 10:37 +0000 [263637a38d] Alexander Traud +2020-01-14 16:20 +0000 [e379fe48e1] Sean Bright - * rtp_engine: Avoid a typo error in Doxygen for ast_rtp_codecs_find_payload_code. + * app_voicemail: Set globals to default values when voicemail.conf missing - Change-Id: Ica089d4507a27ddfc4ce3a88d697ffbef378de48 + If voicemail.conf exists but is empty, the config parsing process will + default a number of global variables to non-zero values. On the other + hand, if voicemail.conf is missing (arguably semantically equivalent + to an empty file), this process is skipped and the globals are + defaulted to 0. -2018-05-06 21:17 +0000 [b5914d90ac] Corey Farrell + Set the globals to the same values they would be set to if a + configuration were present. This allows voicemail configuration to be + done completely by Realtime without the need to create an empty + voicemail.conf file. - * Fix GCC 8 build issues. + ASTERISK-27622 #close + Reported by: Jim Van Meggelen - This fixes build warnings found by GCC 8. In some cases format - truncation is intentional so the warning is just suppressed. + Change-Id: Id907d280f310f12e542ca527e6a025432b9fb409 - ASTERISK-27824 #close +2020-01-11 07:29 +0000 [5fded77e7f] Sean Bright - Change-Id: I724f146cbddba8b86619d4c4a9931ee877995c84 + * app_queue: Deprecate the QueueMemberPause.Reason field -2018-05-11 07:10 +0000 [919b0eb3f2] Alexander Traud + The QueueMemberPause AMI event includes two fields that return the + reason a member was paused. - * rtp_engine: Allow Media Formats with add_static_payload(-1) on egress again. + * In release branches, deprecate Reason in favor of PausedReason. + * In master, remove the Reason field entirely. - 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-28349 #close + Reported by: Niksa Baldun - ASTERISK-27850 - Reported by: Dinis Brazão, Selene Feigl + Change-Id: I01da58f2b0ab927baeee754870f62b51b7b3d296 - Change-Id: I08c1e76433a67e4350141d38cacf3a1cb5086496 +2020-01-13 16:37 +0000 [fbe18165d5] Sean Bright -2018-05-09 09:30 +0000 [2e37684913] Corey Farrell + * res_realtime: Fix 'realtime update2' argument handling - * git: Ignore *.orig. + The change in 9b99ef50b5d01ee8111d26efa7b926bdfaf3f980 updated the + syntax of the 'realtime update2' CLI command but did not correctly + update the calls to ast_update2_realtime(). - This prevents accidental commit of files created by patch. + The issue this addresses was originally opened because we aren't + allowing a SQL NULL to be set as part of the update, but this is a + limitation of the Realtime API and is not a bug. - Change-Id: I68380db61f0f9d620046f719ccd978811d0e9964 + Additionally, this patch: -2018-04-18 02:27 +0000 [2d81709ab1] Alexander Traud + * Corrects the example in the command documentation to reflect + 'update2' instead of 'update.' - * sip_to_pjsip: Enable python3 compatibility. + * Fixes the leading spacing of the command documentation. - 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. + * Checks that the required 'NULL' literal argument is present where we + expect it to be. - ASTERISK-27811 + ASTERISK-21794 #close + Reported by: Cédric Bassaget - Change-Id: I59cc6b52a1a89777eebcf25b3023bdf93babf835 + Change-Id: Idda63a5dc50d5f9bcb34c27ea3238d90f733b2cd -2018-05-08 14:28 +0000 [cea87fe7b8] Corey Farrell +2020-01-10 13:30 +0000 [f69da94fab] Sean Bright - * makeopts.in: Remove unused/undefined AST_MARCH_NATIVE. + * func_curl: Add 'followlocation' option to CURLOPT() - Change-Id: I617a96ebb83ec99f5d3176bbbee2d2a272ccb203 + We allow for 'maxredirs' to be set, but this value is ignored when + followlocation is not enabled which, by default, it is not. -2018-05-08 04:59 +0000 [9f1e1d153a] Jaco Kroon + ASTERISK-17491 #close + Reported by: candrews - * manager: fix digest auth for ami/http mechanism. + Change-Id: I96a4ab0142f2fb7d2e96ff976f6cf7b2982c761a - 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. +2020-01-10 15:13 +0000 [8d87fef5a1] Sean Bright - ASTERISK-27841 + * res_pjsip_endpoint_identifier_ip: Document support for hostnames - Change-Id: I660609db13b8f9e5f9567f339dd804f4985d41b3 + ASTERISK-25429 #close + Reported by: Joshua C. Colp -2018-05-04 13:47 +0000 [d855658f23] Corey Farrell + Change-Id: I7cdfc6026821636acc2465094b7fcde8471a3824 - * app_macro: Prevent infinite loop in find_matching_priority. +2020-01-10 14:43 +0000 [0a56edca4d] Sean Bright - 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. + * res_pjsip_notify: Only allow a single Event header to be added to a NOTIFY - ASTERISK-26570 #close + ASTERISK-27775 #close + Reported by: AvayaXAsterisk - Change-Id: I6c71b76998c31434391b150de055ae9a531e31da + Change-Id: Iad158e908e34675ad98f74d09c5e73024e50c257 -2018-01-11 06:37 +0000 [f4c360143b] Tzafrir Cohen +2019-12-03 12:27 +0000 [b92b0469ff] Jaco Kroon - * cdr_mysql: my_connect_db(): reduce indentation + * netsock2: ast_addressfamily_to_sockaddrsize and ast_sockaddr_from_sockaddr. - ASTERISK-27572 + ast_addressfamily_to_sockaddrize will determine the size that's + required, and ast_sockaddr_from_sockaddr then wraps this new function + and ast_sockaddr_copy_sockaddr to copy arbitrary sockaddr's (without + knowing the address family) into the ast_sockaddr structure. - Change-Id: I00bd5363ac94c764c56d8626a5945ed7f3934fcb + Change-Id: Iee604e96e9096c79b477d6e5ff310cf0b06dae86 + Signed-off-by: Jaco Kroon -2018-01-11 06:33 +0000 [2e44adf1c3] Tzafrir Cohen +2020-01-09 04:37 +0000 [0c07a7ee00] Corey Farrell - * cdr_mysql: split mysql init out of my_load_module + * app_record: Do not hang up if beep audio is missing - Split out mysql connection parts to a separate my_connect_db(). + Additionally alter the warning to mention that it was "beep" which could + not be streamed to give admins a better clue about what the warning + means. - ASTERISK-27572 + ASTERISK-28682 - Change-Id: If2ee676056067cc693ff08be68ee4944bf35b49f + Change-Id: If5aed21226a173117ed17589f44826dd1ba6576e -2018-05-04 16:07 +0000 [8f55f7c333] Matthew Fredrickson +2020-01-08 13:54 +0000 [de078debab] Kevin Harwell - * res_hep: Adds hostname resolution support for capture_address + * app_agent_pool: Update XML docs for AgentLogin - 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. + This patch fixes some wrongly formatted documentation for the AgentLogin + application. A couple of "see also" links should contain only the function + name, and no parameters. - ASTERISK-27796 #close - Reported-By: Sebastian Gutierrez + Change-Id: I3f788b47dce3292e311f8a9856938d59a0bd0661 - Change-Id: I33e1a37a8b86e20505dadeda760b861a9ef51f6f +2020-01-08 12:11 +0000 [4cf32f2578] George Joseph -2018-04-20 18:12 +0000 [7528b86cad] Joshua Colp + * CI: Update buildAsterisk.sh to do a "make full" - * stream: Make the topology a reference counted object. + If you do a "make all" when building Asterisk the xml documentation + produced will be missing certain AMI events where their + documentation is located not at the top of the c source file but + embedded further down next to the event's manager_event() + registration call. See main/manager_mwi.c for an example. - 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. + "make full" does produce the correct documentation so we're changing + it in the build script. A separate commit/issue will address the + problem with "make all". - Change-Id: I4f4d3dd856a033ed55fe218c3a4fab364afedb03 + ASTERISK-28507 + Reported by: David Lee -2018-03-21 07:30 +0000 [6301531416] Tzafrir Cohen + Change-Id: I4a22635d6eef99eacecc0efb69e28360eebdb86c - * chan_dahdi: Configurable dialed digit timeouts +2020-01-06 09:02 +0000 [8318b05f25] Joshua C. Colp - 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: + * res_pjsip_pubsub: Add ability to persist generator state information. - * firstdigit_timeout: Default time (ms) to detect first digit + Some body generators, such as dialog-info+xml, require storing state + information which is then conveyed in the NOTIFY request itself. Up + until now there was no way for such body generators to persist this + information. - * interdigit_timeout: Default time (ms) to detect following digits + Two new API calls have been added to allow body generators to set and + get persisted data. This data is persisted out alongside the normal + persistence information and allows the body generator to restore + state information or to simply use this for normal storage of state. + State is stored in the form of JSON and it is up to the body + generator to interpret this as needed. - * 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. + The dialog-info+xml body generator has been updated to take advantage + of this to persist the version number. - Change-Id: Ib728fa900a4f6ae56d1ed810aba61b6593fb7213 + ASTERISK-27759 -2018-05-03 06:34 +0000 [de3ca9bada] Joshua Colp + Change-Id: I5fda56c624fd13c17b3c48e0319b77079e9e27de - * res_ari: Remove requirement that body exists when debug is on. +2019-12-24 09:16 +0000 [f8b0c2c933] Sean Bright - 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. + * res_pjsip_endpoint_identifier_ip.c: Add port matching support - 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. + Adds source port matching support when IP matching is used: - ASTERISK-27801 + [example] + type = identify + match = 1.2.3.4:5060/32, 1.2.3.4:6000/32, asterisk.org:4444 - Change-Id: I4eef036ad54550a4368118cc348765ecac25e0f8 + If the IP matches but the source port does not, we reject and search for + alternatives. SRV lookups are still performed if enabled (srv_lookups = yes), + unless the configured FQDN includes a port number in which case just a host + lookup is performed. -2018-04-30 15:15 +0000 [069a0b7593] Sean Bright + ASTERISK-28639 #close + Reported by: Mitch Claborn - * iostreams: Add some documentation for the ast_iostream_* functions + Change-Id: I256d5bd5d478b95f526e2f80ace31b690eebba92 - Change-Id: Id71b87637f0a484eb5a1cd26c3d1c7c15c7dcf26 +2019-12-30 11:04 +0000 [64692a3c72] George Joseph -2018-05-02 07:43 +0000 [239074c759] Sean Bright + * sig_pri: Fix deadlock caused by sig_pri_queue_hangup - * pjsip: Increase maximum number of usable ciphers & other cleanups + The change to add setting hangupsource to sig_pri_queue_hangup() + made in https://gerrit.asterisk.org/c/asterisk/+/12857 casued + deadlocks when a hangup request was received from the core at the + same time a hanguprequest was received from the remote end via the + D channel. - * Increase maximum number of ciphers from 100 to 256 (or whatever - PJ_SSL_SOCK_MAX_CIPHERS is #define'd to) + Although the PRI's channel private structure was being unlocked + before setting the hangupsource, the PRI's own lock was still being + held during the process. If channel actions were also coming from + the core, a deadlock on the PRI could result. This deadlock could + then escalate to the entire DAHDI subsystem via DAHDI's global + interface list lock, especially if someone used the PRI CLI commands. - * Simplify logic in cipher_name_to_id() + Fix: - * Make signed/unsigned comparison consistent + * We now unlock the PRI as well as the PRI's channel private + structure before setting the hangupsource, then relock both + afterwards. - Re: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897412 + ASTERISK-28605 + Reported by: Dirk Wendland - Reported by: Ondřej Holas + Change-Id: Id74aaa5d4e3746063dbe9deed188eb65193cb9c9 - Change-Id: Iea620f03915a1b873e79743154255c3148a514e7 +2019-12-30 13:13 +0000 [a7692ce2f4] Richard Mudgett -2018-04-30 17:24 +0000 [11b7de82c5] Richard Mudgett + * app_chanisavail.c: Simplify dialplan using ChanIsAvail. - * res_pjsip/pjsip_distributor.c: Add missing off-nominal request response. + Dialplan has to be careful about passing an empty device list or empty + positions in the list. As a result, dialplan has to check for these + conditions before using ChanIsAvail. Simplify dialplan by making + ChanIsAvail handle these conditions gracefully. - Change-Id: I389579b39c523d1d1e8ce020ef549a8bb5781c9b + * Made tolerate empty positions in the device list. -2018-04-30 17:20 +0000 [6cab3c836a] Richard Mudgett + * Simplified the code and eliminated some unnecessary indention. - * res_pjsip/pjsip_distributor.c: Pull some assignments out of if tests. + ASTERISK-28638 - Change-Id: I3d30d638b53a4bbe9bf9aad853c649d583894112 + Change-Id: I9e4b67e2cbf26b2417c2d03485b8568e898931d3 -2018-04-30 09:38 +0000 [afdca5c68c] Joshua Colp +2020-01-02 14:25 +0000 [dd82ebecd3] George Joseph - * res_rtp_asterisk: Always update SRTP on local SSRC change. + * stasis.c: Use correct topic name in stasis_topic_pool_delete_topic - 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. + When a topic is created for an object, its name is only + : + For example: + bridge:cb68b3a8-fce7-4738-8a17-d7847562f020 - ASTERISK-27795 - ASTERISK-27800 + When a topic is added to a pool, its name has the pool's topic + name prepended. For example: + bridge:all/bridge:cb68b3a8-fce7-4738-8a17-d7847562f020 - Change-Id: Ia7c8e74c28841388b5244ac0b8fd6c1dc6ee4c10 + The topic_pool_entry's name however, is only what was passed + in to stasis_topic_pool_get_topic which is + bridge:cb68b3a8-fce7-4738-8a17-d7847562f020 + That's actually correct because the entry is qualified by the + pool that's in. -2018-02-13 12:55 +0000 [0827d5cc53] Gaurav Khurana + When you're ready to delete the entry from the pool, you retrieve + the tropic name from the object but since it now has the pool's + topic name prepended, it won't be found in the pool container. - * Add the ability to read the media file type from HTTP header for playback + Fix: - 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. + * Modified stasis_topic_pool_delete_topic() to skip past the + pool topic's name, if it was prepended to the topic name, + before searching the container for a pool entry. - 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. + ASTERISK-28633 + Reported by: Joeran Vinzens - 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: + Change-Id: I4396aa69dd83e4ab84c5b91b39293cfdbcf483e6 - [Sep 15 15:48:05] WARNING [29148] [C-00000092] file.c: - File http://host/media/1234 does not exist in any format +2019-12-29 22:38 +0000 [144b774b85] Richard Mudgett - 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: + * app_dial.c: Simplify dialplan using Dial. - 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 + Dialplan has to be careful about passing an empty destination list or + empty positions in the list. As a result, dialplan has to check for + these conditions before using Dial. Simplify dialplan by making Dial + handle these conditions gracefully. - ASTERISK-27286 + * Made tolerate empty positions in the dialed device list. - Reporter: Gaurav Khurana + * Reduced some message log levels from notice to verbose. - Change-Id: I1b14692a49b2c1ac67688f58757184122e92ba89 + ASTERISK-28638 -2018-04-25 01:57 +0000 [9c9f314f64] Christof Lauber + Change-Id: I6edc731aff451f8bdfaee5498078dd18c3a11ab9 - * pbx_lua: Support displaying lua error message if no debug table exists +2019-12-29 20:41 +0000 [2780be334d] Richard Mudgett - 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. + * app_page.c: Simplify dialplan using Page. - Change-Id: I34ba0a098f1ae06a3af7b4d1b098bd43f42f96c8 + Dialplan has to be careful about passing an empty destination list or + empty positions in the list. As a result, dialplan has to check for + these conditions before using Page. Simplify dialplan by making Page + handle these conditions gracefully. -2017-12-11 12:34 +0000 [882e79b77e] Joshua Colp + * Made tolerate empty positions in the paged device list. - * pjsip: Rewrite OPTIONS support with new eyes. + * Reduced some warnings associated with the 's' option to verbose + messages. The warning level for those messages really serves no purpose + as that is why the 's' option exists. - 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. + ASTERISK-28638 - 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. + Change-Id: I95b64a6d6800cd1a25279c88889314ae60fc21e3 - 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. +2019-12-29 18:36 +0000 [11753d94d8] Richard Mudgett - 2. AORs are scheduled and not contacts. This reduces the amount of work - spent juggling scheduled items. + * features.c: Make Bridge application tolerate unspecified channel. - 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. + The Bridge application was inconsistent if the channel to bridge with is + not specified. If no parameters are given then a warning is issued and + the current channel is hung up. If options are given but no channel is + specified then a warning is issued and the current channel is not hung up. - 4. Operations regarding an AOR use a serializer specific to that AOR. + * Made the Bridge application give a verbose message instead of a warning + if the channel to bridge with is not specified and made not hang up the + current channel. As a result dialplan no longer needs to check if a + channel name is passed before calling Bridge and simply needs to check the + BRIDGERESULT channel variable instead. This is something you likely want + your dialplan to do anyway. - 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. + * Fixed up L() option warning message. It is up to the caller to + determine if the channel is hung up because of the warning. Dial() hangs + up the current channel while Bridge() does not. - 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. + Change-Id: I44349a8dc3912397f28852777de04f19e7bb9c73 - 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. +2019-12-29 17:48 +0000 [00e745066c] Richard Mudgett - ASTERISK-26806 + * app_chanspy.c: Reduce log message level from notice to verbose. - Change-Id: I6a5ebbfca9001dfe933eaeac4d3babd8d2e6f082 + Change-Id: Ica5f38ccd8cdc077aef14d0c50425e0b29ac7e0a -2017-12-22 13:11 +0000 [661fec4b59] Richard Mudgett +2019-12-29 17:31 +0000 [198f4cbdbf] Richard Mudgett - * core: Remove unused/incomplete SDP modules. + * app_softhangup.c: Reduce unnecessary warning to verbose message. - Change-Id: Icc28fbdc46f58e54a21554e6fe8b078f841b1f86 + Why log a warning for something your dialplan explicitly asked for? -2018-04-18 15:59 +0000 [ff652711c7] Kevin Harwell + Change-Id: I167b90daf4c7d75dd4b7ef94849f6cef05aa43a7 - * translate: generic plc not filled in after translation +2020-01-05 10:00 +0000 [992dcdf780] Sean Bright - 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. + * res_pjsip_config_wizard: Fix change detection for wizard settings - 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. + ast_sorcery_changeset_create() is not commutative and will fail to detect + differences between two variable lists depending on what changed, so switch to + ast_variable_lists_match(). - ASTERISK-27814 #close + ASTERISK-28492 #close + Reported by: Jean-Denis Girard - Change-Id: I133d084da87adef913bf2ecc9c9240e3eaf4f40a + Change-Id: I7b3256983ddfaa2138d3de92a444a53b5193a4e1 -2018-04-20 07:40 +0000 [de9c0ede4a] Joshua Colp +2020-01-03 10:20 +0000 [60fd1322d7] Sean Bright - * bridge_softmix: Fix sporadic incorrect video stream mapping. + * res_agi: Improve GET FULL VARIABLE documentation - When an externally initiated renegotiation occurred it was - possible for video streams to be incorrectly remapped, - resulting in no video flowing to some receivers. + ASTERISK-28673 #close + Reported by: Jonathan Harris - This change ensures that only the video source sets up - mappings and also that removed streams do not have mappings - set up. + Change-Id: I591afdec669622bfa19243aabec31b579652c92f - Change-Id: Iab05f2254df3606670774844bb0935f833d3a9b0 +2019-11-26 13:24 +0000 [47ba42f4a0] Sean Bright -2018-04-20 14:07 +0000 [c481afe873] Alexander Anikin + * websocket: Consider pending SSL data when waiting for socket input - * chan_ooh323: fix ooManualProgress/ooManualRingback on ooh323 debuggin on + When TLS is in use, checking the readiness of the underlying FD is insufficient + for determining if there is data available to be read. So before polling the + FD, check if there is any buffered data in the TLS layer and use that first. - Call ooManualProgress/Ringback outside of ast_debug function - when ooh323 debugging is on + ASTERISK-28562 #close + Reported by: Robert Sutton - ASTERISK-27812 #close - ASTERISK-26893 #close - Reported by: Dimos, Marco Giordani + Change-Id: I95fcb3e2004700d5cf8e5ee04943f0115b15e10d - Change-Id: I5873762e4f05824e7b6e94a19dd4eb56adbbbb79 +2019-12-17 18:20 +0000 [b9b50774f5] snuffy -2018-04-19 13:44 +0000 [5712a0ae52] Joshua Colp + * contrib/valgrind: Fix use of frame-level suppression - * bridge_softmix: Fix some REMB bugs. + Fix use of frame-level wildcard usage in suppression file. - 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-27243 #close + Reported-by: Richard Kenner - ASTERISK-27804 + Change-Id: I1c0c64c5f305d2c9aa124e11f1f64a2eec52dc51 - Change-Id: Ia9dc9c150043890ee7ff85e9cdec007f1a77fcfd +2019-08-28 05:07 +0000 [e54299cd3e] Boris P. Korzun -2018-04-20 07:13 +0000 [fe072f4405] Alexander Traud + * func_odbc: acf_odbc_read() and cli_odbc_read() unicode support - * BuildSystem: Enable IMAP storage on FreeBSD and DragonFly BSD. + Added ast_odbc_ast_str_SQLGetData() considers SQL_DESC_OCTET_LENGTH + column attribute for correct allocating the buffer. - ASTERISK-27639 + ASTERISK-28497 #close - Change-Id: I1347f3f2f3737010d0a80a5c30b5aaf71cf3ccb0 + Change-Id: I50e86c8a277996f13d4a4b9b318ece0d60b279bf -2018-04-20 05:50 +0000 [efe40ff671] Alexander Traud +2019-12-03 05:58 +0000 [82a870c8c7] Jean Aunis - * BuildSystem: Add DragonFly BSD. + * chan_sip: voice frames are no longer transmitted after emitting a COLP - ASTERISK-27820 + The SIP transaction state was reset when emitting an UPDATE or a re-INVITE + related to a COLP, preventing RTP packets to be emitted. - Change-Id: I310896143e94d65da1c2be3bb448204a8b86d557 + ASTERISK-28647 -2018-04-20 05:40 +0000 [d54637373a] Alexander Traud + Change-Id: Ie7a30fa7a97f711e7ba6cc17f221a0993d48bd8b - * menuselect: Add DragonFly BSD. +2019-12-27 17:29 +0000 [efa13eb0a0] Sean Bright - In DragonFly BSD, added libraries from ports are placed into /usr/local. - Therefore, this directory must be added for the preprocessor, compiler, and - linker. + * db: Initialize condition primitive before use - 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. + The db_init() function ultimately calls db_sync() which signals the + condition before it is initialized. - ASTERISK-27820 + Change-Id: Id4a4e025b637bc4ac7d90557fcb71d56598892ab - Change-Id: I186d88d99cfa4de6569888e12ac97bd2f441c422 +2019-12-18 09:13 +0000 [a78758d0a2] Sean Bright -2018-04-20 05:18 +0000 [6e9a612293] Alexander Traud + * config.c: Skip UTF-8 BOMs if present when reading config files - * install_prereq: Add DragonFly BSD. + ASTERISK-28667 #close - ASTERISK-27820 + Change-Id: I4767ed365c98f3e1587b7653321048a31d8a53b2 - Change-Id: I718ddb000fe5184b1bdc7759da67a370a7520144 +2019-12-17 07:38 +0000 [b8e635916f] Pascal Cadotte Michaud -2018-04-18 11:41 +0000 [b437656c2e] Chris-Savinovich + * sip_to_pjsip.py: Fix trustrpid typo - * "confbridge show profile bridge" does not output "sfu" when video_mode is sfu + ASTERISK-28664 #close - Fixes a bug on the "confbridge show profile bridge" cli command - that showed "video_mode=no video" when video_mode was set - to "sfu" + Change-Id: I6c28b1002fd7075ae0ed36f026f8c1855c9418a6 - ASTERISK-27418 #close +2019-12-16 06:35 +0000 [7167fd6d46] Joshua C. Colp - Change-Id: I481e3172c7f872664c7ac7809879d541c9f031e9 + * configure: Add check for MySQL client bool and my_bool type usage. -2018-04-18 15:40 +0000 [179ae87cf4] Corey Farrell + Instead of trying to use the defined MySQL client version from the + header use a configure check to determine whether the bool or my_bool + type should be used for defining a boolean. - * Build System: Add missing ASTMM_LIBC to flex output. + ASTERISK-28604 - 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. + Change-Id: Id2225b3785115de074c50c123ff1a68005b4a9c7 - ASTERISK~27813 +2019-12-11 18:03 +0000 [5622df0a94] Joshua C. Colp - Change-Id: I7263e9e4217a17bde4ffaa2087a8f8aeb2a8588c + * confbridge: Add support for specifying maximum sample rate. -2018-04-18 13:40 +0000 [80e6952013] Sean Bright + ConfBridge has the ability to move between different sample + rates for mixing the conference bridge. Up until now there has + only been the ability to set the conference bridge to mix at + a specific sample rate, or to let it move between sample rates + as necessary. This change adds the ability to configure a + conference bridge with a maximum sample rate so it can move + between sample rates but only up to the configured maximum. - * format_pcm: Correct behavior of fseek and ftell for G.722 + ASTERISK-28658 - 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: Idff80896ccfb8a58a816e4ce9ac4ebde785963ee - Change-Id: I6a8c7352624b930a5f2d9e4857f75283fa5dd9f9 +2019-12-16 05:23 +0000 [186c4e9b36] Joshua C. Colp -2018-04-17 05:33 +0000 [95e8450194] Alexander Anikin + * res_pjsip_session: Set stream state on created streams for incoming SDP. - * chan_ooh323: introduce localras config parameter + A previous review, 13174, made a change whereby on an incoming offer SDP + the pending topology was initialized to the configured. This caused a problem + for bundle with WebRTC where bundle could reference a stream that did not + actually exist if the configuration had both audio and video but the + offer SDP only contained audio. - Introduce localras parameter that specify source IP - for connecting to Gatekeeper. Useful for multihome configurations. + This change undoes that review and instead fixes the original problem it + sought to solve by setting the state of created streams based on the + contents of the offer SDP. This way the stream state is not inactive + until negotiation later completes. - ASTERISK-25129 #close - Reported by: Dmitry Melekhov - Tested by: Dmitry Melekhov + ASTERISK-28659 - Change-Id: I0b604b01793f3e02a776502659e07cd3fc7e3097 + Change-Id: Ic5ae5a86437d3e686ac5afd91d133cc916198355 -2018-04-18 05:32 +0000 [446320f1d4] Alexander Anikin +2019-12-13 13:46 +0000 [d17bbcb9f1] Kevin Harwell - * chan_ooh323: Fix cppcheck warnings + * res_fax: wrap v21 detected Asterisk initiated negotiation with config option - Fix cppcheck warnings about redundant conditions and possible - null pointer usage + A previous patch: - ASTERISK-27793 #close - Reported by: Ilya Shipitsin - Tested by: Ilya Shipitsin + Gerrit Change-Id: I73bb24799bfe1a48adae9c034a2edbae54cc2a39 - Change-Id: I0b31933b062a23331dbac9a82b8bcfe345f406f6 + made it so a T.38 Gateway tries to negotiate with both sides by sending T.38 + negotiation request to both endpoints supported T.38 versus the previous + behavior of forwarding negotiation to the "other" channel once a preamble + was detected. -2018-04-04 13:12 +0000 [8de3fa2b56] Joshua Colp + This had the unfortunate side effect of breaking some setups. Specifically + ones that set the max datagram option on an endpoint configuration (configured + max datagram was not propagated since Asterisk now initiates negotiations). - * bridge_softmix / app_confbridge: Add support for REMB combining. + This patch adds a configuration option, "negotiate_both", that when enabled + makes it so Asterisk initiates the negotiation requests to both endpoints vs. + the previous behavior of waiting, and forwarding the request. - 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. + The default is disabled keeping with the old behavior. - Other behaviors can be added in the future and the existing - average one may be adjusted, but this provides the foundation - to do so. + ASTERISK-28660 - Support for configuring which behavior to use has been - added to app_confbridge. + Change-Id: I5deb875f3485e20bc75119ec743090655d864a1a - ASTERISK-27804 +2019-11-27 11:34 +0000 [aa06c6ea29] Frederic LE FOLL - Change-Id: I9eafe4e7c1f72d67074a8d6acb26bfcf19322b66 + * app_chanisavail/cdr: ChanIsAvail sometimes fails to deactivate CDR. -2018-04-13 15:14 +0000 [f79a372941] George Joseph + Temporary channel lifespan is very short and CDR deactivation request + through ast_cdr_set_property() may happen when CDR is not available + yet. Use CDR_PROP() dialplan function instead, it will first wait + for pending CDR insertion requests to be processed. - * streams: Add string metadata capability + ASTERISK-28636 - Replaces the never used opaque data array. + Change-Id: I1cbe09e8d2169c0962c1195133ff260d291f2074 - Updated stream tests to include get/set metadata and - stream clone with metadata. +2019-12-12 05:03 +0000 [9240fcd8bb] Asterisk Development Team - Added stream metadata dump to "core show channel" + * Update CHANGES and UPGRADE.txt for 16.7.0 +2019-12-04 02:35 +0000 [77941efad9] Jaco Kroon - Change-Id: Id7473aa4b374d7ab53046c20e321037ba9a56863 + * ACL: ast_apply_acl_nolog - identical to ast_apply_acl but without logging. -2018-04-13 15:17 +0000 [f7e7ce6ba2] George Joseph + Due to use in res_rtp_asterisk there is a need to be able to apply an + ACL without logging any invalid/denies. It's probably sensible to at + least validate the ACL once directly after load and report invalid ACLs. - * utils: Add ast_assert_return + Change-Id: I256169229d945ca7c1bbf228fc492d91df345843 + Signed-off-by: Jaco Kroon - Similar to pjproject's PJ_ASSERT_RETURN macro, this one will do the - following... +2019-12-11 10:52 +0000 [2d2b28bfa4] Pascal Cadotte Michaud - If the assert passes... NoOp + * PJSIP_CONTACT: add missing argument documentation - 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. + add missing argument "rtt" and "status" to the documentation - If the assert fails and AST_DEVMODE is not defined, return from the - calling function with the supplied value. + The change to the dtd file allow an enumlist to contain one or many + configOptionToEnum or enum. - The macro will execute a return without a value if one isn't suppled. + This is different from the previous patch I submitted when you could have a + configOptionToEnum or (a configOptionToEnum followed by one or manu enums) or + (one or many enums) - Change-Id: I0003844affeab550d5ff5bca7aa7cf8a559b873e + ASTERISK-28626 -2018-04-10 16:09 +0000 [8135558bab] George Joseph + Change-Id: Ia71743ee7ec813f40297b0ddefeee7909db63b6d - * app_sendtext: Enhance SendText to support Enhanced Messaging +2019-12-11 07:01 +0000 [9c29c3fb3e] Joshua Colp - 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. + * Revert "PJSIP_CONTACT: add missing argument documentation" - Change-Id: I648b4574478119f95de09d9f08e9595831b02830 + This reverts commit 174e6426aa8a8c26d83c5e06cfbc77277c2f5934. -2017-09-27 11:44 +0000 [4fb7967c73] George Joseph + Reason for revert: Regression in XML validation. - * bridge_softmix: Forward TEXT frames + validity error : Content model of enumlist is not determinist: + (configOptionToEnum | (configOptionToEnum , enum+) | enum+) - 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. + As we are preparing to do releases and this is not critical + I am reverting this for now until resolved. - 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. + Change-Id: I2c9656fb40b2d2f56f54caa35c8be02cc92babd0 - * 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. +2019-12-04 15:01 +0000 [8af0dea0c7] George Joseph - * 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. + * res_rtp_asterisk: Add frame list cleanups to ast_rtp_read - * bridge_softmix now forwards TEXT and TEXT_DATA frames to all - participants (except the sender). + In Asterisk 16+, there are a few places in ast_rtp_read where we've + allocated a frame list but return a null frame instead of the list. + In these cases, any frames left in the list won't be freed. In the + vast majority of the cases, the list is empty when we return so + there's nothing to free but there have been leaks reported in the + wild that can be traced back to frames left in the list before + returning. - * 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. + The escape paths now all have logic to free frames left in the + list. - * bridge_channel now calls ast_sendtext_data for TEXT_DATA frame - types and ast_sendtext for TEXT frame types. + ASTERISK-28609 + Reported by: Ted G - * 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: Ia1d7075857ebd26b47183c44b1aebb0d8f985f7a - Change-Id: Idacf5900bfd5f22ab8cd235aa56dfad090d18489 +2019-12-04 08:35 +0000 [055737d645] Jaco Kroon -2018-04-17 07:06 +0000 [8a1ffb050b] Alexander Traud + * chan_sip: in case of tcp/tls, be less annoying about tx errors. - * utils/pval: Add -lBlocksRuntime for compiler clang conditionally. + chan_sip.c:3782 __sip_xmit: sip_xmit of 0x7f1478069230 (len 600) to + 213.150.203.60:1492 returned -2: Interrupted system call - ASTERISK-27809 + returned -2 implies this wasn't actually an OS error, so errno makes no + sense either. Internal error was already logged higher up, and -2 + generally means that either there isn't a valid connection available, or + the pipe notification failed, and that is already correctly logged. - Change-Id: I930b364a33d54cc08dedfcd5bb45f7e83242f134 + ASTERISK-28651 #close -2018-04-17 05:27 +0000 [3d9345e3ae] Alexander Traud + Change-Id: I46eb82924beeff9dfd86fa6c7eb87d2651b950f2 + Signed-off-by: Jaco Kroon - * chan_vpb: Avoid GNU old-style field designator extension. +2019-08-25 21:20 +0000 [63b8664bfa] George Joseph - clang 6.0 warned about this. Beside that, this change removes the used variable - 'desc'. + * res_pjsip_nat: Restore original contact for REGISTER responses - ASTERISK-27808 + RFC3261 Section 10 "Registrations", specifically paragraph + "10.2.4: Refreshing Bindings", states that a user agent compares + each contact address (in a 200 REGISTER response) to see if it + created the contact. If the Asterisk endpoint has the + rewrite_contact option set however, the contact host and port sent + back in the 200 response will be the rewritten one and not the + one sent by the user agent. This prevents the user agent from + matching its own contact. Some user agents get very upset when + this happens and will not consider the registration successful. + While this is rare, it is acceptable behavior especially if more + than 1 user agent is allowed to register to a single endpoint/aor. - Change-Id: Ia26bdcc0a562c058151814511cfcf70ecafa595b + This commit updates res_pjsip_nat (where rewrite_contact is + implemented) to store the original incoming Contact header in + a new "x-ast-orig-host" URI parameter before rewriting it, and to + restore the original host and port to the Contact headers in the + outgoing response. -2018-04-09 17:09 +0000 [f5d5083ea7] Ben Ford + This is only done if the request is a REGISTER and rewrite_contact + is enabled. - * res_rtp_asterisk: Add support for receiving and handling NACK requests. + pjsip_message_filter was also updated to ensure that if a request + comes in with any existing x-ast-* URI parameters, we remove them + so they don't conflict. Asterisk will never send a request + with those headers in it but someone might just decide to add them + to a request they craft and send to Asterisk. - 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. + NOTE: If a device changes its contact address and registers again, + it's a NEW registration. If the device didn't unregister the + original registration then all existing behavior based + on aor/remove_existing and aor/max_contacts apply. - 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. + ASTERISK-28502 + Reported-by: Ross Beer - For more information, refer to the wiki page: - https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + Change-Id: Idc263ad2d2d7bd8faa047e5804d96a5fe1cd282e - ASTERISK-27806 #close +2019-12-04 15:26 +0000 [68ce999351] Sean Bright - Change-Id: I7f7f124af3b9d5d2fd9cffc6ba8cb48a6fff06ec + * res_pjsip_registrar.c: Prevent potential double free if AOR is not found -2018-04-16 16:38 +0000 [d50d637764] Richard Mudgett + The simple fix here is simply to NULL out username and password after we call + ast_free on them. Unfortunately, I noticed that we weren't checking for + allocation failures for username and password, and adding those checks made + things noisy and cumbersome. - * stringfields: Collect extended stringfields into the stringfield section. + So instead we partially rollback the recent LGTM patch, and move the alloca + calls into find_aor_name(). - Use of extended stringfields is a temporary mechanism to avoid ABI - breakage in released branches without resorting to more inconvienient - methods. + ASTERISK-28641 #close + Reported by: Ross Beer - * Collect existing extended stringfields into the parent stringfield - section of the struct. + Change-Id: Ic9d01624e717a020be0b0aee31f0814e7f1ffbe2 - Change-Id: I8d46d037801b4518837c3ea4b6df95ceadc9436b +2019-12-04 15:12 +0000 [5c20cc4c3a] Sean Bright -2018-04-13 14:32 +0000 [4aeec6100f] Ben Ford + * res_pjsip_registrar.c: Prevent possible buffer overflow with domain aliases - * res_musiconhold: Don't restart MOH from beginning after announcement. + We're appropriately sizing the id_domain_alias buffer, but then copying the data + into the id_domain one. We were then using the uninitialized id_domain_alias + buffer we just allocated. - 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. + This is ASTERISK~28641 adjacent, but significant enough to warrant its own + patch. - ASTERISK-27774 #close - Reported by: lvl + Change-Id: I81c38724d18deab8c6573153e2b99dbb6e2f33d9 - Change-Id: I86b2885ee7063268f9b9747eddb788336ade989b +2019-12-04 03:33 +0000 [161e762742] Walter Doekes -2018-03-28 15:13 +0000 [3bb6cf43b5] Richard Mudgett + * app_queue: Fix old confusing comment about when the members are called - * pjsip_scheduler.c: Add ability to trace scheduled tasks. + ASTERISK-28644 - 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: I2771a931d00a8fc2b9f9a4d1a33ea8f1ad24e06b - Change-Id: I91967eb3d5a220915ce86881a28af772f9a7f56b +2019-12-03 15:42 +0000 [fbc80db350] Sean Bright -2018-03-27 11:04 +0000 [237d341bbd] Richard Mudgett + * res_pjsip_session.c: Prevent use-after-free with TEST_FRAMEWORK enabled - * res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations. + We need to copy the endpoint name before we call ao2_cleanup() on it, + otherwise we might try to access memory that has been reclaimed. - 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. + ASTERISK-28445 #close + Reported by: Bernhard Schmidt - 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(). + Change-Id: I404b952608aa606e0babd3c4108346721fb726b3 - 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(). +2019-11-22 10:39 +0000 [43d4c0e3c9] Thomas Arimont (license 5525) - * 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. + * channel.c: Resolve issue with receiving SIP INFO packets for DTMF - * Redirected ast_sip_push_task_synchronous() to - ast_sip_push_task_wait_servant() to preserve API for released branches. + The problem is essentially the same as in ASTERISK~28245. Besides + the direct media scenario we have an additional scenario where a + special client is involved. This device mutes audio by default in + transmit direction (no rtp frames) and activates audio only by a + foot switch. In this situation dtmf input (pin for conferences, + transfer features codes , etc) using SIP INFO mode is not + understood properly especially when SIP INFO messages are sent + quickly. - ASTERISK_26806 + This patch ensures that SIP INFO frames are properly queued and + processed in the above scenario. The patch also corrects situations + where successive dtmf events are received quicker than the + signalled event duration (plus minimum gap/pause) allows, i.e. DTMF + events have to be buffered in the ast channel read queue and + emulation has to be processed asynchronously at slower speed. - Change-Id: Id040fa42c0e5972f4c8deef380921461d213b9f3 + Reported by: Thomas Arimont + patches: + trigger_dtmf_emulation.patch submitted by Thomas Arimont (license 5525) -2018-03-21 19:43 +0000 [c2f85e881d] Richard Mudgett + Change-Id: I309bf61dd065c9978c8e48f5b9a936ab47de64c2 - * pjsip_scheduler.c: Fix some corner cases. +2019-12-02 06:48 +0000 [80199cd67f] George Joseph - * 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. + * CI: Turn off shallow cloning altogether - * 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. + Change-Id: I73ed4aef33a92f20080128aafc34e19fd4457196 - * Skip the scheduled task if the task was canceled between queueing the - task to the serializer and the serializer actually executing the task. +2019-11-27 12:11 +0000 [31173f6586] Frederic LE FOLL - * Reorder struct ast_sip_sched_task to avoid unnecessary padding. Removed - task_id and added next_periodic. + * chan_sip+native_bridge_rtp: no directmedia for ptime other than default ptime. - * Hold a ref to the passed in serializer so the serializer cannot go away - on the scheduled task. + During capabilities selection (joint capabilities of us and peer, + configured capability for this peer, or general configured + capabilities), if sip_new() does not keep framing information, + then directmedia activation will fail for any framing different + from default framing. - ASTERISK_26806 + ASTERISK-28637 - Change-Id: I6c8046b75f6953792c8c30e55b836a4291143f24 + Change-Id: I99257502788653c2816fc991cac7946453082466 -2018-03-22 19:09 +0000 [96c4a57edf] Richard Mudgett +2019-11-25 06:55 +0000 [c91b28c72d] Joshua Colp - * pjsip_scheduler.c: Sort "pjsip show scheduled_tasks" output. + * parking: Fall back to parker channel name even if it matches parkee. - * A side benefit is that the scheduled tasks are not completely blocked - while the CLI command executes. + ASTERISK-28631 - * Adjusted the "Task Name" column width to have more room for longer - names. + Change-Id: Ia74d084799fbb9bee3403e30d2391aacd46243cc - Change-Id: Iec64aa463ee8b10eef90120e00c38b1fb444087e +2019-11-22 15:31 +0000 [bd3cb1b300] Sean Bright -2018-04-02 15:59 +0000 [429c758e48] Evandro Cesar Arruda + * media_cache.c: Various CLI improvements - * cdr_mysql: Compile error because MYSQL_PORT definition is missing + * Use ast_cli_completion_add() to improve performance when large number of + cached items are present. - 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. + * Only complete one URI for commands that only accept a single URI. - ASTERISK-27782 #close + * Change command documentation to wrap at 80 characters to improve + readability. - Change-Id: Ieee56c836fc2e8bd021c456145bba04c6068bb77 + Change-Id: Iedb0a2c3541e49561bc231dca2dcc0ebd8612902 -2018-04-09 20:00 +0000 [0747ac893b] Chris-Savinovich +2019-11-21 15:11 +0000 [9eb86a8110] Asterisk Development Team - * res_pjsip_session: Rewrite o= with external_media_address. + * Update CHANGES and UPGRADE.txt for 16.6.2 +2019-11-15 11:34 +0000 [efef44985d] Salah Ahmed - 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. + * res_pjsip_t38: T.38 error correction mode selection at 200 ok received - ASTERISK-27614 #close + if asterisk offer T38 SDP with none error correction scheme and + the endpoint respond with redundancy EC scheme, asterisk switch + to that mode. Since we configure the endpoint as none EC mode + we should not switch to any other mode except none. + following logic implemented in code. - Change-Id: I84f3360f3606b8c4e8d161edb228799ec0b8a302 + 1. If asterisk offer none, and anything except none in answer + will be ignored. + 2. If asterisk offer fec, answer with fec, redundancy and none will + be accepted. + 3. If asterisk offer redundancy, answer with redundancy and none + will be accepted. -2018-02-22 12:18 +0000 [1cd704de36] Nathan Bruning + ASTERISK-28621 - * res_pjsip_notify.c: enable in-dialog NOTIFY + Change-Id: I343c62253ea4c8b7ee17abbfb377a4d484a14b19 - 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). +2019-11-21 12:48 +0000 [e013f502b1] Kevin Reeves - This extends res_pjsip_notify to allow for in-dialog messages. + * main/file.c: Limit media cache usage to remote files. - ASTERISK-27697 + When testing for the existance of a file, the media cache is searched even if + the file has no chance of being in it. This can cause performance issues + as the media cache size increases. - Change-Id: If7f3151a6d633e414d5dc319d5efc1443c43dd29 + As a result, calls to applications like Read and Playback using local files + must scan through the media cache before playing. Under load and with a + large cache, this can delay the playback of those files. -2018-03-22 13:35 +0000 [7157dcf83b] Richard Mudgett + This patch updates the function that checks for the existance of a file to + only consult the media cache database if the requested file is a remote path. + It introduces a new is_remote_path() function in main/file.c. - * pjsip_scheduler.c: Fix ao2 usage errors. + ASTERISK-28625 #close + Reported-by: kevin@phoneburner.com - * 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. + Change-Id: If91137493732d9034dafa381c081c69274a7dcc9 - * 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. +2019-10-21 14:55 +0000 [8cdaa93e65] Ben Ford - * Getting a ref to 'tasks' when you aren't copying the pointer into - another location is useless. The 'tasks' container pointer is global. + * chan_sip.c: Prevent address change on unauthenticated SIP request. - * Removed many unnecessary uses of RAII_VAR. + If the name of a peer is known and a SIP request is sent using that + peer's name, the address of the peer will change even if the request + fails the authentication challenge. This means that an endpoint can + be altered and even rendered unusuable, even if it was in a working + state previously. This can only occur when the nat option is set to the + default, or auto_force_rport. - * Make ast_sip_schedule_task() name parameter const. + This change checks the result of authentication first to ensure it is + successful before setting the address and the nat option. - ASTERISK_26806 + ASTERISK-28589 #close - Change-Id: I5c62488e651314e2a1dbc01f5b078a15512d73db + Change-Id: I581c5ed1da60ca89f590bd70872de2b660de02df -2018-03-23 06:49 +0000 [879e592baf] Corey Farrell +2019-10-24 12:41 +0000 [7574be5110] George Joseph - * Build System: Enable python3 compatibility. + * manager.c: Prevent the Originate action from running the Originate app - * 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. + If an AMI user without the "system" authorization calls the + Originate AMI command with the Originate application, + the second Originate could run the "System" command. - I have not tested spandspflow2pcap.py or voicemailpwcheck.py, only the - print syntax has been fixed. + Action: Originate + Channel: Local/1111 + Application: Originate + Data: Local/2222,app,System,touch /tmp/owned - Change-Id: If5c5b556a2800d41a3e2cfef080ac2e151178c33 + If the "system" authorization isn't set, we now block the + Originate app as well as the System, Exec, etc. apps. -2018-04-05 18:33 +0000 [0c03eab962] Richard Mudgett + ASTERISK-28580 + Reported by: Eliel Sardañons - * res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge + Change-Id: Ic4c9dedc34c426f03c8c14fce334a71386d8a5fa - 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. +2019-11-21 07:24 +0000 [174e6426aa] Pascal Cadotte Michaud - * 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. + * PJSIP_CONTACT: add missing argument documentation - Change-Id: I209beb0e748fa4f4b92a576f36afa8f495ba4c82 + add missing argument "rtt" and "status" to the documentation -2018-03-28 07:27 +0000 [c7bd554094] Joshua Colp + ASTERISK-28626 + Change-Id: I8419e4c8203e411b87d93dc395acdbcf7526dedf - * pjsip / res_rtp_asterisk: Add support for sending REMB +2019-11-20 12:56 +0000 [3cd57aaff2] Kevin Harwell - 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. + * res_pjsip_outbound_registration: add support for SRV failover - ASTERISK-27776 + ASTERISK-28624 - Change-Id: Ic53f821c1560d8924907ad82c4d9c0bc322b38cd + Change-Id: I8da7c300dd985ab7b10dbd5194aff2f737808561 -2018-04-05 20:02 +0000 [39016e3582] Joshua Colp +2019-11-19 12:11 +0000 [d075d8913b] George Joseph - * res_rtp_asterisk: Fix minimum block word length for REMB. + * CI: Fix missing script block in jenkinsfiles - The minimum block word length is actually 4, not 5. + Change-Id: I9f44a3d5085ea7880fad1a3883a4820907e29ea3 + (cherry picked from commit 95213b01d2d5e72e38b40c30fa5d0c8cf4b37b16) - Change-Id: I878542218225aed72c72bdf1b856fc822cd2d649 +2019-11-19 11:40 +0000 [ce8a23fdf9] George Joseph -2018-04-05 18:48 +0000 [8a602f18db] Joshua Colp + * CI: Fix missing script block in jenkinsfiles - * res_rtp_asterisk: Queue video update on picture loss indication. + Change-Id: Ib4b6e4887695f230ea7a5b0c879b29fc5a13be4f + (cherry picked from commit d60f23ecbdb748b188da424c92335152941c7673) - 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. +2019-11-19 08:51 +0000 [919bc0c7be] George Joseph - Change-Id: I1894be02e39ee10a0af841b5a1dca5f0ec7d60b6 + * CI: Increase clone depth and do better cleanup -2018-04-05 17:40 +0000 [d72a2966da] Richard Mudgett + The original clone depth of 10 was causing the need to rebase + changes whose parent was older than the 10 commits. The clone + depth has been increased to 100. - * chan_sip.c: Fix INVITE with replaces channel ref leak. + Workspace cleanup was only happening for successful builds which + wasn't enough to keep the 8G workspace in-memory drives on the + docker slaves from filling up. Now the workspaces are cleaned up + after every build regardless of success/failure. If you need to + preserve builds temporarily, you can log into Jenkins/Manage + Jenkins/Configure System and change the CLEANUP_WS_* environment + variable for the job type you're troubleshooting to "FALSE". - Given the below call scenario: - A -> Ast1 -> B - C <- Ast2 <- B + Change-Id: I0d7366e87cea714e5dbc9488caf718802fce75ca - 1) A calls B through Ast1 - 2) B calls C through Ast2 - 3) B transfers A to C +2019-11-19 09:31 +0000 [61a3e7e79b] Sean Bright - 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. + * res_pjsip_registrar: Fix uninitlized variable warning - 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. + Fixes: error: ‘domain_name’ may be used uninitialized in this function - * 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. + Found with gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008 - * Eliminated RAII_VAR in handle_invite_replaces(). + Change-Id: I44413b49ea1205aa25538142161deb73883c79e8 - ASTERISK-27740 +2019-11-05 12:16 +0000 [cf5b7f3a0b] Michael Cargile - Change-Id: I7edbed774314b55acf0067b2762bfe984ecaa9a4 + * app_amd: Fixed timeout issue -2018-03-21 19:40 +0000 [71a67a98c4] Richard Mudgett + ASTERISK_28143 attempted to fix an issue where calls with no audio would never + timeout. It did so by adding AST_FRAME_NULL as a frame type to process in its + calculations. Unfortunately these frames seem to show up at irregular time + intervals. This resulted in app_amd returning prematurely most of the time. - * res_pjsip: Update authenticate_qualify documentation. + * Removed AST_FRAME_NULL from the calculations + * Added a check to see how much time has actually passed since app_amd began - Change-Id: I3811de0014b1ffe96d4a3b49cddd5d4ca02ee5d4 + ASTERISK-28608 -2018-04-02 16:49 +0000 [6774913e82] Richard Mudgett + Change-Id: I642a21b02d389b17e40ccd5357754b034c3daa42 - * app_agent_pool.c: Fix off nominal ref leak. +2019-11-07 11:54 +0000 [faf353e931] Frederic LE FOLL - Change-Id: Ib427ffc2c802620eaafb08b1c2a17dddd8fb8eb6 + * chan_dahdi: PRI span status may stay "Down, Active" after a short alarm -2018-04-04 10:02 +0000 [e40fd7a232] Corey Farrell + Upon a short PRI disconnection, libpri may maintain Q.921 layer 'up' and + may thus not send PRI_EVENT_DCHAN_DOWN / PRI_EVENT_DCHAN_UP events. + If pri_event_alarm() clears DCHAN_UP status bit upon alarm detection + and no Q.921 reconnection sequence occurs, chan_dahdi will keep + seeing span status "Down" at the end of alarm. - * Build System: Strip '-std=c99' from CFLAGS provided by libraries. + This patch modifies pri_event_alarm() in order to keep DCHAN_UP bit + unchanged. libpri will send a PRI_EVENT_DCHAN_DOWN event if it detects + a disconnection of Q.921 layer and this will clear DCHAN_UP if required. - 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-28615 - ASTERISK-27629 #close + Change-Id: Ibe27df4971fd4c82cc6850020bce4a8b2692c996 - Change-Id: I13389613b194abbac77becf90cd950dc168704db +2019-11-07 11:05 +0000 [8894a56452] lvl -2018-04-03 14:39 +0000 [66f13ed694] Corey Farrell + * app_senddtmf: Add receive mode to AMI Action PlayDTMF - * Build System: Fixes for configure script. + ASTERISK-28614 - * Replace all 'else if' statements with 'elif'. - * Use loop to detect versioned lua headers and libraries. + Change-Id: I183501297ae1dc294ae56b34acac9b0343eb2664 - 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. +2019-11-14 04:19 +0000 [eb54e381fd] Joshua Colp - Change-Id: I3276f9aee955014108345be6092f51c932b43a0f + * res_rtp_asterisk: Always return provided DTLS packet length. -2018-04-02 08:53 +0000 [0f6431e8e4] Joshua Colp + OpenSSL can not tolerate if the packet sent out does not + match the length that it provided to the sender. This change + lies and says that each time the full packet was sent. If + a problem does occur then a retransmission will occur as + appropriate. - * app_confbridge / bridge_softmix: Add ability to configure REMB interval. + ASTERISK-28576 - 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. + Change-Id: Id42455b15c9dc4eb987c8c023ece6fbf3c22a449 - ASTERISK-27786 +2019-11-13 14:25 +0000 [e39ddb1cb1] Sean Bright - Change-Id: I0e49eae60f369c86434414f3cb8278709c793c82 + * func_env: Prevent FILE() from reading garbage at end-of-file -2018-01-02 07:54 +0000 [f91263cf46] George Joseph + If the last line of a file does not have a terminating EOL sequence, we + potentially add garbage to the value returned from the FILE() function. - * res_pjsip: Correct usages of pjproject's timer heap + There is no overflow potential here as we are reading from a buffer of a + known size, we are just reading too much of it. - Fix some timer heap initializations and cancels to try and prevent - crashes and timer heap issues. + ASTERISK-26481 #close - Change-Id: I64885d190fa22097d1b55987091375541e57a7ee + Change-Id: I50dd4fcf416fb3c83150040a1a79a59d9eb1ae01 -2018-03-25 13:35 +0000 [48720e7def] George Joseph +2019-11-13 17:24 +0000 [3891a953cf] Kevin Harwell - * pjroject_bundled: Add already-destroyed check to tsx_timer_callback + * bridge_softmix: clear hold when joining a softmix bridge - 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. + MOH continues to play to a channel if that channel was on hold prior to + entering a softmix bridge. MOH will not stop even if the original "holder" + attempts an unhold. - Change-Id: If93acd5e48d9ca5bb553f2405d5afc836842fe1c + For the most part a softmix bridge ignores holds, so a participating channel + shouldn't join while on hold. This patch checks to see if the channel joining + the softmix bridge is currently on hold. If so then it indicates an unhold. -2018-03-25 13:25 +0000 [7c03b2713e] George Joseph + ASTERISK-28618 - * pjproject_bundled: timer: Clean up usage of timer heap + Change-Id: I66ccd4efc80f5b4c3dd68186b379eb442916392b - Added a new pj_timer_entry_reset function that resets a timer_entry - for re-use. +2019-10-23 12:36 +0000 [30c0af7257] Kevin Harwell - Changed direct settings of timer_entry fields to use - pj_timer_entry_init and pj_timer_entry_reset. + * various files - fix some alerts raised by lgtm code analysis - Fixed issues where timers were being rescheduled incorrectly. + This patch fixes several issues reported by the lgtm code analysis tool: - Change-Id: I5b624bfbc5c1429117484b9b24567293002148e6 + https://lgtm.com/projects/g/asterisk/asterisk -2018-03-29 17:07 +0000 [97cc67b12f] Richard Mudgett + Not all reported issues were addressed in this patch. This patch mostly fixes + confirmed reported errors, potential problematic code points, and a few other + "low hanging" warnings or recommendations found in core supported modules. + These include, but are not limited to the following: - * res_pjsip: Fix deadlock on reliable transport shutdown. + * innapropriate stack allocation in loops + * buffer overflows + * variable declaration "hiding" another variable declaration + * comparisons results that are always the same + * ambiguously signed bit-field members + * missing header guards - 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. + Change-Id: Id4a881686605d26c94ab5409bc70fcc21efacc25 - * res_pjsip_pubsub.c: Avoid the deadlock by pushing the subscription - removal to the subscription serializer. +2019-11-07 11:54 +0000 [37dcdd485a] Martin Tomec - * 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. + * func_curl.c: Support custom http headers - ASTERISK-27706 + When user wants to send json data, the default Content-Type header + is incorect (application/x-www-form-urlencoded). This patch allows + to set any custom headers so the Content-Type header can be + overriden. User can set multiple headers by multiple calls of + curlopt(). This approach is not consistent with other parameters, + but is more readable in dialplan than one call with multiple + headers. - Change-Id: I56b647aea565f24dba33e9e5ebeed4cd3f31f8c4 + ASTERISK-28613 -2018-03-07 06:15 +0000 [f65488f546] Ross Beer + Change-Id: I4dd68c3f4e25362ef941d73a3861f58348dcfbf9 - * pjsip_transport_events.c: Fix crash using stale transport pointer. +2019-11-15 04:46 +0000 [b9bbf39449] Joshua Colp - 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. + * parking: Fix case where we can't get the parker. - * Invoke the transport monitor callback checks when the transport is - destroyed in addition to when it is disconnected and shutdown. + ASTERISK-28616 - ASTERISK-27688 + Change-Id: Iabe31ae38d01604284fcc5c2438d44e29a32ea4d - Change-Id: Ia9b5469fea8f2b3f2d8476fae6b748a4d23e7261 +2019-11-12 05:00 +0000 [e7320bbbf0] Joshua Colp -2018-03-19 09:36 +0000 [879743ab8f] Ben Ford + * parking: Use channel snapshot instead of channel. - * test_data_buffer.c: Add unit tests for data buffer API. + There exists a scenario where a thread can hold a lock on the + channels container while trying to lock a bridge. At the same + time another thread can hold the lock for said bridge while + attempting to retrieve a channel. This causes a deadlock. - 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. + This change fixes this scenario by retrieving a channel snapshot + instead of a channel, as information present in the snapshot + is all that is needed. - For more information, refer to the wiki page: - https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + ASTERISK-28616 - Change-Id: Id5b599aa15a5e61d0ec080f97cd0c57bd07e6f8f + Change-Id: I68ceb1d62c7378addcd286e21be08a660a7cecf2 -2018-02-23 13:49 +0000 [138e0eff4e] Ben Ford +2019-11-12 12:36 +0000 [6f0a69c51a] Kevin Harwell - * Add data buffer API to store packets. + * res_pjsip_session: initialize pending's topology to endpoint's - 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. + Found during some testing, there is a race condition between selecting an + appropriate bridge type for a call versus the applying of media on the callee's + session. In some instances a native bridge type would have been chosen, but + due to the callee's media not yet being established at bridge compatibility + check time the simple bridge type is picked instead. - For more information, refer to the wiki page: - https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + When using chan_pjsip this initiates a topology change event. The topologies + are then compared for the two sessions. However, when the topology was created + for the caller its streams are initialized to "inactive". This topology is then + used as a base when creating the callee's topology, and streams. Soon after + the caller's topology's stream(s) get updated based on the sdp (get set to + sendrecv in the failing scenario). - Change-Id: Iff13c5d4795d52356959fe2a57360cd57dfade07 + Now when the topology change event is raised, and the two topologies are + compared, the comparison fails due to a stream state mismatch (sendrecv vs + inactive). And since they differ a reinvite is sent out (to the caller in + this case). -2018-03-25 13:12 +0000 [a87141ddfd] George Joseph + This patch makes it such that when the caller's topology is initially created + it gets created based on its configured endpoint's media topology. When the + endpoint's topology is created its stream's state(s) are initialized to + sendrecv instead of inactive. Subsequently, now when the callee's topology is + created its topology streams are now initialized to sendrecv. Thus when the + topology change event occurs due to the mentioned scenario the stream states + match for the given sessions, and the reinvite is not sent unless due to some + other valid mismatch. - * pjproject_bundled: Add patch for pj_atomic crashes + Note, this patch only changes one pending media state's creation point. It's + possible other places *could* be changed, however for now it was deemed best + to only alter what's here. - 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. + Change-Id: I6ba3a6a75f64824a1b963044c37acbe951c389c7 - Teluu also added some checks to the win32 implementation as well. +2019-11-06 05:47 +0000 [40c49ec64f] George Joseph - Change-Id: Id25f70b79fdedf44ead6e6e1763a4417d3b3f825 + * stasis: Don't hold app_registry and session locks unnecessarily -2018-03-21 08:52 +0000 [e14b0e960d] Joshua Colp + resource_events:stasis_app_message_handler() was locking the session, + then attempting to determine if the app had debug enabled which + locked the app_registry container. res_stasis:__stasis_app_register + was locking the app_registry container then calling app_update + which caused app_handler (which locks the session) to run. + The result was a deadlock. - * res_rtp_asterisk: Add support for raising additional RTCP messages. + * Updated resource_events:stasis_app_message_handler() to determine + if debug was set (which locks the app_registry) before obtaining the + session lock. - 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. + * Updated res_stasis:__stasis_app_register to release the app_registry + container lock before calling app_update (which locks the sesison). - The RTCP feedback message type is now handled and REMB[1] messages - are raised with their containing information. + ASTERISK-28423 + Reported by Ross Beer - This also fixes a bug where all feedback messages were triggering - video updates instead of just FIR and FUR. + Change-Id: I58c69d08cb372852a63933608e4d6c3e456247b4 - 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. +2019-11-07 10:56 +0000 [6be18dfb72] Alexei Gradinari - [1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 + * serializer: set high/low alert levels on whole pool - ASTERISK-27758 - ASTERISK-26366 + The current code sets alert levels starting from index 1. + Need to set on whole pool starting from index 0. - Change-Id: I680da0ad8d5059d5e9655d896fb9d92e9da8491e + Change-Id: I5decbb43160954fb9a512f04302637fc666b6f5d -2018-03-27 08:27 +0000 [455cee99ae] Florian Floimair +2019-10-29 08:35 +0000 [be4c6f3f35] George Joseph - * main: Update copyright notice with year 2018 + * cdr_mysql: Fix missing use of 'my_bool' with MySql >= 8.0.1 - Change-Id: I2d80bc5edf940fab914cba3d8a0fa0b5eb2a3148 + MySql 8.0.1 replaced the "my_bool" type with "bool" so an #if + was added to use "bool" with MYSQL_VERSION_ID >= 80001. -2018-03-26 07:42 +0000 [48190c7f93] Guido Falsi + ASTERISK-28604 - * core: fix getopt(3) usage + Change-Id: I66a28d8f0011e33774edee13a6f8efd2302bb920 - Setting optind = 0 is forced to 1 in glibc implementation, but - causes option parsing to be flawed in other implementations, for - example on FreeBSD. +2019-10-25 06:46 +0000 [95bc698b85] Joshua Colp - ASTERISK-27773 #close + * res_pjsip_outbound_registration: Extend documentation for "max_retries". - Change-Id: Ia548e69f8302e9754dbbedb6bc451c0700c66f61 + If the "max_retries" option is set to 0 then upon failure no + further attemps are made, so explicitly document the behavior. -2018-03-23 13:15 +0000 [07cf6b1437] Alexander Traud + ASTERISK-28602 - * install_prereq: Add Slackware (somehow). + Change-Id: I1e30daae9dd6c49ce18744164214d3def505acbf - ASTERISK-27770 +2019-10-24 09:15 +0000 [ccaf735d1f] Sean Bright - Change-Id: Ib87e0483c785542238cfe34c1e884d5a31edfaab + * res_calendar: Resolve memory leak on calendar destruction -2018-03-23 09:13 +0000 [307a295d00] Alexander Traud + Calling ne_uri_parse allocates memory that needs to be freed with a + corresponding call to ne_uri_free. - * install_prereq: Add Gentoo Linux. + ASTERISK-28572 #close - ASTERISK-27769 + Change-Id: I8a6834da27000a6807d89cb7a157b2a88fcb5e61 - Change-Id: Ieb13293cd67481f3a33f58f6f7c8c3ee1e338e7a +2019-10-24 05:21 +0000 [6e22e1213e] Joshua Colp -2018-03-17 01:02 +0000 [318bf45928] Corey Farrell + * res_ari_events: Add module reference when a WebSocket is open. - * main/indications: Use ast_cli_completion_add for all completions. + This change ensures that the module isn't unloaded when a + WebSocket is open. Previously it was possible to unload the + module manually or during shutdown which could cause a crash + when any active WebSockets were terminated. - Change-Id: I371be01f178fb542a9fbe8d97e7ae21aa4d82c36 + ASTERISK-28585 -2018-03-21 14:54 +0000 [75715b95b4] Russell Bryant + Change-Id: I85c71ab112f99875b586419a34c08c8b34c14c5c - * app_originate: Add async option. +2019-10-18 13:47 +0000 [e627db7928] Sean Bright - Add an option to make app_originate not wait for the created channel - to answer. + * utils.h: Set lower bound for thread stack size to PTHREAD_STACK_MIN - Change-Id: I7fc2facd77079abc6321f44e8bcd4e39298de2ae - Requested-by: Frederic Steinfels - Signed-off-by: Russell Bryant + ASTERISK-28590 #close -2018-03-22 07:27 +0000 [4f33f56a72] Alexander Traud + Change-Id: I51abce00c04d0a06550bda5205580705185b9c1c - * BuildSystem: pjsip_evsub_set_uas_timeout was not used (part 2). +2019-10-18 06:36 +0000 [bfd0e05e59] George Joseph - The previous change was not complete. + * ExternalMedia: Change return object from ExternalMedia to Channel - ASTERISK-27435 + When we created the External Media addition to ARI we created an + ExternalMedia object to be returned from the channels/externalMedia + REST endpoint. This object contained the channel object that was + created plus local_address and local_port attributes (which are + also in the Channel variables). At the time, we thought that + creating an ExternalMedia object would give us more flexibility + in the future but as we created the sample speech to text + application, we discovered that it doesn't work so well with ARI + client libraries that a) don't have the ExternalMedia object + defined and/or b) can't promote the embedded channel structure + to a first-class Channel object. - Change-Id: I11082c14c0ef9c6af8c995084a6851337ea2a90f + This change causes the channels/externalMedia REST endpoint to + return a Channel object (like channels/create and channels/originate) + instead of the ExternalMedia object. -2018-03-22 05:43 +0000 [d6fda173a4] Alexander Traud + Change-Id: If280094debd35102cf21e0a31a5e0846fec14af9 - * BuildSystem: With external editline, do not require libs for internal editline. +2019-10-18 03:13 +0000 [c73aaa2760] Salah Ahmed - ASTERISK-27761 + * Crash during "pjsip show channelstats" execution - Change-Id: Ib17a7415297a210cfcdbf149e4df9b6edadbfab6 + During execution "pjsip show channelstats" cli command by an + external module asterisk crashed. It seems this is a separate + thread running to fetch and print rtp stats. The crash happened on + the ao2_lock method, just before it going to read the rtp stats on + a rtp instance. According to gdb backtrace log, it seems the + session media was already cleaned up at that moment. -2018-03-21 22:00 +0000 [a6d58c518a] Corey Farrell + ASTERISK-28578 - * core: Create main/options.c. + Change-Id: Ib7c7f39996d942984394782296bb99aae67862e5 - 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. +2019-10-17 05:50 +0000 [ef2eb064b2] Joshua Colp - ASTERISK~26245 + * res_rtp_asterisk: Remove a log message that slipped in. - Change-Id: I5cf184f4757f9363b80c9e678bdc35c477122380 + This was only supposed to be for testing, so now it can be + removed. -2018-03-21 19:25 +0000 [745b5134cd] George Joseph + Change-Id: I3dfc2e776e70b3196aeed5688372ea80c0214b59 - * Revert "BuildSystem: In NetBSD, the Python Programming Language is python-X.Y." +2019-10-16 16:06 +0000 [2666a5e111] Sean Bright - Something is causing a python2/python3 mismatch on Fedora27. + * README-SERIOUSLY.bestpractices.md: Speling correetions. - 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 ' + ASTERISK-28586 #close - This reverts commit be0e9920b64e3b07501b299d131309b58f9b0ddf. + Change-Id: I43dc4e8bd9dc685b17695b215a5360314074734f - Change-Id: I86dd102eb3ead199fe89178cdbadb36b4e2cfd1b +2019-09-26 19:24 +0000 [b41a8fd0f3] cmaj -2018-02-08 13:23 +0000 [411915af28] Corey Farrell + * app_voicemail.c: Support multiple file formats for forwarded messages. - * loader: Reserve space for additional pointers in ast_module_info. + If you specify multiple formats in voicemail.conf, eg. "format = gsm|wav" + and are using realtime ODBC backend, only the first format gets stored + in the database. So when you forward a message later on, there is a bug + generating the email, related to the stored format (GSM) being different + than the desired email format (WAV) specified for the user. Sox can + handle this, but Asterisk needs to tell sox exactly what to do. - This creates 4 reserved pointers in case we need additional dependency - management fields. + ASTERISK-22192 - Change-Id: If991ec99b779df1b2dfbd38ce1a0cd79f9e01821 + Change-Id: I7321e7f7e7c58adbf41dd4fd7191c887b9b2eafd -2018-03-20 15:28 +0000 [cf73a4203f] Kevin Harwell +2019-10-14 06:19 +0000 [ed12715cbe] Joshua Colp - * bridge_softmix: Clear "talking" when a channel is put on hold + * test_res_rtp: Enable FIR and REMB nominal tests. - 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. + Now that both FIR and REMB are being sent in compound packets + these tests can be enabled. - ASTERISK-27755 #close + This also extends the REMB nominal test to cover the REMB + contents itself. - Change-Id: I930e16c4662810f9f02043d69062f88173c5e2ef + Change-Id: Ibfee526ad780eefcce5dd787f53785382210024a -2018-03-20 11:53 +0000 [bfefde5b07] Alexander Traud +2019-10-08 13:40 +0000 [6c54bd704e] Christoph Moench-Tegeder - * BuildSystem: For consistency, avoid extra libs to be empty. + * cdr_pgsql cel_pgsql res_config_pgsql: compatibility with PostgreSQL 12 - 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. + PostgreSQL 12 finally removed column adsrc from table pg_catalog.pg_attrdef + (column default values), which has been deprecated since version 8.0. + Since then, the official/correct/supported way to retrieve the column + default value from the catalog is function pg_catalog.pg_get_expr(). - 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. + This change breaks compatibility with pre-8.0 PostgreSQL servers, + but has reached end-of-support more than a decade ago. + cdr_pgsql and res_config_pgsql still have support for pre-7.3 + servers, but cleaning that up is perhaps a topic for a major release, + not this bugfix. - Change-Id: I037ef170cf1ad94497151a9ea5071a31c656cafe + ASTERISK-28571 -2018-03-20 09:58 +0000 [8bd5980e14] Ivan Poddubny + Change-Id: I834cb3addf1937e19e87ede140bdd16cea531ebe - * func_channel: Delete dead CHANNEL_TRACE code +2019-10-10 15:30 +0000 [17e71b6abe] Kevin Harwell - The functions behind the flag and the flag itself were removed - from Asterisk 12 as incompatible with the new architecture. + * res_pjsip_mwi: potential double unref, and potential unwanted double link - Change-Id: I058493ef7a53ee290fd225bbcbb07bf46b623ccf + When creating an unsolicited MWI aggregate subscription it was possible for + the subscription object to be double unref'ed. This patch removes the explicit + unref as it is not needed since the RAII_VAR will handle it at function end. -2018-03-17 21:26 +0000 [040bb21771] Corey Farrell + Less concerning there was also a bug that could potentially allow the aggregate + subscription object to be added to the unsolicited container twice. This patch + ensures it is added only once. - * core: Remove additional symbols. + ASTERISK-28575 - 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 + Change-Id: I9ccfdb5ea788bc0c3618db183aae235e53c12763 - Remove unused symbols: - * channelreloadreason2txt (last used in Asterisk 12). +2019-10-09 16:00 +0000 [867c8b2879] Chris Savinovich - 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 + * test_taskprocessor.c: Fix test failure on Ubuntu - Change-Id: I841255995d195f8efc1ed47af9c7a2f131c08645 + Fixes a failure in /main/taskprocesor unit test, only occurring in Ubuntu. + Newer versions of GCC require variable initialization. -2018-03-17 20:03 +0000 [de77cf8698] Corey Farrell + Change-Id: I2994d8aab9307a8c2c7330584f287a27144a580c - * core: Remove dead symbols from asterisk.exports.in. +2019-10-09 09:32 +0000 [cb6e0d36ae] George Joseph - * dahdi_chan_name - * dahdi_chan_name_len - * dahdi_chan_mode - * __manager_event - * dialed_interface_info + * pjproject_bundled: Replace earlier reverts with official fixes. - Added comment about __progname and environ being needed for FreeBSD to - prevent accidental removal in the future. + Issues in pjproject 2.9 caused us to revert some of their changes + as a work around. This introduced another issue where pjproject + wouldn't build with older gcc versions such as that found on + CentOS 6. This commit replaces the reverts with the official + fixes for the original issues and allows pjproject to be built + on CentOS 6 again. - Change-Id: I3ae026bc541cd9cb572be2ffa95fc359547642b5 + ASTERISK-28574 + Reported-by: Niklas Larsson -2018-03-17 01:39 +0000 [201762f161] Corey Farrell + Change-Id: I06f8507bea553d1a01b0b8874197d35b9d47ec4c - * named_acl: Use ast_cli_completion_add. +2019-10-09 15:17 +0000 [a66848c92f] Joshua Colp (license 5000) - Change-Id: I317a82de976bbdbfe4352c243e32a7bb8f66c377 + * pbx: deadlock when outgoing dialed channel hangs up too quickly -2018-03-17 01:58 +0000 [645203a422] Corey Farrell + Here's the basic scenario that occurred when executing an AMI fast originate + while at the same time something else locks the channels container, and also + wants a lock on the dialed channel: - * main/sounds: Use ast_cli_completion_add. + 1. pbx_outgoing_attempt obtains a lock on a dialed channel + 2. concurrently another thread obtains a lock on the channels container, and + subsequently requests a lock on the dialed channel. It waits on #1. For + instance, "core show channel + ASTERISK-28561 + patches: + iliketrains.diff submitted by Joshua Colp (license 5000) - * channel.c: Allow generic plc then channel formats are equal + Change-Id: I51b42b92dde8f2215b69bb509e28667ee3a3853a - 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. +2019-10-07 14:02 +0000 [68855f6a7b] Sean Bright - * 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. + * Revert "app_voicemail: Cleanup stale lock files on module load" - ASTERISK-27743 + This reverts commit fd2e8d0da7ba539470ed73d463d8bc641f7843af. - Change-Id: I0577026a179dea34232e63123254b4e0508378f4 + Reason for revert: Problematic for users who store their voicemail + on network storage devices, or share voicemail storage between + multiple Asterisk instances. -2018-03-17 01:09 +0000 [8d01ec572d] Corey Farrell + ASTERISK-28567 #close - * manager: Use ast_cli_completion_add for completion generators. + Change-Id: I3ff4ca983d8e753fe2971f3439bd154705693c41 - Change-Id: I658141c6ec490a3e866b02d2afea757928ceaabf +2019-10-02 11:37 +0000 [3f12cd7711] Kevin Harwell -2018-03-17 02:16 +0000 [2c1ad2f510] Corey Farrell + * res_pjsip_mwi: use an ao2_global object for mwi containers - * main/test: Use ast_cli_completion_add. + On shutdown it's possible for the unsolicited mwi container to be freed before + other dependent threads are done using it. This patch ensures this can no + longer happen by wrapping the container in an ao2_global object. The solicited + container was also changed too. - Change-Id: I5133ff2ba4e030f9733fb3d050c863d72a22ae6b + ASTERISK-28552 -2018-03-18 10:16 +0000 [115939caeb] Joshua Colp + Change-Id: I8f812286dc19a34916acacd71ce2ec26e1042047 - * rtp: Add REMB RTP property and set it on PJSIP video RTP. +2019-10-02 11:24 +0000 [afc10c25ac] Kevin Harwell - This change adds a property to RTP instances to indicate that - REMB support is enabled and that sending/receiving should be - passed through. + * serializer: move/add asterisk serializer pool functionality - This also enables it on video RTP instances in PJSIP if - WebRTC support is enabled. + Serializer pools have previously existed in Asterisk. However, for the most + part the code has been duplicated across modules. This patch abstracts the + code into an 'ast_serializer_pool' object. As well the code is now centralized + in serializer.c/h. - Finally the goog-remb extension is added to the SDP using - the rtcp-fb attribute to indicate our support for it. + In addition serializer pools can now optionally be monitored by a shutdown + group. This will prevent the pool from being destroyed until all serializers + have completed. - Details about REMB can be found on the draft document for it: - https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 + Change-Id: Ib1e906144b90ffd4d5ed9826f0b719ca9c6d2971 - Change-Id: I1902dda1c0882bd1a0d71b2f120684b44b97e789 +2019-10-02 11:34 +0000 [931ef77e21] Kevin Harwell -2018-03-17 04:31 +0000 [8c25a72d57] Corey Farrell + * res_pjsip/res_pjsip_mwi: use centralized serializer pools - * main/bridge: Use ast_cli_completion_add. + Both res_pjsip and res_pjsip_mwi made use of serializer pools. However, they + both implemented their own serializer pool functionality that was pretty much + identical in each of the source files. This patch removes the duplicated code, + and uses the new 'ast_serializer_pool' object instead. - Change-Id: I3775a696d6a57139fdf09651ecb786bcf1774509 + Additionally res_pjsip_mwi enables a shutdown group on the pool since if the + timing was right the module could be unloaded while taskprocessor threads still + needed to execute, thus causing a crash. -2018-03-17 16:41 +0000 [5b40441197] Corey Farrell + Change-Id: I959b0805ad024585bbb6276593118be34fbf6e1d - * core: Minor cleanup of ast_el_read_char. +2019-10-04 15:31 +0000 [495bc77a6a] Sean Bright - * 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. + * cdr_mysql: Don't clean up on unload unless we can unregister from CDRs - Change-Id: I4315328ebea2f62641faf6881de2ac20a9f9d08e + ASTERISK-28566 #close -2018-03-17 10:49 +0000 [e61b50b67a] Alexander Traud + Change-Id: I6daa4e5128e9406d04d3aed670c3bae98d38d40c - * BuildSystem: Check for header file of OGG. +2019-10-01 09:01 +0000 [ce1e0714ba] Joshua Colp - 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. + * stasis: Pass bumped topic_all reference to proxy_dtor. - Anyway, even Asterisk 13 LTS uses symbols of libogg. Therefore, that header - should be included explicitly. Therefore, ./configure should check for that - header. + This avoids use of the global variable and ensures topic_all remains + active until all topics are freed. - Change-Id: I98c50d56311b68880d1084fcc62c35ab2f8692db + ASTERISK-28553 + patches: + ASTERISK-28553.patch by coreyfarrell (license 5909) -2018-03-09 06:26 +0000 [f697025ae5] Alexander Traud + Change-Id: I9a8cd8977f3c3a6aa00783f8336d2cfb9c2820f1 - * BuildSystem: When no download utility is available, display the explanation. +2019-10-01 06:29 +0000 [19565e0b90] lvl - ./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. + * chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel - Change-Id: I64c99b76a03525c69471e5055bf124b36a51bbd4 + ASTERISK-28086 #close -2018-03-17 05:00 +0000 [10a978829e] Alexander Traud + Change-Id: Ib3baadc89b9f0477a6f25a63861433812368c5ea - * BuildSystem: Remove unused dependency on libltdl. +2019-09-19 03:56 +0000 [9a933c3adc] Torrey Searle - 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. + * channel/chan_pjsip: add dialplan function for music on hold - ASTERISK-27745 + Add a new dialplan function PJSIP_MOH_PASSTHROUGH that allows + the on-hold behavior to be controlled on a per-call basis - Change-Id: Icd315809b8e7978203431f3afb66240dd3a040ba + ASTERISK-28542 #close -2018-03-17 02:25 +0000 [1136a22a1e] Corey Farrell + Change-Id: Iebe905b2ad6dbaa87ab330267147180b05a3c3a8 - * main/translate: Use ast_cli_completion_add. +2019-09-27 09:54 +0000 [1f10ca76da] Sean Bright - Change-Id: I0e2402660e54d91f74ab0804c62a5b1925577413 + * res_pjsip_transport_websocket: Don't put brackets around local_name if IPv6 -2018-03-17 02:00 +0000 [91ac95993e] Corey Farrell + ASTERISK-28544 #close - * main/taskprocessor: Use ast_cli_completion_add. + Change-Id: I8e62c444d107674c298f472e3545661de8a80dce - Change-Id: Ie5f812a988ed811fd11967151932de62bc131b48 +2019-09-24 14:18 +0000 [04f7d136d8] Alexei Gradinari -2018-03-15 15:06 +0000 [3ad56aa929] Corey Farrell + * res_pjsip_pubsub: add endpoint to some warning - * main/config: Use ast_cli_completion_add for reload completion. + There are some warning messages which are not informative without endpoint: + "No registered subscribe handler for event presence.winfo" + "No registered publish handler for event presence" - Change-Id: Ia3fa4c03f2285a1ec8814bbe7f4624ead9111ad1 + This patch adds an endpoint name to these messages. -2018-03-17 00:51 +0000 [9e335f22e7] Corey Farrell + Change-Id: Ia2811ec226d8a12659b4f9d4d224b48289650827 - * aco: Use ast_cli_completion_add for 'config show help'. +2019-09-26 10:35 +0000 [d146ec7e83] Asterisk Team - In addition this removes: - * RAII_VAR usage - * Duplicate check of pos - * Unneeded arguments. + * Revert "Update CHANGES and UPGRADE.txt for 16.6.0-rc2" - Change-Id: I2da8eac2670d1d8d6474c04037129804f55ebf39 + This reverts commit a0844a9b9bbe313c524bca82550e7ec1ed2fe928. -2018-03-14 04:27 +0000 [4d1c9d8711] Corey Farrell + Correcting/reverting accidental + upgrade on release process. - * core: Stop using AST_INLINE_API for allocator functions. + Change-Id: I08746eda578effa6e64054690fad48a17d2f42e7 - 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. +2015-03-27 17:34 +0000 [85c7326d08] Jonathan Rose - Remove menuselect conflicts between MALLOC_DEBUG and DEBUG_CHAOS as they - can now be combined. + * basic-pbx: Bring forward queue configuration from 13 - 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. + Original commit: cfbf5fbe918bc34f3d600760fc0b6f13a3a9a0ed - Change-Id: If9df4377f74bdbb627461b27a473123e05525887 + Change-Id: I34a841d73c429ca8d944481f8dccb756ee231c9c -2018-02-27 03:01 +0000 [ecc846b26b] Florian Floimair +2019-09-25 11:01 +0000 [0514559005] Sean Bright - * app_dial: Enable early-media video + * pbx: Prevent Realtime switch crash on invalid priority - Certain applications (e.g. door-phone) require that also video is transmitted - before a call is accepted. + pbx_extension_helper takes two 'context' arguments. One (con) is a + pointer directly to a 'struct ast_context' and the other (context) is + the name of the context. In all cases, one of these arguments is NULL + and the other is non-NULL. - Change-Id: I9842e1dc2f6e1c2c49dc33fe615255007d2f821e + Functions that are ultimately called by pbx_extension_helper expect that + 'context' will be non-NULL, so we set it unconditionally on entry into + this function. -2018-03-05 06:50 +0000 [be0e9920b6] Alexander Traud + ASTERISK-28534 #close - * BuildSystem: In NetBSD, the Python Programming Language is python-X.Y. + Change-Id: Ifbbc5e71440afd80efd441f7a9d72e8b10b6f47d - ASTERISK-27717 +2019-09-24 15:44 +0000 [827dd754b2] Ben Ford - Change-Id: If90ddf9c396c32e7402a894f42dce215c30049d1 + * taskprocessor.c: Added "like" support to 'core show taskprocessors' -2018-03-16 09:53 +0000 [02fa145a1b] Alexander Traud + Added "like" support for 'core show taskprocessors'. Now you + can specify a specific set of taskprocessors (or just one) by + adding the keyword "like" to the above command, followed by + your search criteria. - * BuildSystem: Avoid an extra case for OpenBSD. + Change-Id: I021e740201e9ba487204b5451e46feb0e3222464 - 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. +2019-09-25 12:53 +0000 [a0844a9b9b] Asterisk Development Team - Today with OpenBSD 6.2, all libvorbis*.so declare their dependencies correctly. - Therefore, an extra case is not required anymore. + * Update CHANGES and UPGRADE.txt for 16.6.0-rc2 +2019-09-24 17:43 +0000 [41cd1ff454] Sean Bright - Change-Id: Ifd04e0994ce9f1e4ad29c3948a0398b91d1e97bc + * res_pjsip_registrar: Validate Contact URI before adding to responses -2018-03-05 10:10 +0000 [00789174f6] Alexander Traud + If a permanent contact URI associated with an AOR is invalid, we add a + Contact header to REGISTER responses with a NULL URI, causing a crash. - * BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD. + ASTERISK-28463 #close - 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. + Change-Id: Id2b643e58b975bc560aab1c111e6669d54db9102 - Furthermore, no supported platform/version was found, which still (ever?) - requires those additional libraries. Therefore, they were simply removed. +2019-09-24 11:21 +0000 [9ff11c2f00] Kevin Harwell - Finally, this change adds the error code ESTRPIPE to the channel driver - chan_alsa for those platforms which lack it, again for example NetBSD. + * res_pjsip_pubsub: change warning to debug - ASTERISK-27720 + The following message: - Change-Id: I3b21f2135f6cbfac7590ccdc2df753257f426e0b + "Subscription request from endpoint rejected. Expiration of 0 is invalid" -2018-03-16 09:02 +0000 [4d1e3fef6b] George Joseph + Would sometimes spam the log with warnings if Asterisk restarted and a bunch + of clients sent unsubscribes. This patch changes it from a warning to a debug + message. - * app_voicemail: Fix json blob errors + Change-Id: I841ec42f65559f3135e037df0e55f89b6447a467 - 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. +2019-09-22 21:04 +0000 [cd51f5b876] Corey Farrell - * Keypress results passed to ast_test_suite_notify are now checked with - isprint() and a '?' is substituted if the check fails. + * core: Fix ABI mismatch of ao2_global_obj. - Change-Id: I78ee188916bbac840f3d03f40201b692347ea865 + astobj2.c declares DEBUG_THREADS_LOOSE_ABI to avoid overhead of debug + threads tracking information in the internal structures of astobj2. + Unfortunately this means that ao2_global_obj contains the statically + allocated debug threads tracking fields which are used by initialization + and cleanup but main/astobj2.c believed those fields and associated + space did not exist. -2018-03-15 09:32 +0000 [ebe957c5e9] Corey Farrell + Change-Id: Icef41ad97d88a8c1d1515e034ec8133cab3b1527 - * main/cdr: Use ast_cli_completion_add for CDR channel completion. +2019-09-24 09:40 +0000 [5ea667e03a] Ben Ford - Change-Id: Ie81830647a23aad61c1162583b6d50adbe6e7822 + * taskprocessor.c: Add CLI commands to reset taskprocessor stats. -2018-03-12 10:20 +0000 [dbf5ff6ed0] Alexander Traud + Added two new CLI commands to reset stats for taskprocessors. You can + reset stats for a single, specific taskprocessor ('core reset + taskprocessor '), or you can reset all taskprocessors + ('core reset taskprocessors'). These commands will reset the counter for + the number of tasks processed as well as the max queue size. - * install_prereq: Add Arch Linux. + Change-Id: Iaf17fc4ae29396ab0c6ac92408fc7bdc2f12362d - ASTERISK-27738 +2019-09-19 09:50 +0000 [789c51ac8a] George Joseph - Change-Id: I7ca620e3c4dfb4b064a19382c4915aeb42a2a09f + * pjproject_bundled: Revert pjproject 2.9 commits causing leaks -2018-03-15 08:19 +0000 [89ba4d4e3d] Corey Farrell + We've found a connection re-use regression in pjproject 2.9 + introduced by commit + "Close #1019: Support for multiple listeners." + https://trac.pjsip.org/repos/changeset/6002 + https://trac.pjsip.org/repos/ticket/1019 - * main/ccss: Use ast_cli_completion_add for core id. + Normally, multiple SSL requests should reuse the same connection + if one already exists to the remote server. When a transport + error occurs, the next request should establish a new connection + and any following requests should use that same one. With this + patch, when a transport error occurs, every new request creates + a new connection so you can wind up with thousands of open tcp + sockets, possibly exhausting file handles, and increasing memory + usage. - Change-Id: I44b25d6d24c7d9bc1bb38a50774b38883162f98f + Reverting pjproject commit 6002 (and related 6021) restores the + expected behavior. -2018-03-15 07:29 +0000 [aa0d95c730] Corey Farrell + We also found a memory leak in SSL processing that was introduced by + commit + "Fixed #2204: Add OpenSSL remote certificate chain info" + https://trac.pjsip.org/repos/changeset/6014 + https://trac.pjsip.org/repos/ticket/2204 - * astobj2_container: Use ast_cli_completion_add for container names. + Apparently the remote certificate chain is continually recreated + causing the leak. - Change-Id: I4f0fc09e820eb8d8da2354a177dbcf503c56ddd1 + Reverting pjproject commit 6014 (and related 6022) restores the + expected behavior. -2017-12-09 04:52 +0000 [b929a7fb8d] Corey Farrell + Both of these issues have been acknowledged by Teluu. - * main/channel: Use ast_cli_completion_add for channeltypes. + ASTERISK-28521 - Change-Id: Ia845fae6a84801cc7d9996767b99efb2753cbb48 + Change-Id: I8ae7233c3ac4ec29a3b991f738e655dabcaba9f1 -2018-03-14 12:38 +0000 [b45bb476bb] Corey Farrell +2019-09-22 16:59 +0000 [fec6e1bd87] Corey Farrell - * cli: Enable ast_cli_completion_add on public completion generators. + * core: Add AO2_ALLOC_OPT_NO_REF_DEBUG option. - * ast_cli_complete - * ast_complete_channels - * ast_complete_applications + Previous to this patch passing a NULL tag to ao2_alloc or ao2_ref based + functions would result in the reference not being logged under + REF_DEBUG. This could sometimes cause inaccurate logging if NULL was + accidentally passed to a reference action. Now reference logging is + only disabled by option passed to the allocation method. - These generators will now use ast_cli_completion_add if state == -1. + Change-Id: I3c17d867d901d53f9fcd512bef4d52e342637b54 - Change-Id: I7ff311f0873099be0e43a3dc5415c0cd06d15756 +2019-09-23 11:01 +0000 [bd96a0b79d] Kevin Harwell -2018-03-14 11:17 +0000 [92158b7f37] Ross Beer + * res_sorcery_memory_cache: stale item update leak - * res_pjsip_rfc3326.c: Account for more than one 'Reason' header + When a stale item was being updated the object was being retrieved, but its + reference was not being decremented after the update. This patch makes it so + the object is now appropriately de-referenced. - ASTERISK-27741 + ASTERISK-28523 - Change-Id: I0aa59a54735c6d20b95c54db1bd095dbf93e7adf + Change-Id: I9d8173d3a0416a242f4eba92fa0853279c500ec7 -2018-03-12 08:05 +0000 [b0fff03bb5] Alexander Traud +2019-09-23 07:09 +0000 [9c5a8066a6] George Joseph - * install_prereq: Add SUSE. + * astmm.c: Display backtrace with memory show allocations - ASTERISK-27736 + You can currently capture backtraces of memory allocations but they + only get displayed when you stop asterisk and the atexit hooks + are enabled. Now, if memory backtrace is on and you issue a + "memory show allocations" CLI command for a specific file, then + a backtrace will show for each allocation that occurred after + you turned "memory backtrace on". The backtrace display is shown + only when a specific file's allocations are displayed to prevent + a massive CLI dump of every file's allocations. - Change-Id: I4cafc8973349d50a7cb7919ddf0bb1aaef4bfc3e + Change-Id: Ic657afc1fc6ec7205e16eb36a97a611d235a2b4f -2018-02-16 21:11 +0000 [572a508ef2] Corey Farrell +2019-09-20 08:29 +0000 [5b8c1ed0d3] Corey Farrell - * loader: Convert reload_classes to built-in modules. + * stasis: refcounter.py can incorrectly report skewed objects. - * acl (named_acl.c) - * cdr - * cel - * ccss - * dnsmgr - * dsp - * enum - * extconfig (config.c) - * features - * http - * indications - * logger - * manager - * plc - * sounds - * udptl + It is possible for topic->name to be NULL, this causes the allocation + reference to not be logged. Use the name variable instead which has + been verified to be a non-empty. - 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. + Change-Id: I3d0031d03c8356e4808f00cdf2d5428712575883 - 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). +2019-09-19 11:06 +0000 [76d4a42ae1] Corey Farrell - Change-Id: I371a9a45064f20026c492623ea8062d02a1ab97f + * res_pjsip_mwi: Remove inappropriate topic unreference. -2018-03-13 16:39 +0000 [9e488dd482] Corey Farrell + ast_mwi_topic() returns a borrowed reference which should not be + unreferenced, doing so leads to a FRACK. This was hidden by the fact + that stasis_cache.c leaked the result of cache_remove in + caching_topic_exec. - * core: Remove incorrect usage of attribute_malloc. + Change-Id: I51101bf7d07b8dc8ce8fc46b6cb31fbbd213fbc7 - 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. +2019-09-19 10:53 +0000 [256db889f2] Corey Farrell - Change-Id: If507f33ffb3ca3b83b702196eb0e8215d27fc7d2 + * app_voicemail: Fix module unload leak. -2018-03-12 05:19 +0000 [d9776870e8] Alexander Traud + Change-Id: Ib9a06565b9a178822d3bbb67eccf51432e12d84a - * BuildSystem: Enable IMAP storage on openSUSE and Arch Linux. +2019-09-06 08:18 +0000 [6647be69ac] Joshua Colp - ASTERISK-27734 + * func_jitterbuffer: Add audio/video sync support. - Change-Id: I8d6e6a1c08c031649764f5277fbbb85e57c3a9d4 + This change adds support to the JITTERBUFFER dialplan function + for audio and video synchronization. When enabled the RTCP SR + report is used to produce an NTP timestamp for both the audio and + video streams. Using this information the video frames are queued + until their NTP timestamp is equal to or behind the NTP timestamp + of the audio. The audio jitterbuffer acts as the leader deciding + when to shrink/grow the jitterbuffer when adaptive is in use. For + both adaptive and fixed the video buffer follows the size of the + audio jitterbuffer. -2018-02-23 07:41 +0000 [ea9768ff07] Corey Farrell + ASTERISK-28533 - * stringfields: Remove MALLOC_DEBUG fields from struct ast_string_field_mgr. + Change-Id: I3fd75160426465e6d46bb2e198c07b9d314a4492 - 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 +2019-09-18 06:56 +0000 [9f304170f6] Sean Bright -2018-03-10 03:33 +0000 [fee929c8ac] Corey Farrell + * res_musiconhold: Add new 'playlist' mode - * core: Remove non-critical cleanup from startup aborts. + Allow the list of files to be played to be provided explicitly in the + music class's configuration. The primary driver for this change is to + allow URLs to be used for MoH. - 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. + Change-Id: I9f43b80b43880980b18b2bee26ec09429d0b92fa - 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. +2019-09-15 14:35 +0000 [49e1346185] Joshua Colp - 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. + * chan_pjsip: Relock correct channel during "fax" redirect. - Replace ast_register_atexit with ast_register_cleanup in media_cache.c. - There is no reason for this cleanup to happen unconditionally. + When fax detection occurs on an outbound PJSIP channel the + redirect operation will result in a masquerade occurring and + the underlying channel on the session changing. The code + incorrectly relocked the new channel instead of the old + channel when returning. This resulted in the new channel + being locked indefinitely. The code now always acts on the + expected channel. - Change-Id: Iecc2df98008b21509925ff16740bd5fa29527db3 + ASTERISK-28538 -2018-03-12 06:40 +0000 [ea3b8bb080] Alexander Traud + Change-Id: I2b2e60d07e74383ae7e90d752c036c4b02d6b3a3 - * install_prereq: Update FreeBSD libraries. +2019-09-14 10:05 +0000 [448b8c9bc2] Guido Falsi - 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. + * chan_dahdi: Fix build with clang/llvm - This change here fixes this by adding those (optional) dependencies for - Asterisk 15 and newer (again). + On FreeBSD using the clang/llvm compiler build fails to build due + to the switch statement argument being a non integer type expression. + Switch to an if/else if/else construct to sidestep the issue. - ASTERISK-27686 + ASTERISK-28536 #close - Change-Id: I6638a3d0dc37ad4ff5f94be15463e3dd8a2bfe74 + Change-Id: Idf4a82cc1e94580a2d017fe9e351c226f23e20c8 -2018-03-12 04:11 +0000 [9164be19d2] Alexander Traud +2019-09-03 12:20 +0000 [a95cef7140] Ben Ford - * res_srtp: Add support for libsrtp2.x on openSUSE. + * res_rtp_asterisk.c: Send RTCP as compound packets. - 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. + According to RFC3550, ALL RTCP packets must be sent in a compond packet + of at least two individual packets, including SR/RR and SDES. REMB, + FIR, and NACK were not following this format, and as a result, would + fail the packet check in ast_rtcp_interpret. This was found from writing + unit tests for RTCP. The browser would accept the way we were + constructing these RTCP packets, but when sending directly from one + Asterisk instance to another, the above mentioned problem would occur. - ASTERISK-27733 + Change-Id: Ieb140e9c22568a251a564cd953dd22cd33244605 - Change-Id: I25c5cb8fa966043d1506ebef449e5a724412b4b6 +2019-09-12 16:04 +0000 [688908fe7a] Asterisk Development Team -2018-03-08 09:14 +0000 [5b525c9781] Alexander Traud + * Update CHANGES and UPGRADE.txt for 16.6.0 +2019-09-11 15:58 +0000 [518b6bfb5c] Michael Goryainov - * BuildSystem: Add NetBSD. + * channels: Allow updating variable value - Headers, libraries, and rpath. + When modifying an already defined variable in some channel drivers they + add a new variable with the same name to the list, but that value is + never used, only the first one found. - ASTERISK-27728 - ASTERISK-11015 - Reported by: Curt Sampson + Introduce ast_variable_list_replace() and use it where appropriate. - Change-Id: I50aa5fcd095937df32a2e33307caac7e79a8b5b7 + ASTERISK-23756 #close + Patches: + setvar-multiplie.patch submitted by Michael Goryainov -2018-03-09 03:13 +0000 [c5f2332953] Alexander Traud + Change-Id: Ie1897a96c82b8945e752733612ee963686f32839 - * BuildSystem: For consistency, avoid double-checking via if clauses. +2019-08-22 07:44 +0000 [f85631cf82] Florian Floimair - 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. + * core: Add H.265/HEVC passthrough support - 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. + This change adds H.265/HEVC as a known codec and creates a cached + "h265" media format for use. - Change-Id: I4a6f48127b7af3a48168c917e888be1f70625027 + Note that RFC 7798 section 7.2 also describes additional SDP + parameters. Handling of these is not yet supported. -2018-03-09 02:44 +0000 [36c8885c66] Alexander Traud + ASTERISK-28512 - * BuildSystem: Enable dladdr on non-Linux platforms like FreeBSD. + Change-Id: I26d262cc4110b4f7e99348a3ddc53bad0d2cd1f2 - ASTERISK-27641 +2019-08-27 17:44 +0000 [b478f46d59] sungtae kim - Change-Id: I587e8ba0123c70fc10cfd8b0ac3299551f61d84b + * res_musiconhold: Added unregister realtime moh class -2018-03-08 13:53 +0000 [e6738b79b3] Richard Mudgett + This fix allows a realtime moh class to be unregistered from the command + line. This is useful when the contents of a directory referenced by a + realtime moh class have changed. + The realtime moh class is then reloaded on the next request and uses the + new directory contents. - * Complete deprecating legacy modules. + ASTERISK-17808 - The menuselect comment was updated to deprecate these modules but the - AST_MODULE_INFO block at the end of file was missed. + Change-Id: Ibc4c6834592257c4bb90601ee299682d15befbce - ASTERISK-27671 +2019-08-28 14:25 +0000 [922d3e02df] Ben Ford - Change-Id: I63070b5c4d4f08af010c6034acd4793c1bcef839 + * res_rtp: Add unit tests for RTCP stats. -2018-03-07 13:50 +0000 [7f4354c10f] Richard Mudgett + Added unit tests for RTCP video stats. These tests include NACK, REMB, + FIR/FUR/PLI, SR/RR/SDES, and packet loss statistics. The REMB and FIR + tests are currently disabled due to a bug. We expect to receive a + compound packet, but the code sends this out as a single packet, which + the browser accepts, but makes Asterisk upset. - * res_pjproject.c: Upgrade bundled PJPROJECT to 2.7.2 + While writing these tests, I noticed an issue with NACK as well. Where + it is handling a received NACK request, it was reading in only the first + 8 bits of following packets that were also lost. This has been changed + to the correct value of 16 bits. - Update patches included in bundled PJPROJECT for the new version. + Also made a minor fix to the data buffer unit test. - ASTERISK-27730 + Change-Id: I56107c7411003a247589bbb6086d25c54719901b - Change-Id: Id3c8c8ad82126846bcd9768bc3d0a18d89be8944 +2019-08-05 06:59 +0000 [d566314e38] George Joseph -2018-03-08 12:02 +0000 [9ff95e46e3] Alexander Traud + * ARI: External Media - * install_prereq: Add NetBSD. + The Channel resource has a new sub-resource "externalMedia". + This allows an application to create a channel for the sole purpose + of exchanging media with an external server. Once created, this + channel could be placed into a bridge with existing channels to + allow the external server to inject audio into the bridge or + receive audio from the bridge. + See https://wiki.asterisk.org/wiki/display/AST/External+Media+and+ARI + for more information. - ASTERISK-27729 + Change-Id: I9618899198880b4c650354581b50c0401b58bc46 - Change-Id: I7a706d51375d54cf5e36d32397bfe09a48670804 +2019-09-08 10:38 +0000 [bf527810ef] Sean Bright -2018-03-08 09:04 +0000 [75cebc3e71] Alexander Traud + * codec_resample: Ensure OUTSIDE_SPEEX is defined when necessary - * BuildSystem: Re-check for another UUID library only when previous check failed. + ASTERISK-28511 - As a side-effect, this avoids the ambiguous output: - checking for uuid_generate_random... no - which was printed always previously. + Change-Id: If0d58598ce14aad3c786a1c0127b5f7b200b737d - ASTERISK-25586 - Reported by: John Nemeth +2019-09-05 10:52 +0000 [c6b17b5212] Frederic LE FOLL - Change-Id: I6d541dfcf453932a9856c5e251aa22e0e6c233c9 + * chan_dahdi: set CHANNEL(hangupsource) when a PRI channel hangs up -2018-03-08 05:28 +0000 [fc64a0e2b3] Alexander Traud + When the remote ISDN party ends an ISDN call on a PRI link + (DISCONNECT), CHANNEL(hangupsource) information is not available. - * BuildSystem: Instead of $PJPROJECT_LIBS with s, use $PJPROJECT_LIB everywhere. + chan_dahdi already contains an ast_set_hangupsource() in + __dahdi_exception() function but it seems that ISDN message processing + does not use this part of code. - 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. + Two other channel modules associate ast_queue_hangup() and + ast_set_hangupsource() functions calls: + - chan_pjsip in chan_pjsip_session_end() function, + - chan_sip in sip_queue_hangup_cause() function. + chan_iax2 separates them, in iax2_queue_hangup()/iax2_destroy() and + set_hangup_source_and_cause(). - Change-Id: I7359860a5d730cdc784c2c48e501a082196434d3 + Thus, I propose to add ast_set_hangupsource() beside + ast_queue_hangup() in sig_pri_queue_hangup(), like chan_pjsip and + chan_sip already do. -2018-03-06 06:28 +0000 [16f6e94033] Alexander Traud + ASTERISK-28525 - * BuildSystem: Enable PortAudio in NetBSD. + Change-Id: I0f588a4bcf15ccd0648fd69830d1b801c3f21b7c - 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. +2019-09-05 11:09 +0000 [c8cf3ad389] Frederic LE FOLL - ASTERISK-27721 + * ChanIsAvail() generates a CDR when unanswered=yes in cdr.conf. - Change-Id: I4175500126909ad1b181fff8e11bb4a3a6ae4fa9 + ChanIsAvail() creates a temporary channel with ast_request() to test + resource availability. It should not generate a CDR when it hangs up + this temporary channel. -2018-03-07 14:36 +0000 [c8a521b6c8] Corey Farrell + This patch disables CDR generation for the temporary channel with + ast_cdr_set_property(). - * Replace direct checks of option_debug with DEBUG_ATLEAST macro. + ASTERISK-28527 - 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: I7b0555c6909c7d322e452dde97c9ea5b111552d1 - Change-Id: Ic342d4799a945dbc40ac085ac142681094a4ebf0 +2019-08-26 07:53 +0000 [2691ee7e10] Joshua Colp -2018-03-07 13:13 +0000 [1fe913f7bd] Richard Mudgett + * AST-2019-005 - translate: Don't assume all frames will have a src. - * BuildSystem regression: Fix errors reported by clean targets. + This change removes the assumption that a frame will always have + a src set on it. This assumption is incorrect. - Doing a 'make clean', 'make distclean', or 'make dist-clean' gets errors - about an invalid shell option: "/bin/sh: 0: Illegal option -". + Given a scenario where an RTP packet is received with no payload + the resulting audio frame will have no samples. If this frame goes + through a signed linear translation path an interpolated frame can + be created (if generic packet loss concealment is enabled) that has + minimal data on it, including no src. If this frame is given to a + translation path a crash will occur due to the lack of src. - 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-28499 - ASTERISK-27715 + Change-Id: I024d10dd98207eb8a6b35b59880bcdf1090538f8 - Change-Id: I33d40acdb03862bc89aeb6fb1ff497894a8ea7f5 +2019-08-20 15:05 +0000 [965df3c228] Alexei Gradinari (license 5691) -2018-03-06 13:31 +0000 [88cef40f6e] Ross Beer + * AST-2019-004 - res_pjsip_t38.c: Add NULL checks before using session media - * res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints + After receiving a 200 OK with a declined stream in response to a T.38 + initiated re-invite Asterisk would crash when attempting to dereference + a NULL session media object. - ASTERISK-27554 + This patch checks to make sure the session media object is not NULL before + attempting to use it. - Change-Id: If61c7faab7d2fa1031c056ed6268fe928e2391cf + ASTERISK-28495 + patches: + ast-2019-004.patch submitted by Alexei Gradinari (license 5691) -2018-03-06 08:14 +0000 [961dd9fe52] Sungtae Kim + Change-Id: I168f45f4da29cfe739acf87e597baa2aae7aa572 - * voicemail: Fixed wrong voicemail message count +2019-09-04 16:19 +0000 [a321225fa4] Chris-Savinovich - Fixed wrong voicemail mailbox reference for Action: VoicemailUsersList. + * test_utils.c: Skip test adsi_loaded_test if module not loaded. - ASTERISK-27703 + Module res_adsi.so is deprecated, therefore it does not load by default. + Module not loaded causes it to yield a FAIL when tested by tests/test_utils.c. + This fix checks if the corresponding module is loaded at the start of the test, + and if not, it passes the test and exits with a message. - Change-Id: Ie6578ad80bba2bfaf34b84f0be978f59045ce6cd + This fix is applied to all versions where the module is marked deprecated. -2018-03-07 09:32 +0000 [58f44f225a] Alexander Traud + Change-Id: I52be64c8f6af222e15148a856d1f10cb113e1e94 - * utils: In Solaris, avoid a warning about an unused variable. +2019-08-27 06:10 +0000 [92261d60c8] Igor Goncharovsky - 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. + * chan_unistim: Fix clang warning: variable sized type not at end of a struct - Change-Id: Ic3ea23ccf84ac4bc2d501b514985b989030abab5 + On reading information about initial client packet unistim use dirty + implementation of destination ip address retrieval. This fix uses + CMSG_*(..) to get ip address and make clang compile without warning. -2018-03-07 01:45 +0000 [add03e207c] Corey Farrell + ASTERISK-25592 #close + Reported-by: Alexander Traud - * app_osplookup: Move header defines into the app. + Change-Id: Ic1fd34c2c2bcc951da65bf62e3f7a8adff8351b1 - 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. +2019-08-23 16:24 +0000 [7db5f5df6a] Kevin Harwell - Change-Id: I0a6c4debd7c9543b608520b1765abfa4fab7b2fd + * res_pjsip_mwi: add better handling of solicited vs unsolicited subscriptions -2018-02-14 07:33 +0000 [75a35ee5e8] Jean Aunis + res_pjsip_mwi allows both solicited and unsolicited MWI subscription types. + While both can be set in the configuration for a given endpoint/aor, only + one is allowed. Precedence is given to unsolicited. Meaning if an endpoint/aor + is configured to allow both types then the solicited subscription is rejected + when it comes in. However, there is a configuration option to override that + behavior: - * chan_sip: Fix improper RTP framing on outgoing calls + mwi_subscribe_replaces_unsolicited - 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. + When set to "yes" then when a solicited subscription comes in instead of + rejecting it Asterisk is suppose to replace the unsolicited one if it exists. + Prior to this patch there was a bug in Asterisk that allowed the solicted one + to be added, but did not remove the unsolicited. As a matter of fact a new + unsolicited subscription got added everytime a SIP register was received. + Over time this eventually could "flood" a phone with SIP notifies. - This patch systematically stores the framing information in the - ast_rtp_codecs structure, taking it from the response or from the - configuration as appropriate. + This patch fixes that behavior to now make it work as expected. If configured + to do so a solicited subscription now properly replaces the unsolicited one. + As well when an unsubscribe is received the unsolicited subscription is + restored. Logic was also put in to handle reloads, and any configuration changes + that might result from that. For instance, if a solicited subscription had + previously replaced an unsolicited one, but after reload it was configured to + not allow that then the solicited one needs to be shutdown, and the unsolicited + one added. - ASTERISK-27674 + ASTERISK-28488 - Change-Id: I828a6a98d27a45a8afd07236a2bd0aa3cbd3fb2c + Change-Id: Iec2ec12d9431097e97ed5f37119963aee41af7b1 -2018-02-20 11:48 +0000 [3fb26df4ac] lvl +2019-08-27 00:49 +0000 [78d00c277c] Igor Goncharovsky - * res_pjsip_session: properly handle SDP from a forked call with early media + * chan_unistim: Fix code, causing all incoming DTMF sent back to asterisk - 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. + Current implementation of ast_channel_tech send_digit_begin hook uses + same function for tone playback as key press handler. This cause every + incoming dtmf send back to asterisk. In case of two unistim phones + connected to each other, it'll cause indefinite DTMF loop. Fix add + separate function for dtmf tone phone play. - ASTERISK-27441 + Change-Id: I5795db468df552f0c89c7576b6b3858b26c4eab4 - Change-Id: If0d5150ffe6f38d8a854831fef37942258d4629c +2019-08-16 06:01 +0000 [821b7561f8] Igor Goncharovsky -2018-03-05 08:01 +0000 [ef79e583ec] Alexander Traud + * chan_unistim: Fix RTP port byte order for big-endian arch - * BuildSystem: Enable Lua in NetBSD. + This patch fixes one-way oudio that users expirienced on + big-endian architechtires. RTP port number bytes was stored + in improper order and phone sent RTP to wrong RTP port. - luaL_openlib got removed with Lua 5.2. - luaL_newstate is available in all versions. + Reported-by: Andrey Ionov + Change-Id: I9a9ca7f26e31a67bbbceff12923baa10dfb8a3be - ASTERISK-27718 +2019-08-23 15:14 +0000 [cdbb9800e3] Sean Bright - Change-Id: I9c8c8880315ee36ab740d7c40153306c0bfd6f71 + * codec_resample: Upgrade speex_resample to fix up-sampling bug -2018-03-06 07:33 +0000 [162fc4fba6] Alexander Traud + ASTERISK-28511 #close - * BuildSystem: Depend not implicitly but explicitly on external libraries. + Change-Id: Idd07bf341e89ac999c7f5701d9b72b8a9cb11e82 - ASTERISK-27722 +2019-08-22 13:19 +0000 [aaaa1695ca] Alexei Gradinari - Change-Id: Ie7b8c30d86cb00a54d6ac4e09e6f28f42d2bd52c + * Fix misname 'res_external_mwi' to 'res_mwi_external' in comments. -2018-03-05 08:15 +0000 [99b6a14737] Alexander Traud + Change-Id: Ic784be8500e5cb75dcb34bae9f03cfd93b6b34fb - * res_http_post: Enable GMime in NetBSD. +2019-08-21 13:29 +0000 [c00a010fe8] George Joseph - ASTERISK-27719 + * chan_rtp: Accept hostname as well as ip address as destination - Change-Id: I230c5f9f316b2e9465c093c13580f72ebbaf67a7 + The UnicastRTP channel driver provided by chan_rtp now accepts + ":" as an alternative to ":" + in the destination. The first AAAA (preferred) or A record resolved + will be used as the destination. The lookup is synchronous so beware + of possible dialplan delays if you specify a hostname. -2018-03-05 04:16 +0000 [7e9734a858] Alexander Traud + Change-Id: Ie6f95b983a8792bf0dacc64c7953a41032dba677 - * BuildSystem: Enable autotools in NetBSD. +2019-08-21 12:03 +0000 [6407ccd2d9] George Joseph - ASTERISK-27716 + * dns_core: Create new API ast_dns_resolve_ipv6_and_ipv4 - Change-Id: I52525e35e1620341272219911d054a1e3d3ec01e + The new function takes in a pointer to an ast_sockaddr structure, + a hostname and an optional port and then dispatches parallel + "AAAA" and "A" record queries. If an "AAAA" record is returned, + it's parsed into the ast_sockaddr structure along with the port + if it was supplied. If no "AAAA" record was returned, the + first "A" record returned (if any) is parsed instead. -2018-03-05 03:42 +0000 [b97905aaf2] Alexander Traud + This is a synchronous call. If you need asynchronous lookups, + use ast_dns_query_set_resolve_async and roll your own. - * BuildSystem: AC_PATH_PROG sets to colon character when not found. + Change-Id: I194b0b0e73da94b35cc35263a868ffac3a8d0a95 - ASTERISK-27715 - Reported by: Corey Farrell +2019-08-21 10:58 +0000 [c8cc530726] Dan Cropp - Change-Id: I0d6d9572d1352dc7ad30c9917173f1e980d8c938 + * pjproject: Configurable setting for cnonce to include hyphens or not -2018-03-03 09:06 +0000 [aabbb49e33] Alexander Traud + NEC SIP Station interface with authenticated registration only supports cnonce + up to 32 characters. In Linux, PJSIP would generate 36 character cnonce + which included hyphens. Teluu developed this patch adding a compile time + setting to default to not include the hyphens. They felt it best to still + generate the UUID and strip the hyphens. + They have indicated it will be part of PJSIP 2.10. - * chan_unistim: NetBSD has an incompatible struct in_pktinfo. + ASTERISK-28509 + Reported-by: Dan Cropp - ASTERISK-27714 - Reported by: John Nemeth + Change-Id: Ibdfcf845d4f8c0a14df09fd983b11f2d72c5f470 - Change-Id: I1b84a89315a5f61222123d21bf35c59224da8990 +2019-07-30 12:08 +0000 [fb984eda40] Stas Kobzar -2018-03-03 08:30 +0000 [5d19762b5f] Alexander Traud + * res_pjsip: Channel variable SIPFROMDOMAIN - * BuildSystem: Cast any intptr_t explicitly to its proposed type. + In chan_sip, there was variable SIPFROMDOMAIN that allows to set + From header URI domain per channel. This patch introduces res_pjsip + variable SIPFROMDOMAIN for backward compatibility with chan_sip. - ASTERISK-27713 + ASTERISK-28489 - Change-Id: I90c769e3c7f8c26de8a3af11335862cec15a1b22 + Change-Id: I715133e43172ce2a1e82093538dc39f9e99e5f2e -2018-03-03 06:56 +0000 [9749524520] Alexander Traud +2019-08-20 13:04 +0000 [f82d0b74fd] George Joseph - * BuildSystem: Detect whether uselocale(.) is available. + * res_ari.c: Prefer exact handler match over wildcard - ASTERISK-27712 - Reported by: Joerg Sonnenberger, D'Arcy Cain + Given the following request path and 2 handler paths... + Request: /channels/externalMedia + Handler: /channels/{channelId} "wildcard" + Handler: /channels/externalmedia "non-wildcard" - Change-Id: Idf1c9d43617a3e13028b95b313415903d80ef807 + ...if /channels/externalMedia was registered as a handler after + /channels/{channelId} as shown above, the request would automatically + match the wildcard handler and attempt to parse "externalMedia" into + the channelId variable which isn't what was intended. It'd work + if the non-wildard entry was defined in rest-api/api-docs/channels.json + before the wildcard entry but that makes the json files + order-dependent which isn't a good thing. -2018-03-03 03:53 +0000 [f7b845ff41] Alexander Traud + To combat this issue, the search loop saves any wildcard match but + continues looking for exact matches at the same level. If it finds + one, it's used. If it hasn't found an exact match at the end of + the current level, the wildcard is used. Regardless, after + searching the current level, the wildcard is cleared so it won't + accidentally match for a different object or a higher level. - * BuildSystem: Avoid re-defining of pthread_* on NetBSD. + BTW, it's currently not possible for more than 1 wildcard entry + to be defined for a level. For instance, there couldn't be: + Handler: /channels/{channelId} + Handler: /channels/{channelName} + We wouldn't know which one to match. - ASTERISK-27711 + Change-Id: I574aa3cbe4249c92c30f74b9b40e750e9002f925 - Change-Id: Idc9194035b2958b99f6b01eb5b438d45a074565b +2019-08-09 15:53 +0000 [51fd43206b] Sean Bright -2018-03-02 07:05 +0000 [313a9fe255] Alexander Traud + * audiohook.c: Substitute silence for unavailable audio frames - * BuildSystem: Install init scripts on openSUSE Tumbleweed. + There are 4 scenarios to consider when capturing audio from a channel + with an audiohook: - ASTERISK-27710 + 1. There is no rx and no tx audio, so return nothing. + 2. There is rx but no tx audio, so return rx. + 3. There is tx but no rx audio, so return tx. + 4. There is rx and tx audio, so mix them and return. - Change-Id: I4c777e41b31d4415bbe21cb435ad47b43ebb5467 + The file passed as the primary argument to MixMonitor will be written to + in scenarios 2, 3, and 4. However, if you pass the r() and t() options + to MixMonitor, a frame will only be written to the r() file if there was + rx audio and a frame will only be written to the t() file if there was + tx audio. -2018-03-02 05:12 +0000 [a9c02e484a] Alexander Traud + If you subsequently take the r() and t() files and try to mix them, the + sides of the conversation will 'drift' and be non-representative of the + user experience. - * BuildSystem: Avoid == for comparison in ./configure. + This patch adds a new 'S' option to MixMonitor that injects a frame of + silence on either the r() side or the t() side of the channel so that + when later mixed, there is no such drift. - ASTERISK-27709 - Reported by: John Nemeth + Change-Id: Ibf5ed73a811087727bd561a89a59f4447b4ee20e - Change-Id: I11b1ae8fd404c04066f1458f5d71f9536359d58d +2019-08-14 14:52 +0000 [ff180a5bfc] Alexei Gradinari -2018-02-19 19:55 +0000 [c711e4076a] Richard Mudgett + * app_voicemail/IMAP: check mailstream not NULL in leave_voicemail - * core: Remove ABI effects of MALLOC_DEBUG. + The function leave_voicemail checks if expungeonhangup is set, + but does not check if IMAP stream is closed, + so it could call imap function with NULL stream. + This leads to segfault. - 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. + ASTERISK-28505 #close - Change-Id: Ic07ad80b2c2df894db984cf27b16a69383ce0e10 + Change-Id: Ib66c57c1f1ba97774e447b36349198e2626a8d7c -2018-02-27 15:40 +0000 [1a36a452bd] Richard Mudgett +2019-08-09 05:51 +0000 [8399211eaf] Sean Bright - * pjproject: Add cache_pools debugging option. + * menuselect: Fix curses build on Gentoo Linux - 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. + Because keypad() is exported by libtinfo, it needs to be explicitly + added to the linker options. - * 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. + ASTERISK-28487 #close - To disable the pool caching simply disable the cache_pools option in - pjproject.conf and restart Asterisk. + Change-Id: I6c2ad5b95f422c263d078b5c0e84c111807dffc6 - Sample pjproject.conf setting: - [startup] - cache_pools=no +2019-08-08 12:10 +0000 [92066b8746] George Joseph - * Made current users of the caching pool factory initialization and - destruction calls call common routines to create and destroy cached pools. + * CI: Escape backslashes in printenv/sort/tr - ASTERISK-27704 + Change-Id: I52be64c8f6af2bbe15148a856d1f10cb113e1e94 + (cherry picked from commit c6558e09af3ac15b31377de735cc96d8df0275a7) - Change-Id: I64d5befbaeed2532f93aa027a51eb52347d2b828 +2019-08-07 17:54 +0000 [d4766a82a2] Kevin Harwell -2018-01-31 11:48 +0000 [eacee03f0e] Corey Farrell + * srtp: Fix possible race condition, and add NULL checks - * gitreview: Reorder and add padding. + Somehow it's possible for the srtp session object to be NULL even though the + Asterisk srtp object itself is valid. When this happened it would cause a + crash down in the srtp code when attempting to protect or unprotect data. - Change-Id: I459dc320a8c9452a01eed6f403d786741587c890 + After looking at the code there is at least one spot that makes this situation + possible. If Asterisk fails to unprotect the data, and after several retries + it still can't then the srtp->session gets freed, and set to NULL while still + leaving the Asterisk srtp object around. However, according to the original + issue reporter this does not appear to be their situation since they found + no errors logged stating the above happened (which Asterisk does for that + situation). -2018-02-23 21:24 +0000 [7b01236028] Michael Cargile + An issue was found however, where a possible race condition could occur between + the pjsip incoming negotiation, and the receiving of RTP packets. Both places + could attempt to create/setup srtp for the same rtp instance at the same time. + This potentially could be the cause of the problem as well. - * apps/app_amd.c: Fixed total time and silence calculations + Given the above this patch adds locking around srtp setup for a given rtp, or + rtcp instance. NULL checks for the session have also been added within the + protect and unprotect functions as a precaution. These checks should at least + stop Asterisk from crashing if it gets in this situation again. - 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 + This patch also fixes one other issue noticed during investigation. When doing + a replace the old object was freed before creating the replacement. If the new + replacement object failed to create then the rtp/rtcp instance would now point + to freed srtp data which could potentially cause a crash as well when the next + attempt to reference it was made. This is now fixed so the old srtp object is + kept upon replacement failure. - * Additional debug messages were added - * AST_FRAME_NULL are now ignored + Lastly, more logging has been added to help diagnose future issues. - ASTERISK-27610 + ASTERISK-28472 - Change-Id: I18aca01af98f87c1e168e6ae0d85c136d1df5ea9 + Change-Id: I240e11cbb1e9ea8083d59d50db069891228fe5cc -2018-02-23 14:58 +0000 [7e2128c8e6] George Joseph +2019-08-08 07:12 +0000 [db9684ad1e] George Joseph - * ast_coredumper: Minor fixes + * CI: Add "throttle" label and "skip_gate" capability - * Fix --tarball-config so the option doesn't cause an error. + To make throttling by label fully active, the "throttle" option + has to be specified with a specific label. - * Allow for missing /etc/os-release. + You can now specify "skip_gate" in the Gerrit comments when you + do a +2 code review to tell Jenkins not to actually run the + gate. You'd do this if you plan to manually merge the change. - * Add a sleep between tarballing the coredump and removing the - output directory to allow the filesystem to settle. + Also updated the "printenv" debug output to better sort multi-line + comments. - Change-Id: I73e03b13087978bcc7f6bc9f45753990f82d9d77 + Change-Id: I4c0b1085acec4805f2ca207eebac50aad81f27e2 -2018-02-22 14:27 +0000 [0be1c388e4] Ben Ford +2019-08-05 07:23 +0000 [6350f4e278] Joshua Colp - * Add extended properties to rtp_engine for RTP retransmission support. + * cdr / cel: Use event time at event creation instead of processing. - 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. + When updating times on CDR or CEL records using the time at which + it is done can result in times being incorrect if the system is + heavily loaded and stasis message processing is delayed. - For more information, refer to the wiki page: - https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements + This change instead makes it so CDR and CEL use the time at which + the stasis messages that drive the systems are created. This allows + them to be backed up while still producing correct records. - Change-Id: Ic598acd042a045f9d10e5bdccb66f4efc9e587cc + ASTERISK-28498 -2018-02-23 10:09 +0000 [a7927471ad] Corey Farrell + Change-Id: I6829227e67aefa318efe5e183a94d4a1b4e8500a - * core: Fix handling of maximum length lines in config files. +2019-08-06 10:40 +0000 [2641081caa] George Joseph - 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. + * CI: Make node labels job-specific - 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. + Originally, the eligible nodes for a job were labelled only by + "swdev-docker". So basically any node could run any job. We had + found that allowing a node to run more than 1 gate at a time was + problematic so we limited the nodes to processing 1 job at a time. + With the creation of the Asterisk 17 branches however, we now have + so many active branches that getting checks and gates through in + a timely manner is problematic when a node can run only 1 job + at a time. - ASTERISK-26688 #close + Now the nodes are also labelled by the job type they can run. + For instance: "asterisk-check", "asterisk-gate", etc. With the + "Throttle Concurrent Builds" plugin, we can now allow a node to + run more than 1 job BUT throttle by job type. For instance: + Allow 2 jobs but only 1 asterisk-gate at a time. + Now a node can run 2 checks or 1 check and 1 gate or 1 gate but + not 2 gates at a time. - Change-Id: I80864a0d40d2e2d8cd79d72af52a8f0a3a99c015 + Change-Id: I2032bf6afbcec5c341d9b852214c0c812d3d6db5 -2018-02-22 13:53 +0000 [bb9c1938a0] Richard Mudgett +2019-08-01 16:22 +0000 [6bb14150c4] Kevin Harwell - * res_pjsip_refer.c: Fix attended transfer race condition crash. + * various modules: json integer overflow - 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. + There were still a few places in the code that could overflow when "packing" + a json object with a value outside the base type integer's range. For instance: - * 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. + unsigned int value = INT_MAX + 1 + ast_json_pack("{s: i}", value); - ASTERISK-27568 + would result in a negative number being "packed". In those situations this patch + alters those values to a ast_json_int_t, which widens the value up to a long or + long long. - Change-Id: Iacda724e7cb24d7520e49b2fd7e504aa398d7238 + ASTERISK-28480 -2018-02-17 03:28 +0000 [c4c5d00528] Alexander Traud + Change-Id: Ied530780d83e6f1772adba0e28d8938ef30c49a1 - * install_prereq: Update FreeBSD libraries. +2019-07-29 10:15 +0000 [9718376902] Sean Bright - deleted - autoconf gcc libsamplerate sqlite + * res_musiconhold: Use a vector instead of custom array allocation - changed - binutils to libbfd - freetds-devel to freetds - gmime2 to gmime26 - mysql55-client to mysql57-client + Change-Id: Ic476a56608b1820ca93dcf68d10cd76fc0b94141 - 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 +2019-08-01 05:07 +0000 [c2b135729c] Joshua Colp - ASTERISK-27686 + * res_pjsip: Fix multiple of the same contact in "pjsip show contacts". - Change-Id: Ibe88c9b26e59c30d26cdb313a3ef01c9f37ac80d + The code for gathering contacts could result in the same contact + being retrieved and added to the list multiple times. The container + which stores the contacts to display will now only allow a contact + to be added to it once instead of multiple times. -2018-02-22 10:54 +0000 [50d9af101e] Sean Bright + ASTERISK-28228 - * func_audiohookinherit: Remove deprecated module. + Change-Id: I805185cfcec03340f57d2b9e6cc43c49401812df - Change-Id: Id52f719078a65c4b2eee7ab99d761eba6b6aed94 +2019-07-17 07:35 +0000 [83390327b2] Torrey Searle -2018-02-21 12:52 +0000 [f083edc43c] Richard Mudgett + * main/udptl.c: correctly handle udptl sequence wrap around - * manager.c: Fix lseek() parameter order. + incorrect handling of UDPTL squence number wrap arounds causes + loss of packets every time the wrap around occurs - ASTERISK-27659 + ASTERISK-28483 #close - Change-Id: I04a2705d2cb7df250769967bc59e2b397a49b797 + Change-Id: I33caeb2bf13c574a1ebb81714b58907091d64234 -2018-02-20 13:11 +0000 [39f733406d] Richard Mudgett +2019-07-24 15:12 +0000 [0ebfc4a19d] Sean Bright - * bridge_simple.c: Fix stream topology handling. + * manager: Send fewer packets - The handling of stream topologies was not protected by channel locks in - simple_bridge_request_stream_topology_change(). + The functions that build manager message headers do so in a way that + results in a single messages being split across multiple packets. While + this doesn't matter to the remote end, it makes network captures noisier + and harder to follow, and also means additional system calls. - * Fixed topology handling to be protected by channel locks where needed in - simple_bridge_request_stream_topology_change(). + With this patch, we build up more of the message content into the TLS + buffer before flushing to the network. This change is completely + internal to the manager code and does not affect any of the existing + API's consumers. - ASTERISK-27692 + Change-Id: I50128b0769060ca5272dbbb5e60242d131eaddf9 - Change-Id: Ica5d78a6c7ecf4f0b95fb16de28d3889b32c4776 +2019-07-29 10:04 +0000 [d6af1acb8c] Sean Bright -2018-02-05 16:46 +0000 [6436137959] Sean Bright + * res_musiconhold: Use ast_pipe_nonblock() wrapper - * AST-2018-006: Properly handle WebSocket frames with 0 length payload. + Change-Id: Ib0a4b41e5ececbe633079e2d8c2b66c031d2d1f2 - 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. +2019-07-29 08:31 +0000 [05cf9c9912] George Joseph - ASTERISK-27658 #close + * loader.c: Fix possible SEGV when a module fails to register - Change-Id: I9d59f83bc563f711df1a6197c57de473f6b0663a + When a module fails to register itself (usually a coding error + in the module), dlerror() can return NULL. We weren't checking + for that in load_dlopen() before trying to strdup the error message + so a SEGV was thrown. dlerror() is now surrounded with an S_OR + so we don't SEGV. -2018-01-31 13:37 +0000 [880c69f00f] Kevin Harwell + Change-Id: Ie0fb9316f08a321434f3f85aecf3c7d2ede8b956 - * AST-2018-003: Crash with an invalid SDP fmtp attribute +2019-07-24 15:15 +0000 [06780d2bc4] George Joseph - 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. + * CI: Don't enable non-core modules in Certified branches - When retrieving the format this patch now makes sure the fmtp attribute is - available. If not available it now returns an error status. + We don't support non-core modules for Certified releases but we + were enabling them for CI builds which was causing lots of test + failures. Now we don't. - ASTERISK-27583 #close + Change-Id: I0b3254c08a2479f3d39151690350cce5ce5ad766 - Change-Id: I5cebe000ce2d846cae3af33b6d72c416e51caf2f +2019-07-23 12:58 +0000 [28654308ef] Sean Bright -2018-01-31 13:33 +0000 [d3a398cf90] Kevin Harwell + * res_config_sqlite3: Only join threads that we started - * AST-2018-002: Crash with an invalid SDP media format description + ASTERISK-28477 #close + Reported by: Dennis - 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. + ASTERISK-28478 #close + Reported by: Dennis - 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. + Change-Id: I77347ad46a86dc5b35ed68270cee56acefb4f475 - ASTERISK-27582 #close +2019-05-12 13:29 +0000 [3814faf848] Leonid Fainshtein - Change-Id: I883b3a4ef85b6972397f7b56bf46c5779c55fdd6 + * openr2(6/6): Set hangup cause -2018-02-06 12:07 +0000 [758409de56] George Joseph + Change-Id: I94dc38920e6e77cc73062648f62fdd613d0d1452 + Signed-off-by: Oron Peled - * AST-2018-005: res_pjsip_transport_management: Move to core +2019-04-22 14:14 +0000 [06515707df] Tzafrir Cohen - 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. + * openr2(5/6): added cli command -- mfcr2 destroy link - ASTERISK-27618 - Reported By: Sandro Gauci + Change-Id: I452d6a853bcd8c6e194455b19e5e017713e9c0fe + Signed-off-by: Oron Peled - Change-Id: I21a2d33d9dda001452ea040d350d7a075f9acf0d +2019-04-22 10:27 +0000 [93a093f6c4] Tzafrir Cohen -2018-02-06 11:28 +0000 [de871515ba] George Joseph + * openr2(4/6): added new cli command -- mfcr2 show links - * AST-2018-005: Fix tdata leaks when calling pjsip_endpt_send_response(2) + * This command show the MFC/R2 links - 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. + Change-Id: I213822e1b7ef9c05bd89a2ba62df8e0856ce9f84 + Signed-off-by: Oron Peled - 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. +2019-04-22 07:27 +0000 [a45cfefb77] Tzafrir Cohen - res_pjsip: - ast_sip_send_response wasn't decrementing the ref count on error. + * openr2(3/6): Convert r2links to standard Asterisk AST_LIST* - ASTERISK-27618 - Reported By: Sandro Gauci + Change-Id: Ibcb2401515a58782a1488c0b9efbed201c3f3a17 + Signed-off-by: Oron Peled - Change-Id: Iab33a6c7b6fba96148ed465b690ba8534ac961bf +2019-04-22 07:33 +0000 [ec6e88592a] Tzafrir Cohen -2018-02-06 11:21 +0000 [c53d8dcb68] George Joseph + * openr2(2/6): Stop polling channels when DAHDI returns -ENODEV (e.g: plug-out) - * AST-2018-005: Add a check for NULL tdata in ast_sip_failover_request + Otherwise, OpenR2 threads go crazy and consume almost all CPU resources - 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. + Change-Id: I10a41f617613fe7399c5bdced5c64a2751173f28 + Signed-off-by: Oron Peled - ASTERISK-27618 - Reported By: Sandro Gauci +2019-04-22 10:02 +0000 [7b6df814a6] Tzafrir Cohen - Change-Id: Ic2b63f6d4ae617c4c19dcdec2a7a6156b54fd15b + * openr2(1/6): bugfix in configuration saving -2018-02-07 08:09 +0000 [d424850d58] Joshua Colp + Details: + - The memcpy() call copied part of "dahdi_conf" and not "dahdi_conf.mfcr2" + - As a result, the memcmp() in dahdi_r2_get_link() always fails + - This cause dahdi_r2_get_link() to create new link for every channel + (instead of a new link for every ~30 channels) + - With the fix, far less links are generated -- so we use far less threads - * AST-2018-004: Restrict the number of Accept headers in a SUBSCRIBE. + Change-Id: I7259dd6272f5e46e8a6c7f5bf3e8c2ec01b8c132 + Signed-off-by: Oron Peled - 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. +2019-07-19 11:20 +0000 [356f4256cc] George Joseph - This change enforces the limit so only 32 Accept headers are - processed. + * CI: Add cleanWs to cleanup steps in jenkinsfiles - ASTERISK-27640 - Reported By: Sandro Gauci + We're at the point where there are enough Jenkins jobs for + Asterisk branches than even cleaned checkouts of Asterisk + will add up to more disk space than is available on the + in-memory workspace mount. Since we archive all relevent + artifacts anyway, there's no need to keep the workspace + around after the job finishes, whether it succeeds or fails. - Change-Id: I99a814b10b554b13a6021ccf41111e5bc95e7301 + Change-Id: I1cd3b73ebb045a987df0f62526d152a510210c39 -2018-01-13 08:04 +0000 [e70c4ec84d] Joshua Colp +2019-04-02 14:42 +0000 [f4896703b9] Dan Cropp - * AST-2018-001: rtp / channel: Don't allow an unnegotiated format to be passed up. + * chan_pjsip: Transmit REFER waits for the REFER result setting TRANSFERSTATUS - 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. + Previously, when a Transfer (REFER) was performed, chan_pjsip would set + the TRANSFERSTATUS to SUCCESS when the REFER was queued up. This did not + reflect a successful/unsuccessful transfer the way chan_sip did. + Added a callback module to process the refer subscription information. - 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. + Now depends on res_pjsip_pubsub so call transfer progress can be monitored + and reported - ASTERISK-27488 + ASTERISK-26968 #close + Reported-by: Dan Cropp - Change-Id: I022556f524ad8379ee73f14037040af17ea3316a + Change-Id: If6c27c757c66f71e8b75e3fe49da53ebe62395dc -2018-02-20 13:11 +0000 [e2f98fbd63] Richard Mudgett +2019-07-04 19:46 +0000 [9d69469203] Rodrigo Ramírez Norambuena - * channel.c: Fix typo. + * README.md: Update year - Change-Id: I4eeedf89085697e81c354eb92d546686c67b0b5b + Change-Id: I746fb94d112c7d797e206bca0fd1e13fcd26bae3 -2018-02-20 10:33 +0000 [259c80675e] Joshua Colp +2019-07-19 08:38 +0000 [c86c0973ff] George Joseph - * chan_sip: Emit a second ringing event to ensure channel is found. + * CI: Add install-headers to the install make targets - 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. + The testsuite actually needs the headers installed to run + it's self_test. - 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. + Change-Id: Ice41d331131b876ad4a9c056085fe6aac34b32b2 - ASTERISK-24488 +2019-07-18 06:07 +0000 [cb831a18d1] Asterisk Development Team - Change-Id: I547a458fc59721c918cb48be060cbfc3c88bcf9c + * Update CHANGES and UPGRADE.txt for 16.5.0 +2019-07-17 08:06 +0000 [64d25d36fb] Walter Doekes -2018-02-20 04:31 +0000 [0ad13949c1] Corey Farrell + * sched: Don't allow ast_sched_del to deadlock ast_sched_runq from same thread - * doc/lang/language-criteria.txt: Link to wiki. + When fixing ASTERISK~24212, a change was done so a scheduled callback could not + be removed while it was running. The caller of ast_sched_del would have to wait. - This document is out of date and is superseded by content on the - Asterisk wiki. + However, when the caller of ast_sched_del is the callback itself (however wrong + this might be), this new check would cause a deadlock: it would wait forever + for itself. - ASTERISK-24386 #close + This changeset introduces an additional check: if ast_sched_del is called + by the callback itself, it is immediately rejected (along with an ERROR log and + a backtrace). Additionally, the AST_SCHED_DEL_UNREF macro is adjusted so the + after-ast_sched_del-refcall function is only run if ast_sched_del returned + success. - Change-Id: Idbf95b27b096c205251e1bbb560c79224ba81822 + This should fix the following spurious race condition found in chan_sip: + - thread 1: schedule sip_poke_peer_now (using AST_SCHED_REPLACE) + - thread 2: run sip_poke_peer_now + - thread 2: blank out sched-ID (too soon!) + - thread 1: set sched-ID (too late!) + - thread 2: try to delete the currently running sched-ID -2018-02-19 04:21 +0000 [4b555d7147] Thomas Guebels + After this fix, an ERROR would be logged, but no deadlocks (in do_monitor) nor + excess calls to sip_unref_peer(peer) (causing double frees of rtp_instances and + other madness) should occur. - * res_rtp_asterisk: Fix ICE candidate nomination + (Thanks Richard Mudgett for reviewing/improving this "scary" change.) - 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. + Note that this change does not fix the observed race condition: unlocked + access to peer->pokeexpire (and potentially other scheduled items in chan_sip), + causing AST_SCHED_DEL_UNREF to look at a changing id. But it will make the + deadlock go away. And in the observed case, it will not have adverse affects + (like memory leaks) because the scheduled item is removed through a different + path. - 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-28282 - ASTERISK-27646 + Change-Id: Ic26777fa0732725e6ca7010df17af77a012aa856 - Change-Id: I5dbc69ad63cacbb067922850fbb113d479bd729c +2019-07-16 08:15 +0000 [f62d9013c1] George Joseph -2018-02-18 10:27 +0000 [8b18247af6] Sean Bright + * Build: Add separate header install/uninstall targets - * res_http_websocket: Don't leak memory on read failure + Two new Makefile targets have been added... "install-headers" and + "uninstall-headers" to separately control header installation. + The existing behavior has not changed so "make install" and + "make uninstall" will continue to also install/uninstall the headers. + The new targets were added for forward compatibility with Asterisk 17 + in which the headers are no longer installed/uninstalled with the + "install" and "uninstall" targets. - Change-Id: Ic449ea832bc81a1671c0e910c5fbe8c683e3da89 + Also corrects an issue where /usr/include/asterisk.h was never + being removed at all. -2018-02-19 03:57 +0000 [97c21e9cb3] Corey Farrell + Change-Id: Ia7399f3a0203a4825fc4a9f43b9034dae9a2b643 - * core: Rename sounds_index.c to sounds.c. +2019-07-09 14:42 +0000 [88ea395c33] Kevin Harwell - 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. + * manager: Log AMI actions - Change-Id: Ifb8e489575b27eb33d8c0b6a531f266670557f6e + When manager debugging is turned on, this patch makes it so incoming AMI actions + are now also logged. -2018-02-19 02:49 +0000 [e03f0f9572] Corey Farrell + Change-Id: I8047524510e7ac97d99482b2448f8e368f29cd47 - * config: Fix locking for extconfig reload. +2019-07-14 13:26 +0000 [1756029237] Joshua Colp - Expand locking to include full reload process for extconfig to ensure - nothing can read the config mappings between clearing and reloading. + * res_rtp_asterisk: Move where DTLS MTU variable is defined. - Change-Id: I378316bad04f1b599ea82d0fef62b8978a644b92 + The DTLS MTU variable is not dependent on pjproject and should + not exist in its block. -2018-02-15 14:09 +0000 [e4a5c9ccf4] Sean Bright + Change-Id: I7e97d64dc192f2ac81bfe2b72b8229d321c7d026 - * res_pjsip_header_funcs: Various cleanups +2019-06-12 13:03 +0000 [2126dc3021] George Joseph - * Prefer strcasecmp() over stricmp() - * Use a list with no lock since we never actually lock - * Minor cleanups to error messages + * res_pjsip_messaging: Check for body in in-dialog message - Change-Id: I8446f44795ee8f3072e1c1f9193c6912dfc0c42b + We now check that a body exists and it has a length > 0 before + attempting to process it. -2018-02-17 08:49 +0000 [a70c92121d] Alexander Traud + ASTERISK-28447 + Reported-by: Gil Richard - * rtp_engine: Load format name / mime type in uppercase again. + Change-Id: Ic469544b22ab848734636588d4c93426cc6f4b1f - This reverts a previous change partly. +2019-06-28 11:15 +0000 [6c59df17a5] Francesco Castellano - ASTERISK-27689 + * chan_sip: Handle invalid SDP answer to T.38 re-invite - Change-Id: Ia3d2f282db6995be8c1c253b5d52f6038761e8af + The chan_sip module performs a T.38 re-invite using a single media + stream of udptl, and expects the SDP answer to be the same. -2018-02-16 17:58 +0000 [525c0251c0] Corey Farrell + If an SDP answer is received instead that contains an additional + media stream with no joint codec a crash will occur as the code + assumes that at least one joint codec will exist in this + scenario. - * BuildSystem: Use single bootstrap.sh for Asterisk and menuselect. + This change removes this assumption. - 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. + ASTERISK-28465 - Change-Id: I2bfd8537bbb63b3d46b11efabbb15eaaf9ef731a + Change-Id: I8b02845b53344c6babe867a3f0a5231045c7ac87 -2018-02-16 13:33 +0000 [65a4084060] Sean Bright +2019-07-01 16:57 +0000 [da1db4f842] Chris-Savinovich - * res_pjsip: Endpoint destruction does not free DTLS configuration + * chan_dahdi.c: crash in chan_dahdi - ASTERISK-27679 #close - Reported by: Mak Dee + Fixes a crash in chan_dahdi occurring on 32-bit systems. A previous + patch introduced a variable of type unassigned long long which is 64-bits. + Casting it as 'ast_json_int_t' along with JSON type 'I' makes it work + with 32-bit systems. - Change-Id: I89a2783a11be0763bf123d1619ed176b6225cf42 + ASTERISK-28457 -2018-02-16 12:42 +0000 [a7e7302ab6] Alexander Traud + Change-Id: I9cef6b5f2d826fc5c93f2f6a1c997c4e3e6c93fe - * install_prereq: Update OpenBSD libraries. +2019-07-01 10:49 +0000 [83aba363fe] Kevin Harwell - deleted - jack sqlite + * res_pjsip_sdp_rtp: Remove unused variable - renamed - freetds-0.63p1-msdblib to freetds - mysql-client to mariadb-client + The variable 'endpoint_caps' in function 'set_caps' is not used, so remove. - 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-28458 - ASTERISK-27684 + Change-Id: Ia8766d05a0738aecb29dd018302c2dafca5cab34 - Change-Id: I26bdcb0a1d0e484a8dad1052da97f194aefd3370 +2019-06-27 15:04 +0000 [0dc61e41fa] George Joseph -2018-02-16 12:30 +0000 [14796f529e] Alexander Traud + * tcptls.c: Add peer hostname and port to some error messages - * BuildSystem: Allow newer autotools on OpenBSD. + Where possble, hostname and port has been added to error + messages, mostly on the server side. - ASTERISK-27683 + ASTERISK-26006 + Reported by: Oleksandr Natalenko - Change-Id: I5ec9dafbb0c16b6f2740c641980bc2eaaf995624 + Change-Id: Iff4f897277bc36ce8c5b493b71d0a4a7b74e62f0 -2017-10-16 07:36 +0000 [976afd26ab] Torrey Searle +2019-06-27 12:46 +0000 [2db5173b88] George Joseph - * contrib/script/sip_to_pjsip: add support for realtime + * pjproject_bundled: Add peer information to most SSL/TLS errors - Add a new script that can read from legacy realtime peers & generate - an sql file for populating pjsip endpoints, identify, and aor records. + Most SSL/TLS error messages coming from pjproject now have either + the peer address:port or peer hostname, depending on what was + available at the time and code location where the error was + generated. - ASTERISK-27348 #close + ASTERISK-28444 + Reported by: Bernhard Schmidt - Change-Id: Idd3d7968a3c9c3ee7936d21acbdaf001b429bf65 + Change-Id: I41770e8a1ea5e96f6e16b236692c4269ce1ba91e -2018-02-16 07:52 +0000 [dda73c5018] Alexander Traud +2019-06-24 08:30 +0000 [31d755e805] George Joseph - * BuildSystem: Fix a typo related to ./configure --prefix= on OpenBSD. + * sig_pri: Address gcc9 issues - Reported by: Stuart Henderson + A few more format truncation issues addressed. - Change-Id: Ieae8624f48b6ae78cf29930b9a45a3c842c7a764 + Change-Id: I047f373169caaca0eec4889d3c0e5e10f130017a -2018-02-16 05:58 +0000 [5fd59014a5] Alexander Traud +2019-05-21 01:38 +0000 [52a3d4a761] Nasir Iqbal - * res_calendar: Specialized calendars depend on symbols of general calendar. + * app_amd: issue with silence suppression fixed - ASTERISK-27680 + Now AMD algorithm will not ignore AST_FRAME_NULL, As I think using manual + wait time instead of `framelength` is enough to fix timeout / TOOLONG issue. - Change-Id: Ifb77912e424fe3710a025c18526fada673ec0b79 + ASTERISK-28419 #close -2018-02-16 06:41 +0000 [c674efa996] Alexander Traud + Change-Id: I16ea2d6295bc99b975e8c092e5f9fbd9214debdb - * BuildSystem: Enable IMAP storage on OpenBSD. +2019-06-19 11:58 +0000 [01712bbdc9] George Joseph - ASTERISK-27681 - Reported by: Stuart Henderson + * CI: New way to determnine libdir - Change-Id: Ifb6b614acb251b695b9417d76510e73eb335b679 + We were using the presence of /usr/lib64 to determine where + shared libraries should be installed. This only existed on + Redhat based systems and was safe. If it existed, use it, + otherwise use /usr/lib. -2018-02-16 04:50 +0000 [2c814afb86] Alexander Traud + Unfortunately, Ubuntu 19 decided to create a /usr/lib64 BUT + NOT INCLUDE IT IN THE DEFAULT ld.so.conf. So if anything is + installed there, it won't work. - * BuildSystem: Enable system provided libedit on OpenBSD. + The new method, just looks for $ID in /etc/os-release and if it's + centos or fedora, uses /usr/lib64 and if ubuntu, uses /usr/lib. - ASTERISK-27677 + NOTE: This applies only to the CI scripts. Normal asterisk + build and install is not affected. - Change-Id: I0854e3616d1361ae9b6907d3d3444a02784ac62b + Change-Id: Iad66374b550fd89349bedbbf2b93f8edd195a7c3 -2018-02-15 14:30 +0000 [af2dd3a678] Sean Bright +2019-06-17 12:11 +0000 [1ee2f01f62] George Joseph - * bridge_roles: Use a non-locking linked list where appropriate + * chan_dahdi: Address gcc9 issues - Also explicitly initialize with the AST_LIST_HEAD_NOLOCK_INIT macro for - clarity. + Fixed format-truncation issues in chan_dahdi.c and + sig_analog.c. Since they're related to fields provided + by dahdi-tools we can't change the buffer sizes so we're just + checking the return from snprintf and printing an errior if we + overflow. - Change-Id: I4bc39ec33bc3ff77e1a971a01ace87deb965be3f + Change-Id: Idc1f3c1565b88a7d145332a0196074b5832864e5 -2018-02-15 13:29 +0000 [303e43f8a6] Sean Bright +2019-06-14 15:45 +0000 [8b77318a2c] Alexei Gradinari - * res_pjsip: Use pjsip_sip_uri.user_param instead of other_param + * translate.c do not log WARNING on empty audio frame - 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. + There is WARNING "no samples for ..." on each Playtones. + The function ast_playtones_start calls ast_activate_generator, + which calls ast_prod. + The function ast_prod calls ast_write with empty audio frame. + In this case it's spam log. - Change-Id: I0a0ce8a60ecee27489735bf56fd707719d8c2ed6 + Change-Id: Id4ac309489d9ff281bad02abdef341cecdede660 -2018-02-12 07:37 +0000 [8ac198aff3] Alexander Traud +2019-06-10 16:58 +0000 [ccc92b6ecb] George Joseph - * BuildSystem: Remove chan_h323 leftovers. + * app_confbridge: Attended transfer event fixup - ASTERISK-27670 + When a channel already in a conference bridge is attended transfered + to another extension, or when an existing call is attended + transferred into a conference bridge, we now generate ConfbridgeJoin + and ConfbridgeLeave events for the entering and departing channels. - Change-Id: I07a8ef8bbd6001e25711fa1bff152eb6c9efa729 + Change-Id: Id7709cfbceb26fbcb828b2d0d2a6b2fbeaf028e1 -2018-01-17 08:17 +0000 [6b6b3ffa5b] Alexander Traud +2019-06-13 10:11 +0000 [694097ee68] Sean Bright - * BuildSystem: Invoke ldconfig with previous path. + * pjproject: Update to 2.9 release - On OpenBSD, gmake uninstall{-all} registered only libraries from /usr/lib and - lost those from /usr/local/lib. Instead, invoke ldconfig on a path. + Relies on https://github.com/asterisk/third-party/pull/4 - ASTERISK-27595 + Change-Id: Iec9cad42cb4ae109a86a3d4dae61e8bce4424ce3 - Change-Id: I4aa2c0b5e07119d1a556f8ff6349eaf09e986888 +2019-06-11 07:26 +0000 [82789aafd6] Joshua Colp -2017-12-22 15:27 +0000 [9f74afbdcf] Corey Farrell + * res_rtp_asterisk: Add support for DTLS packet fragmentation. - * Deprecate legacy modules. + This change adds support for larger TLS certificates by allowing + OpenSSL to fragment the DTLS packets according to the configured + MTU. By default this is set to 1200. - * app_fax (replaced by res_fax). - * res_config_sqlite (replaced by res_config_sqlite3). - * res_monitor (replaced by app_mixmonitor). + This is accomplished by implementing our own BIO method that + supports MTU querying. The configured MTU is returned to OpenSSL + which fragments the packet accordingly. When a packet is to be + sent it is done directly out the RTP instance. - This is related to ASTERISK~23657 but does not resolve that ticket. - Resolving that ticket would require complete removal of res_monitor. + ASTERISK-28018 - ASTERISK-27671 #close + Change-Id: If2d5032019a28ffd48f43e9e93ed71dbdbf39c06 - Change-Id: I16a3edd61fc1abd4a7b2e9357693ed663f62dd49 +2019-06-06 07:48 +0000 [72f26aa8eb] Abhay Gupta -2018-01-28 03:02 +0000 [f9ba31bb21] Alexander Traud + * chan_pjsip.c: Check for channel and session to not be NULL in hangup - * BuildSystem: Do not warn when bash is not installed. + We have seen some rare case of segmentation fault in hangup function + and we could notice that channel pointer was NULL. Debug log shows + that there is a 200 OK answer and SIP timeout at the same time. It + looks that while the SIP session was being destroyed due to timeout + call hangup due to answer event lead to race condition and channel + is being destroyed from two different places. The check ensures we + check it not to be NULL before freeing it. - ASTERISK-27631 + ASTERISK-25371 - Change-Id: Iefdf268b0b98c3e7d8089ba87cf78136ac1d785b + Change-Id: I19f6566830640625e08f7b87bfe15758ad33a778 -2018-02-12 22:15 +0000 [9e45d3f893] Corey Farrell +2019-01-08 00:14 +0000 [a1c84709b8] Kirsty Tyerman - * main/asterisk.c: Remove silly usage of RAII_VAR. + * pbx_dundi: added IPv4/IPv6 dual bind support to DUNDi - Change-Id: I7e2996397fbd3c3a6a69dd805c38448ddfc34ae9 + ASTERISK-28234 + Reported-by: Kirsty Tyerman -2017-12-25 19:32 +0000 [02ee296f81] Corey Farrell + Change-Id: I5d6e6b52dbe51415046bb3953fd16f5b421bc2e1 - * optional_api: Refactor to use vector's and standard allocators. +2019-06-04 12:41 +0000 [c2621aa190] Chris-Savinovich - * 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. + * cdr_pgsql: fix error in connection string - Change-Id: Ic6ecb31798d4a78e7df39ece86a68b60eac05bf5 + Fixes an error occurring in function pgsql_reconnect() caused when value of + hostname is blank. Which in turn will cause the connection string to look + like this: "host= port=xx", which creates a sintax error. This fix now checks + if the corresponding values for host, port, dbname, and user are blank. Note + that since this is a reconnect function the database library will replace any + missing value pairs with default ones. -2018-02-11 15:27 +0000 [8372138cce] Richard Mudgett + ASTERISK-28435 - * chan_sip.c: Fix crash processing CANCEL. + Change-Id: I0a921f99bbd265768be08cd492f04b30855b8423 - Check if initreq data string exists before using it when processing a - CANCEL request. +2019-05-21 14:12 +0000 [86cd77ec0a] Alexei Gradinari - ASTERISK-27666 + * app_attended_transfer: new application AttendedTransfer - Change-Id: Id1d0f0fa4ec94e81b332b2973d93e5a14bb4cc97 + AttendedTransfer queues up attended transfer to the given extension. -2018-02-06 14:27 +0000 [cb4cfb8c43] Sungtae Kim + This application can be useful with Custom Dynamic Features. + For example to make attended transfer to a predefined number. - * manager: Add AMI event Load/Unload + features.conf + ;;; + [applicationmap] + my_atxfer => *7,self,GoSub,"my_atxfer,s,1",default + ;;; - Add an AMI events Load and Unload for notify when the - module has been loaded and unloaded. + extensions.conf + ;;; + [globals] + DYNAMIC_FEATURES=my_atxfer + TRANSFER_CONTEXT=my_transfer - ASTERISK-27661 + [my_atxfer] + exten => s,1,AttendedTransfer(1234567890) + same => n,Return() - Change-Id: Ib916c41eddd63651952998f2f49c57c42ef87a64 + [my_transfer] + include => default + ;;; -2018-01-30 20:31 +0000 [04490fb1d8] Corey Farrell + This application also can be used to completly redefine Attended transfer + feature using dialplan. For example: - * json: Add conditionals to avoid locking if Jansson is thread safe. + features.conf + ;;; + [featuremap] + atxfer => *7 - 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. + [applicationmap] + custom_atxfer => *2,self,GoSub,"custom_atxfer,s,1",default + ;;; - Change-Id: Id985cb3ffa6681f9ac765642e20fcd187bd4aeee + extensions.conf + ;;; + [globals] + DYNAMIC_FEATURES=custom_atxfer + TRANSFER_CONTEXT=my_transfer -2018-02-12 06:16 +0000 [b21915bd1c] Alexander Traud + [custom_atxfer] + exten => s,1, + same => n,Playback(pbx-transfer) + same => n,Read(dest,dial,10,i,3,3) + same => n,AttendedTransfer(${dest}) + same => n,Return() - * pjproject_bundled: Disable G.729 from Belledonne Communications. + [my_transfer] + include => default + ;;; - 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. + Change-Id: Ie5cfa455d0813cffd5c85a6fb117f07d8f0b903b - ASTERISK-27584 - Reported by: Stuart Henderson +2019-05-29 17:54 +0000 [6321b559b9] Alexei Gradinari - Change-Id: I88b6b18ad777bcfe2d8201187b4b90eec0a172a6 + * res_fax: gateway sends T.38 request to both endpoints if V.21 detected -2018-02-12 05:38 +0000 [97f45d5816] Alexander Traud + According T.38 Gateway 'Use case 3' + https://wiki.asterisk.org/wiki/display/AST/T.38+Gateway + T.38 Gateway should send T.38 negotiation request to called endpoint + if FAX preamble (using V.21 detector) generated by called endpoint. + But it does not, because fax_gateway_detect_v21 constructs T.38 + negotiation request, but forwards it only to other channel, + not to the channel on which FAX preamble is detected. - * codecs: Add support for WebRTC iLBC 2.0. + Some SIP endpoints could be improperly configured to rely on the other side + to initiate T.38 re-INVITEs. - When the latest version of that library was installed, Asterisk did not build. + With this patch the T.38 Gateway tries to negotiate with both sides + by sending T.38 negotiation request to both endpoints supported T.38. - ASTERISK-27669 - Reported by: Николай Михо + Change-Id: I73bb24799bfe1a48adae9c034a2edbae54cc2a39 - Change-Id: I27e09bb875fdd56423bd9fae1be85fddb428eb96 +2019-05-30 12:08 +0000 [d2c07aceca] Asterisk Development Team -2018-02-12 01:26 +0000 [9fddc8b4dc] Corey Farrell + * Update CHANGES and UPGRADE.txt for 16.4.0 +2019-05-28 17:15 +0000 [e77704f45c] Alexei Gradinari - * core: Remove embedded editline. + * res_fax: add channel name to CLI 'fax show session' - This removes the embedded copy of editline from the Asterisk source - tree, making a system copy of libedit mandatory in Asterisk 16+. + This patch adds a channel name to output of CLI 'fax show session' + and also expands the channel name field up to 30 characters on + CLI 'fax show sessions' - ASTERISK-27634 #close + Change-Id: Id059c43ff41811f5e76712b83fb63b8f246da953 - Change-Id: Iedb64ad92acb78419f3caefedaa2bb7cd2a1a33f +2019-05-28 15:35 +0000 [e0a574253e] Alexei Gradinari -2018-01-30 09:58 +0000 [32e610d9e6] Alexander Traud + * res_fax: fix segfault on inactive "reserved" fax session - * backtrace: Avoid potential spurious output. + The change #10017 "Handle fax gateway being started more than once" + introdiced a bug which leads to segfault in res_fax_spandsp. - clang 4.0 found this via -Wlogical-not-parentheses. + The res_fax_spandsp module does not support reserving sessions, so + fax_session_reserve returns a fax session with state AST_FAX_STATE_INACTIVE. - ASTERISK-27642 + The fax_gateway_start does not create a real fax session if the fax session + is already present and the state is not AST_FAX_STATE_RESERVED. + But the "reserved" session created for res_fax_spandsp has state + AST_FAX_STATE_INACTIVE, so fax_gateway_start not starting. - Change-Id: I9ec3e144d425a976c02811bd23cd0c533d2eca4e + Then when fax_gateway_framehook is called and gateway T.38 state is + NEGOTIATED the call of gateway->s->tech->write(gateway->s, f) leads to + segfault, because session tech_pvt is not set, i.e. the tech session + was not initialized/started. -2018-02-10 05:39 +0000 [971378bbdb] Alexander Traud + This patch adds check also on AST_FAX_STATE_INACTIVE to the "reserved" + session created for res_fax_spandsp will start. - * install_prereq: Update Debian/Ubuntu libraries. + This patch also adds extra check and log ERROR if tech_pvt is not set + before call tech->write. - ASTERISK-27555 + ASTERISK-27981 #close - Change-Id: Idc36e91db30c0163c560d04c5a82bca5d6ce92a8 + Change-Id: Ife3e65e5f18c902db2ff0538fccf7d28f88fa803 -2018-02-09 12:06 +0000 [b2fcb30d38] Richard Mudgett +2019-05-24 09:01 +0000 [ec74fd56a7] Ben Ford - * cdr.c: Fix runtime leak of CDR records. + * build: Fix file format in CHANGES-staging. - Need to remove all CDR's listed by a CDR object from the active_cdrs_all - container including the root/master record. + One of the change files doesn't conform to the format that the release + scripts need in order to parse it. - ASTERISK-27656 + Change-Id: Ie0b634cf27e4cbc671b9fe92993b6f2ecf60254c - Change-Id: I48b4970663fea98baa262593d2204ef304aaf80e +2019-05-23 09:44 +0000 [86fb72c4d0] Guido Falsi -2018-01-31 17:48 +0000 [67cd90f10d] Richard Mudgett + * chan_dahdi: add missing include. - * app_confbridge: ConfbridgeList event has standard channel shapshot headers. + After some definitions have been moved to asterisk/mwi.h the files + channels/chan_dahdi.h channels/sig_pri.c are missing this new + include. - * 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-28427 #close - ASTERISK-27651 + Change-Id: Ia8cc595eeda653324643f40dcd9799d4c3f0ac91 - Change-Id: Iaf7d54a9d40194c2db060bc9b4979fab6720d977 +2019-05-21 11:29 +0000 [9351aa3f0e] Morten Tryfoss -2018-01-31 15:45 +0000 [f4b161440b] Richard Mudgett + * res_rtp_asterisk: timestamp should be unsigned instead of signed int - * app_confbridge: Add the Muted header to ConfbridgeJoin AMI event. + Using timestamp with signed int will cause timestamps exceeding max value + to be negative. + This causes the jitterbuffer to do passthrough of the packet. - ASTERISK-27651 + ASTERISK-28421 - Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34 + Change-Id: I9dabd0718180f2978856c50f43aac4e52dc3cde9 -2017-12-19 02:52 +0000 [5b8fea93d1] Oron Peled +2019-05-21 14:53 +0000 [db5bc0fabf] Alexei Gradinari - * chan_console: don't read and write at the same time + * app_blind_transfer: new application BlindTransfer - 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. + BlindTransfer redirects all channels currently bridged to the + caller channel to the specified destination. - 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. + This application can be useful with Custom Dynamic Features. + For example to make blind transfer to a predefined number. - ASTERISK-27426 #close + features.conf + ;;; + [applicationmap] + my_blindxfer => *6,self,GoSub,"my_blindxfer,s,1",default + ;;; - Change-Id: I635eacee45f5413faa18f5a3b606af03b926dacb + extensions.conf + ;;; + [globals] + DYNAMIC_FEATURES=my_blindxfer -2018-02-02 17:35 +0000 [1017db107c] Richard Mudgett + [my_blindxfer] + exten => s,1,BlindTransfer(1234567890,default) + same => n,Return() + ;;; - * endpoint identifiers: Some code cleanup. + This application also can be used to completly redefine Blind transfer + feature using dialplan. For example: - 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(). + features.conf + ;;; + [featuremap] + blindxfer => - 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(). + [applicationmap] + custom_blindxfer => ##,self,GoSub,"custom_blindxfer,s,1",default + ;;; - Change-Id: I86924c31db5bd225ca0c1219c761b668c6f91189 + extensions.conf + ;;; + [globals] + DYNAMIC_FEATURES=custom_blindxfer -2018-02-02 17:20 +0000 [b71e469d68] Richard Mudgett + [custom_blindxfer] + exten => s,1, + same => n,Playback(pbx-transfer) + same => n,Read(dest,dial,10,i,3,3) + same => n,BlindTransfer(${dest},default) + same => n,Return() + ;;; - * res_pjsip/config_domain_aliases.c: Add check for missing domain. + Change-Id: I9d55e7f69ccfd4472dec00d62771d6de8803215a - What is the point of defining an alias and not saying what is being - aliased? +2019-05-17 17:45 +0000 [9516fb64c9] Alexei Gradinari - Change-Id: I98a892016ed61dcf5efeb6619fd748925103f0be + * app_readexten: new option 'p' to stop reading on '#' key -2018-02-02 15:11 +0000 [0960de71ae] Richard Mudgett + This patch adds the 'p' option. + The extension entered will be considered complete when a # is entered. - * res_pjsip.c: Fix documentation typos. + Change-Id: If77c40c9c8b525885730821e768f5dea71cf04c1 - Change-Id: I82ae0b92bfa2ece84a5c684efd9eefdc83ebd068 +2019-05-20 12:45 +0000 [33ed2e1bb8] Joshua Colp -2018-02-02 15:43 +0000 [bef49d90c1] Richard Mudgett + * pjproject-bundled: Add upstream timer fixes - * res_sorcery_realtime.c: Fix ref leak if object failed to apply. + Fixed #2191: + - Stricter double timer entry scheduling prevention. + - Integrate group lock in SIP transport, e.g: for add/dec ref, + for timer scheduling. - Change-Id: I3c7106ff77009754725cee790eadf5da44154ab6 + ASTERISK-28161 + Reported-by: Ross Beer -2018-01-24 19:58 +0000 [7e32adf044] Sungtae Kim + Change-Id: I2e09aa66de0dda9414d8a8259a649c4d2d96a9f5 - * manager.c: Fixed "(null):" header in AMI AsyncAGIEnd event +2019-05-17 18:44 +0000 [79b15d0b30] George Joseph - * Changed to create ami_event string only when the given blob is not - json_null(). - * Fixed bad expression. + * res_rtp_asterisk: Add ability to propose local address in ICE - ASTERISK-27621 + You can now add the "include_local_address" flag to an entry in + rtp.conf "[ice_host_candidates]" to include both the advertized + address and the local address in ICE negotiation: - Change-Id: Ice58c16361f9d9e8648261c9ed5d6c8245fb0d8f + [ice_host_candidates] + 192.168.1.1 = 1.2.3.4,include_local_address -2018-02-01 13:01 +0000 [73f92c2c52] Joshua Elson + This causes both 192.168.1.1 and 1.2.3.4 to be advertized. - * res_pjsip_mwi.c: Fix null pointer crash + Change-Id: Ide492cd45ce84546175ca7d557de80d9770513db - ASTERISK-27652 #close +2019-05-13 15:37 +0000 [de82bdd746] Alexei Gradinari - Change-Id: I78a0d38bfd8d0d82830f3d53da04872d6b67284d + * pjsip: replace 180 by 183 if SDP negotiation has completed -2018-02-01 15:03 +0000 [fc98843d4b] Sean Bright + The caller endpoint hears dead silence if a callee replies 180 (without SDP) + and the caller already received 183 (with SDP). + It happens because Asterisk sends 180 (WITH SDP) to the caller, + there are not incoming RTP packets from the callee + and Asterisk does not generate inband ringing, + so there are not any outgoing RTP packets to the caller. - * appdocsxml.xslt: Add Language to channel snapshot transformation + This patch replaces 180 by 183 if SDP negotiation has completed, + as if the caller endpoint is configured with "inband_progress=yes". - Change-Id: I8f494b0c895a69b8bc94656d0c6ceebecb0394d8 + In this case Asterisk will generate inband ringing untill Asterisk receive + incoming RTP packets from the callee. -2018-01-31 15:40 +0000 [3419a048b9] Richard Mudgett + ASTERISK-27994 #close - * manager.c: Fix potential memory leak and corruption. + Change-Id: I7450b751083ec30d68d6abffe922215a15ae5a73 - ast_str_append_event_header() could potentially leak and corrupt memory if - the ast_str needed to expand to add the AMI event header. +2019-05-10 10:48 +0000 [e7734476c6] George Joseph - * Fixed to return error if the ast_str_append() failed. + * Fixes for GCC 9 - Change-Id: I92f36b855540743b208d76e274152ee2d758176d + Various fixes for issues caught by gcc 9. Mostly snprintf + trying to copy to a buffer potentially too small. -2018-01-31 17:27 +0000 [bcfe172f8d] Richard Mudgett + ASTERISK-28412 - * manager_channels.c: Reordered ast_manager_build_channel_state_string_prefix() + Change-Id: I9e85a60f3c81d46df16cfdd1c329ce63432cf32e - * Made not allocate memory if the channel snapshot is an internal channel. +2019-05-08 10:41 +0000 [ece29db9bd] Joshua Colp - * Free memory earlier when no longer needed. + * res_rtp_asterisk: Fix sequence number cycling and packet loss count. - Change-Id: Ia06e0c065f1bd095781aa3f4a626d58fa4d28b38 + This change fixes two bugs which both resulted in the packet loss + count exceeding 65,000. -2018-01-31 12:44 +0000 [4e4428ef3c] Corey Farrell + The first issue is that the sequence number check to determine if + cycling had occurred was using the wrong variable resulting in the + check never seeing that cycling has occurred, throwing off the + packet loss calculation. It now uses the correct variable. - * res_pjsip_registrar_expire: Delete empty module. + The second issue is that the packet loss calculation assumed that + the received number of packets in an interval could never exceed + the expected number. In practice this isn't true due to delayed + or retransmitted packets. The expected will now be updated to + the received number if the received exceeds it. - Verified nothing in the testsuite lists this module as a dependency. + ASTERISK-28379 - Change-Id: I90c7d52c7e15e85fde3389d5eaccb05b97848813 + Change-Id: If888ebc194ab69ac3194113a808c414b014ce0f6 -2018-01-30 19:22 +0000 [1ccac0be0e] Richard Mudgett +2019-05-07 11:08 +0000 [941dead08d] Ben Ford - * bridge_softmix.c: Report not talking immediately when muted. + * pjsip_options.c: Allow immediate qualifies for new contacts. - 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. + When multiple endpoints try to register close together using the same + AOR with qualify_frequency set, one contact would qualify immediately + while the other contacts would have to wait out the duration of the + timer before being able to qualify. Changing the conditional to check + the contact container count for a non-zero value allows all contacts to + qualify immediately. - * 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. + Change-Id: I79478118ee7e0d6e76af7c354d66684220db9415 - ASTERISK-27647 +2019-05-06 16:26 +0000 [edc3e0df1a] Kevin Harwell - Change-Id: Ie4fdbc05a0bc7343c2972bab012e2567917b3d4e + * conversions.c: Add conversions for largest max sized integer -2018-01-30 15:00 +0000 [b9024197ab] Richard Mudgett + Added a conversion for umax (largest maximum sized integer allowed). Adjusted + the other current conversion functions (uint and ulong) to be derivatives of + the umax conversion since they are simply subsets of umax. - * app_confbridge: Update dsp_silence_threshold and dsp_talking_threshold docs. + Also made the negative check move the pointer on spaces since strtoumax does it + anyways. - 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: I56c2ef2629d49b524c8df58af12951c181f81f08 - Change-Id: If6f939c100eb92a5ac6c21236559018eeaf58443 +2019-05-03 10:49 +0000 [9a0fa51443] Abhay Gupta -2018-01-31 11:00 +0000 [6c5e3226ec] Richard Mudgett + * stasis: Hangup channel for Local channel No such extension error - * res_pjsip_registrar.c: Fix compiler error. + When we use early bridge with create and dial from stasis using Local channel + and the dialplan does not any entry the it is returned from core_local.c with + No such extension . - Need to include signal.h to define pthread_kill() and SIGURG. + In such case asterisk locks up till the channel is not hangup with the error + Exceptionally long voice queue length - Change-Id: I10ae3aa4bf8e7386ac29ade78c0f2caed8e674fa + * Found that in such case app_control_dial fails on ast_call method and + return -1 + * Since it is called from stasis_app_send_command_async and return -1 does + not cause resources to be freed and since no PBX exist it is not able to + read from channel causing exceptionally long queue + * After putting this code found that the channel was releasing immediately + and resources were freed. -2018-01-30 23:05 +0000 [60701b3252] Corey Farrell + ASTERISK-28399 + Reported by: Abhay Gupta + Tested by: Abhay Gupta - * res_pjsip_session: Prevent crash during shutdown. + Change-Id: I0a55c923fc6995559f808d63b9488762b4489318 - 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. +2019-05-03 13:31 +0000 [543d487746] George Joseph - ASTERISK-27571 #close + * build: Pass --fno-partial-inlining to third-party when appropriate - Change-Id: Ia550fcba563e2328f03162d79fb185f16b7c9b9d + When the gcc version is >= 8.2.1, we were already setting the + --fno-partial-inlining flag for Asterisk source files to get around + a gcc bug but we weren't passing the flag down to the bundled + builds of pjproject and jansson. -2018-01-27 13:03 +0000 [720dbb5745] Corey Farrell + ASTERISK-28392 - * core: Create ast_atomic macro's. + Change-Id: I99ede9bc35408ecd096f7d5369e8192d3dc75704 - Create ast_atomic macro's to provide a consistent interface to the - common functionality of __atomic and __sync built-in functions. +2019-05-02 13:29 +0000 [5002169d6a] George Joseph - ASTERISK-27619 + * res_pjsip: Check return from pjsip_parse_uri calls - Change-Id: Ieba3f81832a0e25c5725ea067e5d6f742d33eb5b + Updated ast_sip_create_rdata_with_contact and registrar_find_contact + to check the return from pjsip_parse_uri before attempting to + use the uri returned. -2018-01-28 10:10 +0000 [2b9aa6b5bb] George Joseph + ASTERISK-28402 + Reported-by: Ross Beer - * res_pjsip_pubsub: Prune subs with reliable transports at startup + Change-Id: I9810b3b163c45ed5a56ec743586e5ce107f13ba7 - 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. +2019-04-30 09:21 +0000 [39c5188bec] Abhay Gupta - Also fixed issues in res_pjsip_registrar where it wasn't handling the - monitoring correctly when multiple registrations came in over the same - transport. + * stasis: Only place stasis created and dialed channels into dial bridge. - 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. + The dial bridge is meant to hold channels which have been created + and dialed in stasis. It handles the frames coming from them and raises + the appropriate events. - ASTERISK-27612 - Reported by: Ross Beer + It was possible for the code to mistakenly place calls which came + from the dialplan into the dial bridge if they were not in an + answered state. These channels are not outgoing channels and + should not be placed into the dial bridge. - Change-Id: Iee87cf4eb9b7b2b93d5739a72af52d6ca8fbbe36 + The code now checks to ensure that only stasis created channels are + placed into the dial bridge by checking that a PBX does not exist + on the channel. -2018-01-29 13:46 +0000 [81db0aca0f] George Joseph + ASTERISK-27756 - * res_pjsip_registrar_expire: Refactor into res_pjsip_register + Change-Id: Ideee69ff06c9a0b31f7ed61165f5c055f51d21b6 - res_pjsip_registrar_expire remains as an empty module for now. +2019-04-09 23:30 +0000 [f599ebd29e] Holger Hans Peter Freyther - Change-Id: Ib93698938bae548d2199cb542f3692d1a171239f + * stasis: Call callbacks when imparting fails -2018-01-29 07:51 +0000 [cf21e9fc97] Corey Farrell + After a bridge has been deleted the stasis control will depart + the channel and might attempt to re-add it to the dial bridge. - * Sample modules.conf: comment out example load statement. + The later can fail and this can lead to a situation that the stasis + control is unlinked but the after_bridge_cb_failed cb is executed trying + to access a dangling control object. - 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. + Fix it by calling the after_cb's before bridge_channel_impart_signal. - Also remove reference to unknown module pbx_gtkconsole. + ASTERISK-26718 - Change-Id: Ib01888994d9f1364b14d3c9fb6ff96774a6e580a + Change-Id: Ib4e8f70d7a21bd54afe3cb51cc6717ef7c355496 -2018-01-29 10:20 +0000 [913773cd75] Alexander Traud +2019-04-30 06:22 +0000 [d861ebdca8] Joshua Colp - * BuildSystem: Enable autotools in FreeBSD. + * app_confbridge: Add "all" variants of REMB behavior. - 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. + When producing a combined REMB value the normal behavior + is to have a REMB value which is unique for each sender + based on all of their receivers. This can result in one + sender having low bitrate while all the rest are high. - ASTERISK-27637 + This change adds "all" variants which produces a bridge + level REMB value instead. All REMB reports are combined + together into a single REMB value that is the same for + each sender. - Change-Id: Id7b94b80e78cc943a40ba79b697e3f70019820a7 + ASTERISK-28401 -2018-01-29 10:00 +0000 [156b12340e] Alexander Traud + Change-Id: I883e6cc26003b497c8180b346111c79a131ba88c - * app_voicemail: Avoid always true when using pointer address. +2019-04-23 05:00 +0000 [5023f02b2d] Joshua Colp - clang 4.0 warned about this. + * rtp: Add support for transport-cc in receiver direction. - ASTERISK-27635 + The transport-cc draft is a mechanism by which additional information + about packet reception can be provided to the sender of packets so + they can do sender side bandwidth estimation. This is accomplished + by having a transport specific sequence number and an RTCP feedback + message. This change implements this in the receiver direction. - Change-Id: I213f230607d7fbe97c0f5f2d60da9cbf5a2d8231 + For each received RTP packet where transport-cc is negotiated we store + the time at which the RTP packet was received and its sequence number. + At a 1 second interval we go through all packets in that period of time + and use the stored time of each in comparison to its preceding packet to + calculate its delta. This delta information is placed in the RTCP + feedback message, along with indicators for any packets which were not + received. -2018-01-19 05:13 +0000 [e7f8ef1935] Alexander Traud + The browser then uses this information to better estimate available + bandwidth and adjust accordingly. This may result in it lowering the + available send bandwidth or adjusting how "bursty" it can be. - * install_prereq: Update RHEL/CentOS/Fedora libraries. + ASTERISK-28400 - deleted - automake git ncurses-devel pjproject-devel sqlite2-devel libsqlite3x-devel + Change-Id: I654a2cff5bd5554ab94457a14f70adb71f574afc - renamed - radiusclient-ng-devel to radcli-devel - gmime22-devel to gmime-dev +2018-12-04 02:10 +0000 [1d214a3623] Abhay Gupta - 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 + * app_amd: Fix infinite loop on silent calls - ASTERISK-27599 - Reported by: Said Masoud + The total time logic will now be executed on calls which + do not pass any media. - Change-Id: I05bb0af98ae532b2d5f37478e38b8f0762b1c035 + ASTERISK-28143 -2018-01-28 05:20 +0000 [aaf14670b5] Alexander Traud + Change-Id: I24726bd29d7e467fc721ca265363417234b22855 - * BuildSystem: Remove unused variables. +2019-04-23 09:47 +0000 [8d35a30a3f] Ben Ford - 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. + * stasis: Fix crash at shutdown. - Change-Id: I252de5a98c17ea54459174875357c22c2eebe8d5 + When compiling in dev mode, stasis statistics are enabled and can cause + a crash at shutdown due to the following: + - Containers are freed + - Topics and subscriptions remain + - When those topics and subscriptions are deallocated, they go to do + things with the container -2018-01-25 12:06 +0000 [84a6365164] Corey Farrell + This changes the containers to global ao2 objects, and whenever needed + in the code, a reference must be obtained and checked before any + operations can be done. - * loader: Use ast_cli_completion_add for 'module load' completion. + ASTERISK-28353 #close - 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: Ie7d5e907fcfcb4d65bd36d5e4eb923126fde8d33 - Change-Id: I8bf51ffaa7ef1606f3bd1b5bb13f1905d72c6134 +2019-03-29 09:04 +0000 [d6b37e2926] Antoni Goldstein -2018-01-27 09:44 +0000 [d9e42f27b9] Alexander Traud + * app_dial.c: RINGTIME, PROGRESSTIME and ms resolution dial timings - * core: Fix unused variable error in handle_show_sysinfo. + Added RINGTIME, RINGTIME_MS, PROGRESSTIME, PROGRESSTIME_MS variables filled + at the earliest received PROGRESS or RINGING. + Added millisecond versions of DIALEDTIME and ANSWEREDTIME. - The previous fix broke the case - HAVE_SYSINFO = no - HAVE_SYSCTL = yes - HAVE_SWAPCTL = no - which occurs on FreeBSD 11.1 for example. + Added millisecond versions of ast_channel_get_up_time and + ast_channel_get_duration in channel.c. - ASTERISK-26563 + ASTERISK-28363 - Change-Id: If77c39bc75f0b83a6c8a24ecb2fa69be8846160a + Change-Id: If95f1a7d8c4acbac740037de0c6e3109ff6620b1 -2018-01-27 08:54 +0000 [3c26eec043] Alexander Traud +2019-04-09 13:48 +0000 [e3a758975d] Kevin Harwell - * editline: Avoid shifting a negative signed value. + * mwi core: Move core MWI functionality into its own files - clang 4.0 warned about this. + There is enough MWI functionality to warrant it having its own 'c' and header + files. This patch moves all current core MWI data structures, and functions + into the following files: - ASTERISK-27630 + main/mwi.h + main/mwi.c - Change-Id: Ie2725048c661c1792d8b1d498575144350b6e9ba + Note, code was simply moved, and not modified. However, this patch is also in + preparation for core MWI changes, and additions to come. -2018-01-27 03:25 +0000 [c38da18ec6] Alexander Traud + Change-Id: I9dde8bfae1e7ec254fa63166e090f77e4d3097e0 - * headers: Consistent use of typeof and/or __typeof__. +2019-04-22 11:12 +0000 [e281911667] George Joseph - 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. + * ARI: Bump non-breaking version number to 4.0.2 - Change-Id: I2a962c3e596e882f691a19345445b14571a5f07c + main/json.c: Added app_name, app_data to channel type + res/res_ari: Added ARI resource /ari/channels/{channelId}/rtp_statistics + res/res_ari: Added timestamp as a requirement for all ARI events -2018-01-24 18:25 +0000 [5d320d2d4b] Richard Mudgett + Change-Id: I6363f2a3e757cfd59b2ee5d056388ec47659a0c9 - * Update sounds release to fix siren7 and siren14 files. +2019-04-07 11:36 +0000 [4dcfa8d127] Guido Falsi - ASTERISK-16172 + * core/buildsystem: check the actual compiler being version - Change-Id: I2fb564258cd4db0f35952ad48b8687355c2dcad3 + Make compiler check use the output of the actual compiler being + used as reported by the CC variable, instead of unconditionally + running the "gcc" binary. Also only run the check if the compiler + is gcc or a cross-compile gcc. -2018-01-15 11:08 +0000 [6da970bfb9] Alexander Traud + ASTERISK-28374 - * BuildSystem: Raise autoconf version requirement to 2.60a. + Change-Id: Icaacf6d93686ad21076878aa1504a23b4fc9d0f4 - AC_COMPUTE_INT requires at least autoconf 2.60a. +2019-04-19 09:33 +0000 [daed593cfa] Lucas Mendes - 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. + * res_indications: Fix indications remove command autocomplete - ASTERISK-16951 + We changed the validation of autocomplete parameter in the "indications + remove" command to avoid continue the execution of the command after + asking for autocomplete out of range parameters. - Change-Id: Ibca850e2fe0e77d935207bd959bacf7197d7f637 + ASTERISK-28391 + Reported by: lmendes86 -2018-01-26 06:48 +0000 [0afff31ed0] Alexander Traud + Change-Id: I92b24131fd02f2e3c7fec966eea6f7a663310d40 - * install_prereq: Download latest Jansson. +2019-04-17 14:45 +0000 [7487fc88d2] George Joseph - ASTERISK-27603 + * res_remb_modifier: Propertly initialize bitrate to 0.0 - Change-Id: I65c587534c0ae364f063d68da1bed40bb3d5e8aa + ...and return the frame unaltered if bitrate can't be determined. -2018-01-01 15:59 +0000 [39fcecad59] Corey Farrell + Change-Id: Ib2175ab84f85a3d7060d31625f5a2c7fbcc2ba4c - * core: Tweak startup order. +2019-04-08 17:04 +0000 [eca8c440d2] Dan Cropp - 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. + * res_pjsip: Added a norefersub configuration setting - Change-Id: I1d15384acad16a22c3498124421af474fa517478 + Added a new PJSIP global setting called norefersub. + Default is true to keep support working as before. -2018-01-25 01:37 +0000 [23381d2c5e] Corey Farrell + res_pjsip_refer: Configures PJSIP norefersub capability accordingly. - * Build System: Require __sync or __atomic functions. + Checks the PJSIP global setting value. + If it is true (default) it adds the norefersub capability to PJSIP. + If it is false (disabled) it does not add the norefersub capability + to PJSIP. - This change causes the configure script to throw an error if neither - __sync nor __atomic builtin functions are available. + This is useful for Cisco switches that do not follow RFC4488. - ASTERISK-27619 + ASTERISK-28375 #close + Reported-by: Dan Cropp - Change-Id: Ie01a281e0f5c41dfeeb5f250c1ccea8752f56ef9 + Change-Id: I0b1c28ebc905d881f4a16e752715487a688b30e9 -2018-01-24 22:44 +0000 [a164b7ccfb] Corey Farrell +2019-04-16 10:58 +0000 [022e784b7a] Sean Bright - * loader: Correct overly strict startup checks. + * res_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority - 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. + Suggested by abelbeck on the issue tracker. - Clear the missingdeps vector when appropriate to ensure the next loop - starts clean. + ASTERISK~28384 + Reported by: abelbeck - ASTERISK-27620 + Change-Id: Icee0fff2b58dbfaa80f2b68270fe69dfb0463fc0 - Change-Id: I45547d9641fd45bd86d80250224417625631ad84 +2019-04-12 11:32 +0000 [18fe583d12] George Joseph -2018-01-24 18:49 +0000 [6fbd855228] Corey Farrell + * CI: Move test group config files to Jenkins - * Build System: Add support for __atomic built-in operators. + One of the downaides of having things like test configuration + in the git repo is that it can't be changed at runtime. You have + to create a review for the changes and merge it mefore it will + take effect. - 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. + This review moves the data currently held in + tests/CI/periodic-dailyTestGroups.json and + tests/CI/gateTestGroups.json into a Jenkins Config File attached + to the job definitions. This allows us to alter it from the + Jenkins UI at runtime. The original files stay in the repo + as documentation. - ASTERISK~27619 + Change-Id: I14b9702f6285ce1fb2420287ba0e7d3b59109763 - Change-Id: I65b4feb02bae368904ed0fb03f585c05f50a690e +2019-04-13 13:36 +0000 [d0a8334e4f] Sean Bright -2017-12-29 02:57 +0000 [527cf5a570] Corey Farrell + * app_voicemail: Don't split mailbox options on comma - * Remove redundant module checks and references. + Because the per-mailbox options are the last thing on a line, don't look + for or stomp on any subsequent commas. - This removes references that are no longer needed due to automatic - references created by module dependencies. + ASTERISK-27935 #close + Reported by: Sébastien Duthil - In addition this removes most calls to ast_module_check as they were - checking modules which are listed as dependencies. + Change-Id: I07b2eb4a33c303d0c7114d5b906f8c067c60a153 - Change-Id: I332a6e8383d4c72c8e89d988a184ab8320c4872e +2019-04-12 09:33 +0000 [9b7a64cbf0] Sean Bright -2018-01-24 10:30 +0000 [b9e35bf6d3] Richard Mudgett + * pbx.c: Ignore dashes in extensions when using extenpatternmatchnew - * CHANGES: Add AMI action 'PJSIPShowContacts' note. + Because hyphens are not matched literally in Asterisk dialplan, we need + to ignore them in our candidate extensions as well. - ASTERISK-27581 + ASTERISK-17695 #close + Reported by: test011 - Change-Id: If6af275764741a11030f0a4fd324fa29b376d74e + Change-Id: I227f02301577b1633e8a55b9fe9dc149935c03f0 -2018-01-14 12:33 +0000 [5b8e71ab9f] Sungtae Kim +2019-04-09 10:10 +0000 [34b9b65098] Sean Bright - * res_pjsip: Add AMI action 'PJSIPShowContacts' + * app_voicemail: Cleanup stale lock files on module load - Add an AMI action which provides information on all - configured Contacts. + If Asterisk crashes while a VM directory is locked, lock files in the VM + spool directory will not get properly cleaned up. We now clear them on + module load. - ASTERISK-27581 + ASTERISK-20207 #close + Reported by: Steven Wheeler - Change-Id: I2eed42c74bbc725fad26b8b33b1a5b3161950c73 + Change-Id: If40ccd508e2f6e5ade94dde2f0bcef99056d0aaf -2018-01-18 20:19 +0000 [2f78dc2bfa] Richard Mudgett +2019-04-12 07:33 +0000 [898765d919] George Joseph - * pbx_variables.c: Misc fixes in variable substitution. + * ARI: Run 'make ari-stubs' - * Copy more than one character at a time when there is nothing to - substitute. + An earlier contributor apparently forgot to run 'make ari-stubs' + before committing after making ARI model changes. - * Fix off by one error if a '}' or ']' is missing. + Change-Id: I7813e5638e2821d11f4b968dc2aeab4f725190a6 - * 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. +2019-04-11 15:48 +0000 [116dc9c9b3] Sean Bright - * 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. + * res_ael: Create consistent label names across reloads - Change-Id: Ia83d99f4f16abe47f329eb39b6ff2013ae7c9854 + Reset the internal counter that the AEL2 compiler uses for unique label + names before compiling. This keeps dialplan labels consistent across + reloads assuming the AEL2 has not changed. -2018-01-18 09:01 +0000 [679fa5fb34] Corey Farrell + ASTERISK-17799 #close + Reported by: Kirill Katsnelson - * Add missing OPTIONAL_API and ARI dependences. + Change-Id: I30b3cc887d1ee0644d3f341e2fef16f525d7fae5 - 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. +2019-04-11 15:29 +0000 [ea3109beaa] Sean Bright - 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. + * res_ael: Use Gosub in for loop expressions - Change-Id: Ia0c70571f5566784f63605e78e1ceccb4f79c606 + In AEL2, if a 'for' statement contains macro* calls, like: -2018-01-22 09:18 +0000 [140f937c7e] Alexander Traud + for (&iterator(${TRY},A); "${A}" != ""; &iterate(A)) { - * res_config_mysql: Avoid the header mysql_version.h. + The AEL2 parser will translate these into calls to the deprecated Macro + dialplan application and use the antiquated pipe delimiter. - ASTERISK-27607 + Instead, convert these into calls to the Gosub dialplan application and + use commas as argument separators. - Change-Id: I23d00ded955c4afd5f2c3c9dc96dcb48b3f74eec + ASTERISK-18593 #close + Reported by: Luke-Jr -2018-01-05 14:46 +0000 [fd557ad041] Alexander Traud + * 'macro' in this context means AEL2 macros, not the 'Macro' application - * install_prereq: For PJProject, point users to configure script. + Change-Id: I3d73716033b8e3e42e0209d355bf5f10c97045fc - 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. +2019-04-11 11:03 +0000 [71c7864d1d] Sean Bright - ASTERISK-24598 + * res_ael: Fix pattern matching against literal '+' - Change-Id: Icbf4b562f81f7c05bd24a3805bd46c0beb4ebd44 + When generating the regular expression that matches against existing + extensions, we need to escape literal characters that can also be + regular expression metacharacters. This was already being done for '*' + but we need to do the same for '+'. -2018-01-20 12:58 +0000 [d427bb84a2] Alexander Traud + In passing, remove some unreachable code - strcmp() is already run + immediately when entering extension_matches(). - * BuildSystem: Remove AC_CONFIG_AUX_DIR. + ASTERISK-14939 #close + Reported by: klaus3000 - ASTERISK-27602 + Change-Id: I8d2cccb3479168fba1b0a6704c52198b396468f1 - Change-Id: I9f4d3d2bc1481748e39ad1e2b0a364d38e38978b +2019-04-11 12:49 +0000 [f91262272e] Sean Bright -2018-01-19 12:21 +0000 [693e509566] Alexander Traud + * pbx.c: Properly parse labels with leading digits - * BuildSystem: Remove orphaned .PHONY targets. + If the target of a Goto is a label that starts with a number, we + erroneously treat the leading digits as a priority. - Change-Id: Ic44d75141b9bf99e7d72fcc82ee111b5cf6989d2 + ASTERISK-20182 #close + Reported by: Janu -2018-01-19 12:14 +0000 [70137794e9] Alexander Traud + Change-Id: Ia78408c0805a729103917247ecfc802f6fafc94b - * BuildSystem: Allow make clean all again. +2019-04-10 18:07 +0000 [eec16b8e99] Alexander Anikin - ASTERISK-27600 - Reported by: Hamid R. Hashmi + * chan_ooh323: fix h323 log file path - Change-Id: I683d14d024650be04074b037b6300464519409f4 + Change h323 log path relative to AST_LOG_DIR instead of + /var/log/asterisk hardcoded + Add return back error message from OOH323EP initialize -2018-01-19 06:16 +0000 [93471373f6] Alexander Traud + ASTERISK-28348 #close - * install_prereq: Update Debian/Ubuntu libraries. + Reported by: Dmitry Shubin - ASTERISK-27555 + Change-Id: Ib102dd36bbe6c2a7a4ce6870ae9110d9000d7e98 - Change-Id: Ieb41b0cbf968af12882b39454b819ebb48b9ea46 +2019-04-09 16:47 +0000 [acfbfef8ad] Alexei Gradinari -2018-01-19 04:46 +0000 [4c511c1a4d] Alexander Traud + * res_pjsip: Fix transport_states ref leak - * install_prereq: Support package manager DNF and yum option strict=1. + Add missing ao2_ref(transport_state, -1) while iterate on a transport_states + container. - 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. + Change-Id: I40e35b5a339121300c80075c30db47201a6c374e - ASTERISK-27598 - Reported by: Hunter Stevens, Said Masoud +2019-04-01 14:57 +0000 [ef404fef91] Ben Ford - Change-Id: I40f9517122aaa6906e8fc0962b4b8008dfddb368 + * build: Revise CHANGES and UPGRADE.txt handling. -2018-01-09 11:29 +0000 [77f2814d01] Benoît Dereck-Tricot + This changes the way that we handle adding changes to CHANGES and + UPGRADE.txt. The reason for this is because whenever someone needed to + make a change to one of these files and someone else had already done + so, you would run into merge conflicts. With this new setup, there will + never be merge conflicts since all changes will be documented in the + doc/-staging directory. The release script is now responsible for + merging all of these changes into the appropriate files. - * pbx: Reduce verbosity while loading extensions + There is a special format that these files have to follow in order to be + parsed. The files do not need to have a meaningful name, but it is + strongly recommended. For example, if you made a change to pjsip, you + may have something like this "res_pjsip_relative_title", where + "relative_title" is something more descriptive than that. Inside each + file, you will need a subject line for your change, followed by a + description. There can be multiple subject lines. The file may look + something like this: - 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. + Subject: res_pjsip + Subject: Core - ASTERISK-27084 + A description that explains the changes made and why. The release + script will handle the bulleting and section separators! - Change-Id: I5662902161c50890997ddc56835d4cafb456c529 + You can still separate with new lines within your + description. -2018-01-18 14:55 +0000 [5964061a21] Sean Bright + The headers ("Subject" and "Master-Only") are case sensative, but the + value for "Master-Only" ("true" or "True") is not. - * res_pjsip: Document tlsv1_1 and tlsv1_2 methods + For more information, check out the wiki page: + https://wiki.asterisk.org/wiki/display/AST/CHANGES+and+UPGRADE.txt - Change-Id: I67ed9039bf3f132fb20ee7a750e0aef0f704d7d3 + ASTERISK-28111 #close -2018-01-08 23:50 +0000 [33d5ab3e69] Igor Goncharovsky + Change-Id: I19cf4b569321c88155a65e9b0b80f6d58075dd47 - * chan_unistim: Fix hold function ability to lock/crash asterisk +2019-04-04 16:02 +0000 [85bbb7a3e8] Chris-Savinovich - 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 + * config.c: Fix a crash in extconfig parsing - ASTERISK-26596 #close + When extconfig.conf file is parsed, the code previously searched for + character comma without verifying if error (null or blank). This caused + a segmentation error. - Change-Id: Ib1e04e482e7c8939607a42d7fddacc07e26e14d4 + Change-Id: Id76b452d8f330d11c2742c37232761ad71472a8b -2017-10-29 22:00 +0000 [25cb1ab05b] Corey Farrell +2019-04-03 10:55 +0000 [7e5b4b8616] Salah Ahmed - * loader: Add support for built-in modules. + * chan_pjsip: DTMF Mode auto_info fallback lead to both inband and info - * Add SRC_EMBEDDED variable to main/Makefile. Built-in module sources - must be listed in this variable to ensure they get the correct CFLAGS. + When the dtmf_mode on an endpoint is configured as "auto_info" + Asterisk will produce an inband DTMF tone alongside an INFO + message when sending DTMF. - Change-Id: I920852bc17513a9c2627061a4ad40511e3a20499 + ASTERISK-28371 -2017-12-09 00:03 +0000 [e6142a1282] Corey Farrell + Change-Id: I1380b82f006e110a1b83fbb50c9873edd13a5d9a - * 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. +2019-03-21 18:09 +0000 [d5a318f148] sungtae kim - Change-Id: I60c15cd57ff9680b62e2a94c7519401fa4a38e45 + * main/json.c: Added app_name, app_data to channel type -2017-12-08 23:30 +0000 [a80cbb046e] Corey Farrell + It was difficult to check the channel's current application and + parameters using ARI for current channels. Added app_name, app_data + items to show the current application information. - * loader: Remove global symbol only startup phase. + ASTERISK-28343 - 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: Ia48972b3850e5099deab0faeaaf51223a1f2f38c - Change-Id: I33e3174d67f3b4552d3d536326dcaf0ebabb097d +2019-04-02 15:49 +0000 [8ec4de7501] Sebastian Kemper -2017-11-21 23:39 +0000 [3b73ed28c5] Corey Farrell + * loader: support for permanent dlopen() - * loader: Process module dependencies. + Asterisk assumes that dlopen() will always run the constructor of a + shared library and every dlclose() will run its destructor. But dlopen() + may be permanent, meaning the constructor will only be run once, as is + the case with musl libc. - * 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. + With a permanent dlopen() the Asterisk module loader does not work + correctly, because it's expectations regarding when the constructors and + destructors are run are not met. In fact a segmentation fault will occur + when the first module is "re-opened" that has AST_MODFLAG_GLOBAL_SYMBOLS + set (the dlopen() does not call the constructor, resource_being_loaded + is not set to NULL, then strlen is called with NULL instead of a string, + see issue ASTERISK-28319). - Module dependencies result in automatic references being managed by the - module loader. This enforces unload order. + This commit adds code to the loader that will manually run the + constructors/destructors of the (non-builtin) modules where needed. To + achieve this a new ao2 container (linked list) is started and filled + with objects that contain the names of the modules and the pointers to + their respective info structs. - Change-Id: I9be08d1dd331aceadc1dcba00b804d71360b2fbb + This behavior can be activated when configuring Asterisk + (--enable-permanent-dlopen). By default this is disabled, of course. -2017-12-27 17:44 +0000 [86b484dec7] Graham Mainwaring + ASTERISK-28319 #close - * app_followme: Add a prompt to be read when a call is connected + Signed-off-by: Sebastian Kemper + Change-Id: I86693a0ecf25d5ba81c73773a03df4abc3426875 - 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. +2019-04-03 17:55 +0000 [1464a6b80f] George Joseph - ASTERISK-24372 #close + * CI: Add --no-dev-mode option to buildAsterisk.sh - Change-Id: I6ec1c6c883347f7d1e1f597189544993c8d65272 + The new option disables dev mode, TEST_FRAMEWORK and + MALLOC_DEBUG making the build more production-like. -2018-01-17 00:28 +0000 [4fd303b630] Corey Farrell + Change-Id: Ieb72497d4d91d5416684aaed702cc3f532099738 - * loader: Miscellaneous fixes. +2019-04-03 10:24 +0000 [8961d9ca8b] Ben Ford - * 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. + * build: Fix compiler warnings/errors. - Change-Id: I22261599c46d0f416e568910ec9502f45143197f + The compiler complained about a couple of variables that weren't + initialized but were being used. Initializing them to NULL resolves the + warnings/errors. -2018-01-17 08:36 +0000 [2a1b52cc67] Alexander Traud + ASTERISK-28362 #close - * BuildSystem: Use the detected name for MD5 everywhere. + Change-Id: I6243afc5459b416edff6bbf571b0489f6b852e4b - Affacted the (automatic) download script for external modules: - ./build_tools/download_externals +2019-03-27 12:59 +0000 [94eeba6147] Kevin Harwell - ASTERISK-27596 + * bridge_softmix: use a float type to store the internal REMB bitrate - Change-Id: If4c3176f7bf58df32fec6e02a659f1a78d57cf4b + REMB's exponent is 6-bits (0..63) and has a mantissa of 18-bits. We were using + an unsigned integer to represent the bitrate. However, that type is not large + enough to hold all potential bitrate values. If the bitrate is large enough + bits were being shifted off the "front" of the mantissa, which caused the + wrong value to be sent to the browser. -2018-01-17 07:11 +0000 [4cd3f5c162] Alexander Traud + This patch makes it so it now uses a float type to hold the bitrate. Using a + float allows for all bitrate values to be correctly represented. - * BuildSystem: Invoke install not in GNU but POSIX style. + ASTERISK-28255 - ASTERISK-27594 + Change-Id: Ice00fdd16693b16b41230664be5d9f0e465b239e - Change-Id: Iaaa6a19d2fe031dffcba441d0502a7ea65c93cb3 +2019-03-27 14:30 +0000 [ae1aeb930e] Matthew Fredrickson -2018-01-17 06:47 +0000 [7e7a20642c] Alexander Traud + * res/res_rtp_asterisk: Enable rxjitter calculation for video - * BuildSystem: In OpenBSD, xmlstarlet is xml. + It looks like we're not properly calculating jitter values on received + video streams. This patch enables the code that does jitter calculations + for those streams. - ASTERISK-27593 + Change-Id: Iaac985808829c8f034db8c57318789c4c8c11392 - Change-Id: I1c7087f7f7582e40b3312c690d912c9a86466805 +2019-01-26 15:51 +0000 [5815597a21] sungtae kim -2018-01-17 02:51 +0000 [8f31b70246] Alexander Traud + * stasis.c: Added topic_all container - * BuildSystem: Detect external library Lua in version 5.3. + Added topic_all container for centralizing the topic. This makes more + easier to managing the topics. - 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. + Added cli commands. + stasis show topics : It shows all registered topics. + stasis show topic : It shows speicifed topic's detail info. - ASTERISK-27592 + ASTERISK-28264 - Change-Id: If7a4b395d844a464e9a1f4f626c5bff4ee67eed8 + Change-Id: Ie86d125d2966f93de74ee00f47ae6fbc8c081c5f -2017-12-22 19:50 +0000 [8494e78010] Richard Mudgett +2019-03-02 05:37 +0000 [bbc13b1f1f] sungtae kim - * res_pjsip: Split type=identify to IP address and SIP header matching priorities + * res/res_ari: Added ARI resource /ari/channels/{channelId}/rtp_statistics - 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. + Added ARI resource for channel statistics. + GET /ari/channels/{channelId}/rtp_statistics : It returns given + channel's rtp statistics detail. - * 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-28320 - ASTERISK-27491 + Change-Id: I4343eec070438cec13f2a4f22e7fd9e574381376 - Change-Id: I9df142a575b7e1e3471b7cda5d3ea156cef08095 +2019-03-26 13:07 +0000 [d4cd2a9706] Sean Bright -2018-01-16 08:32 +0000 [7ed7d525fb] Richard Mudgett + * pjproject: Add timer patch from pjproject r5934 - * taskprocessor.c: Increase the number of tps_singletons container buckets. + ASTERISK-28161 #close + Reported by: Ross Beer - 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. + Change-Id: I65331d554695753005eaa66c1d5d4807fe9009c8 - 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. +2019-12-23 20:15 +0000 Asterisk Development Team - Change-Id: Ice0603606614ba49f7c0c316c524735c064e7e43 + * asterisk certified/16.3-cert1 Released. -2018-01-16 08:20 +0000 [f0a3c977d6] George Joseph +2019-12-04 15:01 +0000 [3f770e50d6] George Joseph - * pjproject_bundled: Prevent crash on bad outgoing header + * res_rtp_asterisk: Add frame list cleanups to ast_rtp_read - 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. + In Asterisk 16+, there are a few places in ast_rtp_read where we've + allocated a frame list but return a null frame instead of the list. + In these cases, any frames left in the list won't be freed. In the + vast majority of the cases, the list is empty when we return so + there's nothing to free but there have been leaks reported in the + wild that can be traced back to frames left in the list before + returning. - For several users, this crash happens when sending 183 progress - messages. + The escape paths now all have logic to free frames left in the + list. - ASTERISK-26832 - Reported by: Ross Beer, Jan Rozhon + ASTERISK-28609 + Reported by: Ted G - Change-Id: Ie5c5a921c890c843587763e7f33f987dfe66bd16 + Change-Id: Ia1d7075857ebd26b47183c44b1aebb0d8f985f7a -2018-01-16 06:34 +0000 [a046305fae] Alexander Traud +2019-12-11 18:03 +0000 [b6572d35e4] Joshua C. Colp - * BuildSystem: Avoid $EUID and use id -u instead. + * confbridge: Add support for specifying maximum sample rate. - 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. + ConfBridge has the ability to move between different sample + rates for mixing the conference bridge. Up until now there has + only been the ability to set the conference bridge to mix at + a specific sample rate, or to let it move between sample rates + as necessary. This change adds the ability to configure a + conference bridge with a maximum sample rate so it can move + between sample rates but only up to the configured maximum. - ASTERISK-27589 + ASTERISK-28658 - Change-Id: Ia6e74f5bc9aab4e6dc62b7439f647b7964e6f657 + Change-Id: Idff80896ccfb8a58a816e4ce9ac4ebde785963ee -2018-01-15 18:03 +0000 [6fbe315f77] Richard Mudgett +2019-11-22 10:39 +0000 [f9b6586020] Thomas Arimont (license 5525) - * cel_odbc.c: Fix menuslect module description display. + * channel.c: Resolve issue with receiving SIP INFO packets for DTMF - 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. + The problem is essentially the same as in ASTERISK~28245. Besides + the direct media scenario we have an additional scenario where a + special client is involved. This device mutes audio by default in + transmit direction (no rtp frames) and activates audio only by a + foot switch. In this situation dtmf input (pin for conferences, + transfer features codes , etc) using SIP INFO mode is not + understood properly especially when SIP INFO messages are sent + quickly. - Change-Id: I80f13a63818e4e28d683639a94a4dfaea405c1d5 + This patch ensures that SIP INFO frames are properly queued and + processed in the above scenario. The patch also corrects situations + where successive dtmf events are received quicker than the + signalled event duration (plus minimum gap/pause) allows, i.e. DTMF + events have to be buffered in the ast channel read queue and + emulation has to be processed asynchronously at slower speed. -2017-11-19 16:30 +0000 [9cfdb81e91] Corey Farrell + Reported by: Thomas Arimont + patches: + trigger_dtmf_emulation.patch submitted by Thomas Arimont (license 5525) - * loader: Add dependency fields to module structures. + Change-Id: I309bf61dd065c9978c8e48f5b9a936ab47de64c2 - * Declare 'requires' and 'enhances' text fields on module info structure. - * Rename 'nonoptreq' to 'optional_modules'. - * Update doxygen comments. +2019-11-25 06:55 +0000 [bafd5f9908] Joshua Colp - Still need to investigate dependencies among modules I cannot compile. + * parking: Fall back to parker channel name even if it matches parkee. - Change-Id: I3ad9547a0a6442409ff4e352a6d897bef2cc04bf + ASTERISK-28631 -2017-11-19 20:10 +0000 [35ae99c712] Corey Farrell + Change-Id: Ia74d084799fbb9bee3403e30d2391aacd46243cc - * vector: Additional string vector definitions. +2019-11-22 09:40 +0000 [e4b024ec11] Ben Ford - 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. + * gitreview: Point to correct branch. - ast_vector_const_string: - A vector of 'const char *'. + Change-Id: I6f709a45a0d4ebadf8d51f64bd3509b1382d0496 - Change-Id: I1bf02a1efeb2baeea11c59c557d39dd1197494d7 +2019-10-21 14:55 +0000 [e989cb4590] Ben Ford -2018-01-15 10:57 +0000 [645297614e] Alexander Traud + * chan_sip.c: Prevent address change on unauthenticated SIP request. - * BuildSystem: Resolve resolv.h not via Generic but Particular Header-Check. + If the name of a peer is known and a SIP request is sent using that + peer's name, the address of the peer will change even if the request + fails the authentication challenge. This means that an endpoint can + be altered and even rendered unusuable, even if it was in a working + state previously. This can only occur when the nat option is set to the + default, or auto_force_rport. - ASTERISK-27585 + This change checks the result of authentication first to ensure it is + successful before setting the address and the nat option. - Change-Id: I27c67563788e6f67eeda5fb51a741823a50a95e2 + ASTERISK-28589 #close -2018-01-13 13:49 +0000 [cabe80631b] George Joseph + Change-Id: I581c5ed1da60ca89f590bd70872de2b660de02df - * config_transport: Enable TCP_NODELAY on TLS transports +2019-10-24 12:41 +0000 [4e80a32ebd] George Joseph - We did this for TCP transports already but I'm not sure why we - didn't do it for TLS transports. + * manager.c: Prevent the Originate action from running the Originate app - ASTERISK_27474 #not_final_fix + If an AMI user without the "system" authorization calls the + Originate AMI command with the Originate application, + the second Originate could run the "System" command. - Change-Id: I5b1ef4b882f7b859e718236686b7898751dbb262 + Action: Originate + Channel: Local/1111 + Application: Originate + Data: Local/2222,app,System,touch /tmp/owned -2018-01-12 18:37 +0000 [de7f2a6cb4] Corey Farrell + If the "system" authorization isn't set, we now block the + Originate app as well as the System, Exec, etc. apps. - * res_stasis_recording: Allow symbolic links in configured recordings dir. + ASTERISK-28580 + Reported by: Eliel Sardañons - 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. + Change-Id: Ic4c9dedc34c426f03c8c14fce334a71386d8a5fa - This is needed by the testsuite when run by 'run-local'. +2019-11-20 12:56 +0000 [c551fd3ec9] Kevin Harwell - Change-Id: I9145e841865edadcb5f75cead3471ad06bbb56c0 + * res_pjsip_outbound_registration: add support for SRV failover -2018-01-12 12:00 +0000 [99535b0497] Corey Farrell + ASTERISK-28624 - * menuselect: Remove unused dev-mode option TRACE_FRAMES. + Change-Id: I8da7c300dd985ab7b10dbd5194aff2f737808561 - ASTERISK-27575 #close +2019-11-15 04:46 +0000 [de568ddcd4] Joshua Colp - Change-Id: Ica3a522892afed7a96816a5ecf140e1671f46ad4 + * parking: Fix case where we can't get the parker. -2018-01-12 03:50 +0000 [eb9b85baec] Alexander Traud + ASTERISK-28616 - * res_config_pgsql: Avoid typecasting an int to unsigned char. + Change-Id: Iabe31ae38d01604284fcc5c2438d44e29a32ea4d - clang 5.0 warned about this. +2019-11-12 05:00 +0000 [728a1ba77a] Joshua Colp - ASTERISK-27576 + * parking: Use channel snapshot instead of channel. - Change-Id: If41f400a51973c06cdb9b75462e535b616bfe385 + There exists a scenario where a thread can hold a lock on the + channels container while trying to lock a bridge. At the same + time another thread can hold the lock for said bridge while + attempting to retrieve a channel. This causes a deadlock. -2018-01-12 03:17 +0000 [cff3add680] Alexander Traud + This change fixes this scenario by retrieving a channel snapshot + instead of a channel, as information present in the snapshot + is all that is needed. - * BuildSystem: Really do not pass unknown-warning options to the compiler. + ASTERISK-28616 - 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. + Change-Id: I68ceb1d62c7378addcd286e21be08a660a7cecf2 - ASTERISK-27560 +2019-09-24 11:21 +0000 [a801a7dae2] Kevin Harwell - Change-Id: Ia9d148e689c173df4e91699113605dab2de36038 + * res_pjsip_pubsub: change warning to debug -2018-01-12 04:27 +0000 [685bab254c] Alexander Traud + The following message: - * app_osplookup.c: Avoid two format truncations. + "Subscription request from endpoint rejected. Expiration of 0 is invalid" - GCC 7 warned about this. + Would sometimes spam the log with warnings if Asterisk restarted and a bunch + of clients sent unsubscribes. This patch changes it from a warning to a debug + message. - ASTERISK-27578 + Change-Id: I841ec42f65559f3135e037df0e55f89b6447a467 - Change-Id: I4a00458dbe9b575ef04338b6a7852272745e1552 +2019-09-23 11:01 +0000 [d811289498] Kevin Harwell -2018-01-12 04:03 +0000 [797747afa7] Alexander Traud + * res_sorcery_memory_cache: stale item update leak - * chan_ooh323: Avoid typecasting an int to unsigned short. + When a stale item was being updated the object was being retrieved, but its + reference was not being decremented after the update. This patch makes it so + the object is now appropriately de-referenced. - clang 5.0 warned about this. + ASTERISK-28523 - ASTERISK-27577 + Change-Id: I9d8173d3a0416a242f4eba92fa0853279c500ec7 - Change-Id: I898fe4255023138a9e8b579fe4482fcf582f2b78 +2019-09-15 14:35 +0000 [38c4d43820] Joshua Colp -2018-01-05 15:13 +0000 [b9e2b72de6] Alexander Traud + * chan_pjsip: Relock correct channel during "fax" redirect. - * install_prereq: Update Debian/Ubuntu libraries. + When fax detection occurs on an outbound PJSIP channel the + redirect operation will result in a masquerade occurring and + the underlying channel on the session changing. The code + incorrectly relocked the new channel instead of the old + channel when returning. This resulted in the new channel + being locked indefinitely. The code now always acts on the + expected channel. - ASTERISK-27555 + ASTERISK-28538 - Change-Id: I0818b6e42631be1b69237e2b41d3415275693e53 + Change-Id: I2b2e60d07e74383ae7e90d752c036c4b02d6b3a3 -2018-01-11 12:05 +0000 [6d5f4768a4] Joshua Colp +2019-08-20 15:05 +0000 [93736ffc7f] Alexei Gradinari (license 5691) - * chan_sip: Check that an iostream exists before accessing. + * AST-2019-004 - res_pjsip_t38.c: Add NULL checks before using session media - Before getting the file descriptor for an iostream check - that it is present. + After receiving a 200 OK with a declined stream in response to a T.38 + initiated re-invite Asterisk would crash when attempting to dereference + a NULL session media object. - ASTERISK-27534 + This patch checks to make sure the session media object is not NULL before + attempting to use it. - Change-Id: Ie0aa1394007a37c30e337ea1176a6fb3a63bc99c + ASTERISK-28495 + patches: + ast-2019-004.patch submitted by Alexei Gradinari (license 5691) -2018-01-11 08:09 +0000 [30b5ec023f] Tzafrir Cohen + Change-Id: I168f45f4da29cfe739acf87e597baa2aae7aa572 + (cherry picked from commit 965df3c228d49bcde3503e0482f3c831dcbf6c77) - * Ignore quilt .pc directory, used in deb packaging +2019-09-04 16:19 +0000 [eac6f2b0a2] Chris-Savinovich - 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 . + * test_utils.c: Skip test adsi_loaded_test if module not loaded. - Change-Id: I22c90f3d7ab8918e6216e7b686de6fa0e1fdaa7b - Signed-off-by: Tzafrir Cohen + Module res_adsi.so is deprecated, therefore it does not load by default. + Module not loaded causes it to yield a FAIL when tested by tests/test_utils.c. + This fix checks if the corresponding module is loaded at the start of the test, + and if not, it passes the test and exits with a message. -2018-01-09 11:23 +0000 [f0eb00d1e7] Corey Farrell + This fix is applied to all versions where the module is marked deprecated. - * stasis: Remove silly usage of RAII_VAR. + Change-Id: I52be64c8f6af222e15148a856d1f10cb113e1e94 - Change-Id: Ib11193531e797bcb16bba560a408eab155f706d1 +2019-08-08 12:10 +0000 [e5b33bb979] George Joseph -2018-01-09 11:09 +0000 [a383e1ddb1] Corey Farrell + * CI: Escape backslashes in printenv/sort/tr - * stasis_cache_pattern: Remove silly usage of RAII_VAR. + Change-Id: I52be64c8f6af2bbe15148a856d1f10cb113e1e94 - Change-Id: Ic98a51f555062cd863b6db3f8d76065943a9dea3 +2019-08-08 07:12 +0000 [a9aa952e0f] George Joseph -2018-01-09 16:23 +0000 [9e2fcb82ed] Sean Bright + * CI: Add "throttle" label and "skip_gate" capability - * cdr_syslog: Deprecate unmaintained module + To make throttling by label fully active, the "throttle" option + has to be specified with a specific label. - 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. + You can now specify "skip_gate" in the Gerrit comments when you + do a +2 code review to tell Jenkins not to actually run the + gate. You'd do this if you plan to manually merge the change. - 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. + Also updated the "printenv" debug output to better sort multi-line + comments. - Change-Id: Ic77b94cd97f355a9cf5b1d3f3444964a6e0ba5dc + Change-Id: I4c0b1085acec4805f2ca207eebac50aad81f27e2 -2018-01-09 11:16 +0000 [0de004dd85] Corey Farrell +2019-08-06 10:40 +0000 [475a8214fe] George Joseph - * stasis_bridges: Remove silly usage of RAII_VAR. + * CI: Make node labels job-specific - Change-Id: I0fa7ab05454f183dc4ff10e26d18776d2b0fcf1f + Originally, the eligible nodes for a job were labelled only by + "swdev-docker". So basically any node could run any job. We had + found that allowing a node to run more than 1 gate at a time was + problematic so we limited the nodes to processing 1 job at a time. + With the creation of the Asterisk 17 branches however, we now have + so many active branches that getting checks and gates through in + a timely manner is problematic when a node can run only 1 job + at a time. -2018-01-09 11:10 +0000 [01127e1664] Corey Farrell + Now the nodes are also labelled by the job type they can run. + For instance: "asterisk-check", "asterisk-gate", etc. With the + "Throttle Concurrent Builds" plugin, we can now allow a node to + run more than 1 job BUT throttle by job type. For instance: + Allow 2 jobs but only 1 asterisk-gate at a time. + Now a node can run 2 checks or 1 check and 1 gate or 1 gate but + not 2 gates at a time. - * stasis_cache: Remove silly usage of RAII_VAR. + Change-Id: I2032bf6afbcec5c341d9b852214c0c812d3d6db5 - Change-Id: Ifa95e5801c949df296c7e4376347730fb0ed52ef +2019-07-26 08:40 +0000 [0a9a04338d] George Joseph -2018-01-09 10:57 +0000 [175a9ef873] Corey Farrell + * .gitreview: Update defaultbranch for certified - * stasis_endpoints: Remove silly usage of RAII_VAR. + Change-Id: I3dc35bdd6df92595f6941e92257986943fb50c2e - Change-Id: Ic099dc552f36c353c89783a4bcfd09f010432733 +2019-07-24 15:15 +0000 [e6622f6697] George Joseph -2018-01-09 10:55 +0000 [4b655184b0] Corey Farrell + * CI: Don't enable non-core modules in Certified branches - * stasis_message_router: Remove silly usage of RAII_VAR. + We don't support non-core modules for Certified releases but we + were enabling them for CI builds which was causing lots of test + failures. Now we don't. - Change-Id: I50d6ae230920e0b878ed9cc8f79eef746e06701d + Change-Id: I0b3254c08a2479f3d39151690350cce5ce5ad766 -2018-01-09 10:53 +0000 [3074c4165c] Corey Farrell +2019-06-12 13:03 +0000 [e3180a9ef0] George Joseph - * stasis_system: Remove silly usage of RAII_VAR. + * res_pjsip_messaging: Check for body in in-dialog message - Change-Id: Iedbe5656cee68cd3a96a953558764aa02d4a0c3b + We now check that a body exists and it has a length > 0 before + attempting to process it. -2018-01-03 17:26 +0000 [8f3167c5f1] Richard Mudgett + ASTERISK-28447 + Reported-by: Gil Richard - * res_pjsip.c: Update the endpoint identification documentation. + Change-Id: Ic469544b22ab848734636588d4c93426cc6f4b1f - * Endpoint identify_by documentation. - * IP/Header endpoint identifier documentation. +2019-06-28 11:15 +0000 [f087d70ed0] Francesco Castellano - Change-Id: Id92f00b495acca7be945daf749d2abd7f76a0b5a + * chan_sip: Handle invalid SDP answer to T.38 re-invite -2018-01-03 15:20 +0000 [42a61d9db6] Richard Mudgett + The chan_sip module performs a T.38 re-invite using a single media + stream of udptl, and expects the SDP answer to be the same. - * res_pjsip_endpoint_identifier_ip.c: Remove unnecessary requirement. + If an SDP answer is received instead that contains an additional + media stream with no joint codec a crash will occur as the code + assumes that at least one joint codec will exist in this + scenario. - 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. + This change removes this assumption. - * Remove the code change that enforces the requiremnt. Listing the "ip" - method in the identify_by value is simply documentation. + ASTERISK-28465 - Change-Id: Ia057f92a33fb5d9f51dc5d5692e3d5ee1a6f2c11 + Change-Id: I8b02845b53344c6babe867a3f0a5231045c7ac87 -2018-01-05 19:03 +0000 [a7bbb18e5c] Richard Mudgett +2019-05-17 18:44 +0000 [3489fd015e] George Joseph - * res_pjsip.c: Fix ident_to_str() and refactor ident_handler(). + * res_rtp_asterisk: Add ability to propose local address in ICE - * Extracted sip_endpoint_identifier_type2str() and - sip_endpoint_identifier_str2type() to simplify the calling functions. + You can now add the "include_local_address" flag to an entry in + rtp.conf "[ice_host_candidates]" to include both the advertized + address and the local address in ICE negotiation: - * Fixed pjsip_configuration.c:ident_to_str() building the endpoint's - identify_by value string. + [ice_host_candidates] + 192.168.1.1 = 1.2.3.4,include_local_address - Change-Id: Ide876768a8d5d828b12052e2a75008b0563fc509 + This causes both 192.168.1.1 and 1.2.3.4 to be advertized. -2018-01-04 17:04 +0000 [be488eb14a] Richard Mudgett + Change-Id: Ide492cd45ce84546175ca7d557de80d9770513db - * res_pjsip_endpoint_identifier_ip.c: Allow multiple IdentifyDetail AMI events. +2019-05-20 12:45 +0000 [b62f3acd83] Joshua Colp - 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. + * pjproject-bundled: Add upstream timer fixes - * Reworked format_ami_endpoint_identify() to generate as many - IdentifyDetail AMI events as there are matching identifiers. + Fixed #2191: + - Stricter double timer entry scheduling prevention. + - Integrate group lock in SIP transport, e.g: for add/dec ref, + for timer scheduling. - Change-Id: Ie146792aef72d78e05416ab5b27bc552a30399db + ASTERISK-28161 + Reported-by: Ross Beer -2018-01-05 05:51 +0000 [3a7d917256] Alexander Traud + Change-Id: I2e09aa66de0dda9414d8a8259a649c4d2d96a9f5 - * translate: Avoid absolute value on unsigned substraction. +2019-05-21 12:26 +0000 [43e1757b10] George Joseph - 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. + * Prepare certified/16.3 - ASTERISK-27549 + * Update all extended and deprecated modules to set + defaultenabled = no - Change-Id: Ib904d9ee0d46b6fdd1476fbc464fbbf813304017 + * Change .version to certified/16.3 -2018-01-09 08:22 +0000 [25022de875] Sean Bright + Change-Id: Idc92d5c797678fba755536fe4a27297d959f67e9 - * Revert "codec_opus: Make libcurl a dependency in menuselect" +2019-04-04 09:49 +0000 [60a3800ed2] Asterisk Development Team - This reverts commit 028f4320de60a204e457ad606ab0a3318493b431. + * Update for 16.3.0 - Change-Id: Ieb91f825cb55202a937f5361c01d356e7662b70c +2019-04-03 10:24 +0000 [c4027dbf2d] Ben Ford -2018-01-08 10:54 +0000 [a21841bf40] Joshua Colp + * build: Fix compiler warnings/errors. - * res_pjsip_session: Always bundle streams if WebRTC is enabled. + The compiler complained about a couple of variables that weren't + initialized but were being used. Initializing them to NULL resolves the + warnings/errors. - 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-28362 #close - ASTERISK-27566 + Change-Id: I6243afc5459b416edff6bbf571b0489f6b852e4b - Change-Id: I7fe9b7ac35a2798627d9c2c8369129f407af6461 +2019-04-01 09:55 +0000 [481e41a537] Asterisk Development Team -2018-01-08 20:25 +0000 [d46cbe788a] Corey Farrell + * Update for 16.3.0-rc1 - * bridge_softmix: Fix sfu_append_source_streams test. +2019-03-29 08:07 +0000 [6f5a6072ab] Sean Bright - * 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. + * app_queue: Fix a few member pause bugs - Change-Id: I6b1dd8bed10439d3c7406f033eb1896b6c419147 + * Always set member->lastpause when setting member->paused -2018-01-08 18:47 +0000 [5380fb9978] Corey Farrell + * Fixed typo (using member->lastcall instead of member->lastpause) in + 'queue show' output. - * app_confbridge: Fix NULL check in action_kick_last. + * Use a constant 'now' in 'queue show' output for a better point-in-time + view of time based stats. - 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. + ASTERISK-27541 #close + Reported by: César Benjamín García Martínez - Change-Id: I274f737aa8af9d2d53e4a78cdd7ad57561003945 + Change-Id: Ib41ced90cfdb66f9bb1e7b263d0f6fc1ac6e18fa -2018-01-06 02:17 +0000 [55a540272f] Corey Farrell +2019-03-26 14:56 +0000 [64279e5992] Ben Ford - * res_stasis: Reduce RAII_VAR usage. + * alembic: Fix errors during upgrade head. - 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. + When trying to upgrade using alembic, a couple different errors kept + popping up that prevented the upgrade. An additional parameter was + needed when changing the schema for mwi_subscribe_replaces_unsolicited + from an integer to an enum. When changing from a string to an enum, the + type needed to be cast for postgresql. The other issue was a parameter + being used during column creation that did not exist. - Change-Id: I4ce67120583a446babf9adeec678b71d37fcd9e5 + After fixing the upgrade process, it revealed errors with the downgrade + process. One was a variable not being defined in the downgrade function, + and the other was tables not existing when using MySQL. This was due to + a context check that should have encompassed MySQL, but in the end was + not doing so. -2018-01-04 18:47 +0000 [faeb9e1b26] Sungtae Kim + Change-Id: Ib4d70cf3ce5080023a50be496272a777b55d6c8e - * res_pjsip: Add AMI action 'PJSIPShowAuths' +2019-03-27 11:03 +0000 [636e301f91] Ben Ford - Add an AMI action which provides information on all - configured Auths. + * build: Add staging directories for future changes. - ASTERISK-27547 + This is the first step in changing the release process so that changes + made to the CHANGES and UPGRADE.txt files do not result in merge + conflicts every time multiple people modify these files. The changes + made will go in these new directories: doc/CHANGES-staging and + doc/UPGRADE-staging. The README.md files explain how things will work, + but here's a little overview. When you make a change that would go in + either CHANGES or UPGRADE.txt, this should instead be documented in a + new file in the doc/CHANGES-staging or doc/UPGRADE-staging directory, + respectively. The format will look like this: - Change-Id: I1a88a75b38a2b1dd9d1de6c0307b20a3f584c817 + Subject: res_pjsip -2018-01-07 21:38 +0000 [8b3083cac5] Corey Farrell + A description that explains the changes made and why. The release + script will handle the bulleting and section separators! The + 'Subject:' header is case-sensitive. - * res_stasis: Fix dial bridge unload. + You can still separate with new lines within your description. - If the dial bridge has been created it must be released by calling - ast_bridge_destroy, simply releasing the ao2 reference is not enough. + Subject: res_ari + Master-Only: true - 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. + You can have more than one subject, and they don't have to be the + same! Also, the 'Master-Only' header should always be true and is + also case-sensitive (but the value is not - you can have 'true' or + 'True'). This header will only ever be present in the master branch. - Change-Id: I372302de94ca63876069e2585a049c5060e5e767 + For more information, check out the wiki page: + https://wiki.asterisk.org/wiki/display/AST/CHANGES+and+UPGRADE.txt -2018-01-07 20:21 +0000 [6870ba5f26] Corey Farrell + This is an initial change for ASTERISK_28111. Functionally, this will + make no difference, but it will prep the directories for when the + changes from CHANGES and UPGRADE.txt are extracted. - * res_stasis: Fix app_is_subscribed_bridge_id. + Change-Id: I8d852f284f66ac456b26dcb899ee46babf7d15b6 - 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. +2019-03-26 16:55 +0000 [3e5b26ae0a] Sean Bright - Change-Id: Ib5caca69e11727c5c8a7284a1d00621f40f1e60a + * app_queue: Fix documentation for QUEUE_MEMBER function. -2018-01-05 07:44 +0000 [7e9781c25e] Alexander Traud + It was a copy/paste of the QUEUE_MEMBER_COUNT function's synopsis. - * General: Silence modules on (un)load. + ASTERISK-20986 #close + Reported by: Olivier Krief - 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. + Change-Id: If51ec481feb35824a4e78ab5600b197b819b10be - ASTERISK-27553 +2019-03-25 06:34 +0000 [4d8cd2efbe] Joshua Colp - Change-Id: I9f105f46d72553994e820679bfde3478a551b281 + * manager: Use separate lock for session event notification. -2018-01-06 15:40 +0000 [512286e3c8] Alexander Traud + When notifying a manager session that new events were available + the same lock was used that was also held when doing things within + the session (such as sending events out). If the manager session + blocked for a period of time this would cause a back up of messages + in Stasis and would also block any other sessions from receiving + events. - * BuildSystem: Really do not pass unknown-warning options to the compiler. + This change adds a separate lock to the manager session which is + strictly used for notifying it that new events are available. - 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-28350 - ASTERISK-27560 + Change-Id: Ifbcac007faca9ad0231640f5e82a6ca9228f261b - Change-Id: Ia9b7747f649b27ff5e9f75c3db3fee4fe7a29621 +2019-03-25 18:05 +0000 [e51bd0726b] Alexei Gradinari -2018-01-06 01:25 +0000 [f84fcc1fc1] Alexander Traud + * pjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs - * General: Avoid implicit conversion to char when changes value to negative. + The next usage of PJSIP_PARSE_URI will crash asterisk + ${PJSIP_PARSE_URI(tel:+1234567890,host)} + or + ${PJSIP_PARSE_URI(192.168.1.1:5060,host)} - clang 5.0 warned about this. + The function pjsip_parse_uri successfully parses then, but returns + struct pjsip_other_uri *. - ASTERISK-27557 + This patch restricts parsing only SIP/SIPS URIs. - Change-Id: I7cceaa88e147cbdf81a3a7beec5c1c20210fa41e + Change-Id: I16f255c2b86a80a67e9f9604b94b129a381dd25e -2018-01-05 06:06 +0000 [b12c8cffad] Alexander Traud +2019-03-06 16:21 +0000 [6d455487d9] sungtae kim - * bridge_softmix: Removed unused parameter from check_binaural_position_change(.). + * res/res_ari: Added timestamp as a requirement for all ARI events - Found as a result of the function being passed an uninitalized variable by - clang. + Changed to requirement to having timestamp for all of ARI events. + The below ARI events were changed to having timestamp. + PlaybackStarted, PlaybackContinuing, PlaybackFinished, + RecordingStarted, RecordingFinished, RecordingFailed, + ApplicationReplaced, ApplicationMoveFailed - ASTERISK-27550 + ASTERISK-28326 - Change-Id: I8af3bd84656b685a956d498459f8db3613f68954 + Change-Id: I382c2fef58f5fe107e1074869a6d05310accb41f -2018-01-06 06:45 +0000 [ad3252ccef] Alexander Traud +2019-03-25 14:31 +0000 [d905602a04] Sean Bright - * editline: Avoid comparison between pointer and zero character constant. + * chan_sip: Ensure 'qualifygap' isn't negative - gcc 7.2 warned about this. + Passing negative intervals to the scheduler rips a hole in the + space-time continuum. - ASTERISK-27559 + ASTERISK-25792 #close + Reported by: Paul Sandys - Change-Id: I48960dda9cf0a11b6a9426f775e632363f8caa74 + Change-Id: Ie706f21cee05f76ffb6f7d89e9c867930ee7bcd7 -2018-01-06 05:01 +0000 [ef68df9111] Alexander Traud +2019-03-25 11:42 +0000 [634314c727] Alexei Gradinari - * codec_gsm: Avoid shifting a negative signed value. + * res_config_odbc: set empty extended field as a single whitespace - clang 5.0 warned about this. + If Realtime @ variable value is NULL or empty or contains only whitespaces + then when we try to retrieve it using PJSIP_ENDPOINT we get WARNING + pjsip_endpoint_function_read: Unknown property @my_var for PJSIP endpoint. + And the variable is missing in the result of CLI pjsip show endpoint. - ASTERISK-27558 + This patch keeps empty sorcery extended field. - Change-Id: Icc452ecb0d86bbeba78dae768cc472ec540699df + ASTERISK-28341 #close -2018-01-04 12:23 +0000 [b20b5758d9] Richard Mudgett + Change-Id: I221fccc04cbfa2be17ce971f64ae0e74e465eea0 - * res_pjsip_endpoint_identifier_ip.c: Fix apply identify validation. +2019-03-22 14:46 +0000 [ce5bed44e4] Matthew Fredrickson - The ip_identify_apply() did not validate the configuration for simple - static configuration errors or deal well with address resolution errors. + * main/taskprocessor: Increase max name length of taskprocessors - * 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. + Since the new names went in, the maximum taskprocessor name is too + short. This patch increases the name field to a length to better + handle the new names. - Change-Id: I8b519607263fe88e8ce964f526a45359fd362b6e + Change-Id: I32f32d6926f25c8ef5a91303fd2988d2c2858877 -2018-01-04 17:42 +0000 [705e6c04b3] Richard Mudgett +2019-03-14 11:46 +0000 [7bdde83f2c] George Joseph - * res_pjsip.c: Fix endpoint identifier registration name search. + * sorcery.c: Sorcery enhancements for wizard management - 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. + Added ability to specifiy a wizard is read-only when applying + it to a specific object type. This allows you to specify + create, update and delete callbacks for the wizard but limit + which object types can use them. - Assuming - endpoint_identifier_order=username,ip,anonymous + Added the ability to allow an object type to have multiple + wizards of the same type. This is indicated when a wizard + is added to a specific object type. - then registering the "ip_only" identifier would put the identifier in the - wrong position of the priority list. + Added 3 new sorcery wizard functions: - * Fix incorrect strncmp() string prefix matching. + * ast_sorcery_object_type_insert_wizard which does the same thing + as the existing ast_sorcery_insert_wizard_mapping function but + accepts the new read-only and allot-duplicates flags and also + returns the ast_sorcery_wizard structure used and it's internal + data structure. This allows immediate use of the wizard's + callbacks without having to register a "wizard mapped" observer. - Change-Id: Ib8819ec4b811da8a27419fd93528c54d34f01484 + * ast_sorcery_object_type_apply_wizard which does the same + thing as the existing ast_sorcery_apply_wizard_mapping function + but has the added capabilities of + ast_sorcery_object_type_insert_wizard. -2018-01-05 03:33 +0000 [af064eaf13] Alexander Traud + * ast_sorcery_object_type_remove_wizard which removes a wizard + matching both its name and its original argument string. - * BuildSystem: Find ptlib-config on Debian/Ubuntu. + * The original logic in __ast_sorcery_insert_wizard_mapping was moved + to __ast_sorcery_object_type_insert_wizard and enhanced for the + new capabilities, then __ast_sorcery_insert_wizard_mapping was + refactored to just call __ast_sorcery_insert_wizard_mapping. - 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. + * Added a unit test to test_sorcery.c to test the read-only + capability. - ASTERISK-25329 + Change-Id: I40f35840252e4313d99e11dbd80e270a3aa10605 - Change-Id: I9c6ab78b7246c21536e1d252dcbffe682f63f83d +2019-03-10 17:53 +0000 [9e36707dca] sungtae kim -2018-01-05 06:42 +0000 [f0c8f04c73] Alexander Traud + * res/res_stasis: Fixed wrong StasisEnd timestamp - * chan_ooh323: Limit outgoinglimit to positive values as intended. + Because StasisEnd's timestamp created it's own timestamp, it makes + wrong timestamp, compare to other channel event(ChannelDestroyed). + Fixed to getting a timestamp from the Channel's timestamp. - ASTERISK-27552 + ASTERISK-28333 - Change-Id: Ifbf9d51e7374ca2e8b27ec568f6770050fc1a854 + Change-Id: I5eb8380fc472f1100535a6bc4983c64767026116 -2018-01-05 06:19 +0000 [09f339bda5] Alexander Traud +2019-03-14 09:55 +0000 [057c7380be] Sean Bright - * ooh323cDriver: Fix typo in header guard. + * vector: Add AST_VECTOR_COMPACT() to reclaim wasted space - ASTERISK-27551 + This might be useful in situations where you are loading an undetermined number + of items into a vector and don't want to keep (potentially) 2x the necessary + memory around indefinitely. - Change-Id: I39ff66031e3373e895e2bc47b23a5e860ea4e012 + Change-Id: I9711daa0fe01783fc6f04c5710eba84f2676d7b9 -2018-01-05 03:36 +0000 [bc1b4f4d43] Alexander Traud +2019-03-14 11:53 +0000 [0426e0fede] Richard Mudgett - * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf. + * taskprocessor.c: Fix printf type mismatch - ASTERISK-26046 + A size_t is not always an unsigned long. - Change-Id: I48f05698c235f709225b92bec5aa260fb57d69d1 + * Use the %zu format specifier in the ast_cli() printf format string since + AST_VECTOR_SIZE() returns a size_t value. -2018-01-04 15:37 +0000 [cfb88f3ac1] Corey Farrell + Change-Id: Ib102dd36bbe6c2a7a4ce6870ae9110d978dd7e98 - * pbx: Prevent execution of NULL pointer. +2019-03-08 09:40 +0000 [f5f977baec] George Joseph - 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. + * app.c: Remove deletion of pool topic on mwi state delete - 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). + As part of an earlier voicemail refactor, ast_delete_mwi_state_full + was modified to remove the pool topic for a mailbox when the state + was deleted. This was an attempt to prevent stale topics from + accumulating when app_voicemail was reloaded and a mailbox went + away. Unfortunately because of the fact that when app_voicemail + reloads, ALL mailboxes are deleted then only current ones recreated, + topics were being removed from the pool that still had subscribers + on them, then recreated as new topics of the same name. So now + modules like res_pjsip_mwi are listening on a topic that will + never receive any messages because app_voicemail is publishing on + a different topic that happens to have the same name. The solutiuon + to this is not easy and given that accumulating topics for + deleted mailboxes is less evil that not sending NOTIFYs... - Change-Id: I0693af921fdc7f56b6a72a21fb816ed08b960a69 + * Removed the call to stasis_topic_pool_delete_topic in + ast_delete_mwi_state_full. -2018-01-04 10:50 +0000 [82cf585fb5] Corey Farrell + Also: - * translators: Don't use ast_module_running_ref. + * Fixed a topic reference leak in res_pjsip_mwi + mwi_stasis_subscription_alloc. - Translators are run during module load before the module is actually - running, so it cannot use ast_module_running_ref. + * Added some debugging to mwi_stasis_subscription_alloc, + stasis_topic_create, and topic_dtor. - ASTERISK-20346 + * Fixed a topic reference leak in an error path in + internal_stasis_subscribe. - Change-Id: Iaa0e75da99c696e38000f1a41e340abbd7a88f56 + ASTERISK-28306 + Reported-by: Jared Hull -2018-01-04 09:39 +0000 [da365affbd] Corey Farrell + Change-Id: Id7da0990b3ac4be4b58491536b35f41291247b27 - * rtp_engine: Add missing unlock. +2019-03-09 08:39 +0000 [342550e0ea] cirillor - Change-Id: I380c31a255e060309f4916da11176e0d00813215 + * Variable ALTCONF ignored when service is used in Debian -2018-01-04 09:30 +0000 [73bf5035b8] Corey Farrell + When variable ALTCONF is defined, the command start prints the message + "Unable to open specified master config file '"/etc/asterisk/asteris..." + and use default configurations. - * res_pjsip_history: Add missing unlock to CLI command. + ASTERISK-28332 - Change-Id: I872060a30543776a176a316309602d924a23eb29 + Change-Id: I7595e582a0ee2c1051ea35435e247e27906957ef -2018-01-04 09:27 +0000 [aaed0b8b3a] Corey Farrell +2019-03-13 06:05 +0000 [03c0d19cc8] Joshua Colp - * aco: Fix NULL dereference in error path. + * stasis: Allow empty application arguments to move. - Change-Id: Id505167cf0f9414a3c144fa2c1e181a2cf288694 + Change-Id: I1e4d37415f3034abe36496dc30209c2303e6af5c -2018-01-03 19:07 +0000 [e3c9314a2e] Corey Farrell +2019-03-12 15:54 +0000 [6a435723f7] Kevin Harwell - * func_odbc: Add missing unlock's to acf_odbc_read. + * AMI/ARI: Bump non-breaking version numbers - Change-Id: I828329ecbd252ae8f27a369a046d2b03102b07c6 + Increasing the non-breaking AMI and ARI version numbers due to changes and + additions in those API's. Note, some changes may be forthcoming (will be added + between now and the next release of Asterisk), thus not listed here. As well + a few changes listed below may have been released in a previous release of + Asterisk, but the API version numbers were not increased at that time, so + including here. -2017-12-29 18:24 +0000 [55f1d69c43] Corey Farrell + AMI: - * loader: Create ast_module_running_ref. + * app_queue: set the wrapuptime from AddQueueMember application - e806990 + * res_pjsip: option for ContactStatus event updates - 7f22c9f - 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. + ARI: - 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 + * bridging: Add creation timestamps - 0d70120 + * res_stasis: Add ability to switch applications - 50a4b61 + * ARI event type filtering - 1c5def4 + * Added ARI resource /ari/asterisk/ping - 19fc99a - ASTERISK-20346 #close + ASTERISK-28314 - Change-Id: Ia16fd28e188b2fc0b9d18b8a5d9cacc31df73fcc + Change-Id: Iebc813840f8230afa6b20579772e15549064b787 -2018-01-03 10:41 +0000 [62f862e2cd] Kevin Harwell +2019-03-12 13:25 +0000 [a71ae3dc44] George Joseph - * res_pjsip_session: Check if sequence header is missing + * Makefile.moddir_rules: Pass PJPROJECT_BUNDLED to download_externals - 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. + The download_externals script wasn't getting the PJPROJECT_BUNDLED + environment variable passed down to it so it wasn't downloading + the appropriate variant of res_digium_phone. This could cause + crashes in the DPMA. - Change-Id: I19af23aeeded65be016be92360e8cb7ffe51fad2 + Change-Id: I5daa9369c7af1fd556d892e89a85f279a2533425 -2018-01-02 07:36 +0000 [9b5d1454b4] Tzafrir Cohen +2019-03-07 13:48 +0000 [47c853f8e1] Chris-Savinovich - * cdr: submit: fix logic of test for batch mode + * partial-inlining: disable partial-inlining if gcc>=8.2.1 - ASTERISK-27539 #close + Apply flag -fno-partial-inlining on default optimization if and only if + gcc version >= 8.2.1 (this is the current ver on Fedora and Ubuntu). + This is done to avoid a bug that causes arithmetic calculations to fail + if the following conditions are met: + 1. TEST_FRAMEWORK on + 2. DONT_OPTIMIZE off + 3. Fedora and Ubuntu + 4. GCC 8.2.1 + 5. There must exist a certain combination of multithreading. + 6. Optimization level -O2 and -O3 + 7. Flag -fpartial-inline activated (default when optimization level>=2) + The following link points to a similar gcc bug reported in 2015. This leads me + to believe the bug has regressed. Note I am not able to replicate this bug + in an environment other than Asterisk + Test Framework + Test_cel because the + multithreading combination that causes it seems to be unique. Therefore I + am temporarily abandoning any thoughts of reporting the new occurrence of this + bug to gcc.gnu.org. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65307 - Change-Id: I33cdf329d2bb4486dcae975c450f6aae94c515f7 + Change-Id: Ibd1afe60e0a38b88e85fdcd9b051004601c2f102 -2017-12-29 23:14 +0000 [ffbf5be116] Sungtae Kim +2019-03-07 06:28 +0000 [b886fef66e] Joshua Colp - * res_pjsip: Add AMI action 'PJSIPShowAors' + * stasis: Improve topic/subscription names and statistics. - Add an AMI action which provides information on all - configured AORs. + Topic names now follow: :[/] - ASTERISK-27537 + This ensures that they are all unique, and also provides better + insight in to what each topic is for. - Change-Id: If8b990a00909e5b6c0f04a3b8dccd9903dc445eb + Subscriber ids now also use the main topic name they are + subscribed to and an incrementing integer as their identifier to + make it easier to understand what the subscription is primarily + responsible for. -2018-01-02 00:26 +0000 [f298178583] Corey Farrell + Both the CLI commands for listing topic and subscription statistics + now sort to make it a bit easier to see what is going on. - * aco: Add missing aco_option_type_string for OPT_TIMELEN_T. + Subscriptions will now show all topics that they are receiving messages + from, not just the main topic they were subscribed to. - ASTERISK-27117 + ASTERISK-28335 - Change-Id: I8f6c34bb30830be9f7a40823723eb4dcaaa91c61 + Change-Id: I484e971a38c3640f2bd156282e532eed84bf220d -2017-12-31 10:26 +0000 [15f8b9b8bf] Sean Bright +2019-03-03 09:20 +0000 [ca8f254f0f] sungtae kim - * ice: Increase foundation buffer size + * res/res_rtp_asterisk.c: Fixing possible divide by zero - Per RFC 5245, the foundation specified with an ICE candidate can be up - to 32 characters but we are only allowing for 31. + Currently, when the Asterisk calculates rtp statistics, it uses + sample_count as a unsigned integer parameter. This would be fine + for most of cases, but in case of large enough number of sample_count, + this might be causing the divide by zero error. - ASTERISK-27498 #close - Reported by: Michele Prà + ASTERISK-28321 - Change-Id: I05ce7a5952721a76a2b4c90366168022558dc7cf + Change-Id: If7e0629abaceddd2166eb012456c53033ea26249 -2017-12-29 22:03 +0000 [b32d6d5e2d] Corey Farrell +2019-03-05 08:15 +0000 [c9459b1875] cirillor - * astobj2: Create case-insensitive variants of container function macros. + * chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function - * AO2_STRING_FIELD_CASE_HASH_FN - * AO2_STRING_FIELD_CASE_CMP_FN - * AO2_STRING_FIELD_CASE_SORT_FN + Add logical group at DAHDIChannel event + and create "dahdi_group" at CHANNEL function. - Change-Id: I11af8c6a0c43380a42732553f519c667abb842cf + ASTERISK-28317 -2017-12-29 22:59 +0000 [bc73337e07] Corey Farrell + Change-Id: Ic1f834cd53982a9707a9748395ee746d6575086a - * core: Use macros to generate ao2_container callbacks where possible. +2019-03-08 14:12 +0000 [8ca74d73f1] Sean Bright - This uses AO2_STRING_FIELD_HASH_FN and AO2_STRING_FIELD_CMP_FN where - possible in the Asterisk core. + * res_musiconhold: Remove redundant option parsing - 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: I481fabd8eaf2e4e7ffb5c8285b294742826e7d12 - Change-Id: Ide4c1449a894bce70dea1fef664dade9b57578f1 +2019-03-04 01:50 +0000 [4ca41caf38] Torrey Searle -2017-12-29 14:50 +0000 [0fe7df641a] Corey Farrell + * chan_pjsip: add a flag to ignore 183 responses if no SDP present - * datastore: Add automatic module references. + chan_sip will always ignore 183 responses that do not contain SDP + however, chan_pjsip will currently always translate it into a + 183 with SDP. This new flag allows chan_pjsip to have the same + behavior as chan_sip. - 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-28322 #close - ASTERISK-25128 #close + Change-Id: If81cfaa17c11b6ac703e3d71696f259d86c6be4a - Change-Id: I8357a3711e77591d0d1dd8ab4211a7eedd782c89 +2019-03-07 17:17 +0000 [641b6041c7] Corey Farrell -2017-12-28 13:27 +0000 [2dde5bef47] Richard Mudgett + * jansson: json_pack with new format to verify required runtime version. - * stasis_channels.c: Misc cleanup. + Add a json_pack at startup that will fail if runtime links against a + library older than jansson-2.11. - * Use current OBJ_SEARCH_xxx defines instead of the deprecated versions. + Change-Id: I101aebafe0f9407650206f7c552dad3d69377b5a - * Fix hash_cb and cmp_cb container functions to correctly use the - OBJ_SEARCH_xxx values. +2019-03-07 17:15 +0000 [5b5aa05bd9] Sean Bright - * 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(). + * app_meetme: Don't mute joining admins if conference is muted - * Remove unnecessary usage of RAII_VAR(). + ASTERISK-28328 #close - Change-Id: I02c405518cab22aa2a082b61e2353bf7cd629a70 + Change-Id: I4f6069fb34923b7521520c2a205a1e56227e592b -2017-12-13 15:43 +0000 [898b3b080a] Sean Bright +2019-03-06 15:04 +0000 [4860954540] Sean Bright - * cdr_mysql: Make sure connection charset is always set + * Replace calls to strtok() with strtok_r() - 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'"). + strtok() uses a static buffer, making it not thread safe. - 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. + Change-Id: Icce265153e1e65adafa8849334438ab6d190e541 - I also snuck a few other changes into this patch: +2019-03-07 16:05 +0000 [90f06ad169] Sean Bright - * Default the MySQL port to MYSQL_PORT (3306) instead of 0 if it's not - defined. + * samples: Fix comment typo in pjsip.conf.sample - * Fix some erroneous and/or silly checks on the contents of the - configuration ast_str values. + Change-Id: I84a45c3d9fd26ca61aca99927eec83b57f1de857 - ASTERISK-27366 #close - Reported by: Halil İbrahim YILDIZ +2019-03-07 07:41 +0000 [50a4b618fc] Ben Ford - Change-Id: I36bf8dc5d5f83584e803b3b1a151dea9396ab8f5 + * res_stasis: Add ability to switch applications. -2017-12-27 20:48 +0000 [d69b7c6c6d] Richard Mudgett + Added the ability to move between Stasis applications within Stasis. + This can be done by calling 'move' in an application, providing (at + minimum) the channel's id and the application to switch to. If the + application is not registered or active, nothing will happen and the + channel will remain in the current application, and an event will be + triggered to let the application know that the move failed. The event + name is "ApplicationMoveFailed", and provides the "destination" that the + channel was attempting to move to, as well as the usual channel + information. Optionally, a list of arguments can be passed to the + function call for the receiving application. A full example of a 'move' + call would look like this: - * manager.c: Update AMI Status event documentation + client.channels.move(channelId, app, appArgs) - The AMI Status event had linkedid listed twice and was missing the - effective connected line name and number headers. + The control object used to control the channel in Stasis can now switch + which application it belongs to, rather than belonging to one Stasis + application for its lifetime. This allows us to use the same control + object instead of having to tear down the current one and create + another. - NOTE: The linkedid and other standard channel snapshot fields in the XML - documentation are part of the XML template defined in - doc/appdocsxml.xslt. + ASTERISK-28267 #close - Change-Id: I004c4c4f9e7b40ef55035c831702721bec82496c + Change-Id: I43d12b10045a98a8d42541889b85695be26f288a -2017-12-27 22:36 +0000 [fa36f9c01b] Richard Mudgett +2019-03-06 07:20 +0000 [e7dd4bd4a9] Dömsödi Gergely - * bridge_native_rtp.c: Fix reentrancy framehook crash. + * app_queue: fix ring_entry to access nativeformats with a channel lock - 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. + Fixes an intermittent segmentation fault which occured when accessing + nativeformats of a channel which entered into a queue. - * Fixed the reentrancy corruption by changing the framehook interface - struct static variable to a stack local variable. + ASTERISK-27964 + Reported by: Francisco Seratti - * 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. + Change-Id: Ic87fa7a363f3b487c24ce07032f4b2201c22db9e - The testsuite - channels/pjsip/basic_calls/two_parties/nominal/alice_initiated/bob_hangs_up - test caught this with MALLOC_DEBUG and DO_CRASH enabled. +2019-03-04 16:05 +0000 [88681ba9bb] Sean Bright - Change-Id: If9e35b97d19209b0f984941c1d8eb5f7c55eea91 + * app_queue: Handle empty 'interface' in queue member config -2017-12-27 20:22 +0000 [1d3dc9aea2] Richard Mudgett + While the 'interface' column is a NOT NULL, the empty string is still + allowed. res_config_odbc treats the empty string as a NULL and we crash + when trying to dereference. - * func_channel.c: Update MASTER_CHANNEL documentation + Also cleaned up an adjacent error message for consistency. - Be more explicit in what is meant by the master channel to eliminate - misunderstanding. + ASTERISK-28168 #close - ASTERISK-23133 + Change-Id: I55e012b540fbcda99bb40bede3099b7ae5db8202 - Change-Id: I453bcaf4b99404a5a3e345dbf093ac6c1afcfc72 +2019-03-04 12:36 +0000 [0cfafb89b5] Sean Bright -2017-12-27 19:27 +0000 [6338a03ce9] Corey Farrell + * sip_to_pjsip: Make multiline comment parsing consistent with Asterisk - * menuselect: Fix check for running configure. + In Asterisk configuration, a multiline comment starts with ;-- as long as it is + not followed by another dash (i.e. ;--- is not a multiline comment). - 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. + ASTERISK-28323 #close - Instead of looking at autoconfig.h we just need to ensure that makeopts - is newer than configure. + Change-Id: I32dc38e0fac01d3c0805d27d35d2365a7c37ca72 - Also make change to configure.ac so bootstrap.sh doesn't re-add the - extra trailing line-feed. +2019-02-28 06:24 +0000 [6a714c0e9f] Joshua Colp - Change-Id: Ief1f831d6717007f9cebb668c14e92782cd2b794 + * basic-pbx: Update configuration to work with current modules. -2017-12-21 23:56 +0000 [94eb12ca56] Corey Farrell + The res_pjsip_websocket module requires the res_http_websocket + module so ensure it is loaded. As well the res_pjsip_notify + module needs the pjsip_notify.conf configuration file so + ensure it is installed. - * cdr: Missing NULL check and unlock. + ASTERISK-28272 - * handle_dial_message: Missing a check for NULL peer. - * cdr_generic_register: Missing unlock on allocation failure. + Change-Id: I261659b84e7a6ac4cb49990d9badb4b2ad01bacd - cdr_generic_register is fixed by reordering so the new structure is - allocated and initialized before locking the list. +2019-02-08 15:32 +0000 [0d7012044a] sungtae kim - Change-Id: I5799b99270d1a7a716a555c31ac85f4b00ce8686 + * bridging: Add creation timestamps -2017-12-23 22:51 +0000 [23aa20bf20] Corey Farrell + This small feature will help to checking the bridge's status to + figure out which bridge is in old/zombie or not. Also added + detail items for the 'bridge show *' cli to provide more detail + info. And added creation item to the ARI as well. - * loader: Add volatile to resource_being_loaded. + ASTERISK-28279 - 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. + Change-Id: I460238c488eca4d216b9176576211cb03286e040 - ASTERISK-27531 #close - Tested By: abelbeck +2019-03-01 15:17 +0000 [63a3321c46] Rodrigo Ramírez Norambuena - Change-Id: If17a3b889e06811a0e7119f0539d052494d6ece9 + * CHANGES: Document addition of 'wrapuptime' argument to AddQueueMember() -2017-12-20 16:17 +0000 [553306548c] Kevin Harwell + Change-Id: Ieb332d018ae3f2fc82b9465381fde0f299af1611 - * AST-2017-014: res_pjsip - Missing contact header can cause crash +2019-02-28 10:01 +0000 [ffe07772e6] Sean Bright - 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. + * res_pjsip_diversion: Use static pj_str_t for Diversion header names - 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". + PJSIP assumes that these header names are not allocated, and does not + clone the name strings when reusing headers. - ASTERISK-27480 #close + Block unload of res_pjsip_diversion until shutdown to ensure static + memory stays valid. - Change-Id: I1810db87683fc637a9e3e1384a746037fec20afe + ASTERISK-28312 #close -2017-12-22 14:00 +0000 [c2529a352c] Corey Farrell + Change-Id: Ibd6ea55ec4a604bbd43ac07f8d0b54da2c39b8b9 - * astobj.h: Remove from Asterisk core. +2019-02-28 15:36 +0000 [625af27a28] Sean Bright - 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. + * menuselect: Add license header to menuselect_gtk.c - Change-Id: I7e4ae96678b36b9f41d3cae14b167f110eb5d349 + This file was added to the Subversion repository on 2007-03-15 by + Russell Bryant, a Digium employee at the time. -2017-12-22 08:23 +0000 [fd0ca1c3f9] Sean Bright + ASTERISK-24173 #close - * Remove as much trailing whitespace as possible. + Change-Id: Ie866fa9d31d550467613d362b35b03c031ee594d - Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0 +2019-01-30 13:25 +0000 [61585af9bd] George Joseph -2017-12-21 09:51 +0000 [a1a179c09d] Sean Bright + * res_pjsip_sdp_rtp: Fix return code from apply_negotiated_sdp_stream - * Fix some invalid Unicode characters + 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. - configs/samples/minivm.conf.sample contains invalid UTF-8, but that - appears to be intentional. + apply_negotiated_sdp_stream now returns the correct "-1" and any + media is now discarded before it reaches the core stream processing. - Change-Id: I7b1e0d332f3380fd0425962a3c9c55f9b200c8cc + ASTERISK-28260 + Reported by: Sotiris Ganouris -2017-12-20 21:11 +0000 [f2f51ff4ea] Corey Farrell + Change-Id: Ia095cb16b4862f2f6ad6d2d2a77453fa2542371f - * app_voicemail: Fix file copy error handling. +2019-02-28 06:51 +0000 [6f1c0e787c] Sean Bright - Fix error where input/output file descriptors would be closed multiple - times. + * Revert "pjsip_message_filter: Only do interface lookup for wildcard addresses." - Change-Id: Iba5140b60cb7de79e3d5d92be3c256947aa99da9 + This reverts commit d524ad523d0d32babba309810b5bccd09cb7f467. -2017-12-20 14:54 +0000 [9415ec2877] Sean Bright + Reason for revert: This causes Contact and Via headers to have the wrong + transport address. - * docs: Remove old API changes documentation + ASTERISK-28309 #close - Change-Id: I1bc7957121cc7ae27dca04acc3613f4e1858476a + Change-Id: Ibba4d6176f68e39279fcd9a545f81d56e747bed8 -2017-12-20 11:14 +0000 [1b80ffa495] Corey Farrell +2019-02-27 19:52 +0000 [fe694de299] Sean Bright - * Fix Common Typo's. + * res_pjsip_config_wizard: Don't crash if misconfigured - Fix instances of: - * Retreive - * Recieve - * other then - * different then - * Repeated words ("the the", "an an", "and and", etc). - * othterwise, teh + If both send_registrations and send_auth are both set to yes, + outbound_auth/username must be set or we crash. - ASTERISK-24198 #close + ASTERISK-27992 #close - Change-Id: I3809a9c113b92fd9d0d9f9bac98e9c66dc8b2d31 + Change-Id: I6418d56de1ae53f80393b314c2584048fbf7f11d -2017-12-20 11:30 +0000 [3625e91586] Richard Mudgett +2019-02-27 19:09 +0000 [edf31624a2] Sean Bright - * manager.h: Bump AMI version + * res_config_odbc: Avoid deadlock when max_connections = 1 - Change-Id: I62e6ddeb261ef012687e1fb6734c554e2499b6bf + Rather than calling ast_odbc_find_table() in the prepare callback, call + it beforehand and pass it in to the callback to avoid the need for a + second connection. -2017-12-20 10:23 +0000 [aaa3884d4a] Corey Farrell + ASTERISK-28166 #close - * bridge: Old channel video source not set to NULL after unref. + Change-Id: I6f8a0b9990d636fd6bc1a92ed70f7050d2436202 - The bridge holds onto the old channel video source after it's been - released. This can lead to use after free errors. +2019-02-20 11:03 +0000 [b3ebb51086] Kevin Harwell - ASTERISK-27229 #close + * res_pjsip_registrar: blocked threads on reliable transport shutdown take 3 - Change-Id: Ib2dab61677dd8a21f7ad53cdc9b8ca93297838b3 + When a contact was removed by the registrar it did not always check to see if + the circumstances involved a monitored reliable transport. For instance, if the + 'remove_existing' option was set to 'true' then when existing contacts were + removed due to 'max_contacts' being reached, those existing contacts being + removed did not unregister the transport monitor. -2017-12-20 10:13 +0000 [c2850bfebc] Corey Farrell + Also, it was possible to add more than one monitor on a reliable transport for + a given aor and contact. - * core: Fix unused variable error in handle_show_sysinfo. + This patch makes it so all contact removals done by the registrar also remove + any associated transport monitors if necessary. It also makes it so duplicate + monitors cannot be added for a given transport. - 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-28213 - ASTERISK-26563 #close + Change-Id: I94b06f9026ed177d6adfd538317c784a42c1b17a - Change-Id: I8ec5b1897b786cc1abaf62264aa75039eea05510 +2019-02-27 10:37 +0000 [6e8cba39a4] George Joseph -2017-12-20 00:53 +0000 [fff7782cf5] Corey Farrell + * CI: Update jenkinsfiles with new Gerrit URLs - * app_festival: Fix fd leak on connection failure. + 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: If5efaddcf735ff7d17e55c36cc1388946cee9e0f + Change-Id: I2e8e3f213b9a96bb1b27665eca4a9a24bc49820e + (cherry picked from commit 5ce084579f897096163b4e0c2ed4e8e1a8558cca) -2017-12-18 20:12 +0000 [d51837a1b9] Corey Farrell +2019-02-20 13:15 +0000 [8402189892] George Joseph - * CLI: Address multiple issues. + * res_mwi_devstate.c: New module to allow presence subs to VM boxes - * 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". + This module allows presence subscriptions to voicemail boxes. This + allows common BLF keys to act as voicemail waiting indicators. - Change-Id: I8f633ceb1714867ae30ef4e421858f77c14485a9 + ASTERISK-28301 -2017-12-18 22:48 +0000 [b8f54f742f] Corey Farrell + Change-Id: I62a246c24f3d7d432e33e22d7a4a57c15c292fdd - * dns_core: Protect against array index violation. +2019-02-25 09:41 +0000 [5b8db4e422] Torrey Searle - Add a check to allocate_dns_record to prevent calling a pointer - retrieved from beyond dns_alloc_table. + * res/res_rtp_asterisk: smoother can cause wrong timestamps if dtmf happen - ASTERISK-27495 #close + Delivery timeval in the smoother object will fall behind while a DTMF is + being generated. This can eventually lead to invalid rtp timestamps. + To prevent this from happening the smoother needs to be reset after every + DTMF to keep the timing up to date. - Change-Id: Ie2f6e4991cea46baa12e837bd64cc22b44d322bb + ASTERISK-28303 #close -2017-12-18 18:59 +0000 [3c037ef972] Corey Farrell + Change-Id: Iaba3f7b428ebd72a4caa90e13b829ab4f088310f - * chan_sip: Fix memory leaks. +2019-02-25 15:32 +0000 [cab8a76ae3] Kevin Harwell - 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. + * rest-api-templates/asterisk_processor - replace http line breaks with line feed - handle_response_subscribe leaked a reference to the ccss monitor - instance. + Including line breaks (
,
,
) in certain parts of the rest-api + json definition (e.g. summary, notes) displays them correctly in swagger. + However, when the field gets converted to the wiki format those breaks get + escaped and show up in the text as the actual string literal "
" etc... - Change-Id: Ib11444de69c3d5b2360a88ba2feb54d2c2e9f05f + This patch makes it so when converting to the wiki format it replaces all line + break values (
, etc...) with line feeds ('\n'). -2017-12-16 07:51 +0000 [3b99a0332c] Ivan Poddubny + Change-Id: Ie1c9faa0d1c5d622804cc0a21ce769095b08aa3d - * bridge: Stop music on hold on adding an arbitrary channel to a bridge +2019-02-25 06:10 +0000 [9905cccb7b] Joshua C. Colp - 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". + * res_ari_applications: Fix incorrect call to ao2_lock. - 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. + When listing the applications the apps lock was incorrectly + locked twice instead of being locked and then unlocked. - Reported by: Zane Conkle + ASTERISK-28302 - ASTERISK-25079 #close + Change-Id: If7d064592a9e88c0f1049214c50e02be6dabf79e - Change-Id: I4b129c5a20c15e63968842460ac5a1a85903cf9f +2019-02-21 12:06 +0000 [0896e4cdc6] Joshua Colp -2017-12-18 15:36 +0000 [b3e839debd] Corey Farrell + * res_pjsip_sdp_rtp: Allow only single ssrc attribute. - * Remove constant conditionals (dead-code). + When processing SSRC attributes we were iterating through + all of them, even though we only need to know the remote + SSRC once. This was problematic because some browsers group + SSRCs together on a stream, and due to our negotiation only + end up using the first one. Since we set the second one as + the remote SSRC we would drop the received media from them + instead of allowing it through. - Some variables are set and never changed, making them constant. This - means that code in the 'false' block of the conditional is unreachable. + In the future this may be extended to allow SSRC groups + and to use information from the attributes. - 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: I4dc87087dbe56a83aa65f0f897bbd4ca75ec1270 - Change-Id: I62e2aac353d739fb3c983cf768933120f5fba059 +2019-01-09 04:27 +0000 [a1391aa26b] Sungtae Kim -2017-12-19 02:50 +0000 [c02e256407] Oron Peled + * http.c: Support separated HTTP request - * chan_console: Use correct parameter for 'set active' + Currently, the Asterisk does not support seperated HTTP request. + This patch make the Asterisk enables to wait lest part of HTTP request. + Also increases acceptable HTTP body length to 40k to support more + larger request. - chan_console supports multiple devices but the CLI only works on a - single device. 'console set active' selects this device. + ASTERISK-28236 - Sadly that CLI picks the wrong command-line parameter and will only - work for a device called 'active'. + Change-Id: I48a401aa64a21c3b37bf3cb4e0486d64b7dd8aa1 - ASTERISK-27490 #close +2019-02-20 12:48 +0000 [bb8903b00e] George Joseph - Change-Id: I2f0e5fe63db19845bee862575b739360797dc73d + * Core: Increase AST_PBX_MAX_STACK to 512 if not LOW_MEMORY -2017-12-18 23:17 +0000 [bf33a09c37] Corey Farrell + The current settings AST_PBX_MAX_STACK is 128 entries which is + too low for some FreePBX installations with complex parking + arrangements. Increased to 512 if LOW_MEMORY is not defined. - * core: Fix multiple trivial issues in the core. + ASTERISK-28300 - * 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: I7c4b540bc92e6642df0f3da639b003f7da8b1299 - Change-Id: Id7782775486175c739e0c4bf3ea5e17e3f452a99 +2019-02-20 12:22 +0000 [4b6c60b362] Joshua C. Colp -2017-12-18 06:14 +0000 [81474dfb23] Aaron An + * stasis: Store subscriber uniqueids with topic statistics. - * res_rtp_asterisk: Avoid close the rtp/rtcp fd twice. + This change provides an easier mechanism to determine which + subscribers are subscribed to a topic. Using this you can + inspect the specific subscribers for further details. - 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. + Change-Id: I8deea21703cd5c5357b85593b46c3eaf24e18c0c - ASTERISK-27299 #close - Reported-by: Aaron An - Tested-by: AaronAn +2019-02-15 12:53 +0000 [2f8def1453] George Joseph - Change-Id: I870a072d73fd207463ac116ef97100addbc0820a + * taskprocessor: Enable subsystems and overload by subsystem -2017-12-18 19:47 +0000 [8dfc973d64] Corey Farrell + To prevent one subsystem's taskprocessors from causing others + to stall, new capabilities have been added to taskprocessors. - * main/app: Fix leaks. + * Any taskprocessor name that has a '/' will have the part + before the '/' saved as its "subsystem". + Examples: + "sorcery/acl-0000006a" and "sorcery/aor-00000019" + will be grouped to subsystem "sorcery". + "pjsip/distributor-00000025" and "pjsip/distributor-00000026" + will bn grouped to subsystem "pjsip". + Taskprocessors with no '/' have an empty subsystem. - * 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. + * When a taskprocessor enters high-water alert status and it + has a non-empty subsystem, the subsystem alert count will + be incremented. - Additionally added whitespace to ast_linear_stream, pulled assignments - out of conditionals for improved readability. + * When a taskprocessor leaves high-water alert status and it + has a non-empty subsystem, the subsystem alert count will be + decremented. - Change-Id: I6d1a10cf9161b1529d939b9b2d63ea36d395b657 + * A new api ast_taskprocessor_get_subsystem_alert() has been + added that returns the number of taskprocessors in alert for + the subsystem. -2017-12-18 19:19 +0000 [a790ced2e8] Corey Farrell + * A new CLI command "core show taskprocessor alerted subsystems" + has been added. - * func_callerid: Initialize app argument structures. + * A new unit test was addded. - 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. + REMINDER: The taskprocessor code itself doesn't take any action + based on high-water alerts or overloading. It's up to taskprocessor + users to check and take action themselves. Currently only the pjsip + distributor does this. - Change-Id: If97fbdd8d63a204e2efd498a192effc14e90fb31 + * A new pjsip/global option "taskprocessor_overload_trigger" + has been added that allows the user to select the trigger + mechanism the distributor uses to pause accepting new requests. + "none": Don't pause on any overload condition. + "global": Pause on ANY taskprocessor overload (the default and + current behavior) + "pjsip_only": Pause only on pjsip taskprocessor overloads. -2017-08-11 17:02 +0000 [4c04e13783] Richard Mudgett + * The core pjsip pool was renamed from "SIP" to "pjsip" so it can + be properly grouped into the "pjsip" subsystem. - * bridge_softmix.c: Change remove_destination_streams() return meaning. + * stasis taskprocessor names were changed to "stasis" as the + subsystem. - 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. + * Sorcery core taskprocessor names were changed to "sorcery" to + match the object taskprocessors. - Change-Id: Icd91571d856a1d04299a24c411e325c1d9d5c61d + Change-Id: I8c19068bb2fc26610a9f0b8624bdf577a04fcd56 -2017-08-11 16:57 +0000 [ea4179599f] Richard Mudgett +2019-02-08 14:21 +0000 [1c5def4b18] Kevin Harwell - * bridge_softmix.c: Don't match dead streams. + * ARI event type filtering - * Made is_video_source() and is_video_dest() not match dead streams. + Event type filtering is now enabled, and configurable per application. An app is + now able to specify which events are sent to the application by configuring an + allowed and/or disallowed list(s). This can be done by issuing the following: - * Optimized is_video_dest() to reduce duplicated code. + PUT /applications/{applicationName}/eventFilter - Change-Id: I4e7ab762c7ee98395e78e6516399f57a2609b9a1 + And then enumerating the allowed/disallowed event types as a body parameter. -2017-12-18 18:40 +0000 [91d9eae79b] Corey Farrell + ASTERISK-28106 - * bridge_softmix: Fix memory leaks. + Change-Id: I9671ba1fcdb3b6c830b553d4c5365aed5d588d5b - Change-Id: Ifaf3e93b398595d21d07f535330fef77ff15a80c +2018-12-11 08:15 +0000 [e806990be2] Rodrigo Ramírez Norambuena -2015-11-11 17:20 +0000 [f6393b59af] Richard Mudgett + * app_queue: Enable set the wrapuptime from AddQueueMember application - * ast_json_pack(): Use safer json ref mechanism. + This change add ability to set the wrapuptime per-member using the + AddQueueMember application. - Change-Id: I49204db2e57ae96eee43909c18ed007c09ac817e + The feature to set wrapuptime per member was include in the issue + ASTERISK-27483 for static member by configuration file and was not + added to set from AddQueueMember. -2017-12-18 18:04 +0000 [dc04d1ec93] Corey Farrell + ASTERISK-28055 #close - * app_voicemail: Fix memory management issues. + Change-Id: I7c7ee4a6f804922cd7c42cb02eea26eb3806c6cf - * 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. +2019-02-14 17:09 +0000 [08ba504e99] sungtae kim - Change-Id: I6282c542ff7b82fa091177a912d11234a8b00a30 + * chan_pjsip: Changed to continued after invalid media for pjsip show channelstats -2015-11-11 16:52 +0000 [7054fb8756] Richard Mudgett + Currently, the pjsip show channelstats cli does not show channel's + stats after hits the invalid channel info. This makes hard to use + this cli. Changed to keep iterate after hits the invalid channel + info. - * rtp_engine.c: Eliminate rtcp_report_to_json() RAII_VAR usage. + ASTERISK-28292 - Change-Id: I58a22c2ca82e91d7537409b7b3af2d735827a54d + Change-Id: I3efdff1c9e1b1efd3c971fb82ae77aa133a6f43c -2017-12-06 20:35 +0000 [5335ad117d] Rodrigo Ramírez Norambuena +2019-01-22 06:02 +0000 [3fe40c0c05] Sungtae Kim - * app_queue: Add feature to set wrapuptime on the queue member + * res_pjsip_session Added rtcp stats result vector into the session - This patch adds the ability to set the wrapuptime on the queue member - config. + Currently, the Asterisk's pjsip_session module does not keeping the + rtcp's stats info after it was removed. But by adding the results + vector and keeping it until session is destroying, it can give more + useful information for other modules. - When the option is set the wrapuptime on the queue member is used instead - of the queue's wrapuptime. + ASTERISK-28253 - ASTERISK-27483 #close + Change-Id: Ib25c2d3fc4da084aecfde2a82c1b1d733bd64fa5 - Change-Id: I11c85809537f974eb44dc5bbf82bcedd8a458902 +2019-02-19 10:06 +0000 [3a2db0ee04] Joshua Colp -2017-12-18 14:00 +0000 [064c74e4af] Corey Farrell + * CI: Use tmpfs option to Docker instead of mount. - * netsock: Remove from Asterisk core. + Some tests require Asterisk to execute scripts which + are stored in /tmp. When mount is used for tmpfs there + is no ability to allow scripts to be executed from + that location. - 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. + This change switches to using tmpfs which can be told + to allow executables to be run from /tmp. - Change-Id: I28c6578043bac18de5ea608e136acec4f83d5dd3 + Change-Id: I0e598ca2b76af1f7f2d29f0da7b1731a214a291a -2017-12-18 12:23 +0000 [731a23fba7] Corey Farrell +2019-02-08 14:12 +0000 [e85f92f37a] Kevin Harwell - * CLI: Fix 'core set debug channel' completion bug. + * json.c/strings.c - Add a couple of utility functions - The completion generator is missing a return so typing "core set debug - all off " causes the command to actually execute. + Added 'ast_json_object_string_get' to the JSON wrapper in order to make it a + little easier to retrieve a string field from the JSON object. - Change-Id: Ibf6462088a74eee66967732b50445783ebefc20b + Also added an 'ast_strings_equal' function that safely checks (checks for NULLs) + for equality between two strings. -2017-12-18 08:25 +0000 [1769d4a5c6] Joshua Colp + Change-Id: I26f0a16d61537505eb41b4b05ef2e6d67fc2541b - * confbridge: Clarify mute sound documentation. +2019-02-12 03:50 +0000 [01b781b4dc] Torrey Searle - The mute/unmute sounds are only played when the - action is initiated using the DTMF menu. + * res/res_rtp_asterisk: clear smoother when local bridging - ASTERISK-24756 + p2p_write updates txformat but doesn't require a smoother. If a smoother + was created by another bridge type the smoother could fall out of date causing + one way audio issues. To prevent this the smoother is now destroyed on the + start of native bridge. - Change-Id: I55b3dd5bc166096bf5e2f547ddd0ce355f36e3dc + ASTERISK-28284 #close -2017-12-18 06:36 +0000 [b40c00c97b] Joshua Colp + Change-Id: I84e67f144963787fff9b4d79ac500514fb40cdc6 - * app_transfer: Remove LOCAL from documentation. +2019-02-14 10:54 +0000 [b327b0bbda] Chris Savinovich - The Local channel has never supported app_transfer - from what I can see so remove it from the documentation. + * Revert "Test_cel: Fails when DONT_OPTIMIZE is off" - ASTERISK-25649 + This reverts commit 05b79d16ab93b038b39412e2570a21205eb499c4. - Change-Id: Icbcfe297f6f866285a26b3e9fd5c6d00fa22e0e9 + Change-Id: I2e64fc22c33b10cfd592681732fc67ae0669a301 -2017-12-15 19:01 +0000 [4a461bcde4] Richard Mudgett +2019-02-07 09:52 +0000 [1084b6e1a1] Joshua Colp - * chan_pjsip.c: Improve ast_request() diagnostic msgs. + * ci: Rerun unit tests when non-code changes occur. - 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. + This change makes it so that even if non-code changes + occur (such as commit message changing) unit tests + will still be run and result in a verification. - * Added missing endpoint not found message. + ASTERISK-28251 - * Added more information to the empty endpoint name msgs if available. + Change-Id: I6491fff7c93e5d5cd8e41054486968bf66c4f608 - * Eliminated RAII_VAR in request(). +2019-02-07 09:23 +0000 [2cf3931379] Kevin Harwell - Change-Id: I21da85ebd62dcc32115b2ffcb5157416ebae51e4 + * res_pjsip_registrar: lock transport monitor when setting 'removing' flag -2016-10-06 01:29 +0000 [6f8b34f9c1] Corey Farrell + 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. - * chan_sip: Add security event for calls to invalid extension. + This patch adds locking around the first 'removing' flag check and set, thus + nullifying the secondary check, so it was removed. - Log a message to security events when an INVITE is received to an - invalid extension. + ASTERISK-28213 - ASTERISK-25869 #close + Change-Id: Iaa8e36e5311789549b76d8de42dfcea96013b2ed - Change-Id: I0da40cd7c2206c825c2f0d4e172275df331fcc8f +2019-02-06 06:16 +0000 [44254d548b] Joshua Colp -2017-12-15 10:26 +0000 [e6768c0f81] Corey Farrell + * res_odbc: Add basic query logging. - * cdr: Minor optimizations. + When Asterisk is connected and used with a database the response + time of the database can cause problems in Asterisk if it is long. + Normally the only way to see this problem would be to retrieve a + backtrace from Asterisk and examine where things are blocked, or + examine the database to see if there is any indication of a + problem. - * bridge_candidate_process: remove SCOPED_AO2LOCK and return value. - * handle_standard_bridge_enter_message: replace recursive call with goto - statement. + This change adds some basic query logging to make it easier to + investigate such a problem. When logging is enabled res_odbc will + now keep track of the number of queries executed, as well as the + query that has taken the longest time to execute. There is also + an option which will cause a WARNING message to be output if a + query takes longer than a configurable amount of time to execute. - ASTERISK-24297 + This makes it easier and clearer for users that their database may + be experiencing a problem that could impact Asterisk. - Change-Id: Id2eaa0822fb8dc799f63422bb3aa89de9d4ee2a2 + ASTERISK-28277 -2017-12-12 12:55 +0000 [bf2d35931d] Corey Farrell + Change-Id: I173cf4928b10754478a6a8c27dfa96ede0f058a6 - * aco: Minimize use of regex. +2018-12-05 16:09 +0000 [e3e3027092] Sungtae Kim - 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. + * main/cdr: Fixed cdr start overwriting - Change-Id: Ib5ed478218d8a661ace4d2eaaea98b59a897974b + The CDR was overwriting the start time when the call continued the + dialplan from the ARI stasis or a Local channel was originated. -2017-12-12 12:36 +0000 [a455e18320] Corey Farrell + This change fixes this by no longer reinitializing the CDR when + transitioning out of the dialed pending state to the single state. - * aco: Create ways to minimize use of regex. + ASTERISK-28181 - ACO uses regex in many situations where it is completely unneeded. In - some cases this doubles the total processing performed by - aco_process_config. + Change-Id: I921bc04064b6cff1deb2eea56a94d86489561cdc - * 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. +2018-11-19 18:44 +0000 [419db481d1] Giuseppe Sucameli - Change-Id: I66a920dcd8e2b0301f73f968016440a985e72821 + * Fix deadlock handling subscribe req during res_parking reload -2017-12-15 07:56 +0000 [03c25a869f] Corey Farrell + 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. - * res_smdi: Fix shutdown ref. + ASTERISK-28173 - 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: I5b03c3455b3b12b6f83cea4cc34f4b4b20444f7e - Change-Id: I2b9da38fbc11ef78ea23dbb2df92b684be7f647c +2019-01-28 17:21 +0000 [19fc99a2fb] sungtae kim -2017-12-11 17:07 +0000 [9d5797616c] Corey Farrell + * Added ARI resource /ari/asterisk/ping - * loader: Use vector to build apha sorted module lists. + 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: I9c519f4dec3cda98b2f34d314255a31d49a6a467 + Change-Id: I8d24e1dcc96f60f73437c68d9463ed746f688b29 -2017-11-21 00:28 +0000 [7b54903313] Corey Farrell +2019-02-04 13:55 +0000 [f29da72969] Sean Bright - * loader: Replace priority heap with vector. + * sounds: Sort 'core show sounds' output - This is needed for future changes which will require being able to - process the load priority out of order. + Change-Id: Ib39052a745040f75eb635f15a042da15b20e22ab - Change-Id: Ia23421197f09789940510b03ebbbf3bf24d51bea +2019-01-29 10:48 +0000 [1051e1dd18] Ben Ford -2017-12-14 18:55 +0000 [9755eff46f] Sean Bright + * res_stasis: Auto-create context and extens on Stasis app launch. - * res_hep: hepv3_is_loaded() should check if we are enabled + 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. - 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. + 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. - Change-Id: I3eddfeea09c6b5bc7c641952ee0ae487fd09b64b + ASTERISK-28104 #close -2017-11-20 23:10 +0000 [3505cc88e8] Corey Farrell + Change-Id: Ie35bd93075e05b05e3ae129a83c9426931b7ebac - * loader: Rework of load_dynamic_module. +2019-02-04 07:09 +0000 [70fa6e6955] George Joseph - * 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. + * bundled-jansson: On OpenSuse Leap libjansson.a was placed in lib64 - 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. + 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. - Change-Id: Ib2c9903cfddcc01aed3e01c1e7fe4a3fb9af0f8b + * Updated jansson/Makefile to add an explicit --libdir to force + the installation to third-party/jansson/dest/lib. -2017-11-21 20:34 +0000 [80bf0ee99a] Corey Farrell + ASTERISK-28271 + Reported by: David Wilcox - * loader: Minor fix to module registration. + Change-Id: Ibf8af75e5da13562105fcc39ed898c6ef0b5a5f3 - This protects the module loader itself against crashing if dlopen is - called on a module from outside loader.c. +2019-01-15 17:20 +0000 [9c3b4dcf80] Kevin Harwell - * 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. + * pjsip/config_global: regcontext context not created - Change-Id: I40f07a315e55b92df4fc7faf525ed6d4f396e7d2 + 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. -2017-12-14 15:27 +0000 [a8aa209901] Corey Farrell + ASTERISK-28238 - * res_clialiases: Fix completion pass-through. + Change-Id: I0f36cf4ab0a93ff4b1cc5548d617ecfd45e09265 - Never ignore contents of line when generating completion options. +2019-01-22 09:02 +0000 [603143bd5a] George Joseph - Change-Id: I74389efdfea154019d3b56a9f381610614c044c8 + * media_index.c: Refactored so it doesn't cache the index -2017-12-11 18:20 +0000 [98f7e9251f] Richard Mudgett + Testing revealed that the cache added no benefit but that it could + consume excessive memory. - * res_rtp_asterisk.c: Disable packet flood detection for video streams. + 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. - 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. + 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(). - * Added code to selectively disable packet flood detection for video RTP - streams. + The media_index directory scan code was elimininated in favor of + using the existing ast_file_read_dirs() function. - ASTERISK-27440 + 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. - Change-Id: I78031491a6e75c2d4b1e9c2462dc498fe9880a70 + "sounds" is no longer a valid target for the "module reload" + command. -2017-12-14 14:05 +0000 [283d2df680] George Joseph + 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. - * res_pjsip_sdp_rtp: Add NULL check in add_crypto_to_stream + Change-Id: I1cef327ba1b0648d85d218b70ce469ad07f4aa8d - 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. +2019-01-25 12:27 +0000 [f6452f9656] Kevin Harwell - Change-Id: I57c6229954a38145da9810fc18657bfcc4d9d0c9 + * codecs.conf.sample: update codec opus docs -2017-12-14 12:14 +0000 [c387beb456] Sean Bright + The option value "sdp" for some of the settings was removed a while back, + however the sample conf was not updated. - * res_musiconhold: Start playlist after initial announcement + This patch removes any wording with regards to the old "sdp" option value, + and adjusts the defaults to what they are now. - 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. + ASTERISK-28263 - Also add the selected annoucement to the output of 'moh show classes.' + Change-Id: I41bfa44e9f69446bcc5c8fd92e3675c676fdc445 - ASTERISK-24329 #close - Reported by: Thomas Frederiksen +2019-01-22 09:24 +0000 [c1da2e94a3] eyalhasson - Change-Id: I2a5f986a31279c981592f49391409ebf38d6f6d0 + * format_g726: add support for seeking -2017-12-14 10:51 +0000 [7a8a187a56] Sean Bright + 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. - * coverity: Fix warnings in res_smdi + ASTERISK-28246 - ASTERISK-19657 #close - Reported by: Matt Jordan III, Esq. + Change-Id: I626235bc4642df1479050d3d06828412603a9b40 - Change-Id: I59a5e6ef3e7d9e848bec1f4b40cb73321bc7956a +2019-01-23 07:59 +0000 [d3a6714158] Jean Aunis -2017-12-14 10:22 +0000 [dac5e3a0df] Sean Bright + * build : Fix cross-compilation errors - * configs: Comment out and change IP of iax.conf [demo] + 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. - This no longer appears to exist, so no sense in causing confusion. + ASTERISK-28250 - ASTERISK-27175 #close - Reported by: Tzafrir Cohen + Change-Id: If0a76e52a87d4ab82b7d4c72d27d8759ca931880 - Change-Id: Idde967924c69f6a741dc9a5ab7dacb44d22cf100 +2019-01-23 04:45 +0000 [907d71b551] Jeremy Lainé -2017-12-13 14:26 +0000 [a51bfe5a79] George Joseph + * res_http_websocket: ensure control frames do not interfere with data - * README: Remove outdated references to tex docs + 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. - Added links to the wiki to replace references to outdated - tex docs. + ASTERISK-28257 #close - ASTERISK-27430 - Reported by: Corey Farrell + Change-Id: Ia5367144fe08ac6141bba3309517a48ec7f013bc - Change-Id: I5007e732b30bc7b63d124c530ae8857c89991209 +2018-12-16 06:43 +0000 [f6cf837aed] Xiemin Chen -2017-12-13 09:50 +0000 [5f6a3c4399] Corey Farrell + * bridge_softmix: Use MSID:LABEL metadata as the cloned stream's appendix - * CLI: Remove special handling of 'core set verbose' from rasterisk. + 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. - 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-28196 #close + Reported-by: xiemchen - ASTERISK-20281 #close + Change-Id: Ib62b2886e8d3a30e481d94616b0ceaeab68a870b - Change-Id: Ia305f75f1fc424a9169bfa30ef70d626ace2c8a8 +2019-01-22 15:03 +0000 [735bd4d185] Gerald Schnabel -2017-12-08 06:48 +0000 [daa3a3009a] sungtae kim + * manager_channels: Fix throwing of HangupHandler manager events - * Add new AMI action for app_voicemail + 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. - 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. + This regression was introduced by ASTERISK_21462. - ASTERISK-27470 + ASTERISK-28252 - Change-Id: Ie4eba1424a142e5fbd1d9fb1821a3fc1a1e238b7 + Change-Id: I9956e35e18da1873113644df1ddc3c7cd37bf524 -2017-11-30 10:12 +0000 [62f2860c39] Joshua Colp +2019-01-19 15:55 +0000 [05b79d16ab] Chris-Savinovich - * AST-2017-012: Place single RTCP report block at beginning of report. + * Test_cel: Fails when DONT_OPTIMIZE is off - 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. + 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() - 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. + Change-Id: Ied32e0071f12ed9d5f3b4cdd878b2532a1c769d7 - 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. +2018-12-10 07:20 +0000 [dbef559e0b] George Joseph - ASTERISK-27382 - ASTERISK-27429 + * app_voicemail: Add Mailbox Aliases - Change-Id: Iad6c8a9985c4b608ef493e19c421211615485116 + 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. -2017-12-13 06:54 +0000 [3370cd21df] Joshua Colp + Example: + [general] + aliasescontext = myaliases - * res_pjsip_session: Reinvite using active stream topology if none requested. + [default] + 1234 = yadayada - 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. + [myaliases] + 4321@devices = 1234@default - 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. + Now you can use 4321@devices to refer to the 1234@default mailbox. - ASTERISK*27397 + 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: I7a57117f0183479e6884b7bf3a53bb8c7464f604 + Change-Id: I395b9205c91523a334fe971be0d1de4522067b04 -2017-12-06 08:24 +0000 [0b532367bd] Joshua Colp +2019-01-22 12:07 +0000 [f1fb249132] Kevin Harwell - * pjsip: Ignore state changes from old transactions. + * res_pjsip_registrar: mitigate blocked threads on reliable transport shutdown - 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. + 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. - This change backports a fix from PJSIP that eliminates the - incorrect state change and reduces when they would be raised - in the first place. + 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-27408 + ASTERISK-28213 #close - Change-Id: Id22d087591782eee31311753d11e7eca4b95ef34 + Change-Id: I7563ca596312b1dff4f3ab41483e89fe2862328a -2017-12-12 22:42 +0000 [cb249b2419] Yasuhiko Kamata +2019-01-22 09:02 +0000 [9c11399be3] George Joseph - * chan_sip: 3PCC patch for AMI "SIPnotify" + * pjproject_bundled: Add patch for double free issue in timer heap - A patch for sending in-dialog SIP NOTIFY message - with "SIPnotify" AMI action. + 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(). - ASTERISK-27461 + Change-Id: If000e9438c83ac5084b678eb811e902c035bd2d8 - Change-Id: I5797ded4752acd966db6b13971284db684cc5ab4 +2019-01-18 16:11 +0000 [fb6e0df173] Sean Bright -2017-12-12 15:38 +0000 [c7f94e570e] Ivan Poddubny + * pjsip_transport_management: Shutdown transport immediately on disconnect - * app_queue: Fix extension state subscriptions removed on dialplan reload + 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. - 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. + 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. - 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. + 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. - 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. + Related to ASTERISK~28231 - Reported by: Steven T. Wheeler + Change-Id: I02ee9f4073b6abca9169d30c47aa69b5e8ae9afb - ASTERISK-18411 #close +2019-01-20 12:15 +0000 [6506c5b1d4] Valentin Vidic - Change-Id: I4956af2136ea2a7f110ac9272eae5f6e676d8f89 + * channel.c: Fix segfault with Monitor(wav,file,i) -2017-12-12 15:28 +0000 [0c9cc7e975] Sean Bright + 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. - * chan_sip: Don't send trailing \0 on keep alive packets + ASTERISK-28249 - This is a partial fix for ASTERISK~25817 but does not address the - comments regarding RFC 5626. + Change-Id: I1bae9126537be54895c7fea2d08dd9488d8cc525 - Change-Id: I227e2d10c0035bbfa1c6e46ae2318fd1122d8420 +2019-01-10 13:34 +0000 [fcd07c34fb] Joshua C. Colp -2017-12-12 15:19 +0000 [5039b5741c] Dwayne Hubbard + * stasis / manager / ari: Better filter messages. - * chan_sip: Don't crash in Dial on invalid destination + 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. - 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. + 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-26131 #close - Reported by: Dwayne Hubbard - Patches: - dw-asterisk-master-dnid-crash.patch (license #6257) patch - uploaded by Dwayne Hubbard + ASTERISK-28244 - Change-Id: Ib84c1f740a9ec0539d582b09d847fc85ddca1c5e + Change-Id: I65272819a53ce99f869181d1d370da559a7d1703 -2017-12-12 15:16 +0000 [6a67828b46] Corey Farrell +2019-01-17 09:56 +0000 [011e46d5a6] Sean Bright - * menuselect: Tweak check for recently run configure. + * sched: Make sched_settime() return void because it cannot fail - 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: I66b8b2b2778f186919d73ae9bf592104b8fb1cd5 - Change-Id: Ibca155035fa1392c95e33cbf25f257902abba17b +2019-01-08 01:38 +0000 [21a1feece2] Jeremy Lainé -2017-12-07 17:51 +0000 [22810fc635] Richard Mudgett + * res_http_websocket: respond to CLOSE opcode - * chan_pjsip/res_pjsip: Add CHANNEL(pjsip,request_uri) + 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. - This patch does three things associated with the initial incoming INVITE - request URI. + 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. - 1) Add access to the full initial incoming INVITE request URI. + ASTERISK-28231 #close - 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). + Change-Id: Icb1b60205fc77ee970ddc91d1f545671781344cf - 3) Fix CHANNEL(pjsip,target_uri) documentation. +2019-01-04 17:14 +0000 [44a862fb57] Sean Bright - * The initial incoming INVITE request URI is now available using - CHANNEL(pjsip,request_uri). + * res_pjsip_transport_websocket: Don't assert on 0 length payloads - * Set the DNID on PJSIP channel creation so CALLERID(dnid) can return the - initial incoming INVITE request URI user portion. + 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. - * CHANNEL(pjsip,target_uri) now correctly documents that the target URI is - the contact URI. + Change-Id: I9c5fdccd89cc8d2f3ed7e3ee405ef0fc78178f48 - * Refactored print_escaped_uri() out of channel_read_pjsip() to handle - pjsip_uri_print() error condition when the buffer is too small. +2019-01-07 12:04 +0000 [4b24da607e] Mohit Dhiman - ASTERISK-27478 + * stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure. - Change-Id: I512e60d1f162395c946451becb37af3333337b33 + 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. -2017-12-12 09:28 +0000 [ec1f4bf48d] Sean Bright + ASTERISK-28197 - * res_pjsip: Add TLSv1.1 and TLSv1.2 support + Change-Id: Ied0451f378a3f2a36acc8c0984959a69895efa17 - Support for these protocols was added in the same commit as the 'proto' - field, so we can safely use the same ./configure check. +2019-01-05 11:14 +0000 [d2c182b6ab] Diederik de Groot - For reference: https://trac.pjsip.org/repos/changeset/4968 + * RAII: Change order or variables in clang version - Change-Id: Icf4975d785d6bfb8f30ac7ffa695a0adf9382dac + 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. -2017-12-12 08:06 +0000 [0b9d2135a9] Sean Bright + ASTERISK-28232 #close - * res_pjsip: Assign support levels to a few modules + Change-Id: I00811c34ae910836a5fb6d22304528aef92624db - Change-Id: I51f6945c4023cb93fc7b87be5ab4c50e9e6ee27d +2018-12-18 13:47 +0000 [7f22c9f4b7] Alexei Gradinari -2017-12-09 00:35 +0000 [c01ba7437e] Corey Farrell + * res_pjsip: add option to enable ContactStatus event when contact is updated - * CLI: Fix 'core show sysinfo' function ordering. + The commit I2f97ebfa79969a36a97bb7b9afd5b6268cf1a07d removed sending out + the ContactStatus AMI event when a contact is updated. + Thist change broke things which rely on old behavior. - Handle CLI initialization before any processing occurs. + 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: I598b911d2e409214bbdfd0ba0882be1d602d221c + Change-Id: I706adf7584e7077eb6bde6d9799ca408bc82ce46 -2017-12-11 15:27 +0000 [b088cddc03] Kevin Harwell +2019-01-07 08:06 +0000 [c6271155fb] Joshua Colp - * pjsip_options: wrongly applied "UNKNOWN" status + * res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled. - 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. + 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. - 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. + We now only enable abs-send-time for negotiation if WebRTC is enabled. - ASTERISK-27467 + ASTERISK-28230 - Change-Id: Id67509d25df92a72eb3683720ad2a95a27b50c89 + Change-Id: I0eb682302f8da3a4ea3c42e839208d55f825ed0c -2017-12-08 12:04 +0000 [c2ec82bf36] Richard Mudgett +2019-01-04 09:57 +0000 [c0e57e458b] Alexei Gradinari - * stasis_channels.c: Don't set channel snapshot caller_dnid twice. + * RTP: reset DTMF last seqno/timestamp on RTP renegotiation - Change-Id: Ib8d45bbdfbda81e65045f6dff874d189b74e5471 + 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. -2017-12-11 09:45 +0000 [00578fae0a] Sean Bright + 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. - * codec_opus: Make libcurl a dependency in menuselect + 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-27475 #close + ASTERISK-28162 #close - Change-Id: If7384bc6ed002ef140dec69798d14c52b7cfd800 + Change-Id: Ic72b4497e74d801b27a635559c1cf29c16c95254 -2017-12-08 12:48 +0000 [521f741b04] Sean Bright +2019-01-02 11:44 +0000 [92298434bd] Bryan Boatright - * pjsip: Improve CLI completion performance + * app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail - Use the new ast_cli_completion_add() function to improve completion - performance for commands like 'pjsip show endpoint.' + 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. - Change-Id: I76d802294d2ac1766110dc75f7d117c8541ce348 + ASTERISK-28225 -2017-12-07 14:19 +0000 [9a9edc6c9e] Sean Bright + Change-Id: I8efbace06e6122ea0793f7bdb073d4378e8274ca - * astdb: Improve prefix searches in astdb +2019-01-02 11:33 +0000 [2d9482695d] Joshua Colp - Using the LIKE operator requires a full table scan of 'astdb', whereas a - comparison operation is able to use the primary key index. + * app_queue: Fix crash when using 'b' option on non-ringall queue. - 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. + 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. - Related to ASTERISK~26806, but does not completely resolve it. + ASTERISK-28218 - Change-Id: I7d37f9ba2aea139dabf2ca72d31fbe34bd9b2fa1 + Change-Id: If1390f64e321047dff24fd2410c95dde74904980 -2017-12-08 18:19 +0000 [d2e87b8e14] Corey Farrell +2018-12-19 13:02 +0000 [f196078705] Richard Mudgett - * loader: Refactor resource_name_match. + * stasic.c: Fix printf format type mismatches with arguments. - Optimize resource_name_match. This change eliminates use of - ast_strdupa, instead verifying that both basename's are the same length, - then using strncasecmp. + An int64_t is not likely the same size as a long. - Change-Id: I477275c0e954c99d74be5abfc8bb6545b04e5a3d + * 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. -2017-12-08 14:58 +0000 [dbb376f166] Sean Bright + * Reordered the statistics structs to reduce potential padding bytes. - * pjsip_configuration: Add correct file header + Change-Id: Ic090a070e9dc4ca650ebdb9c01ed50a581289962 - Change-Id: I25348c386a222bb704aff07f54375108a6402906 +2018-12-26 12:30 +0000 [44a7faca21] Corey Farrell -2017-12-07 09:52 +0000 [2ffe52a116] Sean Bright + * stasis: Fix ABI between DEVMODE and non-DEVMODE. - * utils: Add convenience function for setting fd flags + Create compatibility stubs for maximum ABI compatibility. - 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. + ASTERISK-28212 #close - Change-Id: I8b81901e1b1bd537ca632567cdb408931c6eded7 + Change-Id: I872c04842ab6b61e9dd6d37e4166bc619aa20626 -2017-12-07 19:33 +0000 [e2dbc26376] Corey Farrell +2018-12-26 10:24 +0000 [ff2ed4eeee] George Joseph - * res_stasis and res_speech: Fix load order. + * Revert "stasis_cache: Stop caching stasis subscription change messages" - 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. + This commit caused issues with polling when combined with + the revert commit "Revert "app_voicemail: Remove need to subscribe to stasis" - Change-Id: I27f4f3810a95b6be8a5bfbf62be2ace6bfab6ff3 + This reverts commit 17d6d9e1e7d0db04ebd8d2e0cd9e087ec5462e2f. -2017-12-07 18:22 +0000 [0e4d31eb9c] Kevin Harwell + ASTERISK-28222 + Reported by: abelbeck - * pjsip_options: contacts sometimes not being updated on reload + Change-Id: Ib6a16cbe2c0b74c76c64264f525ab647959c1483 - 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. +2018-12-24 11:42 +0000 [3efe5061d5] George Joseph - 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". + * ast_coredumper: Refactor the pid determination process - This patch makes it so all contacts (static and dynamic) are selected, and - appropriately updated if need be. + 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. - ASTERISK-27467 #close + So now... - Change-Id: I7a920170f89c683af9505d4723a44fc6841decdb + 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. :( -2017-12-07 18:18 +0000 [bd2218ce63] Kevin Harwell + ASTERISK-28221 + Reported by: Andrew Nagy - * pjsip_options: dynamic contact's fields not updated on reload + Change-Id: I8aa1f3f912f949df2b5348908803c636bde1d57c - 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. +2018-12-19 12:39 +0000 [59717b5e85] Richard Mudgett - 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. + * backtrace.c: Fix casting pointer to/from integral type. - ASTERISK-27467 + 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. - Change-Id: I8e3165dc6a745218c1c9db837f77fafa0516985d + * uintptr_t to the rescue by doing an appropriate two stage cast. -2017-12-06 23:35 +0000 [c2c9995830] Corey Farrell + Change-Id: Icb2621583f50c8728de08a3c824d95fe53cc45d0 - * translate: Skip matrix_rebuild during shutdown. +2018-12-18 10:33 +0000 [aebb822d1f] George Joseph - Change-Id: I1e5eef4029cba56e33d786c5a5ade8091e531a1e + * app_voicemail: Don't delete mailbox state unless mailbox is deleted -2017-12-06 14:49 +0000 [ab191e9782] Corey Farrell + 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. - * sounds_index: Avoid repeatedly reindexing. + * Removed the delete of state from free_user(). - 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. + * 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. - 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. + ASTERISK-28215 - Change-Id: I585fd6ee04200612ab1490dc804f76805f89cf0a + Change-Id: I305e8b3c930e9ac41d901e5dc8a58fd7904d98dd -2017-12-05 18:04 +0000 [3078b7adc2] Richard Mudgett +2018-12-14 11:52 +0000 [970805180e] Sean Bright - * CDR: Fix deadlock setting some CDR values. + * res_rtp_asterisk: Remove some unused structure fields. - 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. + All of the fields that were removed were no longer referenced except for + 'lastrxts' and 'rxseqno' which were only ever written to. - * 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. + Change-Id: I5a5d31eb33e97663843698f58d0d97f22a76627c - * Made the CHANNEL function and the CDR function process amaflags the same - way. +2018-12-13 15:56 +0000 [f60afac587] Sean Bright - * Fixed referencing the wrong message type in cdr_prop_write(). + * res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set - ASTERISK-27460 + 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. - Change-Id: I5eacb47586bc0b8f8ff76a19bd92d1dc38b75e8f + ASTERISK-27959 #close + Reported by: David Kuehling -2017-12-06 12:42 +0000 [2af59ebb3a] Corey Farrell + Change-Id: Id28cd916a3d7748058fe9609b585d07d9e243f73 - * media_index: Improve startup. +2018-12-11 14:49 +0000 [640aac768b] Sean Bright - This eliminates some wasteful operations in media_index startup. + * bridge_builtin_features.c: Set auto(mix)mon variables on both channels - * 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. + This is how features behaved up through Asterisk 11, but was changed + when the new bridging framework was implemented in Asterisk 12. - 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. + Reported by rrittgarn in #asterisk. - Change-Id: Ia50b752f8efb356f852b05c4be495a6631af8652 + Change-Id: I72cf86223947a8118c75f46e2c603dbc11e3125b -2017-12-06 07:36 +0000 [e97e41552e] Richard Mudgett +2018-12-07 14:22 +0000 [2610379605] Alexei Gradinari - * bridge_basic.c: Update transfer diagnostic messages addendum. + * confbridge: announce to the marked users when they join an empty conference - * Added start DTMF transfer verbose messages. - * Made associated transfer messages use a similar message format. - * Adjusted message verbose level as requested by initial reporter. + Currently the file sound_only_person is not played when a marked + user (with announce_only_user=yes) joins an empty conference. - ASTERISK-27449 + This patch fixes it. - Change-Id: I2045714586414b3c5ef1f3cc56c1c4af4b31f551 + ASTERISK-28201 #close -2017-11-29 06:21 +0000 [9d00583164] Niklas Larsson + Change-Id: I85b67687e6b220939c3af8091d83a70a7b174cf4 - * bridge_basic.c: Update transfer diagnostic messages. +2018-11-30 05:40 +0000 [68ec7d93e8] Joshua C. Colp - * Add the channel name to diagnostic messages so you will know which - channel failed to transfer. + * stasis: Add statistics gathering in developer mode. - * Promoted some debug messages to verbose 4 messages. + 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. - ASTERISK-27449 #close + These are only available when Asterisk is compiled in + developer mode and do not have any impact under normal + operation. - Change-Id: Idac66b7628c99379cc9269158377fd87dc97a880 + ASTERISK-28117 -2017-12-01 13:54 +0000 [8536a09b86] Richard Mudgett + Change-Id: I94411b53767f89ee01714daaecf0c2f1666e863f - * security-events: Fix SuccessfulAuth using_password declaration. +2018-12-11 08:54 +0000 [9febdba05b] Sean Bright - 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. + * Use non-blocking socket() and pipe() wrappers - Change-Id: Ia08bc797613a62f07e5473425f9ccd8d77c80935 + Change-Id: I050ceffe5a133d5add2dab46687209813d58f597 -2017-11-30 12:50 +0000 [ab63448fa6] Richard Mudgett +2018-12-11 09:06 +0000 [16ae8330d2] Sean Bright - * res_rtp_asterisk.c: Increase strictrtp learning timeout time. + * utils: Don't set or clear flags that don't need setting or clearing - 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. + Change-Id: I0e7fb507ac09b15e45e1ff8501ecfca67afa5217 - * Increase the strictrtp learning timeout time from 1.5 to 5 seconds. +2018-12-11 06:55 +0000 [9c9519796b] Sean Bright - ASTERISK-27453 + * build: Update config.guess and config.sub - Change-Id: Ic5e711164cbb91b4d1c1e40c83697755640f138c + Pulled from the authoritative respository at: -2017-12-04 08:33 +0000 [e0354bbe82] Alexander Traud + https://git.savannah.gnu.org/cgit/config.git/tree/ - * res_rtp_asterisk: Correct default in sample configuration file. + Change-Id: I748708ce24d4d47ff1f395075d0b08d3da3355e0 - 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". +2018-12-11 08:28 +0000 [df0b59564e] George Joseph - ASTERISK-20643 + * Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit" - Change-Id: I2a2e0a900455d0767a99ea576e30adc6d7608a36 + This reverts commit 331c906c4811df17612efa5c31e19df7186b1c81. -2017-12-04 05:27 +0000 [b2c4e8660a] Alexander Traud + Pending resolution of ASTERISK_28200 - * chan_sip: Peers with distinct source ports don't match, regardless of transport. + Change-Id: Ie7172707b603c1da3f200613bd4473335af75128 - 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. +2018-12-06 11:23 +0000 [59cf552dd3] Sebastian Damm - 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. + * res/res_ari: Add additional hangup reasons - ASTERISK-27457 - Reported by: Stephane Chazelas + 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 - Change-Id: Id190428bf1d931f2dbfd4b293f53ff8f20d98efa + ASTERISK-28198 #close -2017-12-04 03:40 +0000 [0611fe581c] Sungtae Kim + Change-Id: I85996f1076c9946d65c778413f040a845a90fecc - * Add new object for VoicemailUserEntry +2018-12-07 06:57 +0000 [8a18fb81c1] Sean Bright - 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. + * utils: Wrap socket() and pipe() to reduce syscalls - ASTERISK-27456 + Some platforms provide an implementation of socket() and pipe2() that allow the + caller to specify that the resulting file descriptors should be non-blocking. - Change-Id: I5c71521c2d1daf8b7b161e31c34d28cca6aea4c7 + Using these allows us to potentially elide 3 calls into 1 by avoiding extraneous + calls to fcntl() to set the O_NONBLOCK flag afterwards. -2017-12-03 18:49 +0000 [e2715d2cd4] Joshua Colp + In passing, change ast_alertpipe_init() to use pipe2() directly instead of the + wrapper if it is available. - * pjproject: Clean up disabling of WebRTC support. + Change-Id: I3ebe654fb549587537161506c6c950f4ab298bb0 - 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. +2018-11-29 09:53 +0000 [79899db740] George Joseph - ASTERISK-26980 + * stasis: Allow filtering by formatter - Change-Id: I27da2c894f87914956a72710222e17462d8a44bc + 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. -2017-12-02 15:55 +0000 [39939cecfa] Corey Farrell + ASTERISK-28186 - * autoconf: Remove use of m4_ifblank. + Change-Id: Ifdb7a222a73b6b56c6bb9e4ee93dc8a394a5494c - 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. +2018-12-04 18:00 +0000 [6071ad77f5] Giuseppe Sucameli - Change-Id: I280785deb872ed8d3339d99cce63a2b54d5f1438 + * chan_sip: Fix leak using contact ACL -2017-11-30 14:38 +0000 [075faac2fd] George Joseph + Free old peer's contactacl before overwrite it within build_peer. - * AST-2017-013: chan_skinny: Call pthread_detach when sess threads end + ASTERISK-28194 - 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. + Change-Id: Ie580db6494e50cee0e2a44b38e568e34116ff54c - * 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. +2018-12-05 15:28 +0000 [1657508ddd] David M. Lee - ASTERISK-27452 - Reported by: Juan Sacco + * Removing registrar_expire from basic-pbx config - Change-Id: I9af7268eba14bf76960566f891320f97b974e6dd - (cherry picked from commit 8f5dff543e457ee3450d21e741901609af0cd779) + The module has been removed, so it shouldn't be in the default config any more. -2017-12-01 10:01 +0000 [d9fdeae6a4] Sean Bright + Change-Id: Ie7e09f00f9c9a885574e29478250de4c2cefd9f1 - * config: Speed up config template lookup +2018-12-05 09:37 +0000 [a6c2662404] George Joseph - 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. + * CI: Various updates to buildAsterisk.sh - 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. + * 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. - 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. + * Added "set -e" to abort the script on command failure. + Not sure why this wasn't there in the first place. - Change-Id: I59b95f288e11eb6bb34f31ce4cc772136b275e4a + * Fixed a few echos that were redirecting to stderr when they shouldn't + have been. -2017-12-01 08:29 +0000 [1ad0fbc80e] Sean Bright + * Catch more alembic failures by actually trying to generate the SQL. - * config: Speed up ACO & sorcery initialization + Change-Id: I9f395fa4e9254be7299e7c1014f1a13db78faffb - 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. +2018-12-03 17:45 +0000 [12a30c71d8] Kevin Harwell - 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: + * pjsip_add_use_callerid_contact: fixed alembic script - Call this routine to speed up XPath computation on static documents. + Change-Id: I413f1583c797fb79651786cd8d0b003599f8ed10 - 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. +2018-12-03 16:41 +0000 [27806fd04d] Sean Bright - Change-Id: I45d457f1580e26bf5a2b0dab16e8e9ae46dcbd82 + * core: Add some documentation to the malloc_trim code -2017-12-01 06:07 +0000 [892df22ccd] Joshua Colp + This adds documentation to handle_cli_malloc_trim() indicating how it + can be useful when debugging OOM conditions. - * res_http_post: Not all versions of gmime have GMIME_MAJOR_VERSION. + Change-Id: I1936185e78035bf123cd5e097b793a55eeebdc78 - This change makes the presence of the GMIME_MAJOR_VERSION - definition optional, as not all versions of gmime actually - define it. +2018-12-03 14:01 +0000 [1f09c61804] Chris-Savinovich - ASTERISK-27454 + * core: Merge malloc_trim patch - Change-Id: I01d99590045971ed6787899147170a5954077238 + 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. -2017-11-30 21:24 +0000 [35a7036a0d] Corey Farrell + Since malloc_trim is only available in libc, an entry is + added to configure.ac to create a definition for + HAVE_MALLOC_TRIM. - * README-SERIOUSLY.bestpractices.txt: Convert to markdown + Change-Id: Ia38308c550149d9d6eae4ca414a649957de9700c - Follow-up to conversion of README.md. +2018-11-30 14:00 +0000 [60e548ffa5] Chris-Savinovich - Change-Id: I17ee7cf25bc027ece844efa2c1dfe613aff1e35b + * test_websocket_client.c: Disable websocket_client_create_and_connect test. -2017-11-17 10:38 +0000 [ce5cfc8ffb] Corey Farrell + This test was occasionally failing, with: - * autoconf: Use m4 conditionals where possible. + 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 - Change-Id: I530c0a72f965437acef6a9a4fbfe5c487f078b65 + Disabled for now by making the test explicit only. -2017-11-17 09:15 +0000 [87a57e8d46] Corey Farrell + Change-Id: I778f6cbb6104c6b4e89737a2eaf1a9540888d351 - * autoconf: Fix call to AC_CONFIG_AUX_DIR. +2018-11-28 01:14 +0000 [5de36abd5a] Pirmin Walthert - The `pwd` parameter to AC_CONFIG_AUX_DIR is unnecessary, the default - value is $srcdir. + * pjproject_bundled: check whether UPDATE is supported on outgoing calls - Additionally remove the AC_REVISION call. It only added a comment and - is pointless without SVN tag replacements. + 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. - Change-Id: I99299a3217f095bddcb2edefb3b9af0ab147bc29 + ASTERISK-28182 #close + Reported-by: nappsoft -2017-11-20 16:58 +0000 [d12a2ab400] Corey Farrell + Change-Id: I76cc06da4ca76ddd6dce814a8b97cc66b98aaf29 - * CLI: Remove compatibility code. +2018-11-29 13:26 +0000 [a2a8a41db3] George Joseph - Previous commits maintained compatibility with older remote console - clients as well as maintaining all API's. + * Revert "app_voicemail: Remove need to subscribe to stasis" - Remove the following compatibility code: - * ast_cli_generatornummatches. - * Remote command "_command nummatches". - * Sorting / duplicate removal by remote console. + This reverts commit 29115e23848cceee0e2763bc70e87cb311919cdd. - Change-Id: I59e6ce94fa57ae564888442049695f7e46746437 + 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. -2017-11-26 11:47 +0000 [58115e9c21] Alexander Traud + ASTERISK-28151 + Reported by: Ronald Raikes - * translate: Transcode siren14, speex32, silk24, and silk12 via slin16. + Change-Id: I57b7b85e75d7dd97c742b5c69d718a0f61260c15 - 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. +2018-10-22 07:47 +0000 [aa004295f9] lvl - 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. + * app_queue: Revert broken queue channel reference patch - 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). + Revert commit 6409e7b11a2310196a9978b30a6b79e2760be592, and add + NULL checks for all app_queue event handling code. - ASTERISK-23735 - Reported by: Richard Kenner + Related issues: ASTERISK~25185, ASTERISK~27006, ASTERISK~25844 - Change-Id: I9448295c1978be26f8633b6066395e7bbbe2e213 + ASTERISK-28125 -2017-11-26 09:44 +0000 [55c4d8e008] Richard Mudgett + Change-Id: I37334ea184ebb56e54471496b82937d4927815a0 - * res_ari: Fix inverted test giving wrong error message. +2018-11-26 16:18 +0000 [a5e77e9c37] George Joseph - The patch for ASTERISK_24560 inverted a test checking if the bridge name - is being updated to a different name. + * test_cel: Plug a few ref leaks - * Fix the test to return "Changing bridge name is not implemented" when - someone attempts to change the bridge name. + 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. - ASTERISK-27445 + Change-Id: Ie2369fa944023d44767871c5c30974cb077ffb56 - Change-Id: I4b70bf08b0e02e016108b077ff75b345dec12fc9 +2018-11-26 06:09 +0000 [606304eb54] Corey Farrell -2017-11-25 04:09 +0000 [74e7005a74] Alexander Traud + * jansson: Upgrade to 2.12. - * translate: Show sample rate for silk, speex, and slin in translation table. + 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. - ASTERISK-24662 + Change-Id: If0f2d541c50997690660c21fb7b03d625a5cdadd - Change-Id: I3822956984292c99c48bca8e97807e498ccc0e88 +2018-11-23 09:40 +0000 [331c906c48] Alexei Gradinari -2017-11-23 13:27 +0000 [02a9952709] Richard Mudgett + * RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit - * features.conf.sample: Clarify ActivatedBy documentation wording. + 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. - Change-Id: Id2899331fe05d1909a862ea879742879d086bc64 + 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. -2017-11-22 18:37 +0000 [4b1262c94b] Corey Farrell + 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. - * Add defaultbranch to .gitreview. + ASTERISK-28162 #close - 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: If9c5742158fa836ad549713a9814d46a5d2b1620 - Change-Id: I3db009217c5ae399fb84bee95076f4dbb7fa52d2 +2018-11-19 14:10 +0000 [ed7a5664b6] Corey Farrell -2017-11-22 18:43 +0000 [fcd9ba2b87] Alexander Anikin + * astobj2: Eliminate usage of legacy ao2_container_alloc routine. - * add cmd connection creation on creation ooh323 call data structure + Replace usage of ao2_container_alloc with ao2_container_alloc_hash or + ao2_container_alloc_list. - ASTERISK-27353 #close + ao2_container_alloc is now restricted to modules only and is being + removed from Asterisk 17. - Reported by: Marco Giordani + Change-Id: I0907d78bc66efc775672df37c8faad00f2f6c088 - Change-Id: I455096bd7da016b871afe09af86067c2c7c9f33f +2018-11-14 05:02 +0000 [0d2b39065f] Corey Farrell -2017-11-22 10:42 +0000 [db21f7f2e1] Kevin Harwell + * astobj2: Create function to copy weak proxied objects from container. - * pjsip: 183 without To tag does not negotiate media + 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. - 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. + Create test for this new function and for ao2_weakproxy_find. - 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. + Change-Id: I898387f058057e08696fe9070f8cd94ef3a27482 - ASTERISK-27442 #close +2018-11-11 10:29 +0000 [1b6df87816] Sungtae Kim - Change-Id: Ic9d6b01e05e8f4874eebbd7adfe05d932025d203 + * res_pjsip: Patch for res_pjsip_* module load/reload crash -2017-11-21 06:39 +0000 [1a349d832d] Alexander Traud + The session_supplements for the pjsip makes crashes when the module + load/unload. - * res_rtp_asterisk: ICE server-reflexive candidates (srflx) with Dual-Stack. + ASTERISK-28157 - 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. + Change-Id: I5b82be3a75d702cf1933d8d1417f44aa10ad1029 - ASTERISK-27437 +2018-11-16 14:45 +0000 [72e532136c] Michael Walton (license 6502) - Change-Id: Ie07d8e2bfa7b6fe06fcdc73d390a7a9a4d8c0bc1 + * func_strings: HASHKEY - negative array index can cause corruption -2017-11-20 13:05 +0000 [8e1506154f] Corey Farrell + 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. - * res_parking: Set load_pri more appropriately. + ASTERISK-28159 + patches: + ASTERISK-28159.diff submitted by Michael Walton (license 6502) - 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: I6e57fe7307dfd856271753aed5ba64c59b511487 - Change-Id: I297b6fb3ff6993ec004e667b22a74f5925906259 +2018-11-19 11:59 +0000 [729967e99c] George Joseph -2017-11-17 21:33 +0000 [90f9885f73] Corey Farrell + * CI: Get job timeouts from environment - * README: Convert to README.md. + 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... - 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. + TIMEOUT_GATES = "60 MINUTES" + TIMEOUT_DAILIES = "3 HOURS" + TIMEOUT_REF_DEBUG = "24 HOURS" + TIMEOUT_UNITTESTS = "30 MINUTES" - Change-Id: I7d13131764a9a9026e5f8a6ddb245a01bbd788e7 + Change-Id: I673a551c1780bf665a3bc160b245da574aa4bbab -2017-11-20 16:48 +0000 [b79d04f8f8] Corey Farrell +2018-11-18 17:53 +0000 [d05c219aad] Joshua C. Colp - * CLI: Finish conversion of completion handling to vectors. + * stasis: Remove stringfields and lock from change message. - Change-Id: Ib81318f4ee52a5e73b003316e13fe9be1dd897a1 + 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. -2017-11-07 15:34 +0000 [fbb8c0d3e4] Corey Farrell + Change-Id: I3f4831931d79f94fd979baf48048738df5dc1632 - * CLI: Refactor cli_complete. +2018-11-19 07:00 +0000 [f9b9bdd0b0] Corey Farrell - * 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. + * app_queue: Cleanup queue_ref / queue_unref routines. - Change-Id: Ie2211b519a3d4bec45bf46e0095bdd01d384cb69 + 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. -2017-11-07 14:13 +0000 [1cd24cd726] Corey Farrell + Change-Id: If4e04e9bab2e3c883188437cb9f487b3e498a21b - * CLI: Rewrite ast_el_strtoarr to use vector's internally. +2018-11-08 09:53 +0000 [41eab5b3b8] George Joseph - This rewrites ast_el_strtoarr to use vector's internally, but still - return the original NULL terminated array of strings. + * backtrace: Refactor ast_bt_get_symbols so it doesn't crash - Change-Id: Ibfe776cbe14f750effa9ca360930acaccc02e957 + 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. -2017-11-07 14:47 +0000 [9c0a2110f0] Corey Farrell + 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. - * CLI: Refactor ast_cli_display_match_list. + 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. - * 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. + ASTERISK-28140 - Change-Id: I7f92afa8bea92241a95227587367424c8c32a5cb + Change-Id: I79d02862ddaa2423a0809caa4b3b85c128131621 -2017-11-08 23:42 +0000 [9587a61f4c] Corey Farrell +2018-11-16 20:33 +0000 [cb83350230] Sungtae Kim - * CLI: Create ast_cli_completion_add function. + * res/res_ari: Fix null endpoint handle - 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. + 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. - Change-Id: I73d26d270bbbe1e3e6390799cfc1b639e39cceec + ASTERISK-28169 -2017-11-09 00:39 +0000 [a02cbc2ef3] Corey Farrell + Change-Id: Ibf10a9eb8a2e3a9ee1e13fbe748b2ecf955c3993 - * CLI: Remove calls to ast_cli_generator. +2018-11-13 09:28 +0000 [e6005f1227] Alexei Gradinari - 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'. + * pjsip: New function PJSIP_PARSE_URI to parse URI and return part of URI - * 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. + New dialplan function PJSIP_PARSE_URI added to parse an URI and return + a specified part of the URI. - Change-Id: I8cd6b93905363cf7a33a2d2b0e2a8f8446d9f248 + This is useful when need to get part of the URI instead of cutting it + using a CUT function. -2017-11-20 09:13 +0000 [491e2eba0d] Alexander Traud + For example to get 'user' part of Remote URI + ${PJSIP_PARSE_URI(${CHANNEL(pjsip,remote_uri)},user)} - * chan_sip: ICE contained square brackets around IPv6 addresses. + ASTERISK-28144 #close - ASTERISK-27434 + Change-Id: I5d828fb87f6803b6c1152bb7b44835f027bb9d5a - Change-Id: Iaeed89b4fa05d94c5f0ec2d3b7cd6e93d2d5a8f7 +2018-09-23 15:50 +0000 [8d436a95e7] Joshua Colp -2017-11-19 21:23 +0000 [10b4b5d200] Corey Farrell + * stasis: Add internal filtering of messages. - * loader: Fix comments in struct ast_module. + 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. - Make the comments follow doxygen format, move comments to the line - before each field they describe. + 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. - Change-Id: Ic445468398b5e88f13910f7c2f70bd15aad33a27 + 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. -2017-11-16 17:25 +0000 [9ae805c900] Corey Farrell + ASTERISK-28103 - * cli: Remove silly usage of RAII_VAR. + Change-Id: I99bee23895baa0a117985d51683f7963b77aa190 - Change-Id: I81aacfee7cd26e4fc5eef07bca582700c2975bd7 +2018-11-18 10:38 +0000 [dd0a3c0bba] George Joseph -2017-11-16 13:19 +0000 [89ccab95c2] Corey Farrell + * CI: Add tmpfs to all jenkinsfiles - * ccss: Remove silly usage of RAII_VAR. + Change-Id: Ida29d70d48d5f39aabf0b25c66b51f79324a8cba - Change-Id: I5ce40035e0a940e4e56f6322c1dcd47fbd509b98 +2018-11-17 15:40 +0000 [77e9c877b5] George Joseph -2017-11-16 12:51 +0000 [5e99c334d1] Corey Farrell + * CI: Mount a tmpfs on /tmp for testsuite docker containers - * app: Remove silly usage of RAII_VAR. + Change-Id: I0566d81b0852f22066cd76d58eae5f1fda5602aa + (cherry picked from commit 73efe86436427e5f43c532e5d42505ab4ec104d9) - Change-Id: Ideb594f7aae134974fb78d5477ba0853b97b8625 +2018-11-17 13:07 +0000 [0552bc2a94] George Joseph -2017-11-16 12:19 +0000 [abdd9fa1a8] Corey Farrell + * CI: Pass work directory to runTestsuite - * aoc: Remove silly usage of RAII_VAR. + 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. - Change-Id: I07907f833b81aeb0128bc9442a2abb52679c7511 + * runTestsuite.sh now accepts a --work-dir command line argument + that gets exported as AST_WORK_DIR before running the testsuite. -2017-11-16 12:55 +0000 [48e1b39b28] Corey Farrell + * gates.jenkinsfile now specifies --work-dir to be + /astroot. - * abstract_jb: Remove silly usage of RAII_VAR. + 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: I9d56175369363d1dc735504cf78a3a5577069f49 + Change-Id: If5ee905a15821296c355bb84cda38950ad8edc45 + (cherry picked from commit a335f4c9adb0a00211345634f61917bdf5b412c2) -2017-11-20 13:08 +0000 [d6bbcec571] Corey Farrell +2018-11-15 11:41 +0000 [7ba8f32632] George Joseph - * res_mwi_external_ami: Remove incorrect load priority. + * CI: Allow runUnittests to use 'expect' to run the tests - 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. + 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. - Change-Id: I82987fcf10d3ea42716b2f9df915b16687fd5839 + If 'expect' isn't installed, the original daemon/asterisk -r + process is used. -2017-11-20 12:54 +0000 [58fa3885cc] Corey Farrell + Also added a "core show settings" before running the tests + and added "notice,warning,error" to the console log. - * Loader: Remove unneeded load_pri declarations. + Change-Id: Idd656085f854afede813ac241b9e312b31358160 - Instead of specifying AST_MODFLAG_LOAD_ORDER with load_pri - AST_MODPRI_DEFAULT just use AST_MODFLAG_DEFAULT. +2018-11-12 12:23 +0000 [699dfa9401] Corey Farrell - Change-Id: I0123258eafce324249433a69df15a85cc16e509f + * taskprocessor: Prevent race creating new taskprocessor. -2017-11-20 09:49 +0000 [7397961b02] Alexander Traud + 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. - * BuildSystem: pjsip_evsub_set_uas_timeout was not used. + Change-Id: Id64fae94a6a1e940ddf38fde622dcd4391635382 - ASTERISK-27435 +2018-11-16 06:20 +0000 [3bdf6ac918] Corey Farrell - Change-Id: Id318a7ae6d7d69b53f911d30bf3eece64852f15c + * pjproject-bundled: Use AST_DEVMODE for conditional compilation. -2017-11-19 09:57 +0000 [b4f7f8250f] Corey Farrell + 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. - * Build: Fix OSX build issues. + Change-Id: Iee8a3613cdb711fa7e7d217c5a775a575907ae22 - 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. +2018-11-15 14:47 +0000 [2a76489eba] Corey Farrell - ASTERISK-27332 + * res_pjsip_caller_id: Use static pj_str_t for fromto header names. - Change-Id: I5d34ecca905384decb22ead45c913ae5e8aff748 + PJSIP assumes that these header names are not allocated, does not clone + the name strings when reusing headers. -2017-11-19 13:52 +0000 [999e0c17d7] Corey Farrell + 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. - * Build: Fix issues building without SSL. + Change-Id: I190854dea943d6e441cf03733f8a0da661aea27f - * Fix conditional in libasteriskssl. - * Use variables produced by configure to link the SSL and uuid libraries - into libasteriskpj.so instead of hard-coding them. +2018-10-24 07:38 +0000 [7b2282c890] Torrey Searle - ASTERISK-27431 + * res/res_pjsip_nat: Fix logic for REINVITES - Change-Id: I3977931fd3ef8c4e4376349ccddb354eb839b58d + 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. -2017-11-19 13:28 +0000 [53f42cc052] Corey Farrell + ASTERISK-28129 #close - * res_pjsip: Fix warning by deferring implicit type cast. + Change-Id: Ic8ceb54ccfc93f7e315e476c514a2c777f2da7dc - 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. +2018-11-15 05:33 +0000 [a36cd6960c] Corey Farrell - Change-Id: I0c262c1719ee951aae1f437d733a301cf5f8ad29 + * core: Fix handling of restart from remote console. -2017-11-18 21:13 +0000 [75cb403775] Corey Farrell + We cannot use need_el_end and SIGURG when restarting. Instead we need + to run el_end within the SIGHUP restartnow handler. - * tests: Fix warnings found on Mac. + ASTERISK-28158 - test_pbx used raise without explicitly including signal.h. On Mac for - some reason nothing else includes it. + Change-Id: Ia852276363c81bdcf1aa29eb4558c5c2fa1218a0 - test_logger checked if an unsigned int was negative. Switch the - variable to 'int' so that error check can be effective. +2018-10-25 10:25 +0000 [009d67cd28] Jan Hoffmann (license 6986) - Change-Id: Ie1db5dd1818ac25cc2ae41b644f848b5865b1362 + * AST-2018-010: Fix length of buffer needed for SRV and NAPTR results -2017-11-18 20:25 +0000 [83a2c4d2ae] Corey Farrell + 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. - * res_snmp: Declare RONLY if net-snmp headers do not. + ASTERISK-28127 + Reported by: Jan Hoffmann - 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. + patches: + patch.diff submitted by janhoffmann (license 6986) - Change-Id: Ida5c7ad9406515825485c4d3b4a34fd6ad0da577 + Change-Id: I4d35d6c431c6c6836cb61d37b1378cc47f0b414d -2017-11-18 20:02 +0000 [5a899fc503] Corey Farrell +2018-11-13 10:51 +0000 [89d97da8a4] Corey Farrell - * res_fax: Remove checks for unsigned values being >= 0. + * test_res_pjsip_scheduler: Fix possible write after free in scheduler_policy. - It's impossible for gwtimeout or fdtimeout to be less than 0 because - they are unsigned int's. Remove checks and unreachable branches. + 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: Ib2286960621e6ee245e40013c84986143302bc78 + Change-Id: I057e2fcbe97f8a175e50890be89c28c20490a20f -2017-11-18 19:50 +0000 [b4862e463c] Corey Farrell +2018-10-17 08:48 +0000 [df703c1853] Robert Cripps - * iostream: Fix ast_iostream_printf declaration. + * bridge_native_rtp.c: Fail native bridge if no framing match. - 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. + ASTERISK-28110 #close - Change-Id: I71c33a8262590042ee451e1146760c10bb22fb78 + Change-Id: Ic64b8fc6a140a93fbdb2f97550a40d0ff334e607 -2017-11-18 19:29 +0000 [2fab3aacd6] Corey Farrell +2018-11-11 18:32 +0000 [05c79fdf06] Corey Farrell - * app_minivm: Fix possible uninitialized return value. + * taskprocessor: Do not use separate allocation for stats or name. - Declare 'res' initialized to -1 to deal with earlier error paths that - could cause 'res' to be returned uninitialized. + Merge storage for the stats object and name string into the main + allocation for struct ast_taskprocessor. - Change-Id: I8ac2a5755bf4174d89ef893e924c940f702b104e + Change-Id: I74fe9a7f357f0e6d63152f163cf5eef6428218e1 -2017-11-16 02:47 +0000 [0ca406c202] Pirmin Walthert +2018-11-11 07:34 +0000 [3cde7e30ba] Corey Farrell - * res_rtp_asterisk.c: Fix rtp source address learning for broken clients + * core: Ensure that el_end is always run when needed. - 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. + * Ignore console=yes configuration option in remote console processes. + * Use new flag to tell consolethread to run el_end and exit when needed. - 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. + ASTERISK-28158 - 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. + Change-Id: I9e23b31d4211417ddc88c6bbfd83ea4c9f3e5438 - ASTERISK-27421 #close +2018-11-08 15:37 +0000 [1c008c6de5] Corey Farrell - Change-Id: If778fe07678a6fd2041eaca7cd78267d0ef4fc6c + * jansson-bundled: Patch for off-nominal crash. -2017-11-17 19:36 +0000 [9316a064fd] Corey Farrell + 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 '+'. - * README: Send people to secure websites where available. + Change-Id: Ic125df691d81ba2cbc413e37bdae657b304d20d0 - We should be sending people to secure web URL's where available. - Update README's and docs. +2018-11-02 06:38 +0000 [07a59b783e] Corey Farrell - Change-Id: Id5b1e049b0b18b49a784f1254605aefa244ce19a + * pbx_config: Only the first [globals] section is seen. -2017-11-17 19:54 +0000 [5d0529c4d9] Corey Farrell + 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. - * doxygen: Remove obsolete contents. + ASTERISK-28146 #close - Remove doxygen contents that have nothing to do with the current state - of Asterisk. + Change-Id: Iaac810c0a7c4d9b1bf8989fcc041cdb910ef08a0 - Change-Id: Ic072cc8641f9533a202990ccf275ce87e3efd95c +2018-11-06 16:44 +0000 [9c9bc5acca] Chris-Savinovich -2017-11-17 09:57 +0000 [1b6e4c1175] Sean Bright + * res_pjsip: Send a 503 response when overload state if reliable transport. - * res_pjsip: Use reasonable buffer lengths for endpoint identification + 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. - 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: I1c230b40d43a254ea0f226b7acf9ee480a5d3836 - Change-Id: If3f30a68307f1365a1fe06bc4b854c62842c9292 +2018-11-06 16:35 +0000 [03efafbd4d] Kevin Harwell -2017-11-11 10:09 +0000 [b9f4bb5988] Corey Farrell + * res_pjsip: formatting error in documentation - * menuselect: Remove ineffective weak attribute detection. + 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. - 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. + This patch replaces the pipe with a comma. - 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. + ASTERISK-28150 - Additionally removed: - - WEAKREF variable from Asterisk makeopts.in. - - Related disabled code from test_utils. - - Pointless AC_REVISION call from menuselect/configure.ac. + Change-Id: I3d79a6ca6d733d9cb290e779438114884b98a719 - Change-Id: Ifa702e5f98eb45f338b2f131a93354632a8fb389 +2018-11-05 12:44 +0000 [3e3f3bfb07] Alexei Gradinari -2017-11-16 09:48 +0000 [c4f11911ea] Corey Farrell + * res_pjsip.c: Make taskprocessor scheduling algorithm pick the shortest queue - * acl: Fix allocation related issues. + 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. - Add checks for allocation errors, cleanup and report failure when they - occur. + Longer running tasks with the round-robin method can delay processing + tasks. - * 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 the algorithm from round-robin to least-size for picking the + PJSIP taskprocessor from the default serializer pool. - Change-Id: Ia19eaaeb0b139ff7ce7b971c7550e85c8b78ab76 + Change-Id: I7b8d8cc2c2490494f579374b6af0a4868e3a37cd -2017-11-16 09:04 +0000 [781a520b73] Joshua Colp +2018-11-05 08:30 +0000 [27897a850d] Joshua Colp - * bridge_basic: Ignore answer from transfer target when they've timed out. + * stasis: Clarify lifetime of topics. - This is a fun one. + 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: - Given the following attended transfer scenario: + Long lived topics which exist for the lifetime of the system. + Ephemeral topics which feed a long lived topic. - 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 + 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. - 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. + Change-Id: Ic5e244da7b16b1895ba1fc5ece481ebba5809c9a - 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. +2018-10-09 07:44 +0000 [7f6ac5dc2f] Jasper Hafkenscheid - ASTERISK-27361 + * chan_sip: Attempt ast_do_pickup in handle_invite_replaces - Change-Id: Ifb8b255a9c4d2c5c1b8ad77bf54f659ed286df99 + 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. -2017-11-16 19:39 +0000 [a95f2994c6] Corey Farrell + ASTERISK-28081 #close + Reported-by: Luit van Drongelen - * aoc: Fix memory management issues. + Change-Id: Ieb1442027a3ce6ae55faca47bc095e53972f947a - aoc_publish_blob failed to check for msg allocation error and never - released msg. +2018-10-26 10:53 +0000 [a6d1723727] Pascal Cadotte Michaud - Change-Id: Ib31a9ffb81056a0d496a49d7eec795005a44bcd5 + * contrib/sip_to_pjsip: add a --quiet option to avoid prints -2017-11-16 16:18 +0000 [7a735d45e2] Sean Bright + 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. - * res_pjsip_transport_websocket: Give transport a meaningful description + 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. - 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. + ASTERISK-28136 - Change-Id: I63d96ef8f7516ac02a0f91e22dfa8acdc615042c + Change-Id: I7b0e2e90e2549f3f8e01dc96701f111b5874c88d -2017-11-16 15:00 +0000 [6c53fb5d21] Sean Bright +2018-10-31 07:53 +0000 [9c5e75acb0] Joshua Colp - * res_pjsip: Use sorcery prefix operation for contact lookup + * res_pjsip: Add XML documentation for "use_callerid_contact" - This improves performance for registrations assuming that - res_config_astdb is not in use. + ASTERISK-28087 - Change-Id: I86f37aa9ef07a4fe63448cb881bbadd996834bb1 + Change-Id: I69d48813ec514f5ef06c6de994cba52630e0a3b4 -2017-10-19 14:44 +0000 [d995064fb7] Nir Simionovich +2018-10-30 10:52 +0000 [719daf3299] Richard Mudgett - * This patch adds a beanstalk CEL backend. + * alembic: Fix use_callerid_contact option add script. - 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 + ASTERISK-28087 - This module is based upon the beanstalk-client library, available - for download at: https://github.com/deepfryed/beanstalk-client + Change-Id: I046d018015427d0916fab571b5a4f5367476f729 - This module currently doesn't support user defined events. +2018-10-12 16:46 +0000 [5cbe77cc46] Alexei Gradinari - Change-Id: Ic3a087faeeac045d69a2a018e60e29831ddb95ab + * pjsip: new endpoint's options to control Connected Line updates -2017-11-09 19:58 +0000 [e793501084] Richard Mudgett + This patch adds new options 'trust_connected_line' and 'send_connected_line' + to the endpoint. - * chan_pjsip.c: Improve answer failure log messages. + The option 'trust_connected_line' is to control if connected line updates + are accepted from this endpoint. - * Balanced the session->inv_session refs on answer failure. + The option 'send_connected_line' is to control if connected line updates + can be sent to this endpoint. - Change-Id: I33542d639d37e692cb46550b972a5fcfc3b804b8 + The default value is 'yes' for both options. -2017-11-14 18:00 +0000 [b7b800b689] Richard Mudgett + Change-Id: I16af967815efd904597ec2f033337e4333d097cd - * audiohook.c: Fix freeing a frame and still using it. +2018-10-26 16:18 +0000 [fbee505611] Alexei Gradinari - 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. + * res_pjsip_notify: improve realtime performance on CLI completion on the endpoint - * 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. + The module 'res_pjsip_notify' inefficiently makes a lot of DB requests + on CLI completion on the endpoint. - * Made plc.c:normalise_history() use memmove() instead of memcpy() on a - memory block that could overlap. Found by valgrind investigating this - issue. + For example if there are 10k endpoints the module makes 10k requests + of these 10k records. - ASTERISK-27238 - ASTERISK-27412 + Even if a part of the endpoint entered + the module makes the same 10k requests and then filtered them by itself. - Change-Id: I548d86894281fc4529aefeb9f161f2131ecc6fde + This patch gathers endpoints container by prefix + and adds all gathered endpoints to completion at once. -2017-11-15 12:10 +0000 [f512707362] George Joseph + ASTERISK-28137 #close - * app_record: Don't set RECORD_STATUS chan var until file is closed + Change-Id: Ic20024912cc77bf4d3e476c4cd853293c52b254b - 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. +2018-10-27 09:59 +0000 [6c2f9b730e] Pascal Cadotte Michaud - We now delay calling pbx_builtin_setvar_helper until after we close - the file. + * contrib/sip_to_pjsip: handle setvar in conversion - ASTERISK-27423 + Given a sip.conf with the following content: - Change-Id: I7fe9de99953e46b4bafa2b38cf151fe8f6488254 + setvar FOO=1 + setvar BAR=42 -2017-11-07 08:25 +0000 [cf1cb3345e] George Joseph + I want my generated pjsip.conf to containt the following set_vars - * ast_coredumper: Add ability to use directory other than /tmp + set_var FOO=1 + set_var BAR=42 - 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. + in the matching endpoint section. - Also added the --tarball-config option that includes the contents - of /etc/asterisk when either --tarball-coredumps or --tarball-results - are used. + Change-Id: I6c822401fda4133c3b44bf31e655b4eb939d4d26 - Change-Id: I66b2553319df61caea5b313d084f51978f730b4c +2018-10-02 07:31 +0000 [3ba66b8a9d] Torrey Searle -2017-11-13 07:14 +0000 [29e0add14f] Joshua Colp + * res_pjsip_session: add new flag use_callerid_contact - * pjsip / hep: Provide correct local address for Websockets. + 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 - Previously for PJSIP the local address of WebSocket connections - was set to the remote address. For logging purposes this is - not particularly useful. + ASTERISK-28087 #close - 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. + Change-Id: I9a720e058323f6862a91c62f8a8c1a4b5c087b95 - 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. +2018-10-17 19:34 +0000 [fbb577577c] Richard Mudgett - ASTERISK-26758 - ASTERISK-27363 + * logger.c: Fix default console logging when no logger.conf available. - Change-Id: Icd305fd038ad755e2682ab2786e381f6bf29e8ca + 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. -2017-11-13 17:47 +0000 [14253f9535] Corey Farrell + Change-Id: I542e61c03b2f630ff5327f9de5641d776c6fa70c - * alertpipe: Correct documented return of ast_alertpipe_write. +2018-09-26 15:05 +0000 [190b3d7412] Alexei Gradinari - Change-Id: I4ea49c441890a81384144479dc93ab5a3989486d + * app_dial/queue/followme: 'I' options to block initial updates in both directions -2017-11-09 19:47 +0000 [edd1016dd8] Corey Farrell + The 'I' option currently blocks initial CONNECTEDLINE or REDIRECTING updates + from the called parties to the caller. - * core: Use ast_alertpipe for Asterisk signal monitoring thread. + This patch also blocks updates in the other direction before call is + answered. - Reduce the signal monitoring thread file descriptor use from two to one - on systems that support eventfd. + ASTERISK-27980 - Change-Id: Id4041a237d481ff699639e153ea6982fee14a462 + Change-Id: I6ce9e151a2220ce9e95aa66666933cfb9e2a4a01 -2017-11-13 16:20 +0000 [cdaaa14a5f] Corey Farrell +2018-10-22 14:31 +0000 [11427a9665] Richard Mudgett - * core: Fix configuration of remote console socket path. + * modules.conf.sample: Update preload usage documentation. - 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. + Change-Id: Id449d4435c38148b56ac4cfd61ae4d90ac66bb90 - ASTERISK-27415 +2018-10-16 07:02 +0000 [fec66b8f01] George Joseph - Change-Id: Ib1e2805d55d6b0955c6430a1a2a93acbf9b091e8 + * bridge_softmix: Add SDP "label" attribute to streams -2017-11-10 10:37 +0000 [f6ebd16bb8] George Joseph + 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. - * bundled_pjproject: sip_parser: Fix return code in pjsip_find_msg + ASTERISK-28107 - 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. + Change-Id: Ieddeca5799d710cad083af3fcc3e677fa2a2a499 - Also added the volatile keyword to a few variables that are used - both inside and outside the PJ_TRY/PJ_CATCH block. +2018-10-16 14:06 +0000 [dee1165d31] Corey Farrell - Partial fix for ASTERISK_27408 + * astobj2: Eliminate usage of legacy container allocation macros. - Change-Id: If82ba9de921e3d57df9c68cf96ee45ccc1491f7a + 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 -2017-11-13 14:35 +0000 [2e7f6cd31b] Ben Ford + 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. - * bundled_pjproject: Update to 2.7.1 + Change-Id: I1a26258b5bf3deb081aaeed11a0baa175c933c7a - Update from 2.7 to 2.7.1 for bundled pjproject. Changed version - and removed patch files included in the update. +2018-09-28 13:31 +0000 [90887af808] Corey Farrell - Change-Id: I55cea8e734b318c2df9daf86aa0802c559ec8357 + * lock: Replace __ast_mutex_logger with private log_mutex_error. -2017-11-09 08:21 +0000 [ffccce76d9] Sean Bright + __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. - * sorcery: Add ast_sorcery_retrieve_by_prefix() + Change-Id: I83b372cb0654c5c18eadc512f65a57fa6c2e9853 - 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. +2018-10-18 14:36 +0000 [00284352b3] Richard Mudgett - Rather than using regular expressions for simple prefix lookups, add - a new operation - ast_sorcery_retrieve_by_prefix - that does them. + * app_dial/app_queue: Update application option documentation - Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79 + * Update the post-answer documentation and example. The Dial example was + incorrect and misleading for the post-answer subroutine useage. -2017-11-07 17:07 +0000 [14d60cee0c] Corey Farrell + * Fix note and warning paragraphs in option descriptions. They don't show + up in the wiki. - * CLI: Create ast_cli_completion_vector. + Change-Id: I81019a1fd75d5b9151f76b52c38e2a90da682d14 - 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. +2018-10-18 14:56 +0000 [495a1e7e5c] Sean Bright - 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. + * samples: PARKINGSLOT -> PARKING_SPACE in parking sample config - Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519 + PARKINGSLOT was deprecated in Asterisk 12 but the sample config was not + updated to reflect that. -2017-11-07 14:00 +0000 [4930404715] Corey Farrell + Change-Id: I3e087c19d9ee587094fa5304102d8084a79c2b3c - * vectors: Add new macro and a string vector definition. +2018-10-18 12:32 +0000 [2384d6eb87] Richard Mudgett - * AST_VECTOR_STEAL_ELEMENTS - steal the array of elements for use - with non-vector code. - * struct ast_vector_string - a vector of 'char *'. + * Fix 'statement' typo throughout code. - Change-Id: I104d1b204be03fccf67e02a195596adcb5ab1e42 + Most were in comments. A couple were in warning messages. -2017-11-11 13:01 +0000 [90bb0a3e10] Richard Mudgett + Pointed out by Jonathan H on the Asterisk users mailing list. - * core: Add cache_media_frames debugging option. + Change-Id: I6286939dff5d0a27a2758140570106f1cb351855 - 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. +2018-10-17 16:08 +0000 [718ccd51a3] Richard Mudgett - * 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. + * res_rtp_asterisk.c: Add conditional module dependency to res_pjproject - To disable the media frame cache simply disable the cache_media_frames - option in asterisk.conf and restart Asterisk. + * 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. - Sample asterisk.conf setting: - [options] - cache_media_frames=no + Change-Id: Icf5e7581f4ddd6189929f6174c74dd951f887377 - ASTERISK-27413 +2018-10-17 14:34 +0000 [7687630074] Richard Mudgett - Change-Id: I0ab2ce0f4547cccf2eb214901835c2d951b78c00 + * modules: Add missing run time module support levels. -2017-11-11 09:42 +0000 [b865d29f1c] Richard Mudgett + Change-Id: I29b9dbfa4bbfc49f21eba356858e38b1d3041824 - * frame.c: Make ast_frame_free()/ast_frfree() NULL tolerant +2018-10-14 07:58 +0000 [abee4fd072] Corey Farrell - Change-Id: Ic49d821ef88ada38a31bdd835b9531443c55d793 + * taskprocessor: Warn on unused result from pushing task. -2017-11-10 22:04 +0000 [96987737b9] Corey Farrell + 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. - * menuselect: Delete and ignore aclocal.m4. + Change-Id: I7e4079bd7b21cfe52fb431ea79e41314520c3f6d - This file is temporary output from the bootstrap.sh command, it does not - need to be committed. +2018-10-16 12:28 +0000 [3fe9c41342] Richard Mudgett - Change-Id: Ie0fd113aff6eac44924c0bd0c900833c6c86a6d9 + * bundled pjproject: Remove timer cleanup usage patch. -2017-10-30 22:09 +0000 [e9f8b317c3] Corey Farrell + 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. - * Build: Make function constructor/destructor attributes mandatory. + Change-Id: I4fe0b4bc648f7be5903cf4531b94fc87275713c1 - 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. +2018-10-10 04:37 +0000 [35f44be460] Corey Farrell - 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. + * refdebug: Create refstats.py script. - Change-Id: Id68e8a1447f2a6d707c54b56350e7bfdb33fb663 + This allows us to process AO2 statistics for total objects, memory + usage, memory overhead and lock usage. -2017-11-10 07:06 +0000 [96f2ee865e] Joshua Colp + * Install refstats.py and reflocks.py into the Asterisk scripts folder. + * Enable support for reflocks.py without DEBUG_THREADS. - * pjsip: Add patch to allow all transports to be destroyed. + 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. - 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". + Add comments to explain thread safety of the 'struct __priv_data' + bitfields. - 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. + Change-Id: I84e9d679cc86d772cc97c888d9d856a17e0d3a4a - This change updates the logic to query not just the main storage - method for transports but also the "tp_list". +2018-10-12 12:14 +0000 [0f53930c05] Alexei Gradinari - Upstream issue https://trac.pjsip.org/repos/ticket/2061 + * res_pjsip: set callerid_tag to empty string - ASTERISK-27411 + This patch sets the callerid_tag to empty string by default. - Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429 + 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. -2017-11-09 20:34 +0000 [bb77666620] Corey Farrell + 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. - * core: Remove disabled code. + Change-Id: I86ba455c4677ca8d516d9a04ce7fb4d24dd576e4 - handle_quit has been disabled since 2003, remove it. +2018-10-11 06:24 +0000 [08e5bbfec0] Corey Farrell - Change-Id: Idc3aaa6c81676160547078f9b71e8aa43de2db18 + * threadpool: Eliminate pointless AO2 usage. -2017-11-09 13:24 +0000 [23b0ef3e9b] Corey Farrell + 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. - * Build System: Disable parallel make in the root Makefile. + Change-Id: I2204d2615d9d952670fcb48e0a9c0dd1a6ba5036 - 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. +2018-10-12 12:21 +0000 [a5023d4f75] Corey Farrell - 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. + * main/astfd: Fix GCC8 format-truncation warning. - Change-Id: I4f2ec6fbbec1ada0ccb1109a28ea303524239b1e + 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. -2017-03-29 20:46 +0000 [12010fc5c0] Richard Mudgett + Change-Id: I514927f256481bc84df10a51b19d5b5fb1bc387e - * chan_pjsip.c: Fix uninitialized cause value on failure. +2018-10-10 06:38 +0000 [5ea517f80e] Corey Farrell - Change-Id: I3f9dd3c31bd582e54a30381500077de2319d8cc3 + * chan_sip: Tell module loader that chan_sip is extended support. -2017-11-08 01:40 +0000 [0bda39c668] Corey Farrell + Change-Id: I33508c134b1be888b8884f5dcfee19087634e415 - * DEBUG_FD_LEAKS: Add missing FD creators. +2018-10-09 16:18 +0000 [c001974f4f] Richard Mudgett - This adds FD tracking for the following functions: - * eventfd - * timerfd_create - * socketpair - * accept + * res_statsd.c: Fix returned reload status. - ASTERISK-27404 + 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. - Change-Id: Id6848fe904ade2d34eb39d2a20bd6b223e1111fc + * Fixed cleanup on initial load if initializing statsd failed. -2017-11-07 11:49 +0000 [05f557820b] Corey Farrell + Change-Id: Id24fae75f1a7ff584a444a5680e867d989792481 - * bridge_softmix: Note why ast_stream_topology_set_stream cannot fail. +2018-10-03 16:51 +0000 [e0496fe062] Emmanuel BUU - 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. + * core/frame: generate correct T.140 payload in ast_sendtext_data() - Change-Id: I91d25704859efbe50b8b82cfe1cd3c40ba177c9f + 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 -2017-10-19 13:35 +0000 [dd1a914495] Kevin Harwell + ASTERISK-28089 + Reported by: Emmanuel BUU + Tested by: Emmanuel BUU - * AST-2017-011 - res_pjsip_session: session leak when a call is rejected + Change-Id: I7ab1b9ed1e21683b2b667ea0a59d9aba3c77dd96 - 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. +2018-10-04 18:33 +0000 [c6ee3cf639] Corey Farrell - 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. + * loader: Flag module as declined in all cases where it fails to load. - 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. + 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. - ASTERISK-27345 #close + 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. - Reported by: Corey Farrell + Expand doxygen documentation for AST_MODULE_LOAD_*. - Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed + Change-Id: I3c030bb917f6e5a0dfd9d91491a4661b348cabf8 -2017-10-03 16:19 +0000 [b358e441cd] Richard Mudgett +2018-10-04 13:13 +0000 [77f151d927] Richard Mudgett - * AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun + * func_periodic_hook.c: Cleanup module resources on failure. - 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. + * Make load_module() cleanup if it failed to setup the module. - 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. + * Make unload_module() always return 0. It is silly to fail unloading if + the hook function we try to unregister was not even registered. - ASTERISK-27337 + Change-Id: I280fc6e8ba2a7ee2588ca01d870eebaf74b4ffe6 - Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652 +2018-10-04 11:49 +0000 [bc335ceda8] Richard Mudgett -2017-10-19 13:53 +0000 [74432f51f9] George Joseph + * codec_speex.c: Cleanup module loading to DECLINE and not FAILURE. - * AST-2017-009: pjproject: Add validation of numeric header values + If codec_speex fails to register a translator it would cause Asterisk to + exit instead of continue as a DECLINED module. - 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. + * Make unload_module() always return 0. It is silly to fail unloading if + any translators we try to unregister were not even registered. - * 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. + Change-Id: Ia262591f68333dad17673ba7104d11c88096f51a - * 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. +2018-10-04 13:03 +0000 [6fd21a6af6] George Joseph - * Updated sip_parser to validate the numeric fields. + * CI: Fix missing () in gates.jenkinsfile - * Fixed an issue in sip_transport that prevented error messages - from being properly displayed. + Change-Id: I2f252e0f8c7f1a6328438fbd2be5d6574b7dfa5b - * Added "volatile" to some variables referenced in PJ_CATCH blocks - as the optimizer was sometimes optimizing them away. +2018-10-04 10:13 +0000 [1598c7a306] George Joseph - * Fixed length calculation in sip_transaction/create_tsx_key_2543 - to account for signed ints being 11 characters, not 9. + * CI: Add timestamps and timeouts to jenkinsfiles - ASTERISK-27319 - Reported by: Youngsung Kim at LINE Corporation + Change-Id: Ide83574dc957bc1df28e30a69079140050dfc35f - Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff +2018-10-03 17:02 +0000 [b2f96fdcfe] Sean Bright -2017-11-06 17:58 +0000 [2c4db2a3d5] Corey Farrell + * ast_coredumper: Remove .gdbinit file on exit - * res_pjsip_pubsub: Fix multiple leaks on failure to append vectors. + Change-Id: I1297de78628773ca368e687c6f148bf74857cae9 - Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482 +2018-10-03 09:33 +0000 [d0a1237c19] Sean Bright -2017-11-06 18:12 +0000 [48e96aba6a] Corey Farrell + * CI: Look up configured kernel.core_pattern sysctl - * res_pjsip_history: Fix multiple leaks on vector append failure. + Change-Id: I8246a0147df8d821fbbcabc1db1887104b8bedc4 - Change-Id: I41e8d5183ace284095cc721f3b1fb32ade3f940f +2018-10-03 15:51 +0000 [48bb4543d9] Corey Farrell -2017-11-06 18:01 +0000 [ecb81ae4de] Corey Farrell + * jenkins: Fix cleanup command redirection. - * res_pjsip_session: Fix multiple leaks. + Fix redirection to /dev/null of cleanup commands. The '2' was being + interpreted as part of the command instead of part of the redirect. - * 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: I2e3a591b165e0288c4b82b9ef475fdfd5392a90a - Change-Id: Ib5ffc9b198683fa7e9bf166d74d30c1334c23acb +2018-10-03 15:29 +0000 [d027d193b8] George Joseph -2017-11-07 12:03 +0000 [9b3db9a7fd] Corey Farrell + * ast_coredumper: Don't use "declare -n" - * main/sdp_state: Check for errors from ast_stream_topology_set_stream. + Change-Id: I7ddfed4cd6549a0cd458e4d5cf9ac95d784de6cb - Change-Id: I84a83ae69daba5d185cc1d939b133a4c23565497 +2018-10-02 16:15 +0000 [7eda6263c2] Richard Mudgett -2017-11-06 16:37 +0000 [0cfc3cbf02] Richard Mudgett + * res_smdi.c: Fix module ref counting and inverted test. - * res_pjsip_registrar.c: Fix AOR and pjproject group deadlock. + 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. - 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. + * 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. - * Made send the REGISTER response after we completed processing the - request contacts and released the AOR lock to avoid the deadlock. + * Fixed the smdi_load() return code of 1 concerning the number of + listeners. The test was inverted. - ASTERISK-27391 + Change-Id: Ic288db51b58e395d6a2fc3847f77176c16988784 - Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364 +2018-10-02 16:23 +0000 [5b72bb0278] Richard Mudgett -2017-11-07 11:40 +0000 [eba1179795] Corey Farrell + * res_smdi.c: Made use defaults if the smdi.conf file does not exist. - * res_pjsip_session: Check for errors from ast_stream_topology_set_stream. + 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. - Free memory and return error if ast_stream_topology_set_stream fails. + * Made use the default configuration if the config file does not exist and + simplified some of the logic. - Change-Id: I9f4dbf44bed627243d2f1dd8aea2eab6c38a028d + Change-Id: Ib93191f1fe28c0dd9ebe3d84c7762b32f83c4eb9 -2017-11-07 11:34 +0000 [4ac6dd4e95] Corey Farrell +2018-10-02 17:15 +0000 [fa9cd68589] Corey Farrell - * res_pjsip_t38: Better error checking for t38_create_media_state. + * astobj2: Comment on OBJ_NOLOCK in ao2_container_clone. - Change-Id: I81b2587427c6982aa3e2a3f9ad69cce8d316eb10 + The test for OBJ_NOLOCK looks wrong but it isn't. Add comments to + prevent confusion. -2017-11-06 15:38 +0000 [fb18895108] Corey Farrell + Change-Id: I9662b82eb39e7627a1f1944fd18f967a2b987344 - * stream: Return error from ast_stream_topology_set_stream. +2018-10-03 09:05 +0000 [8b3b504b79] Sean Bright - 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. + * CI: Use brace expansion instead of calling out to seq - Change-Id: I6c0d12755743eadba1357f6153526cc055592856 + Also make the shebang in publishAsteriskDocs.sh the first line. -2017-11-06 17:21 +0000 [801094da7b] Corey Farrell + Change-Id: I3fdd6f22e652e4fb5b5fe85df46fa34eb6d0cf08 - * res_stasis: Fix multiple leaks. +2018-10-03 08:59 +0000 [5f7350d68b] Sean Bright - * res/stasis/app.c JSON passed to app_send needs to be released. - * res/stasis_message.c: objects leak if vector append fails. + * CI: Use bindport instead of port in test http.conf - Change-Id: I8dd5385b9f50a5cadf2b1d16efecffd6ddb4db4a + Change-Id: Ife9a6879da63a56e5b8348a2024eeed4e7b1615b -2017-11-07 06:56 +0000 [02329b9a34] Richard Mudgett +2018-10-03 07:56 +0000 [2b4752911f] Sean Bright - * res_pjproject.c: Fix ast_strdup() alloc failure. + * http.c: Reload TLS even if http.conf hasn't changed - Change-Id: I74688038e7afe3a279359cce53aadb28ade51ead + 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. -2017-11-05 22:06 +0000 [a36d8cc533] Aaron An + 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. - * res_pjsip: Avoid crash when contact uri is empty string + Change-Id: Ie795420dcc7eb3d91336820688a29adbcc321276 - Asterisk will crash if contact uri is invalid, so contact_apply_handler - should check if the uri is NULL or empty. +2018-10-01 22:12 +0000 [3b2310332d] Corey Farrell - ASTERISK-27393 #close - Reported-by: Aaron An - Tested-by: AaronAn + * core: Disable astobj2 locking for some common objects. - Change-Id: Ia0309bdc6b697c73c9c736e1caec910b77ca69f5 + * ACO options + * Indications + * Module loader ref_debug object + * Media index info and variants + * xmldoc items -2017-11-06 17:55 +0000 [7ef38d399a] Corey Farrell + These allocation locations were identified using reflocks.py on the + master branch. - * res_pjsip_outbound_registration: Fix leak on vector add failure. + Change-Id: Ie999b9941760be3d1946cdb6e30cb85fd97504d8 - Change-Id: I774b88b3c9da41edd4dc8d78f095481f52f2bd46 +2018-10-02 13:29 +0000 [c2e6efa63d] Richard Mudgett -2017-11-06 17:48 +0000 [8684219f79] Corey Farrell + * res_statsd.c: Made use defaults if the statsd.conf file does not exist. - * res_pjsip_exten_state: Check for vector append failure. + 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. - Release reference to publisher if we fail to add it to the vector. + * Made use default configuration if there is a config error or the config + file does not exist. - Change-Id: I64dff3f481b67b9884f37cadba7a5ccf23d084f3 + Change-Id: If1068a582ec54ab7fb437265cb5370a97a825737 -2017-11-06 17:44 +0000 [f899368cd6] Corey Farrell +2018-09-13 13:03 +0000 [326574d4fc] Corey Farrell - * res_pjsip_config_wizard: Fix leaks and add check for malloc failure. + * Resolve warning about duplicate 'dialplan' CLI. - wizard_apply_handler(): - - Free host if we fail to add it to the vector. + Change-Id: I029db1b4a32ccfb38374d6fe944dc430866f4b30 - wizard_mapped_observer(): - - Check for otw allocation failure. - - Free otw if we fail to add it to the vector. +2018-10-02 01:33 +0000 [65f06a4505] Corey Farrell - Change-Id: Ib5d3bcabbd9c24dd8a3c9cc692a794a5f60243ad + * loader: Fix result of module reload error. -2017-11-06 17:38 +0000 [4016884ef3] Corey Farrell + When a module reload fails we never set AST_MODULE_RELOAD_ERROR. This + caused reload failures to incorrectly report 'No module found'. - * res_stasis_playback: Check for failure to append vector. + Change-Id: I5f3953e0f7d135e53ec797f24c97ee3f73f232e7 - Free resources and return error if we fail to append the vector in - stasis_app_control_play_uri. +2018-09-28 10:13 +0000 [f066dbc353] Corey Farrell - Change-Id: I22c4a90dd859b253f2850c6511de48b25609422b + * loader: Improve error handling. -2017-11-06 17:33 +0000 [24b9751aaa] Corey Farrell + * 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. - * test_sorcery_memory_cache_thrash: Handle error from vector append. + 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. - Cleanup resources when we fail to append the vector and report test - failure. + Module load/start errors are delayed until the end of loader startup. - Change-Id: I6eb41586fd11dee8c0dfe35e91cb465a4cab7298 + Change-Id: I046052c71331c556c09d39f47a3b92975f3e1758 -2017-11-06 17:28 +0000 [29205e7adc] Corey Farrell +2018-09-25 16:19 +0000 [406c5bef0a] Emmanuel BUU - * res_pjsip: Fix leak on error in ast_sip_auth_vector_init. + * core/frame: Fix ast_frdup() and ast_frisolate() for empty text frames - Change-Id: Ib0fc7a18f3135ca8990c3984c9e15f6d26e556e8 + 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. -2017-11-06 17:17 +0000 [70fcc043bb] Corey Farrell + ASTERISK-28076 + Reported by: Emmanuel BUU + Tested by: Emmanuel BUU - * res_pjproject: Handle error from adding to the buildopts vector. + Change-Id: Ib882dd028598f13c4c233edbfdd7e54ad44a68e9 - Change-Id: I076c7bd207c7989a23005395ce1735392657be65 +2018-09-30 23:11 +0000 [693e00eee6] Corey Farrell -2017-11-06 17:11 +0000 [5247ba4b88] Corey Farrell + * astobj2: Record lock usage to refs log when DEBUG_THREADS is enabled. - * res_ari_events: Fix use after free / double-free of JSON message. + 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. - 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. + 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: I82696df8fe723b3365c15c3f7089501da8daa892 + Change-Id: I2e3cd23336a97df2692b545f548fd79b14b53bf4 -2017-11-06 15:33 +0000 [adb4fdcb7b] Corey Farrell +2018-10-01 12:11 +0000 [5a9230eacb] Corey Farrell - * stasis: Release object if vector append fails. + * app_page: Add dependency against app_confbridge. - Change-Id: I3e5cc669169aab6175ddfaf7486edeaeb4fdcfb1 + Change-Id: I1946509f518961d23fb21229d91676ee3e441921 -2017-11-06 15:20 +0000 [2f4f216026] Corey Farrell +2018-09-28 13:55 +0000 [a2554d5e5a] Richard Mudgett - * RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE. + * app_queue.c: Fix json ref leak - Check for errors from AST_VECTOR_REPLACE and clean memory if needed. + Declining the queue_member_status_type stasis message in stasis.conf + causes these messages to leak json objects. - Change-Id: I124d15cc1d645f85a72a1279f623c1993b304b0b + * Add missing ast_json_unref() if the type is NULL in + queue_publish_member_blob(). -2017-11-06 15:16 +0000 [5762f72425] Corey Farrell + ASTERISK-28084 - * PBX: Handle errors from AST_VECTOR_APPEND. + Change-Id: I691ecf49bd1f7d9c29182e1eee8c4bb7103be9fc - This resolves potentials leaks on AST_VECTOR_APPEND error in: - * ast_context_add_include2 - * ast_context_add_switch2 - * ast_context_add_ignorepat2 +2018-10-01 03:07 +0000 [266ed3d68b] Corey Farrell - Change-Id: Ib60e95c4f622fa3b832d87227c0523a695d736b6 + * Append CHANGES/UPGRADE.txt for module loader changes. -2017-11-06 15:10 +0000 [714026b32e] Corey Farrell + Change-Id: Ib8db4e14187f5c11ecbff532df17d30c5d36fa3e - * Messaging: Report error on failure to register tech or handler. +2018-09-25 17:33 +0000 [ab90479642] Alexei Gradinari - Message tech and handler registrations use a vector which could fail to - expand. If it does log and error and return error. + * res_pjsip: improve realtime performance on CLI 'pjsip show contacts' - Change-Id: I593a8de81a07fb0452e9b0efd5d4018b77bca6f4 + CLI command 'pjsip show contacts' inefficiently make a lot of DB requests. -2017-11-06 15:07 +0000 [e43c8af77c] Corey Farrell + 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. - * format_cap: Fix leak on AST_VECTOR_APPEND error. + Even if use 'like ' the asterisk requests all aor's and contact's + records and then filters them by itself. - format_cap_framed_init can fail on AST_VECTOR_APPEND. This should - report failure to the caller and clean the newly allocated frame. + 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 - Change-Id: Ica0661235bf09497bf23d844ceb01f21b41a55b0 + ASTERISK-28077 #close -2017-11-06 14:23 +0000 [64bcb65a78] Corey Farrell + Change-Id: Id0ad65d14952a02fb213273a90f3f680a8149618 - * stasis: Remove silly use of RAII_VAR in stasis_forward_all. +2018-09-28 14:45 +0000 [3337fe85c5] Corey Farrell - Change-Id: I46de4c968d40144d5b049966304ff66c1469fb65 + * jansson-bundled: Add patches to improve json_pack error reporting. -2017-11-06 12:51 +0000 [b7e1034009] Corey Farrell + Change-Id: I045e420d5e73e60639079246e810da6ae21ae22b - * CLI: Remove unused internal command. +2018-09-27 19:32 +0000 [b3b95c8d36] Corey Farrell - 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". + * lock: Improve performance of DEBUG_THREADS. - Change-Id: I682fe1e21a24a3bb5bd04146e639f1c5866bcfce + Add a volatile flag to lock tracking structures so we only need to use + the global lock when first initializing tracking. -2017-11-03 18:08 +0000 [923424019b] Richard Mudgett + 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. - * stasis_bridges.c: Fix off-nominal json memory leaks. + Change-Id: Iabd650908901843e9fff47ef1c539f0e1b8cb13b - Change-Id: Ib1181a36b317c86bff1ef2e44a17a0b1c73cfdc8 +2018-09-27 13:19 +0000 [b4ab26e72f] George Joseph -2017-11-03 17:43 +0000 [f81970d3fc] Richard Mudgett + * app_confbridge: Use bridge join hook to send join and leave events - * stasis_channels.c: Remove a very silly RAII_VAR(). + 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. - Change-Id: I28b458b3c1a442c4ef0be7b4986a95ea4149e14f + 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. -2017-11-06 10:29 +0000 [36fedea8c1] Joshua Colp + Change-Id: I2660074f8a30a5224cb953d5e047ee84484a9036 - * res_pjsip_pubsub: Ensure remote URI contains URI only. +2018-09-27 04:51 +0000 [33455f8d6f] Corey Farrell - 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. + * astobj2: Reduce memory overhead. - ASTERISK-27290 + 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. - Change-Id: If1d0cd6630f0a264856d31d2a67933109187a017 + This reduces memory overhead for every ao2 object by 8 bytes on x86_64. -2017-11-03 16:14 +0000 [9771f089f5] Richard Mudgett + Change-Id: Idc1baabb35ec3b3d8de463c4fa3011eaf7fcafb5 - * stasis/app.c: Optimize stasis_app_get_debug_by_name() +2018-09-27 15:01 +0000 [d1698b4e0b] Sean Bright - * Eliminate RAII_VAR() - * Short circuit application name lookup if global debug enabled. + * config.c: Cleanup AST_INCLUDE_GLOB - Change-Id: I5f78b7bd6ca7fd2c3b07cbbe036c6a93b4681123 + * In main/config.c, AST_INCLUDE_GLOB is fixed to '1' making the #ifdefs + pointless. -2017-11-02 18:40 +0000 [ee08f10d06] Richard Mudgett + * In utils/extconf.c, AST_INCLUDE_GLOB is never defined so there is a + lot of dead code. - * Fix ast_(v)asprintf() malloc failure usage conditions. + Change-Id: I1bad1a46d7466ddf90d52cc724e997195495226c - 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. +2018-09-27 05:33 +0000 [0fe08c5e79] Corey Farrell - * 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. + * astobj2: Fix shutdown order. - * stasis.c: Fixed memory leak in multi_object_blob_to_ami() allocated by - ast_asprintf(). + 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. - * 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: If9111c4c21c68064b22c546d5d7a41fac430430e - Change-Id: Ib5252fb8850ecf0f78ed0ee2ca0796bda7e91c23 +2018-09-05 21:14 +0000 [958727cece] Cao Minh Hiep -2017-11-06 08:05 +0000 [ca4e6b568f] Sean Bright + * app_queue: Fix Attended transfer hangup with removing pending member. - * res_pjsip: Ignore empty TLS configuration + 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. - When using realtime, fields that are not explicitly set by an - administrator are still presented to sorcery as empty strings. Handle - this case explicitly. + 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. - 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. + 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. - ASTERISK-27032 #close - Reported by: seanchann.zhou + 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. - Change-Id: Ie3b5fb421977ccdb33e415d4ec52c3fd192601b7 + * This fixed patch will remove the pending member from container + before hanging up the call with outgoing is NULL. -2017-09-29 09:50 +0000 [04d3785a79] Sean Bright + ASTERISK-27920 - * dtls: Add support for ephemeral DTLS certificates. + Reported by: Cao Minh Hiep + Tested by: Cao Minh Hiep - This mimics the behavior of Chrome and Firefox and creates an ephemeral - X.509 certificate for each DTLS session. + Change-Id: Ib780fbf48ace9d2d8eaa1270b9d530a4fc14c855 - 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. +2018-06-26 09:17 +0000 [1f68614f3c] Moritz Fain - ASTERISK-27395 + * res_stasis: Fix stale data in ARI bridges - Change-Id: I5122e5f4b83c6320cc17407a187fcf491daf30b4 + Fixed an issue that resulted in "Allocation failed" each time an ARI + request was made to start playing MOH on a bridge. -2017-11-06 03:21 +0000 [4013bfa52b] Corey Farrell + 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. - * configure: Add autoconf check for libopusfile. + * Rather than using after bridge callbacks to cleanup, we now have + moh_channel_thread() doing the cleanup when the channel hangs up. - 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. + * 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. - Change-Id: I62b9cd0c4fa8a77596ab0e042948a643a1152677 + * 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. -2017-11-06 03:18 +0000 [19332e6968] Alexander Traud + * Eliminated RAII_VAR in bridge_moh_create(). - * tcptls: Print notice when TLS is enabled but not configured. + ASTERISK-26094 #close - 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. + Change-Id: Ibff479e167b3320c68aaabfada7e1d0ef7bd548c - ASTERISK-27394 - Reported-by: mossley74 +2018-09-10 11:28 +0000 [67e1e49e08] Ben Ford - Change-Id: Ib8b7539a5b2af8154c22e5f7a40fc68f95d95b93 + * res_rtp_asterisk.c: Add "seqno" strictrtp option -2017-11-04 06:05 +0000 [2ebea5aa03] Alexander Traud + 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. - * install_prereq: Checkout of libSRTP 2.x. + Change-Id: I8a42b8d193673899c8fc22fe7f98ea87df89be71 - Since Asterisk 13.17, libSRTP 2.x is supported. Therefore, its latest version - is installed again via the script install_prereq. +2018-09-20 13:59 +0000 [e04c49b517] Alexei Gradinari - ASTERISK-27356 + * res_odbc: fix missing SQL error diagnostic - Change-Id: I13125839a79052356469e41edacbebff0a937d39 + On SQL error there is not diagnostic information about this error. + There is only + WARNING res_odbc.c: SQL Execute error -1! -2017-11-01 17:47 +0000 [79ddcdbc70] Richard Mudgett + 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. - * Stasis/ARI: Fix off-nominal path json memory leaks. + 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. - Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb + Also this patch adds calls of ast_odbc_print_errors on SQL_ERROR + to res_config_odbc. -2017-11-02 11:38 +0000 [229790ea3d] Richard Mudgett + ASTERISK-28065 #close - * AOC: Fix AOC-S json memory leak. + Change-Id: Iba5ae5470ac49ecd911dd084effbe9efac68ccc1 - Change-Id: I3a1d40a41a8a7d00fa4a187de6a343a79155d3ef +2018-09-26 08:12 +0000 [227d9719da] George Joseph -2017-11-01 18:04 +0000 [de4a4796d0] Richard Mudgett + * CI: Add --test-timeout option to runTestsuite.sh - * res_stasis_device_state.c: Optimize stasis_app_device_states_to_json() + The default is 600 seconds. + Also added timeouts to the *TestGroups.json files. - * Eliminate RAII_VAR() - * Replace looped alloca with a char[] since that is how it is used anyway. + Change-Id: I8ab6a69e704b6a10f06a0e52ede02312a2b72fe0 - Change-Id: Ia27e64a884afa0f50b9ffdb1cf23da6bfa51ffdf +2018-09-18 08:01 +0000 [681e115ff1] Peter Katzmann -2017-11-01 18:58 +0000 [103b05bb4b] Richard Mudgett + * chan_sip: SipNotify on Chan_Sip vi AMI behave different to CLI - * res_stasis_mailbox.c: Fix leak of mailbox container. + 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. - Change-Id: I7d33c1635713047e7d1597c9d882f7dc006d94b4 + asterisk has to set the connection information accordingly to connection + and not on presumption -2017-11-03 10:35 +0000 [290bad22c9] Corey Farrell + ASTERISK-28057 #close - * Build System: Fix build failure caused by recent CLI improvements. + Change-Id: Ib43315aba1f2c14ba077b52d8c5b00be0006656e - 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. +2018-09-24 17:56 +0000 [cc8e0dfabd] George Joseph - ASTERISK-27378 + * configure.ac: Check for unbound version >= 1.5 - Change-Id: Ib7fd496f1d7ed48141a2eadd5dd61cab2f2308be + 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. -2017-11-01 11:12 +0000 [f8e0f9be22] Ben Ford + Since we require version 1.5, some code in res_resolver_unbound + was also simplified. - * res_pjsip: Add to list of valid characters for from_user. + ASTERISK-28045 + Reported by: Samuel Galarneau - 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. + Change-Id: Iee94ad543cd6f8b118df8c4c7afd9c4e2ca1fa72 - ASTERISK-27387 +2018-09-24 12:43 +0000 [7c49ea7cff] Joshua Colp - Change-Id: Id80c10a644508365c87b3182e99ea49da11b0281 + * res_rtp_asterisk: Raise event when RTP port is allocated -2017-11-02 05:34 +0000 [8701479386] Joshua Colp + 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. - * core: Don't attempt to write to a stream that does not exist. + ASTERISK-28070 - 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. + Change-Id: I91bd45782e84284e01c89acf4b2da352e14ae044 - ASTERISK-27364 +2018-07-16 22:55 +0000 [ede59966d9] Corey Farrell - Change-Id: Icf84ca982a67cdd6e9a71851eb7eb1bd0e865276 + * jansson: Backport fixes to bundled, use json_vsprintf if available. -2017-11-02 01:57 +0000 [606ae3484a] Corey Farrell + Use json_vsprintf from versions which contain fix for va_copy leak. - * Add missing menuselect dependencies. + Apply fixes from jansson master: + * va_copy leak fix. + * Avoid potential invalid memory read in json_pack. + * Rename variable that shadowed another. - This adds menuselect dependencies for modules that use symbols of other - modules. + Change-Id: I7522e462d2a52f53010ffa1e7d705c666ec35539 - ASTERISK-27390 +2018-07-16 22:55 +0000 [7b0dbda936] Corey Farrell - Change-Id: Ia2d2849f5b87a72af7324a82edc3f283eafb5385 + * json: Take advantage of new API's. -2017-11-01 22:57 +0000 [b616b7e4a9] Corey Farrell + * 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. - * res/ari/resource_bridges.h: Update from 'make ari-stubs'. + 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. - A comment was updated when I ran 'make ari-stubs'. + Change-Id: I8382d28d7d83ee0ce13334e51ae45dbc0bdaef48 - Change-Id: Ib5154ae3ad72aff53374c28ead540fe349c42175 +2018-09-17 15:35 +0000 [755febe497] Kevin Harwell -2017-11-01 19:46 +0000 [79f111e1f3] Corey Farrell + * rtp_engine: rtcp_report_to_json can overflow the ssrc integer value - * Prevent unload of modules which implement an Optional API. + 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. - 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. + 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. - ASTERISK-27389 + Note, this was caught by two failing tests hep/rtcp-receiver/ and + hep/rtcp-sender. - Change-Id: Ia07786fe655681aec49cc8d3d96e06483b11f5e6 + Change-Id: I2af275286ee5e795b79f0c3d450d9e4b28e958b0 -2017-10-30 17:30 +0000 [b9f457eac0] Corey Farrell +2018-09-21 14:32 +0000 [ba91c73f8e] George Joseph - * Modules: Additional improvements to CLI completion. + * app_voicemail: Fix stack overrun in append_mailbox - 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. + 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. - * '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. + Found by the Address Sanitizer. - ASTERISK-27378 + Change-Id: I7eb51c7bd18a7a8dbdba261462a95cc69e84f161 - Change-Id: Iea3e00054461484196c46f688f02635cc886bad1 +2018-09-21 15:23 +0000 [0a1a96d331] George Joseph -2017-11-01 13:58 +0000 [1bfd1cf640] Sean Bright + * channel.c: Address stack overflow in does_id_conflict() - * pjsip_message_filter: Only do interface lookup for wildcard addresses. + does_id_conflict() was passing a pointer to an int to a callback + that expected a pointer to a size_t. - Change-Id: Ie083987e69dc43b6861671c218cacacc11b2072f + Found by the Address Sanitizer. -2017-10-31 15:08 +0000 [1e70011710] Kevin Harwell + Change-Id: I0ff542067eef63a14a60301654d65d34fe2ad503 - * features: Bridge application's BRIDGERESULT not appropriately set +2018-09-21 10:19 +0000 [7a7b21f3a0] Corey Farrell - 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. + * res_rtp_asterisk: Fix crash on ast_rtp_new failure. - 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. + 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-27369 #close + ASTERISK-27854 #close - Change-Id: I22588e7125a765edf35cff28c98ca143e9927554 + Change-Id: Ie02aecbb46228ca804e24b19cec2bb6f7b94e451 -2017-10-31 13:18 +0000 [f2175c5a39] Corey Farrell +2018-09-20 15:26 +0000 [880905e7eb] Sean Bright - * res_ari_channels: Fix reference leak in channel_state_invalid. + * res_rtp_asterisk: Reset all settings on module reload - channel_state_invalid leaked a reference to the channel snapshot any - time it was aquired. + 'rtpchecksums' and 'rtcpinterval' are not being reset to their defaults + if they are not present in the updated configuration file. - ASTERISK-27067 #close + Change-Id: I1162e40199314d46cf3225d5e1271c4c81176670 - Change-Id: I8c653f00416b39978513c5605c4be0f03b1df29a +2018-09-20 10:15 +0000 [fa1b836374] George Joseph -2017-10-25 17:31 +0000 [4c535f5c30] Joshua Colp + * app_voicemail: Cleanup mailbox topic and cache - * core / pjsip: Add support for grouping streams together. + 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. - 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. + * 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. - 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. + Change-Id: Ide23144a4a810e7e0faad5a8e988d15947965df8 - ASTERISK-27379 +2018-08-16 10:45 +0000 [339bf0cf7b] Sean Bright - Change-Id: Id6299aa031efe46254edbdc7973c534d54d641ad + * AST-2018-009: Fix crash processing websocket HTTP Upgrade requests -2017-10-30 09:20 +0000 [022de525be] Tzafrir Cohen + 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. - * ast_coredumper: allow setting asterisk binary explicitly + * 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. - 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-28013 #close - ASTERISK-27380 #close + Change-Id: Ia564825a8a95e085fd17e658cb777fe1afa8091a - Change-Id: I25f5b91eb75059b0fb2f142e468c26b283b0a9f3 +2018-09-20 09:41 +0000 [1a9c69d729] George Joseph -2017-10-25 01:10 +0000 [3052b56423] Florian Floimair + * stasis: Add function to delete topic from pool - * alembic: Add bundle column in ps_endpoints table + 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. - The ps_endpoints table was missing the bundle column - introduced with the bundle feature in - commit 065c3005ad92. + * 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". - ASTERISK-27374 #close + Change-Id: Ib7957951ee5c9b9b4482af7b9b4349112d62bc25 - Change-Id: Ic900f4f2c20f64b99ea898d50f5c0a7117472d46 +2018-09-03 09:55 +0000 [8811ab1803] David Hajek -2017-10-30 00:32 +0000 [e82b921c35] Corey Farrell + * chan_sip.c: chan_sip unstable with TLS after asterisk start or reloads - * Modules: Fix issues with CLI completion. + Fixes random asterisk crash on start or reload with TLS phones. - * 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-28034 #close + Reported-by: David Hajek - ASTERISK-27378 + Change-Id: I2a859f97dc80c348e2fa56e918214ee29521c4ac - Change-Id: Iaed8c1e4fcbeb242921dbac7929a0fe75ff4b239 +2018-09-20 04:48 +0000 [2f38bcdfc0] Joshua Colp -2017-10-28 19:18 +0000 [9bad4c74cc] Igor Goncharovskiy + * res_remb_modifier: Add module for controlling REMB from CLI. - * app_agent_spool: Fix typo in dtmf features usage desctiption + 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. - Fix typo, that specify usage wrong option 'dtmf-features' for CHANNEL() function - instead of correct 'dtmf_features' + This does not generate REMB frames, however, but just modifies + them as they flow to or from a channel. - ASTERISK-27377 #close + Change-Id: Ib089427c46a4a36d645cecfe02406adb38c17bec - Change-Id: I15ecc829c1035b359584673e12cdb5c9291ac930 +2018-09-14 15:51 +0000 [f6695249a5] Richard Mudgett -2017-10-27 13:41 +0000 [0991874430] Corey Farrell + * stasis: No need to keep a stasis type ref in a stasis msg or cache object. - * res_pjsip_pubsub: Resolve potential crash in allocate_subscription. + 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. - When allocate_subscription fails to initialize fields of the new sub it - calls destroy_subscription. + 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. - Change-Id: I5b79c915ec216dc00c13c1e4172137864a4bec85 + * Made stasis messages and cache entries no longer hold a ref to the + message type. -2017-10-26 12:18 +0000 [26607e4e3b] Richard Mudgett + Change-Id: Ibaa28efa8d8ad3836f0c65957192424c7f561707 - * app_voicemail.c: Fix compiler warning with IMAP build. +2018-09-18 13:59 +0000 [c008c27c85] Richard Mudgett - ASTERISK-27181 + * pjproject: Update initial 2.8 patches to apply cleanly. - Change-Id: Ic4468b49860bd7f67e922baf4c9e96828c184d17 + ASTERISK-28059 -2017-10-25 14:38 +0000 [2ca3dbb197] Richard Mudgett + Change-Id: I027472f2753391646dde594a709a75f14422db93 - * codec.c: Defensively check the returned samples. +2018-09-14 15:48 +0000 [192f71b7de] Richard Mudgett - 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. + * stasis_message.c: Don't create immutable stasis objects with locks. - * 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. + * 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. - ASTERISK-27194 + Change-Id: I28763c58bb9f0b427c11971d0103bf94055e7b32 - Change-Id: Icf69350307ecbbc80a3d74de46af9bd80ea17819 +2018-09-17 11:38 +0000 [60258b4ec1] Joshua Colp -2017-10-24 10:33 +0000 [9e1fbab382] Joshua Colp + * pjproject: Upgrade to 2.8. - * res_pjsip: Add 'ip' as a valid option to 'identify_by' on endpoint. + 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. - 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-28059 - ASTERISK-27206 + Change-Id: I5097772b11b0f95c3c1f52df6400158666f0a189 - Change-Id: I2170b86a7f7e221b4f00bf14aa1ef1ac5b050bbd +2018-09-18 09:39 +0000 [3e48c34f14] Florian Floimair -2017-10-25 12:26 +0000 [4aec70690d] George Joseph + * alembic: fix suppress_q850_reason_headers column name - * ast_coredumper: Add gzipping of binaries and display of signal info + 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. - 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. + Change-Id: Ie84808adbca6fcc9136556e4f5d741adbef5d14f - Added dumps of *_siginfo to the top of the txt files so you can - tell what signal was invoked. +2018-09-13 07:55 +0000 [29115e2384] George Joseph - Change-Id: Ib9ee6d83592d4b1bc90cb3419a05376a88d1ded9 + * app_voicemail: Remove need to subscribe to stasis -2017-10-25 09:23 +0000 [3821be1c68] Ben Ford + 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. - * http.c: Fix http header send content. + 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. - 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. + This paves the way for disabling the caching of stasis subscription + change messages. - ASTERISK-27372 + 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. - Change-Id: I8816d2d8f80f4fefc6dcae4b5fdfc97f1e46496d + ASTERISK-27121 -2017-03-30 09:51 +0000 [5553adb8ba] Corey Farrell + Change-Id: I5cceb737246949f9782955c64425b8bd25a9e9ee - * Build System: Fix --disable-xmldoc option. +2018-09-18 06:08 +0000 [6e79e6b097] Joshua Colp - 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'. + * res_pjsip_session: Don't add declined stream if one does not exist. - ASTERISK-26639 + 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. - Change-Id: Ifac562340c09f80c83e0203de098fcac93bf8c44 + This change makes it so that a removed stream is only placed into + the SDP if one already exists. -2017-10-23 00:55 +0000 [569e9a8391] Corey Farrell + ASTERISK-28047 - * Single API for ast_store_lock_info and ast_remove_lock_info. + Change-Id: Ibb97d21cdeb87a8acae0c720861b0ff255708442 - 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. +2018-09-17 10:38 +0000 [b0a0b975c5] Sean Bright - Change-Id: Ieced0e920928b735a39c3b5952b806c473d67453 + * autoconf: Check for srtp_get_version_string() before using it -2017-10-24 09:43 +0000 [6474de5f72] Corey Farrell + Change-Id: Id2a916ff9448706090e72ff2c7fb3f5ba24a05df - * chan_sip: Fix SUBSCRIBE with missing "Expires" header. +2018-09-17 07:10 +0000 [4a309839eb] George Joseph - 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. + * CI: Fix typo in testsuite git checkout - ASTERISK-18140 + Change-Id: I30024515e5b00a5044fd39fbff27d818f016b719 - Change-Id: Ibf6dcd4fdd07a32c2bc38be1dd557981f08188b5 +2018-09-16 06:08 +0000 [55ca51af21] Sean Bright -2017-10-24 07:24 +0000 [7126520b3e] Alexander Traud + * res_srtp.c: Show linked version of libsrtp on module init - * lpc10: Avoid compiler warning when DONT_OPTIMIZE/COMPILE_DOUBLE. + Change-Id: Ib0a645d6985de5757cc4399ed2524b2d02c4f342 - ASTERISK-23556 - Reported by: Marcello Ceschia +2018-09-07 09:40 +0000 [887a315e17] Sean Bright - Change-Id: Ic27e88e0336a0d83877dc857938659dc5560b93c + * res_pjsip: Log IPv6 addresses correctly -2017-10-07 12:14 +0000 [841ac3ded6] Corey Farrell + 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. - * hashtab: Use ast_free. + * 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. - 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. + * When a pj_sockaddr is not available, explicitly wrap IPv6 addresses + in brackets. - Change-Id: I2ff089bad71640c03c3ce97f1b00fc962ef79427 + * When assigning pjsip_rx_data.pkt_info.src_name ourselves, make sure + to also set pjsip_rx_data.pkt_info.src_addr. -2017-10-23 01:02 +0000 [fb585cf185] Corey Farrell + Change-Id: I5cfe997ced7883862a12b9c7d8551d76ae02fcf8 - * Bundled pjproject: Enable pj_assert when dev-mode is enabled. +2018-09-14 12:31 +0000 [3f9544c1f5] George Joseph - ASTERISK-27359 + * CI: Use proper credentials for Security testsuite checkout - Change-Id: Ib01fb6c01f9bb87129374a51cb9318c474147517 + Can't do anonymous http checkout from Security-testsuite. + Need to use same credentials as the gerrit review checkout. -2017-10-23 13:44 +0000 [ee21076151] Corey Farrell + Change-Id: I87af68c995cb8926f5e87f9af245600d76984f05 - * main/Makefile: Remove rule for non-existant testexpr2. +2018-09-13 11:06 +0000 [17d6d9e1e7] George Joseph - Change-Id: Ibb3e47f27a395d74d8c5263db015b05434f5969b + * stasis_cache: Stop caching stasis subscription change messages -2017-10-23 12:42 +0000 [a9e9608982] Corey Farrell + Since app_voicemail no longer uses the cache to maintain its state + there is no longer a need to cache these messages. - * test_config: Fix failure and segfault when config_hook is run twice. + ASTERISK-27121 - 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. + Change-Id: I321c708505f5ad8d00e1b0afc4c27dc2ac12ecb4 - ASTERISK-25960 +2018-09-12 12:39 +0000 [5842741689] Corey Farrell - Change-Id: Ifd679509a23ed163e5cc647490bf7df4ae3cd856 + * CI: Use .gitreview to default BRANCH_NAME. -2017-10-23 12:23 +0000 [6f0431798e] George Joseph + This ensures that binary modules are avoided in the master branch even + if BRANCH_NAME is not set. - * res_pjsip_sdp_rtp: Fix setting of address type for rtp_ipv6 + Change-Id: I79162d2063f22fa9d6b31fde4827ace2dd5bf0da - 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. +2018-09-11 07:22 +0000 [78453e65fd] Walter Doekes - * Removed the test for endpoint/media_address and now check all - addresses for ipv6. + * optional_api: Remove unused nonoptreq fields - ASTERISK-27198 - Reported by: Martin Cisárik + As they're not actively used, they only grow stale. The moduleinfo field itself + is kept in Asterisk 13/15 for ABI compatibility. - Change-Id: I5214fc31b728117842243807e7927a319cf77592 + ASTERISK-28046 #close -2017-10-23 07:53 +0000 [488f98310f] Richard Mudgett + Change-Id: I8df66a7007f807840414bb348511a8c14c05a9fc - * app_agent_pool.c: Fix online documentation typo. +2018-09-03 06:50 +0000 [f4bffe2326] lvl - Change-Id: Ib0bc95fd0ec288c78c313823254d7a84ebfc4429 + * manager: Set AMI event "Newexten" to the EVENT_FLAG_DIALPLAN class -2017-10-22 17:32 +0000 [252353e0a9] Joshua Colp + The documentation already specified EVENT_FLAG_DIALPLAN for this + event, but the implementation was using EVENT_FLAG_CALL. - * res_xmpp: Ensure the connection filter is available. + Using EVENT_FLAG_DIALPLAN allows AMI clients to opt out of receiving + this highly verbose event. - 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. + ASTERISK-28033 - 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. + Change-Id: I45b3119f30e4dbc17b49831f2b1a4f2c1beadafe - ASTERISK-27346 +2018-09-12 07:18 +0000 [e5739c494c] Sean Bright - Change-Id: I4ac474afe220e833288ff574e32e2b9a23394886 + * res_pjproject: Fix sockaddr conversion routines for non-bundled PJSIP -2017-10-21 03:44 +0000 [840e08716b] Alexander Traud + 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. - * chan_sip: Crypto attribute not last but first on SDP media level. + ASTERISK-28049 #close - This matches the behavior of the other SIP channel driver, chan_pjsip. + Change-Id: Ia1ea47c433fc2d915115193ee889a752373925f0 - ASTERISK-27365 +2018-09-10 22:28 +0000 [ecb3b23b07] Corey Farrell - Change-Id: I8f23a51290a58b75816da2999ed1965441dfc5d6 + * Build System: Resolve conflict between DESTDIR and bundled jansson. -2017-10-17 10:53 +0000 [e41561fc2a] Richard Mudgett + 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. - * res_pjproject.c: Upgrade bundled PJPROJECT to 2.7 + Change-Id: Id033e2813261e0d45232383d44c6391122169548 - Update patches included in bundled PJPROJECT for the new version. +2018-08-30 03:42 +0000 [ccfd2e0f5d] Frederic LE FOLL - ASTERISK-27355 + * res_musiconhold.c: Restart MOH if previous hold just reached end-of-file - Change-Id: I9ac5dbbffaadca25ad24fac8b9ab615e5ace6083 + 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. -2017-10-16 16:46 +0000 [4559cd0e28] Nir Simionovich + * 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. - * This patch adds a beanstalk CDR backend. + ASTERISK-28029 - 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 + Change-Id: I1508cf2c094f8feca22d6f76deaa9fdfa9944860 - This module is based upon the beanstalk-client library, available - for download at: https://github.com/deepfryed/beanstalk-client +2018-09-05 06:39 +0000 [af6a3d02e1] Joshua Colp - Change-Id: I5fe4089a34ab3b39230786d9bbfddafa56715f48 + * core: Don't stop generators when writing RTCP frames. -2017-10-18 13:41 +0000 [4760b2445c] Corey Farrell + Generators provide such functionality as tone generation or + silence generation. RTCP frames provide RTCP information and + should not stop generators from operating. - * res_pjsip_pubsub: Prevent unload except during shutdown. + ASTERISK-28005 - 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 - errors have been ruled out. + Change-Id: Ieadada07b068a7aa426e8763f1b73a18e1ac34a9 - ASTERISK-24483 +2018-09-03 06:28 +0000 [034a3d8b86] lvl - Change-Id: Iee900f20bdd6ee1bfe23efdec0d87765eadce8a7 + * app_queue: Update realtime queuemembers after wait_a_bit(), not before -2017-10-18 13:37 +0000 [449ee66a11] Corey Farrell + This ensures the most up-to-date information is used for the next + call attempt. - * res_pjsip_refer: Prevent unload except during shutdown. + ASTERISK-28032 - Prevent unload of the module as certain pjsip initialization functions - cannot be reversed. + Change-Id: I02fc17c6ffb50bb60ea97c2d2e6023e8061815ce - ASTERISK-24483 +2018-08-28 08:42 +0000 [3134fd95a9] Sean Bright - Change-Id: I94597ec8b8491f5af9c57bf66dbc3b078fe2d49d + * res_pjproject: Add utility functions to convert between socket structures -2017-10-18 12:04 +0000 [c9e19b31f5] Corey Farrell + 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. - * chan_sip: Fix output of 'sip set debug off'. + 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. - When sip.conf contains 'sipdebug=yes' it is impossible to disable it - using CLI 'sip set debug off'. This corrects the output of that CLI - command to instruct the user to turn sipdebug off in the configuration - file. + Change-Id: If0fc4bba9643f755604c6ffbb0d7cc46020bc761 - ASTERISK-23462 #close +2018-08-30 13:08 +0000 [9fb166cf3b] George Joseph - Change-Id: I1cceade9caa9578e1b060feb832e3495ef5ad318 + * stasis_cache: Prune stasis_subscription_change messages -2017-10-16 10:53 +0000 [955a891a84] Corey Farrell + 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. - * app_macro deprecation. + 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. - * Mark the module deprecated. - * Disable the module by default. - * Produce a warning the first time a macro is used. - * Note deprecation related options in app_dial and app_queue. + ASTERISK-27121 - ASTERISK-27350 + Change-Id: I3d18905e477f3721815da91f30da8d3fbb2d4f56 - Change-Id: I560ea043bacdbc5534a17d97854273d52c2f1bdc +2018-09-03 09:27 +0000 [8879a62c1c] Rodrigo Ramírez Norambuena -2017-10-18 03:30 +0000 [95b45d1c46] Alexander Traud + * app_dial: set the comment for OPT_ARG_ANNOUNCE to really what is done - * res_srtp: Add support for libsrtp2 with AES-GCM. + Change-Id: I08f88adb09f7e5813f37e70fecd787468cdb32c8 - Beside allowing AES-GCM again, this adds AES-192 again. +2018-08-15 14:27 +0000 [cfb854e241] Chris-Savinovich - ASTERISK-27356 + * pbx_config.c: Fix reloading module if initially declined to load - Change-Id: Ia97a435faf26300335d9552fa676b5d17e5f7233 + 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. -2017-10-14 14:41 +0000 [5d8c517960] Joshua Colp + Change-Id: Ib00665106043b1be5148ffa7a477396038915854 - * bridge_softmix: Reduce topology cloning and improve renegotiation. +2018-08-30 14:42 +0000 [4fcdcfaa37] Richard Mudgett - As channels join and leave an SFU the bridge_softmix module - needs to renegotiate to add and remove their streams from - the other participants. Previously this was done by constructing - the ideal stream topology every time but in the case of leave - this was incomplete. + * http.c: Give HTTP error response when received lines are too long. - This change makes it so bridge_softmix keeps an ideal stream - topology for each channel and uses it when making changes. This - ensures that when we request a renegotiation we are always - certain that we are aiming for the best stream topology - possible. In the case of a channel leaving this ensures that - we try to have an existing participant fill their place if - a participant has a fixed limit on the maximum number of video - streams they allow. + 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. - ASTERISK-27354 + Change-Id: I6df2705435fd7dde4d5d3bdf7acec859cfb7c12d - Change-Id: I58070f421ddeadd2844a33b869b052630cf2e514 +2018-08-29 16:14 +0000 [f6a165208b] Richard Mudgett -2017-10-06 15:55 +0000 [73164d0d7f] Richard Mudgett + * iostream.c: Fix ast_iostream_gets() needlessly returning failure. - * cdr.c: Rename the Party A CDR container. + Providing a buffer larger than the internal buffer of ast_iostream_gets() + fails to get lines longer than the internal buffer. - * Rename the Party A CDR container from active_cdrs_by_channel to - active_cdrs_master. + * 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(). - * Renamed the support functions associated with active_cdrs_master - appropriately. + Change-Id: If18b3f6ee500e22f0633a68779ed09f7e0f305ed - ASTERISK-27335 +2018-08-06 15:37 +0000 [4dd8b5bbb4] Richard Mudgett - Change-Id: I6104bb3edc3a0b7243ce502e45e8832b0cff14f7 + * res_pjsip: Fix mwi_subscribe_replaces_unsolicited type mismatch -2017-10-02 17:42 +0000 [fe1120cf88] Richard Mudgett + ASTERISK-27988 - * cdr.c: Add container to key off of Party B channel names. + Change-Id: Iccafdd0552ea8aaed647620fb14499f1bf341843 - The CDR performance gets worse the further it gets behind in processing - stasis messages. One of the reasons is because of a n*m loop used when - processing Party B information. +2018-08-16 09:04 +0000 [1edd9eb309] Rodrigo Ramírez Norambuena - * Added a new CDR container that is keyed to Party B so we don't need such - a large loop when processing Party B information. + * make config: os-release output error. - NOTE: To reduce the size of the patch I deferred to another patch the - renaming of the Party A active_cdrs_by_channel container to - active_cdrs_master and renaming the container's hash and cmp functions - appropriately. + 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. - ASTERISK-27335 + The instruction 'make config' pre execute the syntax + "$(shell . /etc/os-release && echo $$ID)" to identified if system is a + Slackware and Opensuse. - Change-Id: I0bf66e8868f8adaa4b5dcf9e682e34951c350249 + This change prevent show the message and is send to the /dev/null -2017-10-11 06:04 +0000 [da24d425eb] Torrey Searle + Change-Id: I7f43e281a8d9405b2519fc653de82d9b8b645fdf - * contrib/script/sip_to_pjsip: implement 'all' for allow/disallow +2018-08-29 05:18 +0000 [390d0b42ca] Joshua Colp - when 'all' is specified in an allow or disallow section, it should erase - all values from the inverse section in the default config. E.G. - allow=all should erase any deny values from default config & - vice-versa + * res_fax: Handle fax gateway being started more than once. - ASTERISK-27333 #close + 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. - Change-Id: I99219478fb98f08751d769daaee0b7795118a5a6 + ASTERISK-27981 -2017-10-14 04:11 +0000 [c4f40b778a] Guido Falsi + Change-Id: I552d95086860cb18f2522ee40ef47b13b6da2e0e - * chan_dahdi: wrap include file which is not present on BSD systems in #ifdef +2018-08-28 08:01 +0000 [245fb462d6] Sean Bright - The sys/sysmacros.h include file does not exist in BSD systems and - is not required to build this module there. - Since an "#if defined(__NetBSD__) || defined(__FreeBSD__)" section - already exist I moved that include line inside it's #else branch. + * res_pjsip_transport_websocket: Properly set src_name for IPv6 - ASTERISK-27343 #close + 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. - Change-Id: Ibfb64f4e9a0ce8b6eda7a7695cfe57916f175dc1 + 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. -2017-10-13 09:43 +0000 [8f65d91dfd] Alexander Traud + This may be related to ASTERISK~27101. - * res_pjsip_session: Rewrite o= with external_media_address. + See also: https://github.com/onsip/SIP.js/pull/594 - PJSIP allows a domain name as external_media_address. This allows chan_pjsip to - be used behind a NAT with changing IP addresses. The IP address of that domain - is resolved to the c= line already. This change sets also the o= line to that - domain. + ASTERISK-28020 #close - ASTERISK-27341 #close + Change-Id: I8ea9d289901b837512bee2ca2535e3dc14f04d77 - Change-Id: I690163b6e762042ec38b3995aa5c9bea909d8ec4 +2018-08-26 13:18 +0000 [1b1f47bef6] Corey Farrell -2017-10-12 12:03 +0000 [7d51a79beb] Joshua Colp + * Create --disable-binary-modules option. - * bridge_simple: Improve renegotiation success rate. + This new option can be passed for ./configure or + ./tests/CI/buildAsterisk.sh to prevent download/install of binary + modules. - When making channels compatible the bridge_simple module - will renegotiate one to better match the other. Some - endpoints incorrectly terminate the call if this process - fails. + 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. - To better handle this scenario the audio streams present - on the new requested topology will include any existing - negotiated formats that happen to exist on the first - valid audio stream. This ensures formats are persent that - are known to be acceptable to the remote endpoint. + 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. - ASTERISK-27259 + Change-Id: I6b1bd1c75a2e48f05b8b8a45b7a7a2d00a079166 - Change-Id: I8fc0cc03e8bcfd0be8302f13b9f32d8268977f43 +2018-08-21 07:59 +0000 [aa2755cbb3] Emmanuel BUU -2017-10-13 08:51 +0000 [ee65d5ac7c] Corey Farrell + * res/res_rtp_asterisk: remove debug traces generated by an empty frame - * ast_bt_get_symbols: Prevent double-free. + The realtime text timer pops regularly and sends text frames even if + the buffer is empty. This causes a lot of unecessary debug logging. - It's possible for bfdobj to be created but syms not created. If syms - was not allocated in the current loop iteration but was allocated in the - previous iteration it would crash. + * Made red_write() test if we need to send a frame before calling + ast_rtp_write() - ASTERISK-27340 + ASTERISK-28002 + Reported by: Emmanuel BUU + Tested by: Emmanuel BUU - Change-Id: I5b110c609f6dfe91339f782a99a431bca5837363 + Change-Id: Icf81310c3b8080b615a42060afc02ab41f9523dd -2017-10-13 08:12 +0000 [44d9446eb5] Alexander Traud +2018-08-13 08:12 +0000 [46442aa9e5] Jaco Kroon - * tcptls: NULL-check the parameter of ast_ssl_teardown before accessing it. + * chan_sip: improved ip:port finding of peers for non-UDP transports. - This avoids a crash on stopping a chan_sip which failed to start its TLS server. + Also remove function peer_ipcmp_cb since it's not used (according to + rmudgett). - ASTERISK-27339 #close + 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. - Change-Id: I327fc70db68eaaca5b50a15c7fd687fde79263d5 + Into consideration there are three sets of behaviour: -2017-09-29 14:26 +0000 [f369be21a8] Richard Mudgett + 1. "previous" - before the above commit. + 2. "current" - post above commit, pre this one. + 3. "new" - post this commit. - * cdr.c: Eliminated many calls to ao2_global_obj_ref(). + 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. - The CDR performance gets worse the further it gets behind in processing - stasis messages. One of the reasons is we were getting the global config - to determine if we needed to log a debugging message. + This commit attempts to restore sane behaviour with respect to + transport!=udp for host!=dynamic whilst still retaining the guest users + over tcp. - * Many calls to ao2_global_obj_ref() were just so we could determine if - debug mode is enabled. Made a global flag to check instead. + 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). - * Eliminated many RAII_VAR() usages associated with the remaining - ao2_global_obj_ref() calls. + 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). - * Added missing NULL checks for the returned ao2_global_obj_ref() value. + 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. - ASTERISK-27335 + 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. - Change-Id: Iceaad93172862f610cad0188956634187bfcc7cd + 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: -2017-10-06 13:45 +0000 [2eea087401] Richard Mudgett + 1. As per previous behaviour, IP address is matched first. - * cdr.c: Defer getting ao2_global_obj_ref() until needed. + 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. - The CDR performance gets worse the further it gets behind in processing - stasis messages. One of the reasons is we were getting the global config - even if we didn't need it. + 3. During first pass (without SIP_INSECURE_PORT), always match on port. - * Most uses of the global config were only needed on off nominal code - paths so it makes sense to not get it until absolutely needed. + 4. If doing UDP, match if matched against peer also has + SIP_INSECURE_PORT, else don't match. - ASTERISK-27335 + 5. Match if not a dynamic host (for non-UDP protocols) - Change-Id: I00c63b7ec233e5bfffd5d976f05568613d3c2365 + 6. Don't match if this is WS|WSS, or we can't trust the Contact address + (presumably due to NAT) -2017-10-05 18:08 +0000 [7c7a917874] Richard Mudgett + 7. Match (we have a valid Contact thus if the IP matches we have no + choice, this will likely only apply to non-NAT). - * cdr.c: Set stringfields only if they are different. + 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: - The CDR performance gets worse the further it gets behind in processing - stasis messages. One of the reasons is we were repeatedly setting string - fields to potentially the same string in base_process_party_a(). Setting - a string field involves allocating room for the new string out of a memory - pool which may have to allocate even more memory. + [peer1] + host=1.1.1.1 + transport=tcp - * Check to see if the string field is already set to the desired string. + [peer2] + host=1.1.1.1 + transport=udp - ASTERISK-27335 + [peer3] + host=1.1.1.1 + port=5061 + insecure=port + transport=udp - Change-Id: I3ccb7e23f1488417e08cafe477755033eed65a7c + [peer4] + host=1.1.1.2 + transport=udp,tcp -2017-10-05 18:03 +0000 [c80c8f2ab9] Richard Mudgett + [peer5] + host=dynamic + transport=udp,tcp - * cdr.c: Fix setting dnid, callingsubaddr, and calledsubaddr + Test cases for UDP: - The string comparisons for setting these CDR variables was inverted. We - were repeatedly setting these CDR variables only if the channel snapshots - had the same value. + 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 - ASTERISK-27335 + 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). - Change-Id: I9482073524411e7ea6c03805b16de200cb1669ea + 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 -2017-08-25 08:19 +0000 [21c0283b78] Thomas Sevestre + Test cases for TCP based transports: - * features, manager : Add CancelAtxfer AMI action + 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 - Add action to cancel feature attended transfer with AMI interface + 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 - ASTERISK-27215 #close + 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. - Change-Id: Iab8a81362b5a1757e2608f70b014ef863200cb42 + 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. -2017-10-06 04:55 +0000 [6576e4320a] Daniel Tryba + The previous commit specifically tried to address test-case 6, but broke + test-cases 4 and 5 in the process. - * res_pjsip_session: Prevent user=phone being added to anonimized URIs. + ASTERISK-27881 #close - Move ast_sip_add_usereqphone to be called after anonymization of URIs, - to prevent the user_eq_phone adding "user=phone" to URIs containing a - username that is not a phonenumber (RFC3261 19.1.1). An extra call to - ast_sip_add_usereqphone on the saved version before anonymization is - added to add user=phone" to the PAI. + Change-Id: I61a9804e4feba9c7224c481f7a10bf7eb7c7f2a2 - ASTERISK-27047 #close +2018-08-20 07:23 +0000 [d84de695ed] Jaco Kroon - Change-Id: Ie5644bc66341b86dc08b1f7442210de2e6acdec6 + * AMI: be less verbose when adding HTTP headers to AMI/HTTP messages. -2017-10-06 05:14 +0000 [a56316423f] Daniel Tryba + 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. - * res_pjsip: Prevent "user=phone" being added multiple times to header + Convert to using ast_asprintf to perform the length calculation, memory + allocation and snprintf all in one step. - ast_sip_add_usereqphone adds "user=phone" to the header every time is is - called without checking whether the param already exists. Preventing - this by searching to string representation of header for "user=phone". + Change-Id: Ic45e673fde05bd544be95ad5cdbc69518207c1a1 - ASTERISK-26988 #close +2018-08-22 10:50 +0000 [4188e7d6dd] Matthew Fredrickson - Change-Id: Ib84383b07254de357dc6a98d91fc1d2c2c3719e6 + * sample_configs: noload res_hep.so by default -2017-10-05 18:12 +0000 [e5b9eb0460] Richard Mudgett + 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. - * cdr.c: Defer misc checks. + Change-Id: I5ec150cf941634fabc72973e5bf1a965cb0ef9d0 + (cherry picked from commit c8bacd45f17d2ae6f6d05c8cff538dd651f683a6) - Try to defer some checks until needed in case there is an early exit. +2018-08-23 06:57 +0000 [595e358761] Florian Floimair - Change-Id: Ibc6b34c38a4f60ad4f9b67984b7d070a07257064 + * alembic: increase uri column size -2017-10-06 20:48 +0000 [e8bde6916a] Seán C McCord + 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. - * ari/bridge: Add mute, dtmf suppression controls + ASTERISK-28022 #close - Add bridge_features structure to bridge creation. Specifically, this - implements mute and DTMF suppression, but others should be able to be - easily added to the same structure. + Change-Id: I6c55013bafe79f7e7a1fb6722d2558f553709f2e - ASTERISK-27322 #close - Reported by: Darren Sessions - Sponsored by: AVOXI +2018-08-21 13:50 +0000 [4b88cb383d] Sean Bright - Change-Id: Id4002adfb65c9a8027ee9e1a5f477e0f01cf9d61 + * app_queue: Silence GCC 8 compiler warning -2017-10-11 07:03 +0000 [ab4d36533c] George Joseph + I'm only seeing an error in 14+, so I assume it is due to different + compiler options: - * chan_vpb: Fix a gcc 7 out-of-bounds complaint + 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); + ^~~~ - chan_vpb was trying to use sizeof(*p->play_dtmf), where - p->play_dtmf is defined as char[16], to get the length of the array - but since p->play_dtmf is an actual array, sizeof(*p->play_dtmf) - returns the size of the first array element, which is 1. gcc7 - validly complains because the context in which it's used could - cause an out-of-bounds condition. - - Change-Id: If9c4bfdb6b02fa72d39e0c09bf88900663c000ba - -2017-10-06 02:39 +0000 [be7da57546] Nathan Bruning + Compiler: gcc version 8.0.1 20180414 (experimental) + [trunk revision 259383] (Ubuntu 8-20180414-1ubuntu2) - * app_queue.c: clear moh field in init_queue + Change-Id: I18577590da46829c1ea7d8b82e41d69f105baa10 - ASTERISK-27301 #close +2018-08-20 11:23 +0000 [fb2f242c49] Richard Mudgett - Change-Id: Ic31361f34e2de3b6470e68fc37205a7711082eba + * AMI: Remove docs for nonexistent AMI ContactStatus event headers -2017-10-09 21:00 +0000 [b8dadccbe1] Corey Farrell + Change-Id: I5736965c64c44338f7330e85a24bb46818607f19 - * sorcery: Use ao2_weakproxy to hold list of instances. +2018-08-06 06:22 +0000 [b9cd4c6d92] Joshua Colp - * Store weak proxy objects in instances container. - * Remove special unreference function and replace with macro that calls - ao2_cleanup. - * Add REF_DEBUG information to ast_sorcery_open. + * res_pjsip: Reduce processing when a Contact is updated. - Change-Id: I5a150a4e13cee319d46b5a4654f95a4623a978f8 + 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. -2017-10-09 21:55 +0000 [7774623804] Corey Farrell + 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. - * named_locks: Use ao2_weakproxy_find. + Change-Id: I2f97ebfa79969a36a97bb7b9afd5b6268cf1a07d - Change-Id: I0ce8a1b7101b6caac6a19f83a89f00eaba1e9d9c +2018-08-10 19:28 +0000 [236826a111] Richard Mudgett -2017-10-09 17:51 +0000 [b058f8673a] Corey Farrell + * res_pjsip_t38.c: Fix crash if already saw a final T.38 reINVITE response. - * astobj2: Add ao2_weakproxy_find function. + 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. - This function finds a weak proxy in an ao2_container and returns the - real object associated with it. + * Add protection code to prevent processing another final T.38 reINVITE + response. - Change-Id: I9da822049747275f5961b5c0a7f14e87157d65d8 + ASTERISK-27944 -2017-10-10 15:09 +0000 [fd3101e8ad] Corey Farrell + Change-Id: I8b5baba8d07fe4d63f0d7d05d3eb9a3d27d40a74 - * astobj2: Run weakproxy callbacks outside of lock. +2018-08-09 18:46 +0000 [19298141cf] Richard Mudgett - Copy the list of weakproxy callbacks to temporary memory so they can be - run without holding the weakproxy lock. + * res_sorcery_realtime.c: Fix unqualified fetch warning. - Change-Id: Ib167622a8a0f873fd73938f7611b2a5914308047 + The allow_unqualified_fetch option for the sorcery realtime backend + blocked actually fetching all rows when the option is set to warn. -2017-10-10 12:01 +0000 [3ad7d2f36c] Sean Bright + * Made issue a warning and actually do the request when + allow_unqualified_fetch=warn is set. - * app_originate: Set ORIGINATE_STATUS correctly on failure + Change-Id: I74456c80a03a62dce66fc3dc3cb0cf2351ac4312 - We were ignoring the return value from ast_pbx_outgoing_exten() and - ast_pbx_outgoing_app() which could fail before setting the reason code. - This resulted in failures being reported as success. +2018-06-11 00:07 +0000 [f6c1d94d91] Kirsty Tyerman - ASTERISK-25266 #close - Reported by: Allen Ford + * pbx_dundi: Added IPv6 support for dundi - Change-Id: Idf16237b7e41b527d2c69c865829128686beeb3b + Change includes move to netsock2 library. -2017-10-03 15:16 +0000 [b1d9fc87bc] Torrey Searle + ASTERISK-27164 + Reported-by: Adam Secombe - * contrib/thirdparty/sip_to_pjsip: add additional flag mappings + Change-Id: Ia9e8dc3d153de7a291dbda4bd87fc827dd2bb846 - add mappings for udptl redundancy, rtptimeout, and debug flags +2018-08-15 21:31 +0000 [4e43823d19] Richard Mudgett - Change-Id: Ie73cf5c83c05dee01eb9624ede76c1a30225d73a + * pbx_dundi.c: Misc memory management fixes when destroying peers -2017-10-02 16:46 +0000 [b0408d05c0] Richard Mudgett + * In destroy_peer(), fixed memory leaks of lookup history strings and + qualify transactions when destroying peers. - * cdr.c: Eliminated simple RAII_VAR usages. + * 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. - Change-Id: I150505db307249a962987e7b941bdd369bb91f35 + * 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. -2017-10-10 09:49 +0000 [11cefdf621] Tzafrir Cohen + * Made do_register_expire() remove the dundi/dpeers AstDB entry when a + peer registration expires. - * cdr_mysql: avoid releasing a config string + * 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. - Fixes a memory corruption issue after a reload of cdr_mysql. + * Made set_config() lock around processing the mappings configuration. - Issue was accidentally included in 747beb1ed159f89a3b58742e4257740b3d6d6bba . + * Reordered unload_module() to handle load_module() declining the load due + to error. - ASTERISK-27270 #close + Change-Id: Ib846b2b60d027f3a2c2b3b563d9a83a357dce1d6 - Change-Id: I90b6a9d18710c0f9009466370bd5f4bac5d5d12e +2018-08-15 23:49 +0000 [857926d197] Richard Mudgett -2017-10-10 07:42 +0000 [b228f5c5e6] Tzafrir Cohen + * pbx_dundi.c: Handle thread shutdown better. - * declare optional openssl dependencies in moduleinfo + Change-Id: Id52f99bd6a948fe6dd82acc0a28b2447a224fe87 - Declare optional openssl dependencies in: - * res_rtp_asterisk.c - * tcptls.c +2018-08-15 18:14 +0000 [111e73678e] Richard Mudgett - ASTERISK-27328 #close + * pbx_dundi: Fix debug frame decode string. - Change-Id: I2636f1c05b8104b4fe6f36cce0ebd9a98b9c78ab + * 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. -2017-10-09 22:51 +0000 [fae09c6676] Corey Farrell + Change-Id: I77435e81cd284bab6209d545919bf236ad7933c2 - * res_pjproject: Fix cleanup of buildopts vector. +2018-08-16 16:21 +0000 [a7ace944ae] Richard Mudgett - ASTERISK-27306 + * pbx_dundi: Update sample config documentation. - Change-Id: I3bed0edf3f55b1d4adcbabb25ec14f11dc766c72 + Change-Id: I33d0ad0611c2124ca3440f0f811fa0f45e4e2849 -2017-10-03 16:09 +0000 [fdf9aacca3] Richard Mudgett +2018-08-15 14:44 +0000 [0874d5b316] Richard Mudgett - * cdr.c: Replace redundant check with an ast_assert() + * res_rtp_asterisk.c: Fix unused variable warnings - The only caller of cdr_object_fn_table.process_party_b() explicitly does - the check before calling. + 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: Ib0c53cdf5048227842846e0df9d2c19117c45618 + Change-Id: I6daad34be3e89b19adef6e2fbe738018975155fc -2017-10-02 17:41 +0000 [2e4b5fadbd] Richard Mudgett +2018-08-16 13:51 +0000 [df78227e4a] George Joseph - * cdr.c: Replace inlined code with ao2_t_replace() + * CI: Fixup for non-13 branches - Change-Id: I9f424f5282ca7d833592f958d95f1b2bafb549b0 + Change-Id: I5e1d4a09e58b92b541bc8ed6f9e10e54c4e5101f -2017-09-29 12:07 +0000 [62980eedc3] Richard Mudgett +2018-08-16 13:28 +0000 [4ca959c72c] George Joseph - * cdr.c: Use current ao2 flag names + * CI: Final version of setting correct gerrit creds - Change-Id: Ib59d7d2f2a4a822754628f2c48a308d6791a6e6e + Change-Id: I7729ecceedceb12f52bf18dae259846aa1d993b3 -2017-09-29 12:31 +0000 [e769846f11] Richard Mudgett +2018-08-16 12:08 +0000 [33a5b8ccaf] George Joseph - * cdr.h: Fix doxygen comments. + * CI: Add https credentials to gerrit checkouts - * Also some misc formatting in cdr.c. + 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: Ied89a28802a662c37c43326a1aafdce596e0df4a + Change-Id: I9dc9994763c5ebfeb9f1cff60fb53f6902b7fd5f -2017-09-20 18:36 +0000 [fb19799b62] Richard Mudgett +2018-08-09 02:34 +0000 [0d4bde84d1] Torrey Searle - * res_pjsip_registrar.c: Update remove_existing AOR contact handling. + * res/res_pjsip_sdp_rtp: put rtcp-mux in answer only if offered - When "rewrite_contact" is enabled, the "max_contacts" count option can - block re-registrations because the source port from the endpoint can be - random. When the re-registration is blocked, the endpoint may give up - re-registering and require manual intervention. + If in the initial sdp the caller doesn't include the line + a=rtcp-mux - * 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. + Then asterisk shoud not include rtcp-mux in the response regardless + of rtcp-mux being enabled on the endpoint - ASTERISK-27192 + ASTERISK-28007 #close - Change-Id: I64c107a10b70db1697d17136051ae6bf22b5314b + Change-Id: I58e9b9f40a139afc0da5de41906cc608fb62adc7 -2017-10-09 08:15 +0000 [ad38a55a2d] Sean Bright +2018-08-15 14:49 +0000 [167efe3a47] Corey Farrell - * res_config_sqlite: Don't enable SQLite CDRs when running 'make samples' + * res_resolver_unbound: Fix leak of config nameserver strings. - Change-Id: I65a5190b2732b2246d67472db70dd37db64ddad4 + Change-Id: I3f396316bb40d1ae6e91f5f688042420f1a540ed -2017-10-08 14:05 +0000 [a0a1f95abf] David Hajek +2018-08-15 13:51 +0000 [72dbc9fb70] Corey Farrell - * res/res_ari.c Fix: Memory leaks in ARI when using Content-Type: application/json + * res_pjsip: Resolve transport management leak at shutdown. - ASTERISK-27305 - Reported by: David Hajek - Tested by: David Hajek + Cleanup idle check scheduled events at shutdown. - Change-Id: Ife3e289062e6cf7d0e7d342dbf79ed96feff441e + Change-Id: I61bfbb56bac69fe840c3242927d31ff3593be461 -2017-10-08 09:11 +0000 [feeb0974eb] Alexander Traud +2018-08-15 11:12 +0000 [6e0f4a2127] Corey Farrell - * tcptls: Do not re-bind to wildcard on client creation. + * res_pjsip: Fix leak in pjsip_options. - Since ASTERISK-26922, this issue affected only those chan_sip which were - * enabled for dual-stack (bindaddr=::), and - * enabled for TCP (tcpenable=yes) and/or TLS (tlsenable=yes), and - * tried to register and/or invite a IPv4-only service, - * via TCP and/or TLS. - Now, ast_tcptls_client_create does not re-bind to [::] anymore. + sip_options_get_endpoint_state_compositor_state leaked a reference to + the first available endpoint state compositor that was found. - ASTERISK-27324 #close + Change-Id: Idb6be19f7219b6eed1dfb19c1e740dd40cb3fdc7 - Change-Id: I4b242837bdeb1ec7130dc82505c6180a946fd9b5 +2018-08-15 11:31 +0000 [b370482786] Corey Farrell -2017-10-07 15:47 +0000 [eb224fea5e] Corey Farrell + * res_odbc: Allow unload at shutdown. - * res_pjsip_session: Fix format_cap leak. + This makes it possible for REF_DEBUG to report no leaks when loading + res_odbc. - ASTERISK-27306 + Change-Id: I1a3dea786bd6e7f4820a6dd5cbaa197fa783ce93 - Change-Id: I2c8d3fc148f9f53715c958314e1146f9611741f3 +2018-07-31 23:54 +0000 [d61a8791b5] Corey Farrell -2017-10-06 10:51 +0000 [f4798faacc] Matt Jordan + * Build System: Improve ccache matching for different menuselect options. - * res_corosync: Fix linking issue with Corosync 2.x + 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. - At some point in time in the history of Corosync (certainly within the - 2.x branch), the corosync_cfg_state_track function was removed. - Unfortunately, the cfg library is only linked if this function is - present. Without the cfg library being linked to res_corosync, loading - of res_corosync will fail. + 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. - This patch makes it so that detecting corosync's core libraries, - determined by the COROSYNC external library checks, links both the cpg - and cfg libraries with res_corosync. + 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: I674e9e1c8fea11c3bf81154aaa7c1fd43f945465 + Change-Id: Ie2085237a964f6e1e6fff55ed046e2afff83c027 -2017-10-05 16:26 +0000 [a68a91f722] Corey Farrell +2018-08-14 11:55 +0000 [0e4f5f5189] Richard Mudgett - * res_pjsip: Fix leak of persistent endpoint references. + * contrib/scripts: Make astgenkey executable - Do not manually call sip_endpoint_apply_handler from load_all_endpoints. - This is not necessary and causes memory leaks. + Change-Id: I11641d65592536dea9cbca5aa94a24c25d24dd5f - Additionally reinitialize persistent->aors when we reuse a persistent - object with a new endpoint. +2018-08-14 07:29 +0000 [56c1285b8a] Joshua Colp - ASTERISK-27306 + * res_pjsip_caller_id: Add "party" parameter to RPID header. - Change-Id: I59bbfc8da8a14d5f4af8c5bb1e71f8592ae823eb + 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. -2017-10-05 17:59 +0000 [3bd00c4a7e] Corey Farrell + ASTERISK-28006 - * vector: multiple evaluation of elem in AST_VECTOR_ADD_SORTED. + Change-Id: I1eec3e377ffff8633b5c1dd59a05e9533122cfca - Use temporary variable to prevent multiple evaluations of elem argument. - This resolves a memory leak in res_pjproject startup. +2018-07-19 22:28 +0000 [3bf968470b] Corey Farrell - ASTERISK-27317 #close + * CI: Add support for coverage processing. - Change-Id: Ib960d7f5576f9e1a3c478ecb48995582a574e06d + 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`. -2017-10-05 15:54 +0000 [b35ac9e566] Corey Farrell + ./tests/CI/processCoverage.sh is used to process the coverage and + generate HTML reports. - * res_pjsip: Fix leak of fake_auth references. + Fix utils/check_expr2 which failed to compiled with coverage enabled. - pjsip_distributor leaks references to fake_auth when the default realm - has not changed. + 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. - ASTERISK-27306 + Change-Id: I890f7d5665087426ad7d3e363187691b9afc2222 - Change-Id: I3fcf103b3680ad2d1d4610dcd6738eeaebf4d202 +2018-08-07 10:57 +0000 [a46fcaca7b] Ben Ford -2017-10-05 20:23 +0000 [0f3e725503] Corey Farrell + * res_pjsip/rtp: No joint capabilities between streams. - * main/strings: Fix uninitialized value. + 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. - ast_strings_match uses sscanf and checks for non-zero return to verify a - token was parsed. This is incorrect as sscanf returns EOF (-1) for errors. + 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-27318 #close + ASTERISK-27398 - Change-Id: Ifcece92605f58116eff24c5a0a3b0ee08b3c87b1 + Change-Id: I26e7c6f101bc119549eeca406b5bcd25ad8ebc5e -2017-10-05 19:55 +0000 [0b6be1b2d4] Corey Farrell +2018-08-12 11:04 +0000 [fce68efbbe] Ivan Poddubny - * res_sdp_translator_pjmedia: Fix test unregistration. + * app_queue: set QUEUESTATUS to LEAVEEMPTY instead of CONTINUE - ASTERISK-27306 + 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. - Change-Id: Ib3ed47167cb697ab7bd0a56cab589893f491651b + 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. -2017-10-02 07:48 +0000 [59b6e8467a] Daniel Tryba + ASTERISK-27973 #close + Reported-by: Valentin Safonov - * res_pjsip_caller_id chan_sip: Comply to RFC 3323 values for privacy + Change-Id: Iec013fe6a26a4e825ca572a1dda4f3cee5f6f80c - Currently privacy requests are only granted if the Privacy header - value is exactly "id" (defined in RFC 3325). It ignores any other - possible value (or a combination there of). This patch reverses the - logic from testing for "id" to grant privacy, to testing for "none" and - granting privacy for any other value. "none" must not be used in - combination with any other value (RFC 3323 section 4.2). +2018-08-09 15:25 +0000 [661273a078] Corey Farrell - ASTERISK-27284 #close + * Sample configs: Fix pjsip.conf syntax error. - Change-Id: If438a21f31a962da32d7a33ff33bdeb1e776fe56 + 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. -2017-10-04 10:59 +0000 [65399a5eda] Corey Farrell + Change-Id: Icf3b0d69b4ecb6e935eecd43c99ed8b32a5a1cf6 - * res_pjsip: Add REF_DEBUG info to module references. +2018-08-06 12:19 +0000 [eb87a98a1a] Richard Mudgett - This provides better information to REF_DEBUG log for troubleshooting - when the system is unable to unload res_pjsip.so during shutdown due to - module references. + * res_pjsip.h: Fix doxygen comments. - ASTERISK-27306 + Change-Id: I9cf97bdc756012d1f552ab007f4aa85e0ddb4e62 - Change-Id: I63197ad33d1aebe60d12e0a6561718bdc54e4612 +2018-08-06 06:36 +0000 [5030756bfa] Joshua Colp -2017-10-04 10:46 +0000 [7d04544986] Corey Farrell + * stasis: Reduce calculation of stasis message type hash. - * res_pjsip: Fix issues that prevented shutdown of modules. + 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. - res_pjsip and res_pjsip_session had circular references, preventing both - modules from shutting down. - * Move session supplement registration to res_pjsip. - * Use create internal functions for use by pjsip_message_filter.c. + Change-Id: I4fe6bfdafb55bf5c322dd313fbd8c32cce73ef37 - ASTERISK-27306 +2018-07-30 07:49 +0000 [04974a0ca2] Alexander Traud - Change-Id: Ifbd5c19ec848010111afeab2436f9699da06ba6b + * pjproject_bundled: Fix for Solaris builds. Do not undef s_addr. -2017-09-28 02:56 +0000 [2301447a20] Benoît Dereck-Tricot + 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. - * res_calendar_icalendar: Filter out occurrences superceded by another VEVENT + Updates the patch from ASTERISK_20366 - When we are loading the calendars, we call libical's - icalcomponent_foreach_recurrence method for each VEVENT component that - we have in our calendar. + ASTERISK-27997 - That method has no knowledge concerning the existence of the other - VEVENT components and will feed our callback with all ocurrences - matching the requested time span. + Change-Id: I8223026d4d54e2a46521085fcc94bfa6ebe35b11 - The occurrences generated by icalcomponent_foreach_recurrence while - expanding a recurring VEVENT's RRULE and RDATE properties can be - superceded by an other VEVENT sharing the same UID. +2018-08-03 15:59 +0000 [99a0586ec1] Richard Mudgett - I use an external iterator (in libical terminology) to avoid messing - with the internal ones from the calling function, and search for - VEVENTS which could supersede the current occurrence. + * res_pjsip: Make pjlib.h consistently included. - The event which can invalidate this occurence needs to have: + * Don't include pjlib.h twice in res_pjsip.h + * Consistently use #include <> form for pjproject includes. + (pjsip.h and pjlib.h) - - the same UID as our recurrent component (comp) - - a RECURRENCE-ID property, which represents the start time of this - occurrence + Change-Id: I3f7b42044840de64edf7e9d7695cb60c45990dc7 - If one component is found, just clean and return. +2018-08-02 14:37 +0000 [523b7b2ffc] Salah Ahmed - ASTERISK-27296 #close - Reported by: Benoît Dereck-Tricot + * dialplan_functions: wrong srtp use status report of a dialplan function - Change-Id: I8587ae3eaa765af7cb21eda3b6bf84e8a1c87af8 + If asterisk offer an endpoint with SRTP and that endpoint respond + with non srtp, in that case channel(rtp,secure,audio) reply wrong + status. -2017-09-28 17:37 +0000 [b2dbfe23ef] Richard Mudgett + 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. - * app_queue.c: Fix announcements when announce-to-first-user not enabled. + ASTERISK-27999 - The previous patch for ASTERISK-27216 made it so you wouldn't get any - position or periodic announcements unless you had announce-to-first-user - enabled. The announce-to-first-user feature was added by ASTERISK_21782 - as a result of the patch which introduced the redundant announcements that - ASTERISK-27216 removes. + Change-Id: I29dc2843cf4e5ae2604301cb4ff258f1822dc2d7 - * By noting that the makeannouncement variable is used to suppresses the - first user announcement, we set its initial value to the - announce-to-first-user enable setting. +2018-07-30 06:05 +0000 [e9d41572b3] Alexander Traud - ASTERISK-27216 + * pjproject_bundled: Find shared libraries in root --with-ssl=PATH. - Change-Id: Ieaeb7dbea8ae7073086b775fbafe0625b000b10a + 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. -2017-09-21 14:43 +0000 [80097676e7] Richard Mudgett + ASTERISK-27995 - * heap.c: No need to calloc heap pointer array. + Change-Id: I8eb916a88b6b8c22e29bb40bee8faaca6c73406f - Change-Id: I5ae2f316229f336eb90d99c7af7ed07a33097e68 +2018-08-01 09:45 +0000 [1e837e13f5] Joshua Colp -2017-09-27 13:45 +0000 [d1de7948fe] George Joseph + * res_pjsip_registrar: Improve performance on inbound handling. - * logger: Bring back ability to turn debug on by source file + 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. - Somewhere along the way we lost the ability to debug individual - source files. For modules, this wasn't a big deal but all the - source files in ./main are in the one "core" module so debugging - individual core capabilities was almost impossible. + This ensures at the end of the process the container of + contacts we have is the current state. - * Added a test to DEBUG_ATLEAST that also checks __FILE__ instead - of just module name. Any source file will work even if it's in - a module subdirectory. + 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. - Change-Id: Icc0af41837f3b1679dec7af21fa32cd1f7469f6e + ASTERISK-28001 -2017-09-28 05:33 +0000 [f21408c866] Joshua Colp + Change-Id: I1a78b2d46f9a2045dbbff1a3fd6dba84b612b3cb - * res_stasis: Add 'video_sfu' as a requested bridge type. +2018-07-17 07:13 +0000 [e818925a58] Torrey Searle - This change adds 'video_sfu' as a requested bridge type when - creating a bridge. By specifying this a mixing type bridge is - created that exchanges video in an SFU fashion. + * thirdparty/pjproject: fix deadlock in response retransmissions - Change-Id: I2ada47cf5f3fc176518b647c0b4aa39d55339606 + 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. -2017-09-27 11:16 +0000 [a6dc0527a2] Richard Mudgett + ASTERISK-27966 #close - * res_pjsip_outbound_publish.c: Fix misplaced parenthesis. + Change-Id: Ic381004a3a212fe1d8eca0e707fe09dba4a6ab4e - The pjsip_publishc_init() call was referenced with a misplaced - parentheses. As a result, outbound publication messages went out with an - expiration of 1 second. +2018-07-31 11:24 +0000 [20b53b5cee] Richard Mudgett - ASTERISK-27298 + * pjsip_wizard.conf.sample: Update remote_hosts description. - Change-Id: I93622eabc8ee83e7a22e98c107f921284c605a08 + Remove the note that SRV records are not supported as that is no longer + true. -2017-09-26 11:01 +0000 [61ea872233] George Joseph + ASTERISK-27993 - * pjsip_message_filter: Fix regression causing bad contact address + Change-Id: Id0dd6ef40e52702be9727a2b6122216cb00bb4ca - The "res_pjsip: Filter out non SIP(S) requests" commit moved the - filtering of messages to pjproject's PJSIP_MOD_PRIORITY_TRANSPORT_LAYER - in order to filter out incoming bad uri schemes as early as possible. - Since the change affected outgoing messages as well and the TRANSPORT - layer is the last to be run on outgoing messages, we were overwriting - the setting of external_signaling_address (which is set earlier by - res_pjsip_nat) with an internal address. +2018-07-27 13:23 +0000 [914b9e1934] George Joseph - * pjsip_message_filter now registers itself as a pjproject module - twice. Once in the TSX layer for the outgoing messages (as it was - originally), then a second time in the TRANSPORT layer for the - incoming messages to catch the invalid uri schemes. + * CI: Add optional uninstall step before installing asterisk - ASTERISK-27295 - Reported by: Sean Bright + Change-Id: I7dedf1e925eafc3a0adf01dd9dfbe44eb642aab7 - Change-Id: I2c90190c43370f8a9d1c4693a19fd65840689c8c +2018-07-28 11:49 +0000 [93d1c34efe] Alexander Traud -2017-09-13 21:31 +0000 [9d65057cdf] Richard Mudgett + * BuildSystem: Enable ncurses for menuselect in Solaris 11. - * res_rtp_asterisk.c: Fix bridge_p2p_rtp_write() reentrancy potential. + 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. - The bridge_p2p_rtp_write() has potential reentrancy problems. + Furthermore in Solaris, the header is in a subdirectory + /usr/include/ncurses and not available via pkg-config. - * Accessing the bridged RTP members must be done with the instance1 lock - held. The DTMF and asymmetric codec checks must be split to be done with - the correct RTP instance struct locked. i.e., They must be done when - working on the appropriate side of the point to point bridge. + ASTERISK-15331 + ASTERISK-14935 + ASTERISK-12382 + ASTERISK-9107 - * Forcing the RTP mark bit was referencing the wrong side of the point to - point bridge. The set mark bit is used everywhere else to set the mark - bit when sending not receiving. + Change-Id: Ife367776b0ccf17d3fefed868245376bfb93745d - The patches for ASTERISK_26745 and ASTERISK_27158 did not take into - account that not everything carried by RTP uses a codec. The telephony - DTMF events are not exchanged with a codec. As a result when - RFC2833/RFC4733 sent digits you would crash if "core set debug 1" is - enabled, the DTMF digits would always get passed to the core even though - the local native RTP bridge is active, and the DTMF digits would go out - using the wrong SSRC id. +2018-07-28 08:00 +0000 [ee9794d741] Joshua Colp - * Add protection for non-format payload types like DTMF when updating the - lastrxformat and lasttxformat. Also protect against non-format payload - types when checking for asymmetric codecs. + * res_pjsip_pubsub: Use ast_true for "prune_on_boot". - ASTERISK-27292 + Change-Id: Iedec4e7390b3e821987681da24d0298632b9873d - Change-Id: I6344ab7de21e26f84503c4d1fca1a41579364186 +2018-07-28 07:39 +0000 [c10b3ccd5f] Alexander Traud -2017-09-26 10:55 +0000 [c9e972a26a] Sean Bright + * BuildSystem: Enable Jansson in Solaris 11. - * res_rtp_asterisk: Trim trailing byte off of SDES packet + 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. - This could have been fixed by subtracting 1 from the final value of - 'len' but the way the packet was being constructed was confusing so I - took the opportunity to (I think) make it more clear. + 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. - We were sending 1 extra byte at the end of the SDES RTCP packet which - caused Chrome to complain (in its debug log): + ASTERISK-27991 - Too little data (1 byte) remaining in buffer to parse - RTCP header (4 bytes). + Change-Id: I69ea0f379f87a50049654b2487c76ee1c04fa53a - We now send the correct number of bytes. +2018-07-24 13:44 +0000 [32ce8e5cf3] Richard Mudgett - Change-Id: I9dcf087cdaf97da0374ae0acb7d379746a71e81b + * res_pjsip_endpoint_identifier_ip.c: Added regex support to match_header -2017-09-25 13:00 +0000 [721947ebae] Sean Bright + 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. - * webrtc: Allow 'webrtc' to be set on endpoints without dtls_ca_file + [identify-alice] + type=identify + endpoint=alice + match_header=From: // - If using a legitimate certificate from a trusted certificate authority, - you don't need to provide CA file. + * Added regex support to match_header so you could match a 'To' header + among other complex headers. - Change-Id: I8623973b4209b44889243716d7880274caed8a6d + 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. -2017-09-25 13:09 +0000 [0cbeaa5589] Sean Bright + * Made use code that will work for any header type instead of code + specific to generic headers. - * pjproject: Patch to correct STUN FINGERPRINT usage + Other fixes while in the area: - Change-Id: I0e453253dff1388b0186b36c754457c1d0d12db6 + * Made check all headers of the requested name. + * Added some more sanity checks to the configured identify matching + options when applying the configuration. -2017-09-25 12:30 +0000 [b74cbadd05] Kevin Harwell + ASTERISK-27548 - * res_pjsip_session: outgoing call did not offer all configured codecs + Change-Id: I27dfd4ff5e2259b906640e3c330681b76b4ed1f1 - For some scenarios when an outgoing call was made only a subset of the - configured codecs were offered. If the codecs being offered happened to - not have a codec supported by the phone then the call would fail. +2018-07-27 10:46 +0000 [59f53514ce] Joshua Colp - For instance Alice and Bob both are configured in Asterisk for g722 and ulaw( - allow=!all,g722,ulaw). Alice's endpoint however only supports g722 while Bob's - only supports ulaw. When Alice calls Bob, Alice negotiates g722 fine with - Asterisk. But when Asterisk sends the outgoing offer to Bob it only contains - g722 and not both g722 and ulaw, so the call ends. + * res_pjsip_pubsub: Treat "prune_on_boot" as a yes / no. - This patch makes it so all the audio codecs configured on the endpoint always - get sent, and not just a subset. However priority is given to those codecs that - are compatible with the "other side". + 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". - ASTERISK-27259 #close + Change-Id: Ic8b9211b36babefe78f70def6828a135a6ae7ab6 - Change-Id: Iffabc373bd94cd1dc700925dcfe406e12918c696 +2018-07-27 08:26 +0000 [8da81a208f] Alexander Traud -2017-09-25 10:59 +0000 [08e67f814b] Richard Mudgett + * res_rtp_asterisk: In Developer Mode, do not require OpenSSL. - * channel.c: Fix invalid reference in conditionaled out code. + OpenSSL is an optional external library and should stay optional even when + Developer Mode is configured. - ASTERISK-27289 + ASTERISK-27990 - Change-Id: I7a415948116493050614d9f4fa91ffbe0c21ec4c + Change-Id: Ia68a4cd5474b26d45e0f43b04032ad598022853b -2017-09-25 07:25 +0000 [4275ca16a1] George Joseph +2018-07-26 18:54 +0000 [e097dca4d7] George Joseph - * build: A few gcc 7 error fixes + * CI: Fix placement of job summary statments - Change-Id: I7b5300fbf1af7d88d47129db13ad6dbdc9b553ec + Change-Id: Iace19e718f4e8fb48eb7dc9f98af53b115cc45f3 -2017-09-15 02:59 +0000 [c3c73b3511] Stefan Engström +2018-07-26 12:52 +0000 [e5de8a70f8] Corey Farrell - * app_queue: Only do announcement logic between ringing cycles + * loader: Process dependencies for built-in modules. - This patch reverts the change by patch 2263 from old reviewboard. - Note that reverting that 2263-patch still preserves the behaviour that - the commit log of the 2263-patch claimed to add. The reason for this is: + 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. - The function wait_for_answer is only called from try_calling which - in turn is only called from the main for loop in queue_exec, and - earlier in that loop we already check the things that's removed by - this patch. There's no need to check those things twice each loop - iteration, and I think the proper place to check it is before each - ringing cycle. By checking it in wait_for_answer, you allow the issue - explained in the jira - that the head caller hears announcements while - the agents' sip phones are actively ringing. + 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. - Reported-by: Stefan Engström - Tested-by: Stefan Engström - ASTERISK-27216 #close + Change-Id: I482ed6bca6c1064b05bb538d7861cd7a4f02d9fc - Change-Id: Ic4290dc75256f9743900c6762ee1bb915f672db0 +2018-07-18 09:32 +0000 [d3809d61cb] Emmanuel BUU -2017-09-23 12:32 +0000 [0fad11f21c] Sean Bright + * res_rtp_asterisk: Avoid merging command and regular T.140 text packets - * app_stream_echo: Don't echo declined streams + 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. - Discovered while experimenting with Cyber Mega Phone 2K Ultimate Dynamic - Edition after accepting the audio request but declining the video one. + 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. - Change-Id: Iaa86d41fccfbc1b559a30ccf740d78a3b5f8a98c + ASTERISK-27970 -2017-09-22 17:49 +0000 [601e0c563f] Joshua Colp + Change-Id: Ifbe993311410fa855cb8aa4a12084db75f413462 - * res_pjsip_session: Reduce (and improve) SDP renegotiation. +2018-07-26 11:34 +0000 [798f049e82] George Joseph - When pruning a request to change the topology of a channel be - more intelligent about the resulting topology that is actually - used for SDP renegotiation. + * CI: Add docker info to job summary - In a case where a stream has not already been negotiated we - don't need to renegotiate and offer a declined stream. This can - occur if something in Asterisk (such as ConfBridge) requests - to add video to a PJSIP channel that has no video codecs configured. - In this case since the stream did not already exist we can safely - remove the stream from the requested topology, resulting in no - renegotiation occurring. + Change-Id: I45d52005a9b692ad303c11792f226ace1e449901 - In a case where a renegotiation is requested with a codec that is - not supported we can reuse the formats of the existing stream if - it exists to ensure that the stream continues to flow, instead of - removing it. +2018-07-23 13:49 +0000 [7578881b3d] Corey Farrell - Change-Id: I636540798d55922377318fe619c510fb6ed125fb + * Build System: Create 'make install-configs' target. -2017-09-22 15:29 +0000 [36690c26f8] Kevin Harwell + 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. - * res_pjsip_session: Don't end session when receiving a 500 on a reinvite + Modify internal INSTALL_CONFIGS so first argument requires full path to + the config sources relative to Asterisk source root. - During a reinvite, if a remote endpoint error occurs and it returns a 500 the - session would end. This patch makes it so the session is not terminated, but - continues as it was. + Change-Id: Idcd841df3c8d5bfe23d566bb9e2e448e9df4f8ab - The reason for this is because some endpoints may send non session terminating - "server errors" like a failed codec negotiation. So in this case instead of - ending the call it can hopefully continue. In the case of a real server error - the session is already "doomed", will be known soon enough and appropriately - ended by Asterisk later. +2018-07-25 15:33 +0000 [8ea13d62cd] Kevin Harwell - Change-Id: Ifeedae86b8cb44b92d52c79046522ec5f0aff1d5 + * json.c: improve ast_json_to_ast_variables performance -2017-09-22 10:02 +0000 [ebd0a4bebf] Sean Bright + 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. - * res_pjsip: Use ast_sip_is_content_type() where appropriate + This patch makes it so the list is no longer traversed for each new ast + variable being appended. - Change-Id: If3ab0d73d79ac4623308bd48508af2bfd554937d + Change-Id: I8bf496a1fc449485150d6db36bfc0354934a3977 -2017-09-21 09:47 +0000 [6c0e13da22] George Joseph +2018-07-25 05:32 +0000 [e5c0ac6a64] Joshua Colp - * res_pjsip_session/BUNDLE: Handle no audio codecs on endpoint + * devicestate: Don't create topic when change isn't cached. - When an INVITE came in with both audio and video streams but there - were no audio codecs defined for the endpoint, we weren't declining - the audio stream. Since it's usually the first/transport stream, - when the video stream was processed and tried to use the transport, - it was empty and caused a crash. We now decline the the stream if - there are no matching codecs so when the video stream is processed, - it's now the first/transport stream and processes normally. + 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. - Change-Id: Ic854eda54c95031e66b076ecfae3041d34daa692 + 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. -2017-09-19 14:28 +0000 [7c93982e9d] Richard Mudgett + ASTERISK-27591 - * res_rtp_asterisk.c: Fix bundled SSRC handling. + Change-Id: I18da0e8cbb18e79602e731020c46ba4101e59f0a - Assertions in the v15+ AST-2017-008 patches found that we were not - handling the case if the incoming SDP did not specify the required SSRC - attributes for bundled to work. +2018-07-25 10:20 +0000 [93997f9698] George Joseph - * Be strict on matching SSRC for bundled instances including the parent - instance. If the SSRC doesn't match then discard the packet. Bundled has - to tell us in the SDP signaling what SSRC to expect. Otherwise, we will - not know how to find the bundled instance structure. + * CI: Explicitly pass BRANCH_NAME to buildAsterisk and installAsterisk - Change-Id: I152830bbff71c662408909042068fada39e617f9 + Change-Id: I652f4a0ea5107c778e27a78bccb67b18b0c4e087 -2017-09-16 09:19 +0000 [f2985e3106] Joshua Colp +2018-07-24 13:29 +0000 [0baf660bde] George Joseph - * bridge: Change participant SFU streams when source streams change. + * CI: Add options to initialize and cleanup database to runTestsuite.sh - Some endpoints do not like a stream being reused for a new - media stream. The frame/jitterbuffer can rely on underlying - attributes of the media stream in order to order the packets. - When a new stream takes its place without any notice the - buffer can get confused and the media ends up getting dropped. + Change-Id: I352333233bab5377723bf37d490ba84fc55bc853 - This change uses the SSRC change to determine that a new source - is reusing an existing stream and then bridge_softmix renegotiates - each participant such that they see a new media stream. This - causes the frame/jitterbuffer to start fresh and work as expected. +2018-07-25 09:07 +0000 [74cbeabb97] Corey Farrell - ASTERISK-27277 + * CI: Do not `mkdir 2`. - Change-Id: I30ccbdba16ca073d7f31e0e59ab778c153afae07 + Change-Id: Ib7377d26a6c98b38bad463f47c84f1875ac84eb7 -2017-09-20 10:45 +0000 [971548405b] George Joseph +2018-07-25 07:34 +0000 [adf3c569a2] Corey Farrell - * res_pjsip_session: Change some asserts to warning/debug messages + * Build System: Silence build of bundled jansson. - There was an issue reported where an SDP received on a 183 Session - Progress message caused a crash because the pending streams had - already been processed when the OK was received. In that case the - pending topology was legitimately NULL. There was an assert for an - incorrect number of streams in the topology but not one for - topology being NULL. In any case, if you're not in dev-mode the - asserts don't do anything and since the scenario is legit, the - asserts weren't appropriate anyway. + Change-Id: I7392c79c0173057f5378010bf1fe65e300e8fc56 - * Changed several asserts to warning or debug messages and return - codes as appropriate. +2018-07-25 07:13 +0000 [e4b0f09bcc] George Joseph - ASTERISK-27264 - Reported by: Daniel Heckl + * CI: RefDebug: Fix reference to testsuite URL - Change-Id: I58daaa9d2938fa980857ab3ec41925ab5ff9c848 + Change-Id: I0ee41d95a87f0d97b01f2757012b846bcfe6443d -2017-09-19 05:22 +0000 [cad68137a7] Rodrigo Ramírez Norambuena +2018-07-24 14:28 +0000 [5537048d60] Corey Farrell - * res_config_pgsql: Fix removed support to previous for versions PostgreSQL 9.1 + * Build System: Fix bundled jansson install. - In PostgreSQL 9.1 the backslash are string literals and not the escape - of characters. + 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. - In previous issue ASTERISK_26057 was fixed the use of escape LIKE but the - support for old version of Postgresql than 9.1 was dropped. The sentence - before make was "ESCAPE '\'" but in version before than 9.1 need it to be - as follow "ESCAPE '\\'". + Change-Id: I7643cc3d39af9feba8fc0da676b646efc5f8b3bb - ASTERISK-27283 +2018-07-24 10:43 +0000 [9f3620a578] Corey Farrell - Change-Id: I96d9ee1ed7693ab17503cb36a9cd72847165f949 + * CI: Use bundled jansson if needed. -2017-09-15 09:43 +0000 [e666051d79] Ben Ford + Use pkg-config to determine if jansson is at least 2.11, enabled bundled + version otherwise. - * res_pjsip_session: Check for removed stream state. + Change-Id: Ib555a8b72ff6f6925f9280ef035caa0b91ca4bd2 - When a sip session is refreshed, the stream topology is looped - through, checking each stream for compatible formats. This would - cause a crash if the stream state was AST_STREAM_STATE_REMOVED, - since the formats would never be set for this stream, causing - a NULL value to be returned from ast_stream_get_formats. This - commit adds a check for streams with removed states. +2018-07-24 04:57 +0000 [1f46e2e91c] Florian Floimair - Also removed a stray semicolon. + * res_pjsip: Change log message from error to warning for valid use cases - Change-Id: Ic86f8b65a4a26a60885b28b8b1a0b22e1b471d42 + 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. -2017-09-19 05:44 +0000 [b6aa728a58] George Joseph + Change-Id: I55eb62d2712818a58c7532119dec288bd98cf0c0 - * chan_pjsip: Ignore AST_CONTROL_STREAM_TOPOLOGY_CHANGED for now +2018-07-24 05:39 +0000 [8550fad21a] George Joseph - chan_pjsip_indicate was missing a case for the recently added - AST_CONTROL_STREAM_TOPOLOGY_CHANGED condition and was returning an - error and causing the call to be hung up instead of just ignoring - it. + * CI: Add --privileged flag to docker options - ASTERISK-27260 - Reported by: Daniel Heckl + Change-Id: If92d55f15306e55dd7091ac3c47b13ebbbb03488 - Change-Id: I4fecbb00a0b8a853da85155065c1a6bddf235e80 +2018-07-24 05:22 +0000 [f2580d037f] George Joseph -2017-09-07 04:41 +0000 [6b7d5671d1] Jean Aunis + * CI: Set correct user:group when publishing docs - * bridge : Fix one-way direct-media when early bridging with native_rtp + Change-Id: Ibabeb9ac730d9755cf54318d0da74771c939b86b - When two channels were early bridged in a native_rtp bridge, the RTP description - on one side was not updated when the other side answered. - This patch forbids non-answered channels to enter a native_rtp bridge, and - triggers a bridge reconfiguration when an ANSWER frame is received. +2018-07-23 12:21 +0000 [35d06e46ae] Richard Mudgett - ASTERISK-27257 + * core: AST_DEVMODE no longer affects ABI. - Change-Id: If1aaee1b4ed9658a1aa91ab715ee0a6413b878df + Remove AST_DEVMODE from the AST_BUILDOPTS list and the AST_BUILDOPTS_SUM + calculation as it no longer affects API/ABI compatibility. -2017-09-18 09:51 +0000 [1e4c1cec7f] Alexander Traud + Change-Id: Id5bd6dfade173a53b3a49f715586b86e3fb24acb - * res_srtp: lower log level of auth failures +2018-07-23 10:23 +0000 [09b258fd69] Corey Farrell - Previously, sRTP authentication failures were reported on log level WARNING. - When such failures happen, each RT(C)P packet is affected, spamming the log. - Now, those failures are reported at log level VERBOSE 2. Furthermore, the - amount is further reduced (previously all two seconds, now all three seconds). - Additionally, the new log entry informs whether media (RTP) or statistics (RTCP) - are affected. + * CI: Split --test-command argument. - ASTERISK-16898 #close + The --test-command argument has now been split, unit tests now use + `--unittest-command` and the testsuite uses --testsuite-command. - Change-Id: I6c98d46b711f56e08655abeb01c951ab8e8d7fa0 + This will make it easier to create a script which run everything by + forwarding the same arguments to all CI scripts. -2017-09-19 10:38 +0000 [b748038230] George Joseph + Change-Id: Ia54aa4848eaffbdf13175fcda40fc0b23080ad71 - * res_pjsip_pubsub: Check for Content-Type header in rx_notify_request +2018-07-20 06:20 +0000 [460ef41f7a] George Joseph - pubsub_on_rx_notify_request wasn't checking for a null - Content-Type header before checking that it was - application/simple-message-summary. + * xmldoc.c: Fix dump of xml document - ASTERISK-27279 - Reported by: Ross Beer + 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. - Change-Id: Iec2a6c4d2e74af37ff779ecc9fd35644c5c4ea52 + * 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. -2017-09-19 09:34 +0000 [a5f1d58fe1] David J. Pryke + * 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. - * chan_sip: Expose read-only access to the full SIP INVITE Request-URI + Change-Id: I3f182d38c75776aee76413dadd2d489d54a85c07 - Provide a way to get the contents of the the Request URI from the initial SIP - INVITE in dial plan function call. (In this case "${CHANNEL(ruri)}") +2018-07-21 11:58 +0000 [fd1f74af40] Corey Farrell - ASTERISK-27278 - Reported by: David J. Pryke - Tested by: David J. Pryke + * CI: Fix mkdir CACHE_DIR. - Change-Id: I1dd4d6988eed1b6c98a9701e0e833a15ef0dac3e + Change-Id: Ic9f9a61e230047836c836206731f8ff7eb3538c9 -2017-09-19 07:53 +0000 [6fd3db51e8] Joshua Colp +2018-07-21 11:22 +0000 [9b3267641f] Corey Farrell - * app_confbridge: Only create a channel that records audio. + * build_tools/make_version: Get MAINLINE_BRANCH from .gitreview. - This change makes it so that the conference recorder channel - that is created only contains audio formats and an audio stream. - This is because the underlying application used by ConfBridge to - record, MixMonitor, only allows recording audio. + 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} - Having additional streams (and in particular a video stream) can - result in clients needlessly renegotiating to add a video stream - that will never receive video. + Change-Id: Ifdad4a9d8a26138c41bc6b630ecc3e34ea1c2758 - Change-Id: I89d38aedc9205eca7741d5435e73e73bb9de97a0 +2018-07-22 10:41 +0000 [0f999a834f] Joshua Colp -2017-09-19 06:34 +0000 [56f0d5fc0f] Rodrigo Ramírez Norambuena + * sched: Make ABI compatible between dev mode and non-dev mode. - * res_config_pgsql: Add missing \n in debug log and update copyright year + 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. - Change-Id: I4ba338ecbdecc6a814a902eddc4121c8ef3cda58 + This assertion is no longer present so the special logic can be + removed to make it the same between them both. -2017-09-13 14:14 +0000 [55567ee1d8] Sean Bright + Change-Id: Icbc69c801e357d7004efc5cf2ab936d9b83b6ab8 - * res_calendar: Plug memory leak and micro-optimization +2018-07-20 15:52 +0000 [aea0a0294d] Richard Mudgett - ast_variables_destroy is NULL safe, so there is no need to check its - argument before passing it. + * asterisk.c: Update displayed copyright year for v16 release. - ASTERISK-25524 #close - Reported by: Jesper + Change-Id: I60622731d928ee9506b1d28934095f0dc3e5306e - Change-Id: Ib0f8057642e9d471960f1a79fd42e5a3ce587d3b +2018-07-16 15:08 +0000 [d2dace81d4] Corey Farrell -2017-09-13 03:46 +0000 [1199927fc0] alex + * Enable bundling of jansson, require 2.11. - * cdr_mysql.c: Apply cdrzone to start and answer + Change-Id: Ib3111b151d37cbda40768cf2a8a9c6cf6c5c7cbd - Change-Id: I7de0a5adc89824a5f2b696fc22c80fc22dff36b0 +2018-07-20 09:25 +0000 [c8bd8f6ce9] Corey Farrell -2017-08-25 17:01 +0000 [087f667ab1] Richard Mudgett + * CI: Fix logger.conf for unit tests. - * AST-2017-008: Improve RTP and RTCP packet processing. + Change-Id: Idea59d60eab20105de50b34f0f0d506e6ef55d5c - Validate RTCP packets before processing them. +2018-07-19 10:34 +0000 [0f82db82cb] George Joseph - * Validate that the received packet is of a minimum length and apply the - RFC3550 RTCP packet validation checks. + * CI: Add wiki doc publish to periodics - * Fixed potentially reading garbage beyond the received RTCP record data. + Change-Id: I29ba26134e5083bc6788ede235f1a5d4383c148a - * Fixed rtp->themssrc only being set once when the remote could change - the SSRC. We would effectively stop handling the RTCP statistic records. +2018-07-20 06:54 +0000 [a2a3ad2438] Joshua Colp - * Fixed rtp->themssrc to not treat a zero value as special by adding - rtp->themssrc_valid to indicate if rtp->themssrc is available. + * res_pjsip: Update default keepalive interval to 90 seconds. - ASTERISK-27274 + 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. - Make strict RTP learning more flexible. + This change makes our default keepalive interval 90 seconds + to match the previous behavior and preserve it. - Direct media can cause strict RTP to attempt to learn a remote address - again before it has had a chance to learn the remote address the first - time. Because of the rapid relearn requests, strict RTP could latch onto - the first remote address and fail to latch onto the direct media remote - address. As a result, you have one way audio until the call is placed on - and off hold. + ASTERISK-27978 - The new algorithm learns remote addresses for a set time (1.5 seconds) - before locking the remote address. In addition, we must see a configured - number of remote packets from the same address in a row before switching. + Change-Id: Ibd9a45f3cbe5d9bb6d2161268696645ff781b1d6 - * Fixed strict RTP learning from always accepting the first new address - packet as the new stream. +2018-07-19 16:17 +0000 [dbffcdc561] Richard Mudgett - * Fixed strict RTP to initialize the expected sequence number with the - last received sequence number instead of the last transmitted sequence - number. + * res_pjsip: Update endpoint transport option documentation. - * Fixed the predicted next sequence number calculation in - rtp_learning_rtp_seq_update() to handle overflow. + Change-Id: I5394fdff6a296efc8e1695a156e616acd932ae52 - ASTERISK-27252 +2018-07-19 13:27 +0000 [709b795cb0] Richard Mudgett - Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c + * pjsip_resolver.c: Use replacement function -2017-09-13 16:23 +0000 [d178f497d2] George Joseph + * Use the replacement function ast_sip_push_task_wait_servant() instead of + the deprecated ast_sip_push_task_synchronous(). - * res_pjsip: Filter out non SIP(S) requests + Change-Id: I145b550ba7054640c7faa3b644e63137f505c612 - Incoming requests with non sip(s) URIs in the Request, To, From - or Contact URIs are now rejected with - PJSIP_SC_UNSUPPORTED_URI_SCHEME (416). This is performed in - pjsip_message_filter (formerly pjsip_message_ip_updater) and is - done at pjproject's "TRANSPORT" layer before a request can even - reach the distributor. +2018-07-18 17:13 +0000 [c40412bd13] Corey Farrell - URIs read by res_pjsip_outbound_publish from pjsip.conf are now - also checked for both length and sip(s) scheme. Those URIs read - by outbound registration and aor were already being checked for - scheme but their error messages needed to be updated to include - scheme failure as well as length failure. + * contrib: Update systemd README.txt. - Change-Id: Ibb2f9f1d2dc7549da562af4cbd9156c44ffdd460 + Mention need to compile Asterisk with systemd development package + installed. -2017-09-14 07:54 +0000 [01f2220bec] Joshua Colp + ASTERISK-27968 - * tcptls: Change error message to debug. + Change-Id: Ib3a973be403c61cbe09572b0f912fb1aa1bff026 - The Websocket implementation will steal the underlying stream of - TCP/TLS sessions. This results in an error message being output - about a stream not being present when in reality this is actually - fine. +2018-07-18 14:19 +0000 [0b3bc4852f] Joshua Colp - This change moves it to a debug message instead. + * Update mainline version for the 16 branch. - Change-Id: I66cc639080b4b4599beadb4faa7d313f2721d094 + Change-Id: I4d36277d10335349d83ae218fa10fee99c3e4c14 -2017-09-13 14:08 +0000 [d8112cd98b] Sean Bright +2018-07-18 14:18 +0000 [e7a76ffee1] Joshua Colp - * res_calendar: Various fixes + * Update ARI version for master/16. - * The way that we were looking at XML elements for CalDAV was extremely - fragile, so use SAX2 for increased robustness. + ARI goes from 3.0.0 to 4.0.0 - * Don't complain about a 'channel' not be specified if autoreminder is - not set. Assume that if 'channel' is not set, we don't want to be - notified. + Change-Id: I0649fa34926dc4fc89a166f1d2e3bbd965ef9ebe - * Fix some truncated CLI output in 'calendar show calendar' and make the - 'Autoreminder' description a bit more clear +2018-05-29 09:31 +0000 [fe78d374b0] Alexander Traud - ASTERISK-24588 #close - Reported by: Stefan Gofferje + * pjproject_bundled: Repair ./configure --with-ssl=PATH. - ASTERISK-25523 #close - Reported by: Jesper + Previously, Asterisk did not tell its bundled PJProject about this configure + parameter. Therefore, PJProject used the platform provided OpenSSL always. - Change-Id: I200d11afca6a47e7d97888f286977e2e69874b2c + ASTERISK-27880 -2017-09-13 09:38 +0000 [eec0396395] Sean Bright + Change-Id: Iea545aec854dd0e2c061c69bb118a76ce56c5dc6 - * chan_rtp: Use μ-law by default instead of signed linear +2018-05-10 13:11 +0000 [5bacde37a2] Ben Ford - Multicast/Unicast RTP do not use SDP so we need to use a format that - cleanly maps to one of the static RTP payload types. Without this - change, an Originate to a Multicast or Unicast channel without a format - specified would produce no audio on the receiving device. + * res_rtp_asterisk: Add support for sending NACK requests. - ASTERISK-21399 #close - Reported by: Tzafrir Cohen + 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. - Change-Id: I97e332b566e85da04b0004b9b0daae746cfca0e3 + 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. -2017-09-11 05:46 +0000 [446d48fd49] George Joseph + 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. - * res_pjsip: Add handling for incoming unsolicited MWI NOTIFY + Also added additional functionality to ast_data_buffer, along with some + testing. - 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. + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements - res_pjsip_pubsub has a new handler "pubsub_on_rx_mwi_notify_request" - that parses a simple-message-summary body and, if - endpoint->incoming_mwi_account is set, calls ast_publish_mwi_state - with the voice-message counts from the message. + ASTERISK-27810 #close - Change-Id: I08bae3d16e77af48fcccc2c936acce8fc0ef0f3c + Change-Id: Idab644b08a1593659c92cda64132ccc203fe991d -2017-09-08 21:41 +0000 [4889574ff5] Richard Mudgett +2018-07-18 11:12 +0000 [59323121f3] Joshua Colp - * res_rtp_asterisk.c: Add doxygen to RTCP payload types. + * res_sorcery_config: Allow configuration section to be used based on name. - Change-Id: I3f20ce428777cc4ce9c13b2f808d29ff8c873998 + 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. -2017-09-11 05:52 +0000 [f9bad3bd61] George Joseph + 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. - * alembic: Fix typo in add_auto_info_to_endpoint_dtmf_mode + 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. - The downgrade function was missing "_v2" at the end of the - alter column type. + ASTERISK-27972 - Change-Id: Iaa9bcef48d6f3590ce07a61342d8e66f00263d8e + Change-Id: Ie22723663c1ddd24f869af8c9b4c1b59e2476893 -2017-09-10 06:17 +0000 [680aba21ec] Walter Doekes +2018-07-17 05:24 +0000 [134e2f0ddc] Joshua Colp - * res/res_pjsip: Fix localnet checks in pjsip, part 2. + * module: Remove deprecated modules and update support levels. - In 45744fc53, I mistakenly broke SDP media address rewriting by - misinterpreting which address was checked in the localnet comparison. + I have removed the STATIC_BUILD option immediately as it has not + been maintained in many years and is non-functional. - Instead of checking the remote peer address to decide whether we need - media address rewriting, we check our local media address: if it's - local, then we rewrite. This feels awkward, but works and even made - directmedia work properly if you set local_net. (For the record: for - local peers, the SDP media rewrite code is not called, so the - comparison does no harm there.) + ASTERISK-27965 - ASTERISK-27248 #close + Change-Id: I64783d017b86dba9ee3c7bcfb97e59889a3f76d7 - Change-Id: I566be1c33f4d0a689567d451ed46bab9c3861d4f +2018-07-18 11:34 +0000 [94dd0544e5] Chris-Savinovich -2017-09-08 21:19 +0000 [c8d53a1638] Rodrigo Ramírez Norambuena + * stasis: Improve message type "Use of before/init after destruction" - * cdr_pgsql: Refactor magic number by definition for version + 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. - Change-Id: I43f25976aa3069793ddbe0086833965a6fb0a518 + ASTERISK-25548 + Change-Id: Ie0d866d1cbc60c16dbef08bc65e99505c3c1adfa -2017-09-05 11:13 +0000 [e9a81157ac] Florian Floimair +2018-07-17 14:12 +0000 [993ba84cd3] Nick French - * alembic: Add support for MS-SQL + * SRTP: Lower SDES key lifetime minimum to 2^20 - MS-SQL has no native Enum-type support and therefore - needs to work with constraints. - Since these constraints need unique names the suggested approach - referenced in the following alembic documentation has been applied: - http://bit.ly/2x9r8pb + SRTP SDES key lifetime support was added in ASTERISK_17899. - ASTERISK-27255 #close + In that addition, the minimum key lifetime to be accepted was + set at the 10 hours @ 20ms/packet = 1800000 packets. - Change-Id: I8b579750dae0c549f1103ee50172644afb9b2f95 + The firmware in the obi1xx ATA uses a hardcoded lifetime of + 2^20 packets. -2017-09-05 07:31 +0000 [525f84bb35] Jacek Konieczny + Lower the limit to 2^20 to support a wider field of clients. - * func_cdr: honour 'u' flag on dummy channel + ASTERISK-27967 #close - Fixes ${CDR(...,u)} when used in cdr_custom.conf + Change-Id: I81a0703c595a0c9101dfdf02300149a3cc39bf94 - ASTERISK-27165 #close +2018-07-17 11:09 +0000 [fcc0a6fe8a] George Joseph - Change-Id: Ia4e0b6ba93e03d27886354c279737790e2cd6a83 + * CI: Fix merge strategy -2017-09-06 10:50 +0000 [2b3f903e6f] Sean Bright + Change-Id: I5e3fb6adfa6cbf694c0deecf02e3879297b0c12e - * app_waitforsilence: Cleanup & don't treat missing frames as 'noise' +2018-07-17 10:41 +0000 [3e5a6a6cfc] George Joseph - * WaitForSilence completes successfully if it receives no media in the - specified timeout, but when acting as WaitForNoise that logic needs - to be reversed. + * CI: Fix regex in daily and ref_debug jobs - * Use standard argument parsing macros and add some error checking for - invalid values. + Change-Id: Icf2e67818b2155a158d2390b138613e1f653ea92 - * The documentation indicated that the first argument to both - WaitForSilence and WaitForNoise was required when it was not. Update - the documentation to reflect that. +2018-07-17 09:09 +0000 [0e8976116f] Nick French - * Wrap up some behavior in structs to avoid boolean checks all over the - place. + * res_pjsip: Remove spurious error logging when printing silent headers - ASTERISK-24066 #close - Reported by: M vd S + 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. - Change-Id: I01d40adc5b63342bb5018a1bea2081a0aa191ef9 + pjproject has since applied a similar patch to their baseline to avoid + crashes, but their version also avoids the spurious error logging. -2017-09-06 16:05 +0000 [5553644284] Scott Griepentrog + Lets use their patch instead. - * chan_sip: when getting sip pvt return failure if not found + ASTERISK-27961 #close - In handle_request_invite, when processing a pickup, a call - is made to get_sip_pvt_from_replaces to locate the pvt for - the subscription. The pvt is assumed to be valid when zero - is returned indicating no error, and is dereferenced which - can cause a crash if it was not found. + Change-Id: I2ddbd82c8da10e0dcc9807a48089d1f3c2d6e389 - This change checks the not found case and returns -1 which - allows the calling code to fail appropriately. +2018-07-17 10:15 +0000 [fa333dedd0] George Joseph - ASTERISK-27217 #close - Reported-by: Bryan Walters + * CI: Add pre-build merge back in as RECURSIVE - Change-Id: I6bee92b8b8b85fcac3fd66f8c00ab18bc1765612 + Change-Id: I0ff1730ef4a4f0ac9f18ccc9bc0dfe7a782f57a8 -2017-09-06 13:38 +0000 [23571f31ac] Richard Mudgett +2018-07-17 09:01 +0000 [2553255ace] George Joseph - * stasis/control.c: Fix set_interval_hook() ref leak. + * CI: Remove pre-build merge from gates and checks - Change-Id: Ia0edb7dc0dbbb879c079ff7000f1b722d86ce7dc + Change-Id: Ibc151f63dcec4db847915c2f3cbe5b467dd59574 -2017-09-01 05:17 +0000 [94091c7b96] George Joseph +2018-07-17 07:13 +0000 [524f900382] George Joseph - * stasis/control: Fix possible deadlock with swap channel + * CI: Fix logic inversion in runTestsuite - If an error occurs during a bridge impart it's possible that - the "bridge_after" callback might try to run before - control_swap_channel_in_bridge has been signalled to continue. - Since control_swap_channel_in_bridge is holding the control lock - and the callback needs it, a deadlock will occur. + Change-Id: I56399aa384468f45494c2c3650420563a0b6efe1 - * control_swap_channel_in_bridge now only holds the control - lock while it's actually modifying the control structure and - releases it while the bridge impart is running. - * bridge_after_cb is now tolerant of impart failures. +2018-07-17 04:03 +0000 [0af4a558da] George Joseph - Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3 + * CI: Add teardownRealtime -2017-09-06 05:23 +0000 [67a2ca31f5] Vitezslav Novy + Change-Id: I2fe55c38607eaec2fbf69ef23a5019e0c443a64b - * chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE +2018-07-15 13:58 +0000 [49f83a7490] Corey Farrell - If directmedia=yes is configured, when call is answered, Asterisk sends reINVITE - to both parties to set up media path directly between the endpoints. - In this reINVITE msg SDP origin line (o=) contains IP address of endpoint - instead of IP of asterisk. This behavior violates RFC3264, sec 8: - "When issuing an offer that modifies the session, - the "o=" line of the new SDP MUST be identical to that in the - previous SDP, except that the version in the origin field MUST - increment by one from the previous SDP." - This patch assures IP address of Asterisk is always sent in - SDP origin line. + * loader: Fix startup issues. - ASTERISK-17540 - Reported by: saghul + * 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: I533a047490c43dcff32eeca8378b2ba02345b64e + Change-Id: Ie4176699133f0e3a823b43f90c3348677e43a5f3 -2017-09-06 07:54 +0000 [0cbb17ce8f] George Joseph +2018-07-16 13:30 +0000 [a9cef123d9] George Joseph - * alembic: Fix enum creation for dtls_fingerprint + * CI: Prevent Jenkins from triggering jobs back to itself - Change-Id: Ic061c5066a146616a68376881c7e4cf6d6e7e7db + Change-Id: I9cae8bb3d1a2cea335d3ccd88d471832549666fd -2017-09-05 11:08 +0000 [a133c5cc53] Florian Floimair +2018-07-13 18:26 +0000 [5febc995df] Richard Mudgett - * alembic: fix erroneous commit for add_prune_on_boot + * Build: Fix modules getting their optimization setting overridden. - Added include for postgresql ENUM type and - redefined values in the same way as in the - other migration scripts. + Asterisk modules that use PJPROJECT services have their compiler + optimization and possibly their symbolic debug options overridden by the + PJPROJECT configure script selected settings. - ASTERISK-27254 #close + * 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. - Change-Id: Id667304cdf3891b1c2f7d35fab3e2a84026159fa + NOTE: This patch only has an effect when using bundled PJPROJECT. -2017-09-06 03:02 +0000 [2d395793b7] Alexander Traud + ASTERISK-27563 - * res_srtp: Add support for libsrtp2.1. + Change-Id: If124169735ecf572ad1535cd43bff94cb44d5b30 - Asterisk is able to use libSRTP 2.0.x. However since libSRTP 2.1.x, the macro - SRTP_AES_ICM got renamed to SRTP_AES_ICM_128. Beside to still compile with - previous versions of libSRTP, this change allows libSRTP 2.1.x as well. +2018-07-16 11:08 +0000 [d15ef68892] George Joseph - ASTERISK-27253 #close + * CI: runUnittests: loop a few times on waitfullybooted - Change-Id: I2e6eb3c3bc844fee8a624060a2eb6f182dc70315 + Change-Id: Icebc0d013896f3b2a7214945cac60647435c1651 -2017-09-05 09:35 +0000 [bfc29de3ea] Ben Ford +2018-07-16 10:49 +0000 [252c4284df] George Joseph - * chan_pjsip: Suppress frame warnings. + * CI: Add realtime checks to dailies - When rtp_keepalive is on for a PJSIP endpoint dialing to another - Asterisk instance also using PJSIP, Asterisk will continue to print - warning messages about not being able to send frames of a certain - type. This suppresses that warning message. + Change-Id: I6dc8ab1679b3505c6dde1d47e1b9276df47814f8 - Change-Id: I0332a05519d7bda9cacfa26d433909ff1909be67 +2018-07-16 09:13 +0000 [1a52ab70c7] George Joseph -2017-09-05 10:05 +0000 [c3a6c8fd2d] Sean Bright + * CI: Add weekly REF_DEBUG testsuite run - * formats: Restore previous fread() behavior + Change-Id: I5b581d0a0d1d1bb9b38961d40b112fb448355037 - Some formats are able to handle short reads while others are not, so - restore the previous behavior for the format modules so that we don't - have spurious errors when playing back files. +2018-07-16 08:44 +0000 [9633e9dfd7] George Joseph - ASTERISK-27232 #close - Reported by: Jens T. + * CI: Fix bad reporting of status by the verification pub - Change-Id: Iab7f52b25a394f277566c8a2a4b15a692280a300 + Change-Id: I6f31a130b3ba0187149aaaa2ce94195a79e0f6a6 -2017-09-05 09:16 +0000 [f856d9b42b] Walter Doekes +2018-07-16 07:16 +0000 [b8d75bbb37] George Joseph - * res/res_pjsip: Standardize/fix localnet checks across pjsip. + * CI: Make build tag an acceptable docker name - In 2dee95cc (ASTERISK-27024) and 776ffd77 (ASTERISK-26879) there was - confusion about whether the transport_state->localnet ACL has ALLOW or - DENY semantics. + Change-Id: I3a4b8a4a9c488ddabf9daf651dc1334222056f38 - For the record: the localnet has DENY semantics, meaning that "not in - the list" means ALLOW, and the local nets are in the list. +2018-07-13 22:44 +0000 [0885ab8afc] Corey Farrell - Therefore, checks like this look wrong, but are right: + * Fix declaration of PBX_CURL for ./configure --without-libcurl - /* See if where we are sending this request is local or not, and if - not that we can get a Contact URI to modify */ - if (ast_apply_ha(transport_state->localnet, &addr) != AST_SENSE_ALLOW) { - ast_debug(5, "Request is being sent to local address, " - "skipping NAT manipulation\n"); + When `--without-libcurl` is used PBX_CURL is never set. Set default + value 0 so the proper value is passed to menuselect. - (In the list == localnet == DENY == skip NAT manipulation.) + Change-Id: I03e2842a00899cbca2dbde52bb1f6636d54bae1e - And conversely, other checks that looked right, were wrong. +2018-07-10 13:28 +0000 [34f3fe9552] George Joseph - This change adds two macro's to reduce the confusion and uses those - instead: + * app_confbridge: Use the SDP 'label' attribute to correlate users - ast_sip_transport_is_nonlocal(transport_state, addr) - ast_sip_transport_is_local(transport_state, addr) + 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. - ASTERISK-27248 #close + 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: Ie7767519eb5a822c4848e531a53c0fd054fae934 + Change-Id: I6cbaa87fb59a2e0688d956e72d2d09e4ac20d5a5 -2017-09-05 08:39 +0000 [68bcfccd52] Joshua Colp +2018-07-13 06:56 +0000 [e8727fcfa8] George Joseph - * res_pjsip_session: Preserve stream name during renegotiation. + * CI: Add daily periodics to CI - Stream names within Asterisk can have meaning so when an externally - initiated renegotiation occurs we need to preserve the name of - the stream if it already exists. + Change-Id: I26933e73928e091ae72e838c02f4f2ec7c3983d6 - Change-Id: I29f50d0cc7f3238287d6d647777e76e1bdf8c596 +2018-07-11 11:57 +0000 [e19080a184] Alexander Traud (License 6520) -2017-09-05 07:50 +0000 [0ec95515f3] George Joseph + * Bundled PJPROJECT: Disable internal connection oriented keep-alive. - * res_calendar*, res_smdi: Move to "extended" support + 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. - Change-Id: I31eee8be30c6b0fc3dadb31111dd47742da8892d + patches: + pjsip_keep_not_alive.patch submitted by Alexander Traud (License 6520) -2017-09-05 05:23 +0000 [9b3f6d26bd] George Joseph + ASTERISK-27347 - * res_pjsip_t38: Make t38_reinvite_response_cb tolerant of NULL channel + Change-Id: I6a197f56e1830d3b7e5ec70f17025840a290b057 - t38_reinvite_response_cb can get called by res_pjsip_session's - session_inv_on_tsx_state_changed in situations where session->channel - is NULL. If it is, the ast_log warning segfaults because it tries - to get the channel name from a NULL channel. +2018-07-09 04:42 +0000 [1445384699] Torrey Searle - * Check session->channel and print "unknown channel" when it's NULL. + * res_pjsip_sdp_rtp: include ice in ANSWER only if offered - ASTERISK-27236 - Reported by: Ross Beer + Keep track if ICE candidates were in the SDP offer & only put them + in the corresponding SDP answer if the offer condaind ICE candidates - Change-Id: I4326e288d36327f6c79ab52226d54905cdc87dc7 + ASTERISK-27957 #close -2017-09-01 16:17 +0000 [60b44d1e38] Sean Bright + Change-Id: Idf2597ee48e9a287e07aa4030bfa705430a13a92 - * rtp_engine: Prevent possible double free with DTLS config +2018-07-12 16:34 +0000 [33a84745d0] George Joseph - ASTERISK-27225 #close - Reported by: Richard Kenner + * CI: Add Asterisk Gates - Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89 + Change-Id: I7e2467f9120812551238d8005deb97f965279205 -2017-09-01 13:15 +0000 [ef8eb9d11b] Sean Bright +2018-07-11 15:55 +0000 [65b002ab8f] George Joseph - * chan_ooh323: Fix confusing indentation warning + * CI: Remove duplicate checkout - ASTERISK-27177 #close - Reported by: Tzafrir Cohen + Change-Id: If5f925b4c4ed7000b153f3ed8386ce2140c886f8 - Change-Id: I40311c404edb2302a7543ad5ca7a06b2a38f2d97 +2018-07-11 15:09 +0000 [ba8f8a2813] George Joseph -2017-09-01 09:51 +0000 [1bdbefbe76] Sean Bright + * CI: Update cleanup steps and permissions - * app_directory: Handle a NULL mailbox without crashing + Change-Id: I7ca92935979d94845af8e1caf4468cbd6209b7de - ASTERISK-27241 #close - Reported by: David Moore +2018-07-11 14:54 +0000 [ad36c4ba9b] George Joseph - Change-Id: Ibbbca85517b04c315406ebfe3b6f7e0763daedc6 + * CI: Fix log artifact paths -2017-07-24 10:48 +0000 [f78f5278ff] George Joseph + Change-Id: I55136de8f4d9c3b56bd4d054306a187bb04a4b7d - * pjsip_message_ip_updater: Fix issue handling "tel" URIs +2018-07-11 14:45 +0000 [4842af6364] George Joseph - sanitize_tdata was assuming all URIs were SIP URIs so when a non - SIP uri was in the From, To or Contact headers, the unconditional - cast of a non-pjsip_sip_uri structure to pjsip_sip_uri caused - a segfault when trying to access uri->other_param. + * CI: Remove CleanBeforeCheckout option for testsuite - * Added PJSIP_URI_SCHEME_IS_SIP(uri) || PJSIP_URI_SCHEME_IS_SIPS(uri) - checks before attempting to cast or use the returned uri. + Change-Id: I510231c9087f7be5272b8ef3f3223eadaaffb754 - ASTERISK-27152 - Reported-by: Ross Beer +2018-07-11 14:00 +0000 [3dfc37c60a] George Joseph - Change-Id: Id380df790e6622c8058a96035f8b8f4aa0b8551f + * CI: Move gates into source repo -2017-07-01 19:24 +0000 [1bf3dfffd7] Corey Farrell + Change-Id: If028ede5f3b127fa274c63ce166bc04ad7c1e5db - * AST-2017-006: Fix app_minivm application MinivmNotify command injection +2018-07-11 06:14 +0000 [b302ee6bd5] George Joseph - An admin can configure app_minivm with an externnotify program to be run - when a voicemail is received. The app_minivm application MinivmNotify - uses ast_safe_system() for this purpose which is vulnerable to command - injection since the Caller-ID name and number values given to externnotify - can come from an external untrusted source. + * CI: Initial commit for moving CI into source repo - * Add ast_safe_execvp() function. This gives modules the ability to run - external commands with greater safety compared to ast_safe_system(). - Specifically when some parameters are filled by untrusted sources the new - function does not allow malicious input to break argument encoding. This - may be of particular concern where CALLERID(name) or CALLERID(num) may be - used as a parameter to a script run by ast_safe_system() which could - potentially allow arbitrary command execution. + Create tests/CI directory and add files used by Jenkins to + build and test Asterisk. - * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp() - instead of ast_safe_system() to avoid command injection. + 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. - * Document code injection potential from untrusted data sources for other - shell commands that are under user control. + Change-Id: I9448065465e6de2b878634510ace8fd1ef378608 - ASTERISK-27103 +2018-07-06 17:00 +0000 [f7137e1230] Joshua Elson - Change-Id: I7552472247a84cde24e1358aaf64af160107aef1 + * res_parking: Add dialplan function for lot channel -2017-05-22 10:36 +0000 [7f2a60fb38] Joshua Colp + This commit adds a new function to res_parking. - * res_rtp_asterisk: Only learn a new source in learn state. + This function, PARK_GET_CHANNEL allows the retrieval + of the channel name of the channel occupying the parking slot. - This change moves the logic which learns a new source address - for RTP so it only occurs in the learning state. The learning - state is entered on initial allocation of RTP or if we are - told that the remote address for the media has changed. While - in the learning state if we continue to receive media from - the original source we restart the learning process. It is - only once we receive a sufficient number of RTP packets from - the new source that we will switch to it. Once this is done - the closed state is entered where all packets that do not - originate from the expected source are dropped. + ASTERISK-22825 #close - The learning process has also been improved to take into - account the time between received packets so a flood of them - while in the learning state does not cause media to be switched. + Change-Id: Idba6ae55b8a53f734238cb3d995cedb95c0e7b74 - Finally RTCP now drops packets which are not for the learned - SSRC if strict RTP is enabled. +2018-06-23 01:33 +0000 [10de9fcbf1] Alexander Traud - ASTERISK-27013 + * chan_ooh323: IPTOS_MINCOST is not defined on Solaris. - Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c + Furthermore, is required for SIOCGIF*. -2017-08-30 07:28 +0000 [5ba82cedc6] Joshua Colp + ASTERISK-27938 - * res_rtp_asterisk: Allow remote SSRC to change on an RTP instance. + Change-Id: Idc9153ece769944765b66122efb11728d8d8ebde - When SDP renegotiation occurs it is possible for an RTP - instance to be reused for a new stream, resulting in the remote - SSRC changing if it is part of a bundle group. This change - allows this and updates its mapping in the current bundle - group. +2018-07-06 15:05 +0000 [5bb874ee09] Kevin Harwell - ASTERISK-27231 + * res_pjsip_session: sdp group:BUNDLE attribute being truncated - Change-Id: I6e3703974f236bc024c5dbe9bd43adae0c6fb490 + 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. -2017-08-25 21:06 +0000 [71be8d5bbe] Andre Nazario + This patch makes it so a '0' is passed as in for the 'max_len', which means + "no maximum length". - * chan_pjsip: Add tag info in CHANNEL function + ASTERISK-27955 #close - Create local_tag and remote_tag in CHANNEL info to get tag from From and - To headers of a SIP dialog. + Change-Id: Iec565df6600401d54a502854a53d19bb4cc34876 - ASTERISK-27220 +2018-07-05 16:02 +0000 [96abe79ddf] Alexei Gradinari - Change-Id: I59b16c4b928896fcbde02ad88f0e98922b15d524 + * res_pjsip_pubsub: segfault in function publish_expire -2017-08-29 14:22 +0000 [4650fc477a] Richard Mudgett + The function pubsub_on_rx_publish_request incorrectly uses + of AST_SCHED_REPLACE_UNREF. - * bridge_native_rtp.c: Fixup native_rtp_framehook() + The AST_SCHED_REPLACE_UNREF should unref old '_data'. - * Fix framehook to test frame type for control frame. - * Made framehook exit early if frame type is not a control frame. - * Eliminated RAII_VAR in framehook. - * Use switch instead of else-if ladder for control frame handling. + 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. - Change-Id: Ia555fc3600bd85470e3c0141147dbe3ad07c1d18 + ASTERISK-27956 #close -2017-08-29 09:26 +0000 [06cc5ae9ff] Sean Bright + Change-Id: Ie0f0cfc7e036953d890b188656010b325a5cdc82 - * confbridge: Handle user hangup during name recording +2018-07-06 09:04 +0000 [c1e49720fa] George Joseph - This prevents orphaned CBAnn channels from getting stuck in the bridge. + * test.c: Make output jUnit compatible - ASTERISK-26994 #close - Reported by: James Terhune + 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: I5e43e832a9507ec3f2c59752cd900b41dab80457 + Change-Id: Iec1a985eba1c478e5c1d65d5dfd95cb708442099 -2017-08-24 11:45 +0000 [9a9589e8e1] Joshua Colp +2018-07-06 07:57 +0000 [8f42447c68] George Joseph - * core: Reduce video update queueing. + * res_pjsip: Add 'suppress_q850_reason_headers' option to endpoint - A video update frame is used to indicate that a channel - with video negotiated should provide a full frame so the - decoder decoding the stream is able to do so. In situations - where a queue is used to store frames it makes no sense - for the queue to contain multiple video update frames. One - is sufficient to have a full frame be sent. + 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-27222 + ASTERISK-27949 + Reported-by: Ross Beer - Change-Id: Id3f40a6f51b740ae4704003a1800185c0c658ee7 + Change-Id: I54cf37a827d77de2079256bb3de7e90fa5e1deb1 -2017-08-25 13:44 +0000 [da13cdb9e7] Sean Bright +2018-07-05 15:43 +0000 [c9f8e068ed] Joshua Colp - * voicemail: Fix various abuses of mkstemp + * res_pjsip_t38: Decline T.38 stream on failure case. - mkstemp() returns a unique filename, but appending an extension to that - filename does not guarantee uniqueness. Instead, use mkdtemp() and we - can put whatever extension we want on the files that we create inside - the directory. + 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. - In the case of app_minivm, we also now properly clean up any temporary - files that we create. + 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-20858 #close - Reported by: Walter Doekes + ASTERISK-27763 - Change-Id: I30ad04f0e115f0b11693ff678ba5184d8b938e43 + Change-Id: I88bcf793788c412a9839d111a5c736bf6867807c -2017-08-25 12:20 +0000 [43670e471f] Sean Bright +2018-07-02 18:43 +0000 [d5db664d70] Richard Mudgett - * app_record: Resolve some absolute vs. relative filename bugs + * res_pjsip_t38.c: Be smarter about how we respond when T.38 is disabled. - If the Record() application is called with a relative filename that - includes directories, we were not properly creating the intermediate - directories and Record() would fail. + 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. - Secondarily, updated the documentation for RECORDED_FILE to mention - that it does not include a filename extension. + * Made the T.38 framehook only respond to request frames and ignore + response frames. - Finally, rewrote the '%d' functionality to be a bit more straight - forward and less noisy. + ASTERISK-27657 + ASTERISK-27080 - ASTERISK-16777 #close - Reported by: klaus3000 + Change-Id: I5fb5967c7d1efb30a7ff375f82887ca82a55b05b - Change-Id: Ibc2640cba3a8c7f17d97b02f76b7608b1e7ffde2 +2018-07-03 12:10 +0000 [0aff1a278e] Richard Mudgett -2017-08-23 10:01 +0000 [2ee644aacf] Florian Floimair + * res_pjsip/pjsip_transport_management.c: Fix deadlock with transport keep alive. - * alembic: Add dtls_fingerprint column in ps_endpoints table + 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. - The ps_endpoints table was missing the dtls_fingerprint column - introduced with commit adba2a8d7fd. + * 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-27168 #close + ASTERISK-26686 - Change-Id: I9cb5006f7f50718b5239919562773adabb334cfd + Change-Id: I5d5392a52e698bbe41a93f7d8e92bf0e61fe3951 -2017-08-21 04:28 +0000 [33a648d4c6] Torrey Searle +2018-07-02 18:44 +0000 [de5144e751] Joshua Colp - * res/res_pjsip_session: allow SDP answer to be regenerated + * pjsip: Clarify certificate configuration for Websocket. - If an SDP answer hasn't been sent yet, it's legal to change it. - This is required for PJSIP_DTMF_MODE to work correctly, and can - also have use in the future for updating codecs too. + 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. - ASTERISK-27209 #close + This change adds a warning if this is configured in pjsip.conf and + also clarifies in the sample configuration file. - Change-Id: Idbbfb7cb3f72fbd96c94d10d93540f69bd51e7a1 + Change-Id: I187d994d328c3ed274b6754fd4c2a4955bdc6dd9 -2017-08-24 09:42 +0000 [02f95d290f] Sean Bright +2018-06-23 04:50 +0000 [804d931f27] Alexander Traud - * app_queue: Evaluate realtime queues when running dialplan functions + * bridge_softmix_binaural: Enable FFTW3 in Solaris 11. - ASTERISK-19103 #close - Reported by: Jim Van Meggelen + ASTERISK-27939 - Change-Id: I4bd32a9d1fcebb8ac56bff0e084d4f53e31b692b + Change-Id: Ice5640e08385a64a0a6555deaccd91e86bca154f -2017-08-23 09:19 +0000 [b1097be134] Eelco Brolman (License 6442) +2018-06-29 18:28 +0000 [1aa45ffdfa] Richard Mudgett - * app_voicemail: Honor escape digits in "greeting only" mode + * res_pjsip_t38.c: Fix crash by ignoring 1xx messages. - ASTERISK-21241 #close - Reported by: Eelco Brolman - Patches: - Patch uploaded by Eelco Brolman (License 6442) + 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. - Change-Id: Icbe39b5c82a49b46cf1d168dc17766f3d84f54fe + * 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. -2017-08-24 08:35 +0000 [7937d5b8b3] Sean Bright + ASTERISK-27944 - * res_smdi: Clean up memory leak + Change-Id: I0ca88aae708d091db7335af73f41035a212adff4 - Change-Id: I1e33290929e1aa7c5b9cb513f8254f2884974de8 +2018-07-01 13:54 +0000 [f30ebd3823] Joshua Colp -2017-08-18 17:37 +0000 [f2c14f00b8] Richard Mudgett + * res_pjsip_pubsub: Hold module reference for publications. - * res_pjsip_session.c: Fix crash when declining an active stream. + 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. - If a previously active stream is declined we could crash because the - channel's thread is still using the stream while we are updating the - topology in the serializer thread. + ASTERISK-27783 - * Defer removing any declined stream's handler until we have blocked the - channel's thread with the channel lock. + Change-Id: Ia98c95a15e11af25728d5fb3e56e12cda0cfc7c0 - ASTERISK-27212 +2018-05-21 07:24 +0000 [9d3f3a4b0a] Robert Mordec - Change-Id: I50e1d3ef26f8e41948f4c411ee329aa3b960a420 + * app_confbridge: Bridge and announcers not removed if conference ends quickly -2017-08-16 17:50 +0000 [17976d1b4e] Richard Mudgett + 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. - * bridge_channel.c: Fix FRACK when mapping frames to the bridge. + 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(). - * Add protection checks when mapping streams to the bridge. The channel - and bridge may be in the process of updating the stream mapping when a - media frame comes in so we may not be able to map the frame at the time. + 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. - * We need to map the streams to the bridge's stream numbers right before - they are written into the bridge. That way we don't have to keep - locking/unlocking the bridge and we won't have any synchronization - problems before the frames actually go into the bridge. + 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. - * Protect the deferred queue with the bridge_channel lock. + ASTERISK-27870 #close - ASTERISK-27212 + Change-Id: I947a50fb121422d90fd1816d643a54d75185a477 - Change-Id: Id6860dd61b594b90c8395f6e2c0150219094c21a +2018-06-21 00:28 +0000 [db02218db2] Matthew Fredrickson -2017-08-11 16:31 +0000 [9c70c88369] Richard Mudgett + * main/cdr.c: Alleviate CDR deadlock - * channel: Fix topology API locking. + 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. - * ast_channel_request_stream_topology_change() must not be called with any - channel locks held. + ASTERISK-27909 - * ast_channel_stream_topology_changed() must be called with only the - passed channel lock held. + Change-Id: I6333e865db7c593c102c2fd948cecdb96481974d + Reported-by: Denis Lebedev - ASTERISK-27212 +2018-06-25 22:08 +0000 [4b9bf4f5e0] Kirsty Tyerman - Change-Id: I843de7956d9f1cc7cc02025aea3463d8fe19c691 + * pbx_dundi: reordered unloading of module pbx_dundi -2017-08-16 15:22 +0000 [6ad8249233] Richard Mudgett + Destroy scheduler after peers are pruned to stop dundi crashing when + unloading module. - * bridge: Fix softmix bridge deadlock. + ASTERISK-26987 + Reported-by: Kirsty Tyerman - * Fix deadlock in - bridge_softmix.c:softmix_bridge_stream_topology_changed() between - bridge_channel and channel locks. + Change-Id: Ic12e562cd90d8d813a9e97f302045091f59e3c05 - * The new bridge technology topology change callbacks must be called with - the bridge locked. The callback references the bridge channel list, the - bridge technology could change, and the bridge stream mapping is updated. +2018-06-28 12:07 +0000 [7a238fe74d] Richard Mudgett - ASTERISK-27212 + * AMI SendText action: Fix to use correct thread to send the text. - Change-Id: Ide4360ab853607e738ad471721af3f561ddd83be + 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. -2017-08-14 12:20 +0000 [850a3fd017] Richard Mudgett + * 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. - * chan_pjsip.c: Fix topology refresh response code accuracy. + ASTERISK-27943 - There are other 1xx and 2xx codes than 100 and 200 respectively. + Change-Id: I9dce343d8fa634ba5a416a1326d8a6340f98c379 - Change-Id: I680db0997343256add1478714f5bf5b5569aee17 +2018-06-25 07:37 +0000 [e3585353f6] George Joseph -2017-08-11 17:06 +0000 [87c7a1c79c] Richard Mudgett + * res_pjsip_messaging: Allow application/* for in-dialog MESSAGEs - * bridge_softmix.c: Restored softmix_bridge_leave() shortcut exit. + In addition to text/* content types, incoming_in_dialog_request now + accepts application/* content types. - Change-Id: I13026cd90954e0265eab94a0faf635a3e11f0e35 + Also fixed a length issue when copying the body text. It was one + character short. -2017-08-17 17:07 +0000 [5bbf7b2aad] Richard Mudgett + ASTERISK-27942 - * app_confbridge: Document sfu video_mode value. + Change-Id: I4e54d8cc6158dc47eb8fdd6ba0108c6fd53f2818 - Change-Id: I26e17df2c93f3933b23f78070603adbcc84ba204 +2018-06-25 15:42 +0000 [5f12e2bd07] George Joseph -2017-08-17 17:06 +0000 [f96536b1ea] Richard Mudgett + * app_confbridge: Move participant info code to confbridge_manager. - * confbridge.h: Fix doxygen comments. + 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: I16133166a85fdb557c66ffcbfe8128d0b4725b0e + Change-Id: I228806ac153074f45e0b35d5236166e92e132abd -2017-08-11 11:40 +0000 [946ef2d711] Richard Mudgett +2018-06-18 21:22 +0000 [880fbff6b7] George Joseph - * bridge_softmix.c: Remove always true test. + * res_pjsip_session: Add ability to accept multiple sdp answers - Change-Id: I26238df2ff0d0f6dfe95c3aa35da588f1ee71727 + 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. -2017-08-17 16:46 +0000 [22af5e3784] Sungtae Kim + 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. - * app_queue: Fix initial hold time queue statistic + The default behavior for "different tags" remains the same at TRUE and + the default for "same tag" is FALSE. - Fixed to use correct initial value and fixed to use the - correct queue info to check the first value. + Change-Id: I64d071942b79adb2f0a4e13137389b19404fe3d6 + ASTERISK-27936 + Reported-by: Ross Beer - ASTERISK-27204 +2018-06-21 11:45 +0000 [675e2ddb49] Alexander Traud - Change-Id: Ia9e36c828e566e1cc25c66f73307566e4acb8e73 + * uuid: Enable UUID in Solaris 11. -2017-08-20 08:15 +0000 [83b81d1f8d] Michael Kuron + ASTERISK-27933 + Reported by: bautsche - * res_xmpp: fix inverted return code check in OAuth + Change-Id: I9b8362824efbfb2a16981e46e85f7c8322908c49 - fetch_access_token calls func_curl via ast_func_read. The latter returns 0 upon - success and -1 if the function is not available. - This commit inverts the return code check so that an error is printed if the - module is not loaded and not if it is loaded. +2018-06-13 02:25 +0000 [184b375b41] Kristian F. Høgh - ASTERISK-27207 #close + * app_queue: Add option for predial handlers on caller and callee channels - Change-Id: I9ef903f80702d1218e8701f65a4e5e918e6548fb + 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. -2017-08-17 12:00 +0000 [667986d875] Sean Bright + ASTERISK-27912 - * res_calendar_icalendar: Properly handle recurring events + Change-Id: I5acf5c32587ee008658d12e8a8049eb8fa4d0f24 - When looking for recurring events, use the correct end time based on the - configured 'timeframe.' +2018-06-21 16:39 +0000 [cad50d6dbf] Richard Mudgett - ASTERISK-27174 #close - Reported by: Mark Thompson + * VECTOR: Passing parameters with side effects to macros is dangerous. - Change-Id: Id90c3cfc79d561a5521d79be176683e225f2edef + * 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. -2017-08-16 15:43 +0000 [0e777258be] George Joseph + Change-Id: I2847872a455b11ea7e5b7ce697c0a455a1d0ac9a - * Fix downloader not working with curl +2018-06-20 16:57 +0000 [aaaa6f4a4b] Richard Mudgett - The codec/dpma downloader wasn't handling curl correctly. The logic - that transforms makeopts into a bash-sourceable file wasn't - handling the make 'or' command in DOWNLOAD_TIMEOUT so bash was - looking for an 'or' command. + * bridge_softmix.c: Fix memory leak. - That logic has been eliminated. Instead of trying to transform - and source makeopts, the downloader now calls a make scriptlet - to print the value of a specific variable. This way, make handles - the ors (or any other make construct that happens to creep into - that file). + Made release the media_types vector in + softmix_bridge_stream_topology_changed(). - ASTERISK-27202 - Reported by: Sean McCord + Change-Id: Ide3f47e379b614879220dfeeb13843f9f2b177b5 - Change-Id: Iadfb6693528e4d4da7b8bb201fa66da2c71c7f99 +2018-06-21 11:22 +0000 [bfeded7e62] Alexander Traud -2017-08-15 13:12 +0000 [e4e2e53c8a] Kevin Harwell + * smsq: Remove an left-over special case for Solaris. - * manager: hook event is not being raised + Actually, this case was never needed because the check below does the same. - When the iostream code went in it introduced a conditional that made it so the - hook event was not being raised even if a hook is present. This patch adds a - check to see if a hook is present in astman_append. If so then call into the - send_string function, which in turn raises the even for specified hook. + Change-Id: Ia2fca4ba6c58c644a8b7cb2d9db8539728c14ffb - Also updated the ami hooks unit test, so the test could be automated. +2018-06-21 11:17 +0000 [bbea9cfc3b] Alexander Traud - ASTERISK-27200 #close + * res_http_post: Enable GMime in Solaris 11. - Change-Id: Iff37f02f9708195d8f23e68f959d6eab720e1e36 + Change-Id: Ie434541f18f894c751d2e44bcb3efb3cac626019 -2017-08-15 15:15 +0000 [c049d1c3b2] Richard Mudgett +2018-06-21 05:08 +0000 [7f3882c8e9] Alexander Traud - * configure: Check cache for valid pjproject tarball before downloading. + * codecs/ilbc: Compile in Solaris 11. - On a fresh Asterisk source directory, the bundled pjproject tarball is - unconditionally downloaded even if the tarball is already in a specified - cache directory. + 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. - * Made check if the pjproject tarball is valid in the cache directory - before downloading the tarball on a fresh source directory. + Change-Id: I91ddbe5be7c00069c3a25abd5f58d7b2f04c51b1 - Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5 +2018-06-21 05:07 +0000 [9704c424f5] Alexander Traud -2017-08-15 11:14 +0000 [9e2b2a9837] Richard Mudgett + * chan_oss: Compile in Solaris 11. - * res_pjsip: Fix prune_on_boot to remove only contacts for the host. + M_READ existed already and was conflicting in name. - * Check that the contact's reg_server matches the host's name before - deleting any prune_on_boot contacts. We don't want to delete reliable - transport contacts made with other servers if the ps_contacts database - table is shared with other servers. + Change-Id: I02108e07ae7d2dc314fe1e6c706c17731095a3e4 - Thanks to Ross Beer for pointing out that the original prune logic would - delete reliable transport contacts from other servers. +2018-06-21 05:04 +0000 [6f47b84fbd] Alexander Traud - ASTERISK-27147 + * func_env: Compile in Solaris 11. - Change-Id: I8e439d0d1c266ffdfd7b73d1e5e466180a689bd0 + Change-Id: Idc9b36720f3d29c90a35a6a1ae79a7f9e1aaf50e -2017-08-04 09:25 +0000 [15fbcc74d8] Andrey Egorov +2018-06-21 05:01 +0000 [a5c53bd323] Alexander Traud - * res_xmpp: Google OAuth 2.0 protocol support for XMPP / Motif + * utils: Avoid an unused variable in Solaris 11. - Add ability to use tokens instead of passwords according to Google OAuth 2.0 - protocol. + 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. - ASTERISK-27169 - Reported by: Andrey Egorov - Tested by: Andrey Egorov + Change-Id: I63dd2bc4833b9bdb04602f83422d16caf289d46a - Change-Id: I07f7052a502457ab55010a4d3686653b60f4c8db +2018-06-21 04:59 +0000 [92109cf496] Alexander Traud -2017-08-10 14:18 +0000 [bd28a9bbd8] Richard Mudgett + * BuildSystem: Enable ./configure in Solaris 11. - * STUN/netsock2: Fix some valgrind uninitialized memory findings. + ASTERISK-27931 - * netsock2.c: Test the addr->len member first as it may be the only member - initialized in the struct. + Change-Id: If298ce7f03be227a3687b9c20d382c9c55a72404 - * stun.c:ast_stun_handle_packet(): The combinded[] local array could get - used uninitialized by ast_stun_request(). The uninitialized string gets - copied to another location and could overflow the destination memory - buffer. +2018-06-20 13:24 +0000 [d6721e1e4c] Alexander Traud - These valgrind findings were found for ASTERISK_27150 but are not - necessarily a fix for the issue. + * BuildSystem: Enable autotools in Solaris 11. - Change-Id: I55f8687ba4ffc0f69578fd850af006a56cbc9a57 + 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. -2017-08-02 18:44 +0000 [1bec781cce] Richard Mudgett + ASTERISK-27929 + ASTERISK-27926 - * res_pjsip_outbound_registration.c: Re-REGISTER on transport shutdown. + Change-Id: Id4cf433a1a7fa861d0210e1a2e16ca592b49fd5a - The fix for the issue is broken up into three parts. +2018-06-13 11:33 +0000 [eb8bbe660e] Richard Mudgett - This is part three which handles the client side of REGISTER requests. - The registered contact may no longer be valid on the server when the - transport used is reliable and the connection is broken. + * channel.c: Make CHECK_BLOCKING() save thread LWP id for messages. - * Re-REGISTER our contact if the reliable transport is broken after - registration completes. We attempt to re-REGISTER immediately to minimize - the time we are unreachable. Time may have already passed between the - connection being broken and the loss being detected. + * Removed an unnecessary call to ast_channel_blocker_set() in + __ast_read(). - * Reorder sip_outbound_registration_state_alloc() so the STATSD_GUAGE's - are still correct if an allocation failure happens. + ASTERISK-27625 - ASTERISK-27147 + Change-Id: I342168b999984666fb869cd519fe779583a73834 - Change-Id: I3668405b1ee75dfefb07c0d637826176f741ce83 +2018-06-13 16:41 +0000 [da54605b8a] Richard Mudgett -2017-07-31 14:21 +0000 [82f4ade959] Richard Mudgett + * ARI POST DTMF: Make not compete with channel's media thread. - * res_pjsip: Remove ephemeral registered contacts on transport shutdown. + 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. - The fix for the issue is broken up into three parts. + ASTERISK-27625 - This is part two which handles the server side of REGISTER requests when - rewrite_contact is enabled. Any registered reliable transport contact - becomes invalid when the transport connection becomes disconnected. + Change-Id: I4d6a2fe7386ea447ee199003bf8ad681cb30454e - * Monitor the rewrite_contact's reliable transport REGISTER contact for - shutdown. If it is shutdown then the contact must be removed because it - is no longer valid. Otherwise, when the client attempts to re-REGISTER it - may be blocked because the invalid contact is there. Also if we try to - send a call to the endpoint using the invalid contact then the endpoint is - not likely to see the request. The endpoint either won't be listening on - that port for new connections or a NAT/firewall will block it. +2018-06-13 13:05 +0000 [7d874c1af7] Richard Mudgett - * Prune any rewrite_contact's registered reliable transport contacts on - boot. The reliable transport no longer exists so the contact is invalid. + * AMI PlayDTMF Action: Make not compete with channel's media thread. - * Websockets always rewrite the REGISTER contact address and the transport - needs to be monitored for shutdown. + 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. - * Made the websocket transport set a unique name since that is what we use - as the ao2 container key. Otherwise, we would not know which transport we - find when one of them shuts down. The names are also used for PJPROJECT - debug logging. + ASTERISK-27625 - * Made the websocket transport post the PJSIP_TP_STATE_CONNECTED state - event. Now the global keep_alive_interval option, initially idle shutdown - timer, and the server REGISTER contact monitor can work on wetsocket - transports. + Change-Id: Ia341f1a6f4d54f2022261abec9021fe5b2eb4905 - * Made the websocket transport set the PJSIP_TP_DIR_INCOMING direction. - Now initially idle websockets will automatically shutdown. +2018-06-12 14:09 +0000 [080508d2eb] Richard Mudgett - ASTERISK-27147 + * channel.c: Fix usage of CHECK_BLOCKING() - Change-Id: I397a5e7d18476830f7ffe1726adf9ee6c15964f4 + 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. -2017-07-28 18:26 +0000 [1dcb92bba8] Richard Mudgett + ASTERISK-27625 - * res_pjsip: PJSIP Transport state monitor refactor. + Change-Id: I4dfc33e01e60627d962efa29d0a4244cf151a84d - The fix for the issue is broken up into three parts. +2018-06-18 18:04 +0000 [0989b63047] Richard Mudgett - This is part one which refactors the transport state monitor code to allow - more modules to be able to monitor transports. + * autoservice: Don't start channel autoservice if the thread is a user interface. - * Pull the management of PJPROJECT's transport state callback code from - res_pjsip_transport_management.c into res_pjsip. Now other modules can - dynamically add and remove themselves from transport monitoring without - worrying about breaking PJPROJECT's callback chain. + 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. - * Add the ability for other modules to get a callback whenever a specific - transport is shutdown. + 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-27147 + ASTERISK-27625 - Change-Id: I7d9a31371eb1487c9b7050cf82a9af5180a57912 + Change-Id: If2dc94ce15ddabf923ed1e2a65ea0ef56e013e49 -2017-07-27 15:36 +0000 [ee5edfb050] Richard Mudgett +2018-06-18 16:07 +0000 [91c3ac19cb] Richard Mudgett - * res_pjsip_transport_management.c: Rename some variables. + * Dialplan functions: Fix some channel autoservice misuse. - * Use monitored instead of the misleading keepalive name. + * 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: I9e5bcbb4ab2b82d49bcd0f06dfe85d15e0b552b6 + Change-Id: I7ff2e42388064fe3149034ecae57604040b8b540 -2017-08-09 15:24 +0000 [ecd1f87edf] Richard Mudgett +2018-06-19 10:43 +0000 [720c2d1da2] Richard Mudgett - * UPGRADE notes: Prepare for the eventual 16 branch. + * Fix some doxygen and curly placement. - Change-Id: I4ca2f07ed62d77f1fdd10c3b216f6a28dd75720c + Change-Id: I9a784a7c804120a8fa826c2a4cb9957e4b0b2fc8 -2017-08-10 09:09 +0000 [4ed2733dde] Scott Griepentrog +2018-06-18 13:17 +0000 [c1686b8b3e] Richard Mudgett - * res_pjsip_messaging: IPv6 receive address needs brackets + * tcptls.h: Remove redundant SSL_CTX typedef. - When handling an incoming SIP MESSAGE, PJSIP - attaches the IP address that the message was - received from to the message in the variable - PJSIP_RECVADDR. When the IP address is IPv6 - the :PORT appended results in an unparseable - mess. By using an additional bit flag on the - pj_sockaddr_print call, the conventional use - of brackets around the address is achieved. + It is invalid to typedef something more than once. Though not all gcc + compilers on different OS's complain about it. - ASTERISK-27193 #close + Change-Id: I5a7d4565990c985822d61ce75bde0b45f9870540 - Change-Id: I12342521f2ce87a5b6e4883d480a3fd957aa9fd9 +2018-06-12 15:13 +0000 [a470bb9e27] Richard Mudgett -2017-07-26 09:17 +0000 [d430f718f5] Torrey Searle + * channel: Fix some more unprotected channel flag setting. - * res_rtp_asterisk: enable rtcp & QOS stats on native bridge + Change-Id: I34c3b1201b1de539945bcfdcb264fff30332d48c - Asterisk wasn't generating or forwarding RTCP packets when native - bridge was activated. Also the stats weren't available via - CHANNEL(qos). Now the RTCP stats are always calculated. +2018-06-15 15:21 +0000 [8732d62334] Matthew Fredrickson - ASTERISK-27158 #close + * menuselect/menuselect_curses: Resolves sprintf usage error - Change-Id: I46fb8f61c95e836b9d2dda6054b0cf205c16037b + 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. -2017-07-28 07:53 +0000 [a2dde59154] Torrey Searle + ASTERISK-27903 + Reported-by: Alexander Traud - * res_rtp_asterisk: Make P2P bridge Asymmetric codec aware + Change-Id: I2213dcb454aff26457e2e4cc9c6821276463ae3a - Introduce a new property to rtp-engine to make it aware of - the desire for assymetric codecs or not. If asymmetric codecs - is not allowed, the bridge will compare read/write formats - and shut down the p2p bridge if needed +2018-06-12 09:30 +0000 [4c7ab73468] Sam Wierema - ASTERISK-26745 #close + * app_mp3: remove 10 seconds of silence after mp3 playback - Change-Id: I0d9c83e5356df81661e58d40a8db565833501a6f + 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. -2017-08-08 13:33 +0000 [305bd0d99f] George Joseph + The main difference is that for every timeout asterisk receives it now + checks if mpg123 is still running before poll again. - * Make --with-pjproject-bundled the default for Asterisk 15 + ASTERISK-27752 - '--with-pjproject-bundled' is now the default when running - ./configure. It can be disabled with '--without-pjproject-bundled'. + Change-Id: Ib7df8462e3e380cb328011890ad9270d9e9b4620 - To make building without an internet connection easier, a new - ./configure option '--with-download-cache' was added that sets - the cache for externals (like pjproject, the codecs and the DPMA), - AND the sounds files. It can also be specified as an environment - variable named "AST_DOWNLOAD_CACHE". The existing - '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and - '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable - remain and if specified, will override '--with-downloads-cache'. +2018-06-13 04:40 +0000 [9d7958672b] Alexander Traud - ASTERISK-27189 + * tests/test_utils: Repair ./configure --with-ssl=PATH. - Change-Id: Ifa9783fddf44aafadb060c9feba713dfa81d38ce + ASTERISK-27914 -2017-08-05 06:36 +0000 [62092bc114] Joshua Colp + Change-Id: Ibcab8f556ee77776f203cff8b06d776a673b7bc4 - * res_pjsip_session: Release media resources on session end quicker. +2018-06-04 20:31 +0000 [e1908ea484] Kirsty Tyerman - A change was made long ago where the session was kept around - until the underlying INVITE session had been destroyed. This - had the side effect of also keeping the underlying media resources - around for this time as well. + * chan_iax2: better handling for timeout and EINTR - This change ensures that when we are told to terminate the - session we immediately release any media sessions associated - with it. + 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. - ASTERISK-27110 + The proposed patch is for the iax module, so that timeout and EINTR does not + exit the thread. - Change-Id: I643e431d5c3bf05cda220c1d39e824a505a29b82 + ASTERISK-27705 + Reported-by: Kirsty Tyerman -2017-07-29 20:03 +0000 [4b58609c33] Kirill Katsnelson + Change-Id: Ib4c32562f69335869adc1783608e940c3535fbfb - * chan_sip: Access incoming REFER headers in dialplan +2018-05-31 16:22 +0000 [e7a7506f9c] George Joseph - This adds a way to access information passed along with SIP headers in - a REFER message that initiates a transfer. Headers matching a dialplan - variable GET_TRANSFERRER_DATA in the transferrer channel are added to - a HASH object TRANSFER_DATA to be accessed with functions HASHKEY and HASH. + * app_confbridge: Enable sending events to participants - The variable GET_TRANSFERRER_DATA is interpreted to be a prefix for - headers that should be put into the hash. If not set, no headers are - included. If set to a string (perhaps 'X-' in a typical case), all headers - starting this string are added. Empty string matches all headers. + 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. - If there are multiple of the same header, only the latest occurrence in - the REFER message is available in the hash. + 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. - Obviously, the variable GET_TRANSFERRER_DATA must be inherited by the - referrer channel, and should be set with the '_' or '__' prefix. + To control this behavior, the following options have been added to + confbridge.conf: - I avoided a specific reference to SIP or REFER, as in my mind the mechanism - can be generalized to other channel techs. + bridge_profile/enable_events: This must be enabled on any bridge where + events are desired. - ASTERISK-27162 + 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. - Change-Id: I73d7a1e95981693bc59aa0d5093c074b555f708e + 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. -2017-08-06 11:15 +0000 [88c65f7cb6] Joshua Colp + 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. - * bridge: Fix stream topology/participant locking and video misrouting. + Change-Id: I26420aa9f101f0b2387dc9e2fd10733197f1318e - This change fixes a few locking issues and some video misrouting. +2018-06-13 05:06 +0000 [b01fc2ef3d] Alexander Traud - 1. When accessing the stream topology of a channel the channel lock - must be held to guarantee the topology remains valid. + * res_rtp_asterisk: Instead of ./configure use OPENSSL_NO_SRTP. - 2. When a channel was joined to a bridge the bridge specific - implementation for stream mapping was not invoked, causing video - to be misrouted for a brief period of time. + 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. - ASTERISK-27182 + 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: I5d2f779248b84d41c5bb3896bf22ba324b336b03 + Change-Id: I3c77c7b00b2ffa2e935632097fa057b9fdf480c0 -2017-08-05 14:43 +0000 [16cfc3a954] Corey Farrell +2018-06-05 04:36 +0000 [41175caee0] Joshua Colp - * channel: Fix leak on successful call to chan->tech->requester. + * rtp: Don't negotiate dynamic codecs using payload. - joint_cap needs to be released unconditionally as chan->tech->requester - does not steal the reference even on success. + 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. - ASTERISK-27180 #close + This change makes it so that only static payloads + will be negotiated using their payload number. - Change-Id: I647728992559bdb0a9c7357c20be1b36400d68b6 + ASTERISK-27848 -2017-08-04 16:47 +0000 [104a8047a5] Kevin Harwell + Change-Id: Ia865830170fd3f808cdb33104f3d4c4ffdc77570 - * res_pjsip_session/_sdp_rtp: Handling of 'msid' is incorrect +2018-04-16 14:13 +0000 [b649682caa] Sean Bright - Currently, the handling of the msid attribute is not quite right. According to - the spec the msid's between the offer/answer are not dependent upon one another. - Meaning the same msid's given in an offer do not have to be returned in the - answer for a given stream. And they probably shouldn't be (copied/reused) since - this can potentially cause some browser side confusion. + * AST-2018-007: iostreams potential DoS when client connection closed prematurely - This patch generates new msids when both an offer and answer are sent from - Asterisk. However, Asterisk does reuse the original msid it sent out for a - reinvite. Also audio+video streams are paired together by sharing the same - stream id, but a different track id. + 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-27179 #close + ASTERISK-27807 - Change-Id: Ifaec06dc7e65ad841633a24ebec8c8a9302d6643 + Change-Id: I945c5fc888ed92be625b8c35039fc6d2aa89c762 -2017-08-03 20:58 +0000 [7f8f3ca4dd] Corey Farrell +2018-04-30 17:38 +0000 [81ac32a85f] Richard Mudgett - * Correct some leaks in unit tests. + * AST-2018-008: Fix enumeration of endpoints from ACL rejected addresses. - * chan_sip: channel in test_sip_rtpqos_1. - * test_config: config hook, config info and global config holder. - * test_core_format: format in format_attribute_set_without_interface. - * test_stream: unneeded frame duplication. - * test_taskprocessor: task_data. + 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. - Change-Id: I94d364d195cf3b3b5de2bf3ad565343275c7ad31 + * 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. -2017-07-26 17:49 +0000 [842e1414d0] Richard Mudgett + ASTERISK-27818 - * res_pjsip_transport_websocket.c: Fix serializer ref leak. + Change-Id: Icb275a54ff8e2df6c671a6d9bda37b5d732b3b32 - Change-Id: Ib5a19bfd597f63d9021baeb645fc11153b3afa57 +2018-06-08 15:02 +0000 [0743ad6422] Alexander Traud -2017-08-02 18:41 +0000 [615b6a200a] Richard Mudgett + * res_rtp_asterisk: Allow OpenSSL configured with no-deprecated. - * res_pjsip_outbound_registration.c: Misc fixes. + 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. - * Remove unnecessary CMP_STOP. + ASTERISK-27910 - * In handle_client_registration() use DEBUG_ATLEAST() to only do work - needed for the debug log message when the debug log message is needed. + Change-Id: I5b0dd47c5194ee17f830f869d629d7ef212cf537 - * In sip_outbound_registration_state_destroy() check state->registration - for NULL. +2018-06-08 06:01 +0000 [99aed78078] Alexander Traud - Change-Id: I656d0fa11dda0b00048103efb1558e67a426fd80 + * crypto.h: Repair ./configure --with-ssl=PATH. -2017-07-31 20:20 +0000 [564927c5ed] Richard Mudgett + ASTERISK-27908 - * res_pjsip_nat.c: Remove unnecessary CMP_STOP. + Change-Id: Iac49d9f82faeb8a4611c6805906bd6d650b1b1d8 - Change-Id: I6279b0d723bc3b75b8d65e81e02da9ea9bc0c3da +2018-06-08 04:03 +0000 [ca682f0030] Alexander Traud -2017-07-31 14:20 +0000 [5655cded78] Richard Mudgett + * res_crypto: Allow OpenSSL configured with no-deprecated. - * res_pjsip_registrar.c: Remove unnecessary CMP_STOP. + The header had to be included explicitly. - Most uses of CMP_STOP are superfluous and are only respected when - OBJ_MULTIPLE is used to search the container. + ASTERISK-27906 - Change-Id: I20571a202ec0aa1098bb2749eeba18de7ca110b8 + Change-Id: I41743801eed998c039d73db7a0762d104a4f75b2 -2017-08-03 13:13 +0000 [123c93a77c] Tzafrir Cohen +2018-06-08 02:41 +0000 [234bf4b7ff] Alexander Traud - * Support GMIME 3.0 + * res_srtp: Repair ./configure --with-ssl=PATH. - Support building the Asterisk httpd with version 3.0 of gmime as - well as earlier versions of that library. + ASTERISK-27905 - ASTERISK-27173 + Change-Id: Ibb7dc148a0048f4f9c3b12937ba4240dff0d15e2 - Change-Id: I7e13dd05a3083ccb0df2dabf83110223f6a9fa8f +2018-05-31 10:25 +0000 [65ff2f057a] Alexei Gradinari -2017-08-02 09:43 +0000 [521b6fed12] Kevin Harwell + * func_odbc: NODATA if SQLNumResultCols returned 0 columns on readsql - * alembic/res_pjsip: Add "webrtc" configuration option + 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. - When the "webrtc" option was added in res_pjsip it was not added to the alembic - scripts. This patch adds the option for alembic. + ASTERISK-27888 #close - Also, changed the sorcery configuration type to an OPT_YESNO_T value instead of - an OPT_BOOL_T so if this field is ever written to a database it will write out - the correct value. + Change-Id: Ie0f7bdac6c405aa5bbd38932c7b831f90729ee19 - ASTERISK-27119 #close +2018-06-07 08:46 +0000 [1725eaf8fb] George Joseph - Change-Id: I3e199f060aea25e193c439fc5cf96be4d3ed1c7b + * chan_pjsip: Register for "BEFORE_MEDIA" responses -2017-07-30 01:17 +0000 [4c0798e91d] Kirill Katsnelson + 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". - * chan_sip: Add dialplan function SIP_HEADERS + * 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". - Syntax: SIP_HEADERS([prefix]) + * Also cleaned up some cleanup code in load module. - If the argument is specified, only the headers matching the given prefix - are returned. + ASTERISK-27902 - The function returns a comma-separated list of SIP header names from an - incoming INVITE message. Multiple headers with the same name are included - in the list only once. The returned list can be iterated over using the - functions POP() and SIP_HEADER(). + Change-Id: If9b860541887aca8ac2c9f2ed51ceb0550fb007a - For example, '${SIP_HEADERS(Co)}' might return the string - 'Contact,Content-Length,Content-Type'. +2018-06-07 07:19 +0000 [9f2eb17005] Alexander Traud - Practical use is rather '${SIP_HEADERS(X-)}' to enumerate optional - extended headers sent by a peer. + * ooh323c: GCC 8.1 warned about output truncated before terminating nul. - ASTERISK-27163 + ASTERISK-27901 - Change-Id: I2076d3893d03a2f82429f393b5b46db6cf68a267 + Change-Id: I5a8e894f4924ef52e3094f6870656a559d67f3d7 -2017-08-02 14:16 +0000 [4b03eb5c38] Corey Farrell +2018-06-05 13:43 +0000 [7af5e86821] Alexei Gradinari - * Fix compile error for old versions of GCC. + * pjsip_options: show/reload AOR qualify options using CLI - Use -Wno-format-truncation only if supported by compiler. + Currentrly pjsip_options code does not handle the situation when the + AOR qualify options were changed. - ASTERISK-27171 #close + Also there is no way to find out what qualify options are using. - Change-Id: Iac0aed7a5bcaa16c21b7d62c4e4678d244c4ccb6 + 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. -2017-08-02 16:08 +0000 [148cf2e0f7] Corey Farrell + ASTERISK-27872 - * app_privacy: remove unused header asterisk/image.h + Change-Id: I1746d10ef2b7954f2293f2e606cdd7428068c38c - Change-Id: I56ed530633a642633b18383821069e806c92ae82 +2018-05-22 16:21 +0000 [e46b442e38] Alexei Gradinari -2017-07-26 08:48 +0000 [2be8d91c0f] snuffy (license 5024) + * pjsip_options: handle modification of qualify options in realtime - * res_pjsip_pidf_eyebeam_body_supplement: Correct status presentation + 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 change fixes PIDF content generation when the underlying device - state is considered in use. Previously it was incorrectly marked - as closed meaning they were offline/unavailable. The code now - correctly marks them as open. + 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. - Additionally: + ASTERISK-27872 - * Generate an XML element for our activity instead of a using a text - node. + Change-Id: Id55210a18e62ed5d35a88e408d5fe84a3c513c62 - * Consider every extension state other than "unavailable" to be 'open' - status. +2018-05-30 01:12 +0000 [e078558038] Pirmin Walthert - * Update the XML namespaces and structure to reflect those - documented in RFC 4480 + * bridge_channel.c: Fix Deadlock when using Local channels and fax gateway - * Use 'on-the-phone' (defined in RFC 4880) instead of 'busy' as the - "in use" activity. This change results in eyeBeam using the - appropriate icon for the watched user. + 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. - This was tested on eyeBeam 1.5.20.2 build 59030 on Windows. + ASTERISK-27094 #close + Reported-by: David Brillert - ASTERISK-26659 #close - Reported by: Abraham Liebsch - patches: - ASTERISK-26659.diff submitted by snuffy (license 5024) + Change-Id: I5f86c1e2ce75b9929a36ab589b18c450e62ea35f - Change-Id: I6e5ad450f91106029fb30517b8c0ea0c2058c810 +2018-06-04 09:50 +0000 [437ab41881] George Joseph -2017-07-23 18:34 +0000 [2a4283f3e7] Joshua Colp + * app_sendtext: Allow content types other than text/plain - * res_pjsip: Add support for dnsmgr to external_media_address. + 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. - The "external_media_address" option on transports is now - resolved using dnsmgr. This allows it to be automatically - refreshed regularly if refreshes are enabled in dnsmgr. - If the system is using a dynamic IP address a dynamic DNS - hostname can be provided to keep the IP address up to - date. + Change-Id: I94a90cfee98b4bc8e22aa5c0b6afb7b862f979d9 - Change-Id: Ia54771720dff0105bde55d5bbb81a3ba437e05b2 +2018-05-28 19:17 +0000 [a7f4121238] William McCall -2017-07-27 20:58 +0000 [58d032112b] Corey Farrell + * app_confbridge: Add talking indicator for ConfBridgeList AMI response - * Fix compiler warnings on Fedora 26 / GCC 7. + 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. - GCC 7 has added capability to produce warnings, this fixes most of those - warnings. The specific warnings are disabled in a few places: + ASTERISK-27877 #close - * app_voicemail.c: truncation of paths more than 4096 chars in many places. - * chan_mgcp.c: callid truncated to 80 chars. - * cdr.c: two userfields are combined to cdr copy, fix would break ABI. - * tcptls.c: ignore use of deprecated method SSLv3_client_method(). + Change-Id: I19b5284f34966c3fda94f5b99a7e40e6b89767c6 - ASTERISK-27156 #close +2018-05-29 12:28 +0000 [6bbede84fb] Richard Mudgett - Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88 + * app_meetme: Fix manager event documentation for several events. -2017-07-26 09:27 +0000 [3f98488279] Sean Bright + 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. - * app_queue: Add announce-position-only-up option + * Change the online documentation to match reality. - Setting this option will cause the Queue application to only announce - the caller's position if it has improved since the last time that we - announced it. + ASTERISK-27873 + ASTERISK-25261 - Change-Id: I173a124121422209485b043e2bf784f54242fce6 + Change-Id: I437bc70618d07c183c9624b7069c2fcae7f17a39 -2017-07-27 06:35 +0000 [ac6d98b28d] Ian Gilmour (license 6889) +2018-05-28 10:29 +0000 [24503fb600] Alexander Traud - * bundled_pjproject: Improve SSL/TLS error handling + * tcptls.h: Repair ./configure --with-ssl=PATH. - OpenSSL has 2 levels or error processing. It's possible for the - top layer to return SSL_ERROR_SYSCALL but the lower layer return - no error, in which case processing should continue. Only the top - layer was being examined though so connections were being torn - down when they didn't need to be. This patch adds the examination - of the lower level codes, and if they return no errors, allows - processing to continue. + asterisk/tcptls.h was included (explicitly, implicitly, or transitively). Those + inclusions got replaced by forward declarations. As side effect, the inclusions + got completed. - ASTERISK-27001 - Reported-by: Ian Gilmour - patches: - pjproject-2.6.patch submitted by Ian Gilmour (license 6889) - - Updated-by: George Joseph and Sauw Ming (Teluu) - - Merged to upstream pjproject on 7/27/2017 (commit 5631) + ASTERISK-27878 - Change-Id: I23844ca0c68ef1ee550f14d46f6dae57d33b7bd2 + Change-Id: I9d102728e30336d6522e5e4ae9e964013a0835f7 -2017-06-26 07:52 +0000 [65c560894d] Torrey Searle +2018-05-25 09:55 +0000 [d36338ce2b] Alexander Traud - * chan_pjsip: add a new function PJSIP_DTMF_MODE + * tcptls: Allow OpenSSL configured with no-dh. - This function is a replica of SIPDtmfMode, allowing the DTMF mode of a - PJSIP call to be modified on a per-call basis + 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-27085 #close + ASTERISK-27876 - Change-Id: I20eef5da3e5d1d3e58b304416bc79683f87e7612 + Change-Id: I62c2aba4a630aefc231b71f646207e8c027d9497 -2017-07-25 15:17 +0000 [b3914df10b] Sean Bright +2018-05-25 07:22 +0000 [91616f4524] Alexander Traud - * res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours + * tcptls: Allow OpenSSL 1.1.x configured with enable-ssl3-method no-deprecated. - Change-Id: Ia578ede1a55b21014581793992a429441903278b + ASTERISK-27874 -2017-07-20 08:08 +0000 [4f4936fd72] Sergej Kasumovic + Change-Id: Ica65113511c7a1c13f7988e7d9e7d9e7f3f620dd - * res_stasis_device_state: Unsubscribe should remove old subscriptions +2018-05-15 08:45 +0000 [2bf26ce5ac] George Joseph - Case scenario with Applications ARI: + * ast_coredumper: Fix output directory and variable precedence - * Once you subscribe to deviceState with Applications REST API, it will be - added into subscription pool. + The OUTPUTDIR variable in ast_debug_tools.conf.sample is now set + to "/tmp" instead of "/some/directory". - * When you unsubscribe it will remove from the device_state_subscription - hash table but not from the subscription pool. + Variables set on the command line or that are already in the + environment now take predecence over variables set in the config files. - * When you subscribe again, it will add it to pool again. + ASTERISK-27846 + Reported by: Ted G - * Now you will have two subscriptions and you will receive same event - twice. + Change-Id: Ie8baec52d531886bf5849ec1d59bb59dc87ad387 - This fix should now remove deviceState subscription from pool and it - should fix unsubscribe on deviceState. +2018-05-09 08:31 +0000 [c5d2bf05f4] Torrey Searle - ASTERISK-27130 #close + * res/res_rtp_asterisk: ensure marker bit is correctly set on ssrc change - Change-Id: I718b70d770a086e39b4ddba4f69a3c616d4476c4 + 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. -2017-07-24 13:30 +0000 [a6eb9ee7d2] Joshua Colp + 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. - * core: Add VP9 passthrough support. + ASTERISK-27845 - This change adds VP9 as a known codec and creates a cached - "vp9" media format for use. + Change-Id: I01858bd0235f1e5e629e20de71b422b16f55759b - Change-Id: I025a93ed05cf96153d66f36db1839109cc24c5cc +2018-04-23 09:04 +0000 [a507c73a78] Joshua Colp -2017-07-19 18:11 +0000 [922930753c] Richard Mudgett + * rtp: Add support for RTP extension negotiation and abs-send-time. - * app_voicemail.c: Allow mailbox entry on authentication retry prompt. + 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. - The following testsuite voicemail tests were failing to re-enter the - mailbox after the first login attempt. + 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. - tests/apps/voicemail/authenticate_invalid_mailbox - tests/apps/voicemail/authenticate_invalid_password + 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. - The tests were noting the start of the vm-incorrect-mailbox prompt and - immediately sending the mailbox for the next login attempt. Since the - invalid message playback had to complete before the digits were - recognized, the test passed for the wrong reason and added approximately - 20 seconds to the test times. + ASTERISK-27831 - * Allow the vm-incorrect-mailbox prompt to get interrupted by the mailbox - digits like the initial vm-login prompt so the tests are able to enter the - intended mailbox. + [1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 - Change-Id: I1dc53fe917bfe03a4587b2c4cd24c94696a69df8 + Change-Id: I508deac557867b1e27fc7339be890c8018171588 -2017-07-21 15:57 +0000 [2697e45157] Matthew Fredrickson +2018-05-22 17:17 +0000 [1bec0c73b3] Richard Mudgett - * format.h: Fix a few minor errors in comments. + * channel.c: Fix off nominal channel allocation failure path. - A few minor problems were found in comments in format.h. This patch fixes them. + __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: I07f0bdb47b93359b361c4c3d8ecc87cd3199dd94 + Change-Id: Icf21093f36c60781e8cf6ee9d586536302af33e3 -2017-07-14 13:47 +0000 [19b080b547] Rusty Newton +2018-05-18 12:46 +0000 [d402594f74] Rodrigo Ramírez Norambuena - * say.c: Fix file locations for second, seconds, minute, minutes files + * app_queue: Update year Copyright and fix missing tabs in documentation - The seconds and minutes files have always existed in the base language - directory of the Core package. So say.c has always been calling the wrong - location (under digits/) for those two files and in the case of second and - minute they didn't exist in the Core packages at all. + Change-Id: Ieb8faf37dc765463ee5dbca1d1343242c756b1c7 - The 1.6 sounds release moves the second and minute files into Core from - Extra for the languages that already had them. A future release will include - the second and minute files for languages that didn't already have them. +2018-05-18 16:45 +0000 [39632c7e00] Alexei Gradinari - This patch just changes all the target locations for second, seconds, - minute, and minutes that were under the digits subdir to be under the root of - sounds instead. Which is where the sounds will be for some languages after 1.6 - sounds and for all languages after a future release. + * config.c: Fix successful DELETE treated as failure - ASTERISK-25810 #close + 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. - Change-Id: I05d9d4bee6a7237030530a46e7eb3df15f13f702 - Reported-by: Nicolas Riendeau + ASTERISK-27863 -2017-07-21 14:20 +0000 [a2f6028a51] Rusty Newton + Change-Id: Ied02b38e8196cb03043e609a0679feebd288d17b - * Sounds: Update Makefile for Extra sounds 1.5.1 release +2018-05-14 06:07 +0000 [9f9dce05b2] Matthew Fredrickson - Incrementing version for the Extra sounds release. 1.5.1 Extra sounds - removes two prompts that were moved into the Core packages in the 1.6 Core - sounds release. + * netsock2: Add ast_sockaddr_resolve_first_af to netsock2 public API - ASTERISK-27142 #close + 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: I82f017812b0ea9599e19dd4635afd55611f13ee7 + Change-Id: Id52e23be885601c51d70259f62de1a5e59d38d04 -2017-07-21 11:17 +0000 [063c9a935f] George Joseph +2018-05-20 06:36 +0000 [1424f42d25] Alexander Traud - * Update make_ari_stubs in master to make the version 16 + * libasteriskssl: Allow OpenSSL 1.0.2 configured with no-deprecated. - Ready for next major version + Use CRYPTO_set_id_callback(.) only with OpenSSL 0.9.8 and older. - Change-Id: If9dc99b3b78768529e69a297d8f87e23582ca6d0 + ASTERISK-27867 -2017-07-21 11:24 +0000 [ba52a36ff2] George Joseph + Change-Id: Iadd58d5bf6f538eb224203970a4e88e26f259655 - * Restore the incorrectly deleted spandspflow2pcap.log +2018-05-19 08:23 +0000 [2228ae3f27] Alexander Traud - Change-Id: Iafe78cf0fb1e7064223d4dea279eeb776c8fa8e5 + * tcptls: Repair ./configure --with-ssl=PATH. -2017-07-20 09:57 +0000 [25c9464325] Sean Bright + SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 got discovered without honoring a PATH. - * corosync: Fix corosync library name in configure.ac + ASTERISK-27865 - Also add new corosync packages to install_prereq. + Change-Id: I8cd358eed7411726d08fa7b01691bef122fbeb71 - Reported by Travis Ryan in #asterisk-dev +2018-03-27 18:53 +0000 [2ca3b6d9cc] Nic Colledge - Change-Id: Ib861c95ba630fed62dc54e56784ad8446ed9d2db + * app_voicemail: Fix data-type mismatch between app_voicemail and database -2017-07-17 11:01 +0000 [680c491a62] Joshua Colp + Fix data-type mismatch between app_voicemail and database columns + exposed by new version of MariaDB - * bridge_softmix / res_rtp_asterisk: Fix packet loss and renegotiation issues. + ASTERISK-27760 - This change does a few things to improve packet loss and renegotiation: + Change-Id: I8543ad480a08c98be78bde1ee870e6e6c84b2c5b - 1. On outgoing RTP streams we will now properly reflect out of order - packets and packet loss in the sequence number. This allows the - remote jitterbuffer to better reorder things. +2018-05-12 06:53 +0000 [97f20fe5ed] Nic Colledge - 2. Video updates can now be discarded for a period of time - after one has been sent to prevent flooding of clients. + * app_voicemail: Fix incorrect msg leaving/retrieving an ODBC voicemail - 3. For declined and removed streams we will now release any - media session resources associated with them. This was not - previously done and caused an issue where old state was being - used for a new stream. + 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. - 4. RTP bundling was not actually removing bundled RTP instances - from the parent. This has been resolved by removing based on - the RTP instance itself and not the SSRC. + ASTERISK-27853 - 5. The code did not properly handle explicitly unbundling an - RTP instance from its parent. This now works as expected. + Change-Id: Ic36e97d5eb070a23a12ba45972f6b53e2182a3f4 - ASTERISK-27143 +2018-04-17 21:15 +0000 [52ed6bcc8f] Brian P. Martin - Change-Id: Ibd91362f0e4990b6129638e712bc8adf0899fd45 + * chan_mobile: support handling of caller-id names ("cnam"). -2017-05-19 23:28 +0000 [d2fbbdd692] Richard Mudgett + 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. - * SDP: Create declined m= SDP lines using remote SDP if applicable. + 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.). - * Update SDP unit tests to test negotiating with declined streams. - Generation of declined m= lines created and responded tested. + Reported by: Brian Martin + Tested by: Brian Martin + ASTERISK-27726 - Change-Id: I5cb99f5010994ab0c7d9cf2d395eca23fab37b98 + Change-Id: I89490d85fa406c36261879c50ae5e65595538ba5 -2017-05-02 18:51 +0000 [3a18a09030] Richard Mudgett +2018-05-17 01:58 +0000 [f10fc135d4] Alexander Traud - * SDP: Rework SDP offer/answer model and update capabilities merges. + * res_pjsip_endpoint_identifier_ip: Unregister the module for headers. - The SDP offer/answer model requires an answer to an offer before a new SDP - can be processed. This allows our local SDP creation to be deferred until - we know that we need to create an offer or an answer SDP. Once the local - SDP is created it won't change until the SDP negotiation is restarted. + 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. - An offer SDP in an initial SIP INVITE can receive more than one answer - SDP. In this case, we need to merge each answer SDP with our original - offer capabilities to get the currently negotiated capabilities. To - satisfy this requirement means that we cannot update our proposed - capabilities until the negotiations are restarted. + ASTERISK-27861 - Local topology updates from ast_sdp_state_update_local_topology() are - merged together until the next offer SDP is created. These accumulated - updates are then merged with the current negotiated capabilities to create - the new proposed capabilities that the offer SDP is built. + Change-Id: I261abcb411d026bbb0691cc78f28300bfd3103a3 - Local topology updates are merged in several passes to attempt to be smart - about how streams from the system are matched with the previously - negotiated stream slots. To allow for T.38 support when merging, type - matching considers audio and image types to be equivalent. First streams - are matched by stream name and type. Then streams are matched by stream - type only. Any remaining unmatched existing streams are declined. Any - new active streams are either backfilled into pre-merge declined slots or - appended onto the end of the merged topology. Any excess new streams - above the maximum supported number of streams are simply discarded. +2018-05-11 12:49 +0000 [71d1e8d8c8] Alexander Traud - Remote topology negotiation merges depend if the topology is an offer or - answer. An offer remote topology negotiation dictates the stream slot - ordering and new streams can be added. A remote offer can do anything to - the previously negotiated streams except reduce the number of stream - slots. An answer remote topology negotiation is limited to what our offer - requested. The answer can only decline streams, pick codecs from the - offered list, or indicate the remote's stream hold state. + * rtp_engine: Remove the double assigned RTP payload ID of H.263+. - I had originally kept the RTP instance if the remote offer SDP changed a - stream type between audio and video since they both use RTP. However, I - later removed this support in favor of simply creating a new RTP instance - since the stream's purpose has to be changing anyway. Any RTP packets - from the old stream type might cause mischief for the bridged peer. + 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. - * Added ast_sdp_state_restart_negotiations() to restart the SDP - offer/answer negotiations. We will thus know to create a new local SDP - when it is time to create an offer or answer. + Change-Id: I90e35b158487f8f1f8187da6241b54cd3b74e667 - * Removed ast_sdp_state_reset(). Save the current topology before - starting T.38. To recover from T.38 simply update the local topology to - the saved topology and restart the SDP negotiations to get the offer SDP - renegotiating the previous configuration. +2018-05-11 12:26 +0000 [4722a653f4] Corey Farrell - * Allow initial topology for ast_sdp_state_alloc() to be NULL so an - initial remote offer SDP can dictate the streams we start with. We can - always update the local topology later if it turns out we need to offer - SDP first because the remote chose to defer sending us a SDP. + * cli: Display correct unit for HTTP timeout in "manager show settings". - * Made the ast_sdp_state_alloc() initial topology limit to max_streams, - limit to configured codecs, handle declined streams, and discard - unsupported types. + HTTP timeout is in seconds, not minutes. - * Convert struct ast_sdp to ao2 object. Needed to easily save off a - remote SDP to refer to later for various reasons such as generating - declined m= lines in the local SDP. + ASTERISK-27852 #close - * Improve converting remote SDP streams to a topology including stream - state. A stream state of AST_STREAM_STATE_REMOVED indicates the stream is - declined/dead. + Change-Id: Ie6640835cb07307555741f9b559c2eb876d9343e - * Improve merging streams to take into account the stream state. +2018-05-11 10:37 +0000 [263637a38d] Alexander Traud - * Added query for remote hold state. + * rtp_engine: Avoid a typo error in Doxygen for ast_rtp_codecs_find_payload_code. - * Added maximum streams allowed SDP config option. + Change-Id: Ica089d4507a27ddfc4ce3a88d697ffbef378de48 - * Added ability to create new streams as needed. New streams are created - with configured default audio, video, or image codecs depending on stream - type. +2018-05-06 21:17 +0000 [b5914d90ac] Corey Farrell - * Added global locally_held state along with a per stream local hold - state. Historically, Asterisk only has a global locally held state - because when the we put the remote on hold we do it for all active - streams. + * Fix GCC 8 build issues. - * Added queries for a rejected offer and current SDP negotiation role. - The rejected query allows the using module to know how to respond to a - failed remote SDP set. Should the using module respond with a 488 Not - Acceptable Here or 500 Internal Error to the offer SDP? + This fixes build warnings found by GCC 8. In some cases format + truncation is intentional so the warning is just suppressed. - * Moved sdp_state_capabilities.connection_address to ast_sdp_state. There - seems no reason to keep it in the sdp_state_capabilities struct since it - was only used by the ast_sdp_state.proposed_capabilities instance. + ASTERISK-27824 #close - * Callbacks are now available to allow the using module some customization - of negotiated streams and to complete setting up streams for use. See the - typedef doxygen for each callback for what is allowable and when they are - called. - * Added topology answerer modify callback. - * Added topology pre and post apply callbacks. - * Added topology offerer modify callback. - * Added topology offerer configure callback. + Change-Id: I724f146cbddba8b86619d4c4a9931ee877995c84 - * Had to rework the unit tests because I changed how SDP topologies are - merged. Replaced several unit tests with new negotiation tests. +2018-05-11 07:10 +0000 [919b0eb3f2] Alexander Traud - Change-Id: If07fe6d79fbdce33968a9401d41d908385043a06 + * rtp_engine: Allow Media Formats with add_static_payload(-1) on egress again. -2017-06-18 19:24 +0000 [70d2ccb9da] Corey Farrell + 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. - * Core: Add support for systemd socket activation. + ASTERISK-27850 + Reported by: Dinis Brazão, Selene Feigl - This change adds support for socket activation of certain SOCK_STREAM - listeners in Asterisk: - * AMI / AMI over TLS - * CLI - * HTTP / HTTPS + Change-Id: I08c1e76433a67e4350141d38cacf3a1cb5086496 - Example systemd units are provided. This support extends to any socket - which is initialized using ast_tcptls_server_start, so any unknown - modules using this function will support socket activation. +2018-05-09 09:30 +0000 [2e37684913] Corey Farrell - Asterisk continues to function as normal if socket activation is not - enabled or if systemd development headers are not available during - build. + * git: Ignore *.orig. - ASTERISK-27063 #close + This prevents accidental commit of files created by patch. - Change-Id: Id814ee6a892f4b80d018365c8ad8d89063474f4d + Change-Id: I68380db61f0f9d620046f719ccd978811d0e9964 -2017-09-01 19:29 +0000 Asterisk Development Team +2018-04-18 02:27 +0000 [2d81709ab1] Alexander Traud - * asterisk 15.0.0-rc1 Released. + * sip_to_pjsip: Enable python3 compatibility. -2017-07-24 10:48 +0000 [35c8fb1590] George Joseph + 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. - * pjsip_message_ip_updater: Fix issue handling "tel" URIs + ASTERISK-27811 - sanitize_tdata was assuming all URIs were SIP URIs so when a non - SIP uri was in the From, To or Contact headers, the unconditional - cast of a non-pjsip_sip_uri structure to pjsip_sip_uri caused - a segfault when trying to access uri->other_param. + Change-Id: I59cc6b52a1a89777eebcf25b3023bdf93babf835 - * Added PJSIP_URI_SCHEME_IS_SIP(uri) || PJSIP_URI_SCHEME_IS_SIPS(uri) - checks before attempting to cast or use the returned uri. +2018-05-08 14:28 +0000 [cea87fe7b8] Corey Farrell - ASTERISK-27152 - Reported-by: Ross Beer + * makeopts.in: Remove unused/undefined AST_MARCH_NATIVE. - Change-Id: Id380df790e6622c8058a96035f8b8f4aa0b8551f + Change-Id: I617a96ebb83ec99f5d3176bbbee2d2a272ccb203 -2017-07-01 19:24 +0000 [231ee5e6c6] Corey Farrell +2018-05-08 04:59 +0000 [9f1e1d153a] Jaco Kroon - * AST-2017-006: Fix app_minivm application MinivmNotify command injection + * manager: fix digest auth for ami/http mechanism. - An admin can configure app_minivm with an externnotify program to be run - when a voicemail is received. The app_minivm application MinivmNotify - uses ast_safe_system() for this purpose which is vulnerable to command - injection since the Caller-ID name and number values given to externnotify - can come from an external untrusted source. + 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. - * Add ast_safe_execvp() function. This gives modules the ability to run - external commands with greater safety compared to ast_safe_system(). - Specifically when some parameters are filled by untrusted sources the new - function does not allow malicious input to break argument encoding. This - may be of particular concern where CALLERID(name) or CALLERID(num) may be - used as a parameter to a script run by ast_safe_system() which could - potentially allow arbitrary command execution. + ASTERISK-27841 - * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp() - instead of ast_safe_system() to avoid command injection. + Change-Id: I660609db13b8f9e5f9567f339dd804f4985d41b3 - * Document code injection potential from untrusted data sources for other - shell commands that are under user control. +2018-05-04 13:47 +0000 [d855658f23] Corey Farrell - ASTERISK-27103 + * app_macro: Prevent infinite loop in find_matching_priority. - Change-Id: I7552472247a84cde24e1358aaf64af160107aef1 + 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. -2017-05-22 10:36 +0000 [ba2c8f1458] Joshua Colp + ASTERISK-26570 #close - * res_rtp_asterisk: Only learn a new source in learn state. + Change-Id: I6c71b76998c31434391b150de055ae9a531e31da - This change moves the logic which learns a new source address - for RTP so it only occurs in the learning state. The learning - state is entered on initial allocation of RTP or if we are - told that the remote address for the media has changed. While - in the learning state if we continue to receive media from - the original source we restart the learning process. It is - only once we receive a sufficient number of RTP packets from - the new source that we will switch to it. Once this is done - the closed state is entered where all packets that do not - originate from the expected source are dropped. +2018-01-11 06:37 +0000 [f4c360143b] Tzafrir Cohen - The learning process has also been improved to take into - account the time between received packets so a flood of them - while in the learning state does not cause media to be switched. + * cdr_mysql: my_connect_db(): reduce indentation - Finally RTCP now drops packets which are not for the learned - SSRC if strict RTP is enabled. + ASTERISK-27572 - ASTERISK-27013 + Change-Id: I00bd5363ac94c764c56d8626a5945ed7f3934fcb - Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c +2018-01-11 06:33 +0000 [2e44adf1c3] Tzafrir Cohen -2017-08-30 07:28 +0000 [663fe3e31f] Joshua Colp + * cdr_mysql: split mysql init out of my_load_module - * res_rtp_asterisk: Allow remote SSRC to change on an RTP instance. + Split out mysql connection parts to a separate my_connect_db(). - When SDP renegotiation occurs it is possible for an RTP - instance to be reused for a new stream, resulting in the remote - SSRC changing if it is part of a bundle group. This change - allows this and updates its mapping in the current bundle - group. + ASTERISK-27572 - ASTERISK-27231 + Change-Id: If2ee676056067cc693ff08be68ee4944bf35b49f - Change-Id: I6e3703974f236bc024c5dbe9bd43adae0c6fb490 +2018-05-04 16:07 +0000 [8f55f7c333] Matthew Fredrickson -2017-08-24 11:45 +0000 [dab0389e24] Joshua Colp + * res_hep: Adds hostname resolution support for capture_address - * core: Reduce video update queueing. + 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. - A video update frame is used to indicate that a channel - with video negotiated should provide a full frame so the - decoder decoding the stream is able to do so. In situations - where a queue is used to store frames it makes no sense - for the queue to contain multiple video update frames. One - is sufficient to have a full frame be sent. + ASTERISK-27796 #close + Reported-By: Sebastian Gutierrez - ASTERISK-27222 + Change-Id: I33e1a37a8b86e20505dadeda760b861a9ef51f6f - Change-Id: Id3f40a6f51b740ae4704003a1800185c0c658ee7 +2018-04-20 18:12 +0000 [7528b86cad] Joshua Colp -2017-08-14 12:20 +0000 [0a0ef8a1b1] Richard Mudgett + * stream: Make the topology a reference counted object. - * chan_pjsip.c: Fix topology refresh response code accuracy. + 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. - There are other 1xx and 2xx codes than 100 and 200 respectively. + Change-Id: I4f4d3dd856a033ed55fe218c3a4fab364afedb03 - Change-Id: I680db0997343256add1478714f5bf5b5569aee17 +2018-03-21 07:30 +0000 [6301531416] Tzafrir Cohen -2017-08-18 17:37 +0000 [00b10fa1e1] Richard Mudgett + * chan_dahdi: Configurable dialed digit timeouts - * res_pjsip_session.c: Fix crash when declining an active stream. + 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: - If a previously active stream is declined we could crash because the - channel's thread is still using the stream while we are updating the - topology in the serializer thread. + * firstdigit_timeout: Default time (ms) to detect first digit - * Defer removing any declined stream's handler until we have blocked the - channel's thread with the channel lock. + * interdigit_timeout: Default time (ms) to detect following digits - ASTERISK-27212 + * 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: I50e1d3ef26f8e41948f4c411ee329aa3b960a420 + Change-Id: Ib728fa900a4f6ae56d1ed810aba61b6593fb7213 -2017-08-16 17:50 +0000 [6acc945533] Richard Mudgett +2018-05-03 06:34 +0000 [de3ca9bada] Joshua Colp - * bridge_channel.c: Fix FRACK when mapping frames to the bridge. + * res_ari: Remove requirement that body exists when debug is on. - * Add protection checks when mapping streams to the bridge. The channel - and bridge may be in the process of updating the stream mapping when a - media frame comes in so we may not be able to map the frame at the time. + 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. - * We need to map the streams to the bridge's stream numbers right before - they are written into the bridge. That way we don't have to keep - locking/unlocking the bridge and we won't have any synchronization - problems before the frames actually go into the bridge. + 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. - * Protect the deferred queue with the bridge_channel lock. + ASTERISK-27801 - ASTERISK-27212 + Change-Id: I4eef036ad54550a4368118cc348765ecac25e0f8 - Change-Id: Id6860dd61b594b90c8395f6e2c0150219094c21a +2018-04-30 15:15 +0000 [069a0b7593] Sean Bright -2017-08-11 16:31 +0000 [efbf0aa8df] Richard Mudgett + * iostreams: Add some documentation for the ast_iostream_* functions - * channel: Fix topology API locking. + Change-Id: Id71b87637f0a484eb5a1cd26c3d1c7c15c7dcf26 - * ast_channel_request_stream_topology_change() must not be called with any - channel locks held. +2018-05-02 07:43 +0000 [239074c759] Sean Bright - * ast_channel_stream_topology_changed() must be called with only the - passed channel lock held. + * pjsip: Increase maximum number of usable ciphers & other cleanups - ASTERISK-27212 + * Increase maximum number of ciphers from 100 to 256 (or whatever + PJ_SSL_SOCK_MAX_CIPHERS is #define'd to) - Change-Id: I843de7956d9f1cc7cc02025aea3463d8fe19c691 + * Simplify logic in cipher_name_to_id() -2017-08-16 15:22 +0000 [6bad253669] Richard Mudgett + * Make signed/unsigned comparison consistent - * bridge: Fix softmix bridge deadlock. + Re: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897412 - * Fix deadlock in - bridge_softmix.c:softmix_bridge_stream_topology_changed() between - bridge_channel and channel locks. + Reported by: Ondřej Holas - * The new bridge technology topology change callbacks must be called with - the bridge locked. The callback references the bridge channel list, the - bridge technology could change, and the bridge stream mapping is updated. + Change-Id: Iea620f03915a1b873e79743154255c3148a514e7 - ASTERISK-27212 +2018-04-30 17:24 +0000 [11b7de82c5] Richard Mudgett - Change-Id: Ide4360ab853607e738ad471721af3f561ddd83be + * res_pjsip/pjsip_distributor.c: Add missing off-nominal request response. -2017-08-17 17:07 +0000 [40faa22ce8] Richard Mudgett + Change-Id: I389579b39c523d1d1e8ce020ef549a8bb5781c9b - * app_confbridge: Document sfu video_mode value. +2018-04-30 17:20 +0000 [6cab3c836a] Richard Mudgett - Change-Id: I26e17df2c93f3933b23f78070603adbcc84ba204 + * res_pjsip/pjsip_distributor.c: Pull some assignments out of if tests. -2017-08-16 15:43 +0000 [e52f9b041a] George Joseph + Change-Id: I3d30d638b53a4bbe9bf9aad853c649d583894112 - * Fix downloader not working with curl +2018-04-30 09:38 +0000 [afdca5c68c] Joshua Colp - The codec/dpma downloader wasn't handling curl correctly. The logic - that transforms makeopts into a bash-sourceable file wasn't - handling the make 'or' command in DOWNLOAD_TIMEOUT so bash was - looking for an 'or' command. + * res_rtp_asterisk: Always update SRTP on local SSRC change. - That logic has been eliminated. Instead of trying to transform - and source makeopts, the downloader now calls a make scriptlet - to print the value of a specific variable. This way, make handles - the ors (or any other make construct that happens to creep into - that file). + 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-27202 - Reported by: Sean McCord + ASTERISK-27795 + ASTERISK-27800 - Change-Id: Iadfb6693528e4d4da7b8bb201fa66da2c71c7f99 + Change-Id: Ia7c8e74c28841388b5244ac0b8fd6c1dc6ee4c10 -2017-08-15 13:12 +0000 [d7b04f22de] Kevin Harwell +2018-02-13 12:55 +0000 [0827d5cc53] Gaurav Khurana - * manager: hook event is not being raised + * Add the ability to read the media file type from HTTP header for playback - When the iostream code went in it introduced a conditional that made it so the - hook event was not being raised even if a hook is present. This patch adds a - check to see if a hook is present in astman_append. If so then call into the - send_string function, which in turn raises the even for specified hook. + 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. - Also updated the ami hooks unit test, so the test could be automated. + 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. - ASTERISK-27200 #close + 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: - Change-Id: Iff37f02f9708195d8f23e68f959d6eab720e1e36 + [Sep 15 15:48:05] WARNING [29148] [C-00000092] file.c: + File http://host/media/1234 does not exist in any format -2017-08-15 15:15 +0000 [44d316ef4a] Richard Mudgett + 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: - * configure: Check cache for valid pjproject tarball before downloading. + 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 - On a fresh Asterisk source directory, the bundled pjproject tarball is - unconditionally downloaded even if the tarball is already in a specified - cache directory. + ASTERISK-27286 - * Made check if the pjproject tarball is valid in the cache directory - before downloading the tarball on a fresh source directory. + Reporter: Gaurav Khurana - Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5 + Change-Id: I1b14692a49b2c1ac67688f58757184122e92ba89 -2017-08-09 15:24 +0000 [012391920c] Richard Mudgett +2018-04-25 01:57 +0000 [9c9f314f64] Christof Lauber - * UPGRADE notes: Fixup for the 15 branch + * pbx_lua: Support displaying lua error message if no debug table exists - Change-Id: I4ca2f07ed62d77f1fdd10c3b216f6a28dd75720c + 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. -2017-08-04 16:47 +0000 [4d3e66eabc] Kevin Harwell + Change-Id: I34ba0a098f1ae06a3af7b4d1b098bd43f42f96c8 - * res_pjsip_session/_sdp_rtp: Handling of 'msid' is incorrect +2017-12-11 12:34 +0000 [882e79b77e] Joshua Colp - Currently, the handling of the msid attribute is not quite right. According to - the spec the msid's between the offer/answer are not dependent upon one another. - Meaning the same msid's given in an offer do not have to be returned in the - answer for a given stream. And they probably shouldn't be (copied/reused) since - this can potentially cause some browser side confusion. + * pjsip: Rewrite OPTIONS support with new eyes. - This patch generates new msids when both an offer and answer are sent from - Asterisk. However, Asterisk does reuse the original msid it sent out for a - reinvite. Also audio+video streams are paired together by sharing the same - stream id, but a different track id. + 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. - ASTERISK-27179 #close + 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. - Change-Id: Ifaec06dc7e65ad841633a24ebec8c8a9302d6643 + 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. -2017-08-06 11:15 +0000 [71d0424ed5] Joshua Colp + 2. AORs are scheduled and not contacts. This reduces the amount of work + spent juggling scheduled items. - * bridge: Fix stream topology/participant locking and video misrouting. + 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. - This change fixes a few locking issues and some video misrouting. + 4. Operations regarding an AOR use a serializer specific to that AOR. - 1. When accessing the stream topology of a channel the channel lock - must be held to guarantee the topology remains valid. + 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. - 2. When a channel was joined to a bridge the bridge specific - implementation for stream mapping was not invoked, causing video - to be misrouted for a brief period of time. + 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. - ASTERISK-27182 + 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. - Change-Id: I5d2f779248b84d41c5bb3896bf22ba324b336b03 - (cherry picked from commit 0e352ec5100331c6a32008acc88d69d0fc58ccdd) + ASTERISK-26806 -2017-08-08 13:33 +0000 [84600e2682] George Joseph + Change-Id: I6a5ebbfca9001dfe933eaeac4d3babd8d2e6f082 - * Make --with-pjproject-bundled the default for Asterisk 15 +2017-12-22 13:11 +0000 [661fec4b59] Richard Mudgett - '--with-pjproject-bundled' is now the default when running - ./configure. It can be disabled with '--without-pjproject-bundled'. + * core: Remove unused/incomplete SDP modules. - To make building without an internet connection easier, a new - ./configure option '--with-download-cache' was added that sets - the cache for externals (like pjproject, the codecs and the DPMA), - AND the sounds files. It can also be specified as an environment - variable named "AST_DOWNLOAD_CACHE". The existing - '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and - '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable - remain and if specified, will override '--with-downloads-cache'. + Change-Id: Icc28fbdc46f58e54a21554e6fe8b078f841b1f86 - ASTERISK-27189 +2018-04-18 15:59 +0000 [ff652711c7] Kevin Harwell - Change-Id: Ifa9783fddf44aafadb060c9feba713dfa81d38ce + * translate: generic plc not filled in after translation -2017-08-05 14:43 +0000 [afd7875e82] Corey Farrell + 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. - * channel: Fix leak on successful call to chan->tech->requester. + 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. - joint_cap needs to be released unconditionally as chan->tech->requester - does not steal the reference even on success. + ASTERISK-27814 #close - ASTERISK-27180 #close + Change-Id: I133d084da87adef913bf2ecc9c9240e3eaf4f40a - Change-Id: I647728992559bdb0a9c7357c20be1b36400d68b6 - (cherry picked from commit 3dbb1b9f48b0fa23cec2d8e3f94173004da320a4) +2018-04-20 07:40 +0000 [de9c0ede4a] Joshua Colp -2017-08-02 14:16 +0000 [53bba12340] Corey Farrell + * bridge_softmix: Fix sporadic incorrect video stream mapping. - * Fix compile error for old versions of GCC. + When an externally initiated renegotiation occurred it was + possible for video streams to be incorrectly remapped, + resulting in no video flowing to some receivers. - Use -Wno-format-truncation only if supported by compiler. + This change ensures that only the video source sets up + mappings and also that removed streams do not have mappings + set up. - ASTERISK-27171 #close + Change-Id: Iab05f2254df3606670774844bb0935f833d3a9b0 - Change-Id: Iac0aed7a5bcaa16c21b7d62c4e4678d244c4ccb6 - (cherry picked from commit cd79a15b2f9411c6e77f0f6594ff0c46f0ece080) +2018-04-20 14:07 +0000 [c481afe873] Alexander Anikin -2017-08-02 09:43 +0000 [c042ad8343] Kevin Harwell + * chan_ooh323: fix ooManualProgress/ooManualRingback on ooh323 debuggin on - * alembic/res_pjsip: Add "webrtc" configuration option + Call ooManualProgress/Ringback outside of ast_debug function + when ooh323 debugging is on - When the "webrtc" option was added in res_pjsip it was not added to the alembic - scripts. This patch adds the option for alembic. + ASTERISK-27812 #close + ASTERISK-26893 #close + Reported by: Dimos, Marco Giordani - Also, changed the sorcery configuration type to an OPT_YESNO_T value instead of - an OPT_BOOL_T so if this field is ever written to a database it will write out - the correct value. + Change-Id: I5873762e4f05824e7b6e94a19dd4eb56adbbbb79 - ASTERISK-27119 #close +2018-04-19 13:44 +0000 [5712a0ae52] Joshua Colp - Change-Id: I3e199f060aea25e193c439fc5cf96be4d3ed1c7b - (cherry picked from commit b0c016cf6e0bcbe743f4f8286fb9b5ded830ccf7) + * bridge_softmix: Fix some REMB bugs. -2017-08-02 11:44 +0000 Asterisk Development Team + 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 15.0.0-beta1 Released. + ASTERISK-27804 -2017-07-27 20:58 +0000 [aba08692df] Corey Farrell + Change-Id: Ia9dc9c150043890ee7ff85e9cdec007f1a77fcfd - * Fix compiler warnings on Fedora 26 / GCC 7. +2018-04-20 07:13 +0000 [fe072f4405] Alexander Traud - GCC 7 has added capability to produce warnings, this fixes most of those - warnings. The specific warnings are disabled in a few places: + * BuildSystem: Enable IMAP storage on FreeBSD and DragonFly BSD. - * app_voicemail.c: truncation of paths more than 4096 chars in many places. - * chan_mgcp.c: callid truncated to 80 chars. - * cdr.c: two userfields are combined to cdr copy, fix would break ABI. - * tcptls.c: ignore use of deprecated method SSLv3_client_method(). + ASTERISK-27639 - ASTERISK-27156 #close + Change-Id: I1347f3f2f3737010d0a80a5c30b5aaf71cf3ccb0 - Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88 +2018-04-20 05:50 +0000 [efe40ff671] Alexander Traud -2017-07-27 06:35 +0000 [64edb4ed21] George Joseph + * BuildSystem: Add DragonFly BSD. - * bundled_pjproject: Improve SSL/TLS error handling + ASTERISK-27820 - OpenSSL has 2 levels or error processing. It's possible for the - top layer to return SSL_ERROR_SYSCALL but the lower layer return - no error, in which case processing should continue. Only the top - layer was being examined though so connections were being torn - down when they didn't need to be. This patch adds the examination - of the lower level codes, and if they return no errors, allows - processing to continue. + Change-Id: I310896143e94d65da1c2be3bb448204a8b86d557 - ASTERISK-27001 - Reported-by: Ian Gilmore - Patch-by: Ian Gilmore (pjproject-2.6.patch License 6889) - Updated-by: George Joseph and Sauw Ming (Teluu) +2018-04-20 05:40 +0000 [d54637373a] Alexander Traud - Merged to upstream pjproject on 7/27/2017 (commit 5631) + * menuselect: Add DragonFly BSD. - Change-Id: I23844ca0c68ef1ee550f14d46f6dae57d33b7bd2 + In DragonFly BSD, added libraries from ports are placed into /usr/local. + Therefore, this directory must be added for the preprocessor, compiler, and + linker. -2017-07-25 15:17 +0000 [d056f6b2fe] Sean Bright + 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. - * res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours + ASTERISK-27820 - Change-Id: Ia578ede1a55b21014581793992a429441903278b + Change-Id: I186d88d99cfa4de6569888e12ac97bd2f441c422 -2017-07-26 08:48 +0000 [11cd3be506] Sean Bright +2018-04-20 05:18 +0000 [6e9a612293] Alexander Traud - * res_pjsip_pidf_eyebeam_body_supplement: Correct status presentation + * install_prereq: Add DragonFly BSD. - This change fixes PIDF content generation when the underlying device - state is considered in use. Previously it was incorrectly marked - as closed meaning they were offline/unavailable. The code now - correctly marks them as open. + ASTERISK-27820 - Additionally: + Change-Id: I718ddb000fe5184b1bdc7759da67a370a7520144 - * Generate an XML element for our activity instead of a using a text - node. +2018-04-18 11:41 +0000 [b437656c2e] Chris-Savinovich - * Consider every extension state other than "unavailable" to be 'open' - status. + * "confbridge show profile bridge" does not output "sfu" when video_mode is sfu - * Update the XML namespaces and structure to reflect those - documented in RFC 4480 + Fixes a bug on the "confbridge show profile bridge" cli command + that showed "video_mode=no video" when video_mode was set + to "sfu" - * Use 'on-the-phone' (defined in RFC 4880) instead of 'busy' as the - "in use" activity. This change results in eyeBeam using the - appropriate icon for the watched user. + ASTERISK-27418 #close - This was tested on eyeBeam 1.5.20.2 build 59030 on Windows. + Change-Id: I481e3172c7f872664c7ac7809879d541c9f031e9 - ASTERISK-26659 #close - Reported by: Abraham Liebsch - patches: - ASTERISK-26659.diff submitted by snuffy (license 5024) +2018-04-18 15:40 +0000 [179ae87cf4] Corey Farrell - Change-Id: I6e5ad450f91106029fb30517b8c0ea0c2058c810 + * Build System: Add missing ASTMM_LIBC to flex output. -2017-07-26 09:27 +0000 [76270c0f78] Sean Bright + 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. - * app_queue: Add announce-position-only-up option + ASTERISK~27813 - Setting this option will cause the Queue application to only announce - the caller's position if it has improved since the last time that we - announced it. + Change-Id: I7263e9e4217a17bde4ffaa2087a8f8aeb2a8588c - Change-Id: I173a124121422209485b043e2bf784f54242fce6 +2018-04-18 13:40 +0000 [80e6952013] Sean Bright -2017-06-26 07:52 +0000 [154e74eced] Torrey Searle + * format_pcm: Correct behavior of fseek and ftell for G.722 - * chan_pjsip: add a new function PJSIP_DTMF_MODE + 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. - This function is a replica of SIPDtmfMode, allowing the DTMF mode of a - PJSIP call to be modified on a per-call basis + Change-Id: I6a8c7352624b930a5f2d9e4857f75283fa5dd9f9 - ASTERISK-27085 #close +2018-04-17 05:33 +0000 [95e8450194] Alexander Anikin - Change-Id: I20eef5da3e5d1d3e58b304416bc79683f87e7612 + * chan_ooh323: introduce localras config parameter -2017-07-17 11:01 +0000 [451d86d62e] Joshua Colp + Introduce localras parameter that specify source IP + for connecting to Gatekeeper. Useful for multihome configurations. - * bridge_softmix / res_rtp_asterisk: Fix packet loss and renegotiation issues. + ASTERISK-25129 #close + Reported by: Dmitry Melekhov + Tested by: Dmitry Melekhov - This change does a few things to improve packet loss and renegotiation: + Change-Id: I0b604b01793f3e02a776502659e07cd3fc7e3097 - 1. On outgoing RTP streams we will now properly reflect out of order - packets and packet loss in the sequence number. This allows the - remote jitterbuffer to better reorder things. +2018-04-18 05:32 +0000 [446320f1d4] Alexander Anikin - 2. Video updates can now be discarded for a period of time - after one has been sent to prevent flooding of clients. + * chan_ooh323: Fix cppcheck warnings - 3. For declined and removed streams we will now release any - media session resources associated with them. This was not - previously done and caused an issue where old state was being - used for a new stream. + Fix cppcheck warnings about redundant conditions and possible + null pointer usage - 4. RTP bundling was not actually removing bundled RTP instances - from the parent. This has been resolved by removing based on - the RTP instance itself and not the SSRC. + ASTERISK-27793 #close + Reported by: Ilya Shipitsin + Tested by: Ilya Shipitsin - 5. The code did not properly handle explicitly unbundling an - RTP instance from its parent. This now works as expected. + Change-Id: I0b31933b062a23331dbac9a82b8bcfe345f406f6 - ASTERISK-27143 +2018-04-04 13:12 +0000 [8de3fa2b56] Joshua Colp - Change-Id: Ibd91362f0e4990b6129638e712bc8adf0899fd45 + * bridge_softmix / app_confbridge: Add support for REMB combining. -2017-07-20 08:08 +0000 [2128dc7c87] Sergej Kasumovic + 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. - * res_stasis_device_state: Unsubscribe should remove old subscriptions + Other behaviors can be added in the future and the existing + average one may be adjusted, but this provides the foundation + to do so. - Case scenario with Applications ARI: + Support for configuring which behavior to use has been + added to app_confbridge. - * Once you subscribe to deviceState with Applications REST API, it will be - added into subscription pool. + ASTERISK-27804 - * When you unsubscribe it will remove from the device_state_subscription - hash table but not from the subscription pool. + Change-Id: I9eafe4e7c1f72d67074a8d6acb26bfcf19322b66 - * When you subscribe again, it will add it to pool again. +2018-04-13 15:14 +0000 [f79a372941] George Joseph - * Now you will have two subscriptions and you will receive same event - twice. + * streams: Add string metadata capability - This fix should now remove deviceState subscription from pool and it - should fix unsubscribe on deviceState. + Replaces the never used opaque data array. - ASTERISK-27130 #close + Updated stream tests to include get/set metadata and + stream clone with metadata. - Change-Id: I718b70d770a086e39b4ddba4f69a3c616d4476c4 + Added stream metadata dump to "core show channel" -2017-07-24 13:30 +0000 [927fc6bbd9] Joshua Colp + Change-Id: Id7473aa4b374d7ab53046c20e321037ba9a56863 - * core: Add VP9 passthrough support. +2018-04-13 15:17 +0000 [f7e7ce6ba2] George Joseph - This change adds VP9 as a known codec and creates a cached - "vp9" media format for use. + * utils: Add ast_assert_return - Change-Id: I025a93ed05cf96153d66f36db1839109cc24c5cc + Similar to pjproject's PJ_ASSERT_RETURN macro, this one will do the + following... -2017-07-21 15:57 +0000 [9aa4942a49] Matthew Fredrickson + If the assert passes... NoOp - * format.h: Fix a few minor errors in comments. + 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. - A few minor problems were found in comments in format.h. This patch fixes them. + If the assert fails and AST_DEVMODE is not defined, return from the + calling function with the supplied value. - Change-Id: I07f0bdb47b93359b361c4c3d8ecc87cd3199dd94 + The macro will execute a return without a value if one isn't suppled. -2017-07-23 18:34 +0000 [0219d25e4e] Joshua Colp + Change-Id: I0003844affeab550d5ff5bca7aa7cf8a559b873e - * res_pjsip: Add support for dnsmgr to external_media_address. +2018-04-10 16:09 +0000 [8135558bab] George Joseph - The "external_media_address" option on transports is now - resolved using dnsmgr. This allows it to be automatically - refreshed regularly if refreshes are enabled in dnsmgr. - If the system is using a dynamic IP address a dynamic DNS - hostname can be provided to keep the IP address up to - date. + * app_sendtext: Enhance SendText to support Enhanced Messaging - Change-Id: Ia54771720dff0105bde55d5bbb81a3ba437e05b2 + 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. -2017-07-19 18:11 +0000 [85c631294a] Richard Mudgett + Change-Id: I648b4574478119f95de09d9f08e9595831b02830 - * app_voicemail.c: Allow mailbox entry on authentication retry prompt. +2017-09-27 11:44 +0000 [4fb7967c73] George Joseph - The following testsuite voicemail tests were failing to re-enter the - mailbox after the first login attempt. + * bridge_softmix: Forward TEXT frames - tests/apps/voicemail/authenticate_invalid_mailbox - tests/apps/voicemail/authenticate_invalid_password + 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. - The tests were noting the start of the vm-incorrect-mailbox prompt and - immediately sending the mailbox for the next login attempt. Since the - invalid message playback had to complete before the digits were - recognized, the test passed for the wrong reason and added approximately - 20 seconds to the test times. + 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. - * Allow the vm-incorrect-mailbox prompt to get interrupted by the mailbox - digits like the initial vm-login prompt so the tests are able to enter the - intended mailbox. + * 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. - Change-Id: I1dc53fe917bfe03a4587b2c4cd24c94696a69df8 + * 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. -2017-07-21 14:20 +0000 [e0ad75ec2a] Rusty Newton + * bridge_softmix now forwards TEXT and TEXT_DATA frames to all + participants (except the sender). - * Sounds: Update Makefile for Extra sounds 1.5.1 release + * 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. - Incrementing version for the Extra sounds release. 1.5.1 Extra sounds - removes two prompts that were moved into the Core packages in the 1.6 Core - sounds release. + * bridge_channel now calls ast_sendtext_data for TEXT_DATA frame + types and ast_sendtext for TEXT frame types. - ASTERISK-27142 #close + * 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: I82f017812b0ea9599e19dd4635afd55611f13ee7 + Change-Id: Idacf5900bfd5f22ab8cd235aa56dfad090d18489 -2017-07-14 13:47 +0000 [715d79b60d] Rusty Newton +2018-04-17 07:06 +0000 [8a1ffb050b] Alexander Traud - * say.c: Fix file locations for second, seconds, minute, minutes files + * utils/pval: Add -lBlocksRuntime for compiler clang conditionally. - The seconds and minutes files have always existed in the base language - directory of the Core package. So say.c has always been calling the wrong - location (under digits/) for those two files and in the case of second and - minute they didn't exist in the Core packages at all. + ASTERISK-27809 - The 1.6 sounds release moves the second and minute files into Core from - Extra for the languages that already had them. A future release will include - the second and minute files for languages that didn't already have them. + Change-Id: I930b364a33d54cc08dedfcd5bb45f7e83242f134 - This patch just changes all the target locations for second, seconds, - minute, and minutes that were under the digits subdir to be under the root of - sounds instead. Which is where the sounds will be for some languages after 1.6 - sounds and for all languages after a future release. +2018-04-17 05:27 +0000 [3d9345e3ae] Alexander Traud - ASTERISK-25810 #close + * chan_vpb: Avoid GNU old-style field designator extension. - Change-Id: I05d9d4bee6a7237030530a46e7eb3df15f13f702 - Reported-by: Nicolas Riendeau + clang 6.0 warned about this. Beside that, this change removes the used variable + 'desc'. -2017-06-18 19:24 +0000 [eea9da2f42] Corey Farrell + ASTERISK-27808 - * Core: Add support for systemd socket activation. + Change-Id: Ia26bdcc0a562c058151814511cfcf70ecafa595b - This change adds support for socket activation of certain SOCK_STREAM - listeners in Asterisk: - * AMI / AMI over TLS - * CLI - * HTTP / HTTPS +2018-04-09 17:09 +0000 [f5d5083ea7] Ben Ford - Example systemd units are provided. This support extends to any socket - which is initialized using ast_tcptls_server_start, so any unknown - modules using this function will support socket activation. + * res_rtp_asterisk: Add support for receiving and handling NACK requests. - Asterisk continues to function as normal if socket activation is not - enabled or if systemd development headers are not available during - build. + 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. - ASTERISK-27063 #close + 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. - Change-Id: Id814ee6a892f4b80d018365c8ad8d89063474f4d + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements -2017-07-21 11:24 +0000 [94de9d3eea] George Joseph + ASTERISK-27806 #close - * Restore the incorrectly deleted spandspflow2pcap.log + Change-Id: I7f7f124af3b9d5d2fd9cffc6ba8cb48a6fff06ec - Change-Id: Iafe78cf0fb1e7064223d4dea279eeb776c8fa8e5 +2018-04-16 16:38 +0000 [d50d637764] Richard Mudgett -2017-07-21 07:56 +0000 [6239203628] George Joseph + * stringfields: Collect extended stringfields into the stringfield section. - * Update make_ari_stubs to correct version + Use of extended stringfields is a temporary mechanism to avoid ABI + breakage in released branches without resorting to more inconvienient + methods. - Change-Id: I18575b46db48d62edc72f37dc23b4ab22b43a8b1 + * Collect existing extended stringfields into the parent stringfield + section of the struct. -2017-07-20 09:57 +0000 [6650ae43e1] Sean Bright + Change-Id: I8d46d037801b4518837c3ea4b6df95ceadc9436b - * corosync: Fix corosync library name in configure.ac +2018-04-13 14:32 +0000 [4aeec6100f] Ben Ford - Also add new corosync packages to install_prereq. + * res_musiconhold: Don't restart MOH from beginning after announcement. - Reported by Travis Ryan in #asterisk-dev + 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. - Change-Id: Ib861c95ba630fed62dc54e56784ad8446ed9d2db + ASTERISK-27774 #close + Reported by: lvl -2017-07-20 13:06 +0000 [b172474728] George Joseph + Change-Id: I86b2885ee7063268f9b9747eddb788336ade989b - * Update MAINLINE_BRANCH to 15 +2018-03-28 15:13 +0000 [3bb6cf43b5] Richard Mudgett - Change-Id: I425d542b600ceabeef2342e9adfeb68c484a043d + * pjsip_scheduler.c: Add ability to trace scheduled tasks. -2017-07-20 10:52 +0000 [3e8d628c0e] George Joseph + 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. - * Update AMI and ARI versions for master/15 and update UPDATE.txt + Change-Id: I91967eb3d5a220915ce86881a28af772f9a7f56b - AMI goes from 3.2.0 to 4.0.0 - ARI goes from 2.0.0 to 3.0.0 +2018-03-27 11:04 +0000 [237d341bbd] Richard Mudgett - Copied UPGRADE.txt -> UPGRADE-15.txt - Created new UPGRADE.txt - Removed a log file that was accidentally checked in a while ago + * res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations. - Change-Id: I1c794f910038459b13e16f9c3a12c44e56f142f7 + 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. -2017-07-18 15:04 +0000 [e7d9e42616] Benjamin Keith Ford + 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(). - * pjsip: Increase maximum packet size. + 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(). - The maximum packet size for PJSIP has been increased to handle the - multiple streams being added for WebRTC. + * 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. - Change-Id: I9ea1e8d02668c544acadcb1c6200e1cc1bd588b3 + * Redirected ast_sip_push_task_synchronous() to + ast_sip_push_task_wait_servant() to preserve API for released branches. -2017-07-17 07:19 +0000 [bcd3f65174] Joshua Colp + ASTERISK_26806 - * bridge_softmix: Don't reorder streams on participant leaving. + Change-Id: Id040fa42c0e5972f4c8deef380921461d213b9f3 - When a participant leaves a bridge while operating in SFU mode - their respective stream on every other participant needs to be - removed. Leaving the stream out of the new topology results in - every stream after it being moved and reordered. This causes - problems with clients. Instead simply mark the stream as removed - which leaves it in place in the SDP and doesn't reorder or touch - any other streams. +2018-03-21 19:43 +0000 [c2f85e881d] Richard Mudgett - ASTERISK-27136 + * pjsip_scheduler.c: Fix some corner cases. - Change-Id: I4b3f840adcdf69b83842b0d8a737665ba0ef9cb1 + * 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. -2017-07-16 12:31 +0000 [f48695ce5b] Joshua Colp + * 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. - * bridge_softmix: Use removed stream spots when renegotiating. + * Skip the scheduled task if the task was canceled between queueing the + task to the serializer and the serializer actually executing the task. - Streams are never truly removed in SDP, they still occupy - a location within the SDP. This location can be reused by - another stream if it so chooses. + * Reorder struct ast_sip_sched_task to avoid unnecessary padding. Removed + task_id and added next_periodic. - This change takes advantage of this such that if a new stream - is needing to be added for a new participant any removed streams - are instead replaced first. This reduces the size of the SDP - and the number of streams. + * Hold a ref to the passed in serializer so the serializer cannot go away + on the scheduled task. - ASTERISK-27134 + ASTERISK_26806 - Change-Id: I95cdcfd55cf47e02ea52abb5d94008db3fb68b1d + Change-Id: I6c8046b75f6953792c8c30e55b836a4291143f24 -2017-07-16 12:18 +0000 [942ee54b53] Joshua Colp +2018-03-22 19:09 +0000 [96c4a57edf] Richard Mudgett - * res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use. + * pjsip_scheduler.c: Sort "pjsip show scheduled_tasks" output. - This change makes it so that if an RTCP packet is being sent - the RTP ICE component is used for sending if RTCP-MUX is in use. + * A side benefit is that the scheduled tasks are not completely blocked + while the CLI command executes. - ASTERISK-27133 + * Adjusted the "Task Name" column width to have more room for longer + names. - Change-Id: I6200f611ede709602ee9b89501720c29545ed68b + Change-Id: Iec64aa463ee8b10eef90120e00c38b1fb444087e -2017-07-14 01:25 +0000 [26f149ab0a] Sergej Kasumovic +2018-04-02 15:59 +0000 [429c758e48] Evandro Cesar Arruda - * app_confbridge: Make sure name recordings are always removed from the filesystem + * cdr_mysql: Compile error because MYSQL_PORT definition is missing - This commit fixes two possible scenarios: + 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. - * When recording name and if during recording you hangup, file is never - removed. This is due to the fact file location is nulled. - * When recording name and if you hangup during thank-you prompt, file - is never removed. + ASTERISK-27782 #close - ASTERISK-27123 #close + Change-Id: Ieee56c836fc2e8bd021c456145bba04c6068bb77 - Change-Id: I39b7271408b4b54ce880c5111a886aa8f28c2625 +2018-04-09 20:00 +0000 [0747ac893b] Chris-Savinovich -2017-07-14 01:11 +0000 [d3f5b265c7] Sergej Kasumovic + * res_pjsip_session: Rewrite o= with external_media_address. - * chan_iax2: On reload make sure to check for existing MWI subscription + 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. - On every reload of chan_iax2 module, MWI subscription was added, which - results in additional taskprocessors being accumulated over time. + ASTERISK-27614 #close - This commit fixes it by making sure we check for existing subscription - first. + Change-Id: I84f3360f3606b8c4e8d161edb228799ec0b8a302 - This was verified with 'core show taskprocessors' CLI command. +2018-02-22 12:18 +0000 [1cd704de36] Nathan Bruning - ASTERISK-27122 #close + * res_pjsip_notify.c: enable in-dialog NOTIFY - Change-Id: Ie2ef528fd5ca01b933eeb88188cc10967899cfb9 + 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). -2017-07-10 18:17 +0000 [7da6ddda30] Kevin Harwell + This extends res_pjsip_notify to allow for in-dialog messages. - * res_pjsip: Add "webrtc" configuration option + ASTERISK-27697 - This patch creates a new configuration option called "webrtc". When enabled it - defaults and enables the following options that are needed in order for webrtc - to work in Asterisk: + Change-Id: If7f3151a6d633e414d5dc319d5efc1443c43dd29 - rtcp-mux, use_avpf, ice_support, and use_received_transport=enabled - media_encryption=dtls - dtls_verify=fingerprint - dtls_setup=actpass +2018-03-22 13:35 +0000 [7157dcf83b] Richard Mudgett - When "webrtc" is enabled, this patch also parses the "msid" media level - attribute from an SDP. It will also appropriately add it onto the outgoing - session when applicable. + * pjsip_scheduler.c: Fix ao2 usage errors. - Lastly, when "webrtc" is enabled h264 RTCP FIR feedback frames are now sent. + * 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. - ASTERISK-27119 #close + * 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. - Change-Id: I5ec02e07c5d5b9ad86a34fdf31bf2f9da9aac6fd + * Getting a ref to 'tasks' when you aren't copying the pointer into + another location is useless. The 'tasks' container pointer is global. -2017-07-13 15:43 +0000 [3fbb4a0a08] Rusty Newton + * Removed many unnecessary uses of RAII_VAR. - * Sounds: Update for core sounds 1.6 release + * Make ast_sip_schedule_task() name parameter const. - Added necessary lines to make the en_NZ language set selectable and to get - core sounds 1.6 pulled down. + ASTERISK_26806 - ASTERISK-26807 #close - ASTERISK-25816 #close - ASTERISK-26274 #close + Change-Id: I5c62488e651314e2a1dbc01f5b078a15512d73db - Change-Id: I84e4dd4696568cc1ba318d12ac4b075461d6eed4 +2018-03-23 06:49 +0000 [879e592baf] Corey Farrell -2017-07-10 14:04 +0000 [78a50b0343] Corey Farrell + * Build System: Enable python3 compatibility. - * core: Add PARSE_TIMELEN support to ast_parse_arg and ACO. + * 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. - This adds support for parsing timelen values from config files. This - includes support for all flags which apply to PARSE_INT32. Support for - this parser is added to ACO via the OPT_TIMELEN_T option type. + I have not tested spandspflow2pcap.py or voicemailpwcheck.py, only the + print syntax has been fixed. - Fixes an issue where extra characters provided to ast_app_parse_timelen - were ignored, they now cause an error. + Change-Id: If5c5b556a2800d41a3e2cfef080ac2e151178c33 - Testing is included. +2018-04-05 18:33 +0000 [0c03eab962] Richard Mudgett - ASTERISK-27117 #close + * res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge - Change-Id: I6b333feca7e3f83b4ef5bf2636fc0fd613742554 + 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. -2017-06-30 13:55 +0000 [065c3005ad] Joshua Colp + * 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. - * res_rtp_asterisk / res_pjsip: Add support for BUNDLE. + Change-Id: I209beb0e748fa4f4b92a576f36afa8f495ba4c82 - BUNDLE is a specification used in WebRTC to allow multiple - streams to use the same underlying transport. This reduces - the number of ICE and DTLS negotiations that has to occur - to 1 normally. +2018-03-28 07:27 +0000 [c7bd554094] Joshua Colp - This change implements this by adding support for it to - the RTP SDP module in PJSIP. BUNDLE can be turned on using - the "bundle" option and on an offer we will offer to - bundle streams together. On an answer we will accept any - bundle groups provided. Once accepted each stream is bundled - to another RTP instance for transport. + * pjsip / res_rtp_asterisk: Add support for sending REMB - For the res_rtp_asterisk changes the ability to bundle - an RTP instance to another based on the SSRC received - from the remote side has been added. For outgoing traffic - if an RTP instance is bundled to another we will use the - other RTP instance for any transport related things. For - incoming traffic received from the transport instance we - look up the correct instance based on the SSRC and use it - for any non-transport related data. + 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-27118 + ASTERISK-27776 - Change-Id: I96c0920b9f9aca7382256484765a239017973c11 + Change-Id: Ic53f821c1560d8924907ad82c4d9c0bc322b38cd -2017-07-11 09:55 +0000 [8b535a406b] Torrey Searle +2018-04-05 20:02 +0000 [39016e3582] Joshua Colp - * res/res_stasis_snoop: generate silence when audiohook returns null + * res_rtp_asterisk: Fix minimum block word length for REMB. - Currently when rtp is paused, no packets are written to the - recorded audio file, causing the silence to be skipped and recording - not properly time aligned. The read handler as been adapted to - return a silence frame of the correct size. + The minimum block word length is actually 4, not 5. - ASTERISK-27128 #close + Change-Id: I878542218225aed72c72bdf1b856fc822cd2d649 - Change-Id: I2d7f60650457860b9c70907b14426756b058a844 +2018-04-05 18:48 +0000 [8a602f18db] Joshua Colp -2017-06-22 07:47 +0000 [d42a9cc9dc] Torrey Searle + * res_rtp_asterisk: Queue video update on picture loss indication. - * res/res_pjsip_t38 ensure t38 requests get rejected quickly + 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. - arm the t38 webhook always, so we can correctly reject a - T38 negotiation request when t38 is disabled on a channel + Change-Id: I1894be02e39ee10a0af841b5a1dca5f0ec7d60b6 - Change-Id: Ib1ffe35aee145d4e0fe61dd012580be11aae079d +2018-04-05 17:40 +0000 [d72a2966da] Richard Mudgett -2017-07-12 13:24 +0000 [6b138046e7] Corey Farrell + * chan_sip.c: Fix INVITE with replaces channel ref leak. - * core: Add digit filtering to ast_waitfordigit_full + Given the below call scenario: + A -> Ast1 -> B + C <- Ast2 <- B - This adds a parameter to ast_waitfordigit_full which can be used to only - stop waiting when certain expected digits are received. Any unexpected - DTMF digits are simply ignored. + 1) A calls B through Ast1 + 2) B calls C through Ast2 + 3) B transfers A to C - This also creates a new dialplan application WaitDigit. + 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. - ASTERISK-27129 #close + 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. - Change-Id: Id233935ea3d13e71c75a0861834c5936c3700ef9 + * 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. -2017-07-11 04:48 +0000 [b54eb167b4] Holger Hans Peter Freyther + * Eliminated RAII_VAR in handle_invite_replaces(). - * app_playback.c: Use the timezonename parameter + ASTERISK-27740 - In say_date_generic the timezonename parameter is passed but never - used. Fix it by passing it to the ast_localtime function. + Change-Id: I7edbed774314b55acf0067b2762bfe984ecaa9a4 - ASTERISK-27124 +2018-03-21 19:40 +0000 [71a67a98c4] Richard Mudgett - Change-Id: I63106b8db10426d417d7275f22554a616e92fae4 + * res_pjsip: Update authenticate_qualify documentation. -2017-07-12 15:07 +0000 [e83b9d141a] Sean Bright + Change-Id: I3811de0014b1ffe96d4a3b49cddd5d4ca02ee5d4 - * basic-pbx: Remove res_pjsip_multihomed from sample config +2018-04-02 16:49 +0000 [6774913e82] Richard Mudgett - ASTERISK-27127 #close - Reported by: HZMI8gkCvPpom0tM + * app_agent_pool.c: Fix off nominal ref leak. - Change-Id: I2b0c54570d58156e37166ac536728af3b6c01789 + Change-Id: Ib427ffc2c802620eaafb08b1c2a17dddd8fb8eb6 -2017-07-11 14:33 +0000 [7f09fd2c2f] Joshua Colp +2018-04-04 10:02 +0000 [e40fd7a232] Corey Farrell - * bridge/core_unreal: Fix SFU bugs with forwarding frames. + * Build System: Strip '-std=c99' from CFLAGS provided by libraries. - This change fixes a few things uncovered during SFU testing. + 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. - 1. Unreal channels incorrectly forwarded video frames when - no video stream was present on them. This caused a crash when - they were read as the core requires a stream to exist for the - underlying media type. The Unreal channel will now ensure a - stream exists for the media type before forwarding the frame - and if no stream exists then the frame is dropped. + ASTERISK-27629 #close - 2. Mapping of frames during bridging from the stream number of - the underlying channel to the stream number of the bridge was - done in the wrong location. This resulted in the frame getting - dropped. This mapping now occurs on reading of the frame from - the channel. + Change-Id: I13389613b194abbac77becf90cd950dc168704db - 3. Bridging was using the wrong ast_read function resulting in - it living in a non-multistream world. +2018-04-03 14:39 +0000 [66f13ed694] Corey Farrell - 4. In bridge_softmix when adding new streams to existing channels - the wrong stream topology was copied resulting in no streams - being added. + * Build System: Fixes for configure script. - Change-Id: Ib7445722c3219951d6740802a0feddf2908c18c8 + * Replace all 'else if' statements with 'elif'. + * Use loop to detect versioned lua headers and libraries. -2017-07-11 07:26 +0000 [b7a875778a] George Joseph + 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. - * res_musiconhold: Add kill_escalation_delay, kill_method to class + Change-Id: I3276f9aee955014108345be6092f51c932b43a0f - 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. +2018-04-02 08:53 +0000 [0f6431e8e4] Joshua Colp - * 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. + * app_confbridge / bridge_softmix: Add ability to configure REMB interval. - * 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. + 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. - Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b + ASTERISK-27786 -2017-07-05 12:44 +0000 [5d86da61a6] Benjamin Keith Ford + Change-Id: I0e49eae60f369c86434414f3cb8278709c793c82 - * manager: Remove AMI "Queues" action. +2018-01-02 07:54 +0000 [f91263cf46] George Joseph - When performing the "Queues" action via AMI, it outputs the same - text that the Asterisk CLI outputs when running a "queue show" - command, which does not conform with the AMI spec. "QueueStatus" - already does what the "Queues" action should do, so instead of - correcting the output, the "Queues" action will be removed and - "QueueStatus" should be used instead. + * res_pjsip: Correct usages of pjproject's timer heap - ASTERISK-27073 #close - Reported by: Brian + Fix some timer heap initializations and cancels to try and prevent + crashes and timer heap issues. - Change-Id: Id11743859758255b69cc3a557750d7a56c6d16f8 + Change-Id: I64885d190fa22097d1b55987091375541e57a7ee -2017-07-03 07:30 +0000 [d58ef31acd] Tzafrir Cohen +2018-03-25 13:35 +0000 [48720e7def] George Joseph - * Avoid setting maxfiles for a remote asterisk + * pjroject_bundled: Add already-destroyed check to tsx_timer_callback - Setting maxfiles (maximum number of open files) has no practical - effect on a remote asterisk (rasterisk, rasterisk -x). + 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. - It has an ill effect of printing an extra message, which - may be annoying in case of -x. + Change-Id: If93acd5e48d9ca5bb553f2405d5afc836842fe1c - ASTERISK-27105 #close +2018-03-25 13:25 +0000 [7c03b2713e] George Joseph - Change-Id: Iaf9eb344e4b4b517df91b736b27ec55f6a6921a2 + * pjproject_bundled: timer: Clean up usage of timer heap -2017-07-05 15:31 +0000 [303f935a50] George Joseph + Added a new pj_timer_entry_reset function that resets a timer_entry + for re-use. - * http.c: Reduce log spam + Changed direct settings of timer_entry fields to use + pj_timer_entry_init and pj_timer_entry_reset. - Messages like "fwrite() failed: Connection reset by peer" are no - help whatsoever, especially since they can be caused simply by a - client disconnecting. + Fixed issues where timers were being rescheduled incorrectly. - * Make those WARNINGs DEBUGs. - * Check the return from ast_iostream_printf of headers. + Change-Id: I5b624bfbc5c1429117484b9b24567293002148e6 - Change-Id: I17bd5f3621514152a7b2b263c801324c5e96568b +2018-03-29 17:07 +0000 [97cc67b12f] Richard Mudgett -2017-07-07 11:19 +0000 [8f72128e66] Benjamin Keith Ford + * res_pjsip: Fix deadlock on reliable transport shutdown. - * res_pjsip: Fix crash with from_user containing invalid characters. + 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. - If the from_user field contains certain characters (like @, {, ^, etc.), - PJSIP will return a null value for the URI when attempting to parse it. - This causes a crash when trying to dial out through a trunk that contains - these invalid characters in its from_user field. + * res_pjsip_pubsub.c: Avoid the deadlock by pushing the subscription + removal to the subscription serializer. - This change checks the configuration and ensures that an endpoint will - not be created if the from_user contains an invalid character. It also - adds a null check to the PJSIP URI parsing as a backup. + * 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-27036 #close - Reported by: Maxim Vasilev + ASTERISK-27706 - Change-Id: I0396fdb5080604e0bdf1277464d5c8a85db913d0 + Change-Id: I56b647aea565f24dba33e9e5ebeed4cd3f31f8c4 -2017-06-27 19:27 +0000 [03ae8b0105] Richard Mudgett +2018-03-07 06:15 +0000 [f65488f546] Ross Beer - * json.c: Add backtrace log to find 'Invalid UTF-8 string' errors + * pjsip_transport_events.c: Fix crash using stale transport pointer. - Change-Id: I9020ff9f2b3749904317c0c173f47a1bbed6f929 + 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. -2017-07-05 13:39 +0000 [9cd8a1df79] Richard Mudgett + * Invoke the transport monitor callback checks when the transport is + destroyed in addition to when it is disconnected and shutdown. - * res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock. + ASTERISK-27688 - When a message is received on the TURN socket, the code processing the - message needs to call into the ICE/STUN session for further processing. - This code path locks the TURN group lock then the ICE/STUN group lock. In - another thread an ICE/STUN timer can fire off to send a keep alive message - over the TURN socket. In this code path, the ICE/STUN group lock is - obtained then the TURN group lock is obtained to send the packet. A - classic deadlock case if the group locks are not the same. + Change-Id: Ia9b5469fea8f2b3f2d8476fae6b748a4d23e7261 - * Made TURN get created using the ICE/STUN session's group lock. +2018-03-19 09:36 +0000 [879743ab8f] Ben Ford - NOTE: I was originally concerned that the ICE/STUN session can get - recreated by ice_reset_session() for an event like RTCP multiplexing - causing a change during SDP negotiation. In this case the TURN group lock - would become different. However, TURN is also recreated as part of the - ICE/STUN recreation in ice_create() when all known ICE candidates are - added to the new ICE session. While the ICE/STUN and TURN sessions are - being recreated there is a period where the group locks could be - different. + * test_data_buffer.c: Add unit tests for data buffer API. - ASTERISK-27023 #close - Patches: - res_rtp_asterisk-turn-deadlock-fix.patch (license #6502) - patch uploaded by Michael Walton (modified) + 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. - Change-Id: Ic870edb99ce4988a8c8eb6e678ca7f19da1432b9 + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements -2017-07-06 05:55 +0000 [7a4f577eb7] George Joseph + Change-Id: Id5b599aa15a5e61d0ec080f97cd0c57bd07e6f8f - * Fix alembic branches +2018-02-23 13:49 +0000 [138e0eff4e] Ben Ford - Change-Id: I04f607f084bda9b1b7f626e8e9735c37dc751187 + * Add data buffer API to store packets. -2017-06-23 11:17 +0000 [1028f64be4] Richard Mudgett + 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. - * bridge_native_rtp.c: Fix direct media video RTP instance ACL check. + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements - The video stream was using the audio stream RTP instance addresses to - check if the video RTP gets directed to an allowed direct media Access - Control List (ACL) address. There is no guarantee that the video RTP - instance uses the same addresses as the audio RTP instance. + Change-Id: Iff13c5d4795d52356959fe2a57360cd57dfade07 - This looks like it has been a bug since v11 when direct media ACL was - first added to chan_sip and then faithfully reproduced through a couple - code refactorings into the new bridging architecture. +2018-03-25 13:12 +0000 [a87141ddfd] George Joseph - Change-Id: I8ddd56320e0eea769f3ceed3fa5b6bdfb51d681a + * pjproject_bundled: Add patch for pj_atomic crashes -2017-07-05 10:29 +0000 [325eeced6a] Sean Bright + 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. - * core: Remove 'Data Retrieval API' + Teluu also added some checks to the win32 implementation as well. - This API was not actively maintained, was not added to new modules - (such as res_pjsip), and there exist better alternatives to acquire the - same information, such as the ARI. + Change-Id: Id25f70b79fdedf44ead6e6e1763a4417d3b3f825 - Change-Id: I4b2185a83aeb74798b4ad43ff8f89f971096aa83 +2018-03-21 08:52 +0000 [e14b0e960d] Joshua Colp -2017-06-19 11:22 +0000 [d556c67f9f] Rodrigo Ramírez Norambuena + * res_rtp_asterisk: Add support for raising additional RTCP messages. - * app_queue: Add change priority of call + 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. - This patch include a feature to change the priority a caller in a - queue by CLI and AMI. + The RTCP feedback message type is now handled and REMB[1] messages + are raised with their containing information. - Change-Id: I55d520d71cc1cefe9a9b81fefaefc14679e96133 + This also fixes a bug where all feedback messages were triggering + video updates instead of just FIR and FUR. -2017-07-03 10:59 +0000 [910c05455d] Alexander Traud + 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. - * chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support). + [1] https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 - When sip.conf contained tcpenable=yes and autodomain=yes, the TCP domain was - added in any case, because of a local Boolean-negation error of the return value - of ast_sockaddr_cmp. After fixing this error for TCP and TLS, the TLS domain was - still always added with tlsenable=yes, because the domains were not compared - just on the address but also on the port – and TLS is always on a different port - than UDP/TCP. + ASTERISK-27758 + ASTERISK-26366 - ASTERISK-27106 + Change-Id: I680da0ad8d5059d5e9655d896fb9d92e9da8491e - Change-Id: I14fe9e319e238320b094016980445ef3a5b3337c +2018-03-27 08:27 +0000 [455cee99ae] Florian Floimair -2017-07-03 10:38 +0000 [4398aa8fa4] Alexander Traud + * main: Update copyright notice with year 2018 - * chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support). + Change-Id: I2d80bc5edf940fab914cba3d8a0fa0b5eb2a3148 - Because of a copy-and-paste error when the struct ast_sockaddr changed, - tlsbindaddr was not added, when sip.conf contained autodomain=yes; see - "show sip domains" on the command-line interface (CLI) of Asterisk. +2018-03-26 07:42 +0000 [48190c7f93] Guido Falsi - ASTERISK-27106 + * core: fix getopt(3) usage - Change-Id: I3d0957150017c223136968ef1266f275d0d6695e + Setting optind = 0 is forced to 1 in glibc implementation, but + causes option parsing to be flawed in other implementations, for + example on FreeBSD. -2017-06-29 13:58 +0000 [950b39a4f5] Sean Bright + ASTERISK-27773 #close - * app_voicemail: Cleanup ODBC connection handling + Change-Id: Ia548e69f8302e9754dbbedb6bc451c0700c66f61 - The primary focus of this patch is adding a missing call to - ast_odbc_release_obj(), but is also a general cleanup of the ODBC - related code in app_voicemail. +2018-03-23 13:15 +0000 [07cf6b1437] Alexander Traud - ASTERISK-27093 #close + * install_prereq: Add Slackware (somehow). - Change-Id: I8e285142eaeb3146b4287a928276b70db76c902b + ASTERISK-27770 -2017-06-30 23:57 +0000 [50ddb56dad] Corey Farrell + Change-Id: Ib87e0483c785542238cfe34c1e884d5a31edfaab - * channel: Clear channel flag in error branch. +2018-03-23 09:13 +0000 [307a295d00] Alexander Traud - Clear channel flag AST_FLAG_END_DTMF_ONLY in ast_waitfordigit_full when - ast_read returns NULL. + * install_prereq: Add Gentoo Linux. - ASTERISK-27100 #close + ASTERISK-27769 - Change-Id: Id3039e9a4e74e0cb359f636c9fd0c9740ebf7d9d + Change-Id: Ieb13293cd67481f3a33f58f6f7c8c3ee1e338e7a -2017-06-29 18:27 +0000 [b485f6c59c] Richard Mudgett +2018-03-17 01:02 +0000 [318bf45928] Corey Farrell - * pjsip_distributor.c: Fix deadlock with TCP type transports. + * main/indications: Use ast_cli_completion_add for all completions. - When a SIP message comes in on a transport, pjproject obtains the lock on - the transport and pulls the data out of the socket. Unlike UDP, the TCP - transport does not allow concurrent access. Without concurrency the - transport lock is not released when the transport's message complete - callback is called. The processing continues and eventually Asterisk - starts processing the SIP message. The first thing Asterisk tries to do - is determine the associated dialog of the message to determine the - associated serializer. To get the associated serializer safely requires - us to get the dialog lock. + Change-Id: I371be01f178fb542a9fbe8d97e7ae21aa4d82c36 - To send a request or response message for a dialog, pjproject obtains the - dialog lock and then obtains the transport lock. Deadlock can result - because of the opposite order the locks are obtained. +2018-03-21 14:54 +0000 [75715b95b4] Russell Bryant - * Fix the deadlock by obtaining the serializer associated with the dialog - another way that doesn't involve obtaining the dialog lock. In this case, - we use an ao2 container to hold the associated endpoint and serializer. - The new locks are held a brief time and won't overlap other existing lock - times. + * app_originate: Add async option. - ASTERISK-27090 #close + Add an option to make app_originate not wait for the created channel + to answer. - Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd + Change-Id: I7fc2facd77079abc6321f44e8bcd4e39298de2ae + Requested-by: Frederic Steinfels + Signed-off-by: Russell Bryant -2017-06-29 18:22 +0000 [65a5ac0168] Richard Mudgett +2018-03-22 07:27 +0000 [4f33f56a72] Alexander Traud - * pjsip_distributor.c: Fix unidentified_requests hash functions. + * BuildSystem: pjsip_evsub_set_uas_timeout was not used (part 2). - The OBJ_SEARCH_xxx defines should not be used as if they were individual - bits. They represent a multi-bit enumeration value field. + The previous change was not complete. - Change-Id: I32abc9a475396dab02402a7014357dd94284e17b + ASTERISK-27435 -2017-06-29 15:06 +0000 [e7d41050e0] Kevin Harwell + Change-Id: I11082c14c0ef9c6af8c995084a6851337ea2a90f - * app_stream_echo: misc bug fixes +2018-03-22 05:43 +0000 [d6fda173a4] Alexander Traud - Fixed the following bugs: + * BuildSystem: With external editline, do not require libs for internal editline. - * calls to stream_echo_write had the last two parameters swapped - * ast_read should have been ast_read_stream - * added a null check on the frame's subclass format + ASTERISK-27761 - This also resets the update_sent flag upon receiving SRRCHANGE control frame. - This will then force a video update. + Change-Id: Ib17a7415297a210cfcdbf149e4df9b6edadbfab6 - ASTERISK-26997 +2018-03-21 22:00 +0000 [a6d58c518a] Corey Farrell - Change-Id: I6ad7c8253559b800800433c52339e7f5aa583566 + * core: Create main/options.c. -2017-06-29 14:56 +0000 [7df7b8a90c] Kevin Harwell + 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. - * res_rtp_asterisk: trigger source change control frame when dtls is established + ASTERISK~26245 - There needed to be a way to notify handlers upstream that DTLS had been - established. This patch makes it so once DTLS has been estalished a source - change control frame is put into the read queue. Any handlers can then watch - for that frame and trigger off of it. + Change-Id: I5cf184f4757f9363b80c9e678bdc35c477122380 - ASTERISK-27096 #close +2018-03-21 19:25 +0000 [745b5134cd] George Joseph - Change-Id: I27ff344f5a8c691a1890dfe3254a4b1a49e7f4a0 + * Revert "BuildSystem: In NetBSD, the Python Programming Language is python-X.Y." -2017-06-30 08:31 +0000 [f573e599c0] George Joseph + Something is causing a python2/python3 mismatch on Fedora27. - * pjproject_bundled: Allow passing configure options to bundled + 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 ' - There wasn't any good way to pass options like --host or --build - down to the pjproject configure which makes cross-compiling difficult. + This reverts commit be0e9920b64e3b07501b299d131309b58f9b0ddf. - * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which - can be used to pass arbitrary options to pjproject configure. - * Automatically set the pjproject configure --host and --build - options to match those supplied for the asterisk configure. + Change-Id: I86dd102eb3ead199fe89178cdbadb36b4e2cfd1b - ASTERISK-27097 #close - Reported-by: Kinsey Moore +2018-02-08 13:23 +0000 [411915af28] Corey Farrell - Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e + * loader: Reserve space for additional pointers in ast_module_info. -2017-06-29 14:50 +0000 [c0c99c7618] George Joseph + This creates 4 reserved pointers in case we need additional dependency + management fields. - * chan_pjsip: Fix ability to send UPDATE on COLP + Change-Id: If991ec99b779df1b2dfbd38ce1a0cd79f9e01821 - When connected_line_method is "invite", we're supposed to determine - if the client can support UPDATE and if it can, send UPDATE instead - of INVITE to avoid the SDP renegotiation. Not only was pjproject - not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing - that invite_tsx wasn't NULL which isn't always the case. +2018-03-20 15:28 +0000 [cf73a4203f] Kevin Harwell - * Updated chan_pjsip/update_connected_line_information to drop the - requirement that invite_tsx isn't NULL. - * Submitted patch to pjproject sip_inv.c that sets the - PJSIP_INV_SUPPORT_UPDATE flag correctly. - * Updated pjsip.conf.sample to clarify what happens when "invite" - is specified. + * bridge_softmix: Clear "talking" when a channel is put on hold - ASTERISK-27095 + 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. - Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560 + ASTERISK-27755 #close -2017-06-15 03:12 +0000 [fb7247c57c] Torrey Searle + Change-Id: I930e16c4662810f9f02043d69062f88173c5e2ef - * res_pjsip: Add DTMF INFO Failback mode +2018-03-20 11:53 +0000 [bfefde5b07] Alexander Traud - The existing auto dtmf mode reverts to inband if 4733 fails to be - negotiated. This patch adds a new mode auto_info which will - switch to INFO instead of inband if 4733 is not available. + * BuildSystem: For consistency, avoid extra libs to be empty. - ASTERISK-27066 #close + 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. - Change-Id: Id185b11e84afd9191a2f269e8443019047765e91 + 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. -2017-06-29 03:47 +0000 [ab7d99e62d] Niklas Larsson + Change-Id: I037ef170cf1ad94497151a9ea5071a31c656cafe - * app_queue: Add priority to AMI QueueStatus +2018-03-20 09:58 +0000 [8bd5980e14] Ivan Poddubny - Add priority to callers in AMI QueueStatus response + * func_channel: Delete dead CHANNEL_TRACE code - ASTERISK-27092 #close + The functions behind the flag and the flag itself were removed + from Asterisk 12 as incompatible with the new architecture. - Change-Id: I8d1f737a72c7c38f4cfe1a4ee3ecc0a4f85bd199 + Change-Id: I058493ef7a53ee290fd225bbcbb07bf46b623ccf -2017-05-30 09:12 +0000 [45df25a579] Mark Michelson +2018-03-17 21:26 +0000 [040bb21771] Corey Farrell - * chan_pjsip: Add support for multiple streams of the same type. + * core: Remove additional symbols. - The stream topology (list of streams and order) is now stored with the - configured PJSIP endpoints and used during the negotiation process. + 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 - Media negotiation state information has been changed to be stored - in a separate object. Two of these objects exist at any one time - on a session. The active media state information is what was previously - negotiated and the pending media state information is what the - media state will become if negotiation succeeds. Streams and other - state information is stored in this object using the index (or - position) of each individual stream for easy lookup. + Remove unused symbols: + * channelreloadreason2txt (last used in Asterisk 12). - The ability for a media type handler to specify a callback for - writing has been added as well as the ability to add file - descriptors with a callback which is invoked when data is available - to be read on them. This allows media logic to live outside of - the chan_pjsip module. + 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 - Direct media has been changed so that only the first audio and - video stream are directly connected. In the future once the RTP - engine glue API has been updated to know about streams each individual - stream can be directly connected as appropriate. + Change-Id: I841255995d195f8efc1ed47af9c7a2f131c08645 - Media negotiation itself will currently answer all the provided streams - on an offer within configured limits and on an offer will use the - topology created as a result of the disallow/allow codec lines. +2018-03-17 20:03 +0000 [de77cf8698] Corey Farrell - If a stream has been removed or declined we will now mark it as such - within the resulting SDP. + * core: Remove dead symbols from asterisk.exports.in. - Applications can now also request that the stream topology change. - If we are told to do so we will limit any provided formats to the ones - configured on the endpoint and send a re-invite with the new topology. + * dahdi_chan_name + * dahdi_chan_name_len + * dahdi_chan_mode + * __manager_event + * dialed_interface_info - Two new configuration options have also been added to PJSIP endpoints: + Added comment about __progname and environ being needed for FreeBSD to + prevent accidental removal in the future. - max_audio_streams: determines the maximum number of audio streams to - offer/accept from an endpoint. Defaults to 1. + Change-Id: I3ae026bc541cd9cb572be2ffa95fc359547642b5 - max_video_streams: determines the maximum number of video streams to - offer/accept from an endpoint. Defaults to 1. +2018-03-17 01:39 +0000 [201762f161] Corey Farrell - ASTERISK-27076 + * named_acl: Use ast_cli_completion_add. - Change-Id: I8afd8dd2eb538806a39b887af0abd046266e14c7 + Change-Id: I317a82de976bbdbfe4352c243e32a7bb8f66c377 -2017-06-28 09:03 +0000 [642f8356ab] Joshua Colp +2018-03-17 01:58 +0000 [645203a422] Corey Farrell - * res_rtp_asterisk: Fix issues with ICE renegotiation. + * main/sounds: Use ast_cli_completion_add. - When re-inviting to add more streams it is possible for - the role of existing ICE sessions to be changed to the - incorrect value. This results in subsequent refreshes - within the sessions getting a role conflict and the ICE - session breaking down. This change only sets the role to - be the new value if an ICE renegotiation is actually - going to happen, otherwise the existing role is preserved. + Change-Id: I140e1137906bbfcdb61c0c6304159be459ad873e - As well if we encounter a situation where a unidirectional - ICE negotiation happens and the other side does not send us - candidates we will not store any information for sending - traffic, even though we know where they are reachable. This - change fixes this by using the source of the ICE traffic - itself as the target if no candidates are known and we - receive some ICE traffic. +2018-03-16 10:19 +0000 [5d097f8236] George Joseph - ASTERISK-27088 + * channel.c: Allow generic plc then channel formats are equal - Change-Id: I71228181e358917fcefc3100fad21b2fc02a59a9 + 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. -2017-06-27 10:46 +0000 [a48d3e4d31] Torrey Searle + * 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/res_pjsip_t38: fix incorrect increment of media_count + ASTERISK-27743 - The T38 sdp callback incorrectly has a side effect of incrementing - the media_count. This can lead to core dumps. + Change-Id: I0577026a179dea34232e63123254b4e0508378f4 - Change-Id: I7bb2f4987de4046ec52cfc34e5ea0662dae32af8 +2018-03-17 01:09 +0000 [8d01ec572d] Corey Farrell -2017-06-08 22:50 +0000 [80e11bd79b] George Joseph + * manager: Use ast_cli_completion_add for completion generators. - * bridge_native_rtp: Keep rtp instance refs on bridge_channel + Change-Id: I658141c6ec490a3e866b02d2afea757928ceaabf - There have been reports of deadlocks caused by an attempt to send a frame - to a channel's rtp instance after the channel has left the native bridge - and been destroyed. This patch effectively causes the bridge channel to - keep a reference to the glue and both the audio and video rtp instances - so what gets started will get stopped. +2018-03-17 02:16 +0000 [2c1ad2f510] Corey Farrell - ASTERISK-26978 #close - Reported-by: Ross Beer + * main/test: Use ast_cli_completion_add. - Change-Id: I9e1ac49fa4af68d64826ccccd152593cf8cdb21a + Change-Id: I5133ff2ba4e030f9733fb3d050c863d72a22ae6b -2017-06-27 04:37 +0000 [7827755570] Ivan Poddubny +2018-03-18 10:16 +0000 [115939caeb] Joshua Colp - * app_queue: Fix returning to dialplan when a queue is empty + * rtp: Add REMB RTP property and set it on PJSIP video RTP. - The fix for ASTERISK-25665 introduced a regression. - The return value of queue_exec used to be 0 in case of leavewhenempty - but it was changed to -1 (returned from wait_our_turn and passed - transparently by queue_exec), thus leading to hangup instead of returning - back to dialplan. + This change adds a property to RTP instances to indicate that + REMB support is enabled and that sending/receiving should be + passed through. - This commit resets the value back to 0 in this case, restoring - original behavior. + This also enables it on video RTP instances in PJSIP if + WebRTC support is enabled. - ASTERISK-27065 #close - Reported by: Marek Cervenka + Finally the goog-remb extension is added to the SDP using + the rtcp-fb attribute to indicate our support for it. - Change-Id: Id9c83b75aeda463250155e88c5004be52bbca5ac + Details about REMB can be found on the draft document for it: + https://tools.ietf.org/html/draft-alvestrand-rmcat-remb-03 -2017-06-19 17:21 +0000 [0cef7b9d4e] Alexei Gradinari + Change-Id: I1902dda1c0882bd1a0d71b2f120684b44b97e789 - * app_voicemail: IMAP connection control +2018-03-17 04:31 +0000 [8c25a72d57] Corey Farrell - A new global option "imap_poll_logout" was added to specify whether need to - disconnect from the IMAP server after polling of mailboxes. + * main/bridge: Use ast_cli_completion_add. - ASTERISK-27068 #close + Change-Id: I3775a696d6a57139fdf09651ecb786bcf1774509 - Closing IMAP connection after loading mailbox from voicemail.conf +2018-03-17 16:41 +0000 [5b40441197] Corey Farrell - ASTERISK-24052 #close + * core: Minor cleanup of ast_el_read_char. - Change-Id: Ib7558ba04516240a32b65f42e9be64372a0ae12a + * 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. -2017-06-21 17:57 +0000 [975e271b01] Richard Mudgett + Change-Id: I4315328ebea2f62641faf6881de2ac20a9f9d08e - * res_pjsip_mwi.c: Eliminate RAII_VAR in contact delete observer +2018-03-17 10:49 +0000 [e61b50b67a] Alexander Traud - Change-Id: I0bc97c6608de1d1a4228826b3b3be43f162f05f3 + * BuildSystem: Check for header file of OGG. -2017-06-16 18:08 +0000 [34db4c3993] Alexei Gradinari + 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. - * res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact + Anyway, even Asterisk 13 LTS uses symbols of libogg. Therefore, that header + should be included explicitly. Therefore, ./configure should check for that + header. - Do not need to unsubscribe/subscribe on creating the ednpoint's contact. - The modified function create_mwi_subscriptions_for_endpoint adds - the subscription only if it does not exist. + Change-Id: I98c50d56311b68880d1084fcc62c35ab2f8692db - The subscriptions aren't added for active contacts - which are retrieved on startup from realtime - if mwi_disable_initial_unsolicited=yes. - Because the mwi_contact_added is not called. - So the subscriptions also should be created on updating contact. +2018-03-09 06:26 +0000 [f697025ae5] Alexander Traud - ASTERISK-26230 #close + * BuildSystem: When no download utility is available, display the explanation. - Change-Id: I47e265af9296ca09aa42a316fdacac104148cee4 + ./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. -2017-06-20 16:05 +0000 [27dae55fb6] Kevin Harwell + Change-Id: I64c99b76a03525c69471e5055bf124b36a51bbd4 - * core_local: local channel data not being properly unref'ed and unlocked +2018-03-17 05:00 +0000 [10a978829e] Alexander Traud - In an earlier version of Asterisk a local channel [un]lock all functions were - added in order to keep a crash from occurring when a channel hung up too early - during an attended transfer. Unfortunately, when a transfer failure occurs and - depending on the timing, the local channels sometime do not get properly - unlocked and deref'ed after being locked and ref'ed. This happens because the - underlying local channel structure gets NULLed out before unlocking. + * BuildSystem: Remove unused dependency on libltdl. - This patch reworks those [un]lock functions and makes sure the values that get - locked and ref'ed later get unlocked and deref'ed. + 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-27074 #close + ASTERISK-27745 - Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09 + Change-Id: Icd315809b8e7978203431f3afb66240dd3a040ba -2017-06-20 16:01 +0000 [45a1f4e2ae] Kevin Harwell +2018-03-17 02:25 +0000 [1136a22a1e] Corey Farrell - * bridge: stuck channel(s) after failed attended transfer + * main/translate: Use ast_cli_completion_add. - If an attended transfer failed it was possible for some of the channels - involved to get "stuck" because Asterisk was not hanging up the transfer target. + Change-Id: I0e2402660e54d91f74ab0804c62a5b1925577413 - This patch ensures Asterisk hangs up the transfer target when an attended - transfer failure occurs. +2018-03-17 02:00 +0000 [91ac95993e] Corey Farrell - ASTERISK-27075 #close + * main/taskprocessor: Use ast_cli_completion_add. - Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9 + Change-Id: Ie5f812a988ed811fd11967151932de62bc131b48 -2017-06-19 11:28 +0000 [a7488f8a70] Rodrigo Ramírez Norambuena +2018-03-15 15:06 +0000 [3ad56aa929] Corey Farrell - * cdr: fix mistake spelling of a word for Unanswered. + * main/config: Use ast_cli_completion_add for reload completion. - Change-Id: I7a610bef369924523a445c7e849ee88cc45dc5df + Change-Id: Ia3fa4c03f2285a1ec8814bbe7f4624ead9111ad1 -2017-06-12 16:17 +0000 [d7b6e06abb] Alexei Gradinari +2018-03-17 00:51 +0000 [9e335f22e7] Corey Farrell - * res_pjsip_mwi: unsubscribe unsolicited MWI on deleting endpoint last contact + * aco: Use ast_cli_completion_add for 'config show help'. - If the endpoint's last contact is deleted unsolicited MWI has to be - unsubscribed. + In addition this removes: + * RAII_VAR usage + * Duplicate check of pos + * Unneeded arguments. - ASTERISK-27051 #close + Change-Id: I2da8eac2670d1d8d6474c04037129804f55ebf39 - Change-Id: I33e174e0b9dba0998927d16d6d100fda5c7254e0 +2018-03-14 04:27 +0000 [4d1c9d8711] Corey Farrell -2017-06-16 09:31 +0000 [854a6de819] George Joseph + * core: Stop using AST_INLINE_API for allocator functions. - * res_stasis: Plug reference leak on stolen channels + 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. - When a stasis channel is stolen by another app, the control - structure is unreffed but never unlinked from the app_controls - container. This causes the channel reference to leak. + Remove menuselect conflicts between MALLOC_DEBUG and DEBUG_CHAOS as they + can now be combined. - Added OBJ_UNLINK to the callback in channel_stolen_cb. + 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. - Also added some additional channel lifecycle debug messages to - channel.c. + Change-Id: If9df4377f74bdbb627461b27a473123e05525887 - ASTERISK-27059 #close - Repoorted-by: George Joseph +2018-02-27 03:01 +0000 [ecc846b26b] Florian Floimair - Change-Id: Ib820936cd49453f20156971785e7f4f182c56e14 + * app_dial: Enable early-media video -2017-06-16 14:56 +0000 [e33bd96638] Matthew Fredrickson + Certain applications (e.g. door-phone) require that also video is transmitted + before a call is accepted. - * formats/format_g729: Fix typo in comment + Change-Id: I9842e1dc2f6e1c2c49dc33fe615255007d2f821e - There was a typo in a comment. This commit is to fix the typo. +2018-03-05 06:50 +0000 [be0e9920b6] Alexander Traud - ASTERISK-27060 #close + * BuildSystem: In NetBSD, the Python Programming Language is python-X.Y. - Change-Id: Ic2699f8dbeaacd58ccb6ec3203e853e1babe3235 + ASTERISK-27717 -2017-06-08 12:28 +0000 [0ad95bc8a0] Frederic LE FOLL + Change-Id: If90ddf9c396c32e7402a894f42dce215c30049d1 - * Core/PBX: Deadlock between dialplan execution and application unregistration. +2018-03-16 09:53 +0000 [02fa145a1b] Alexander Traud - Not easy to reproduce, but we have noticed deadlocks when unloading a module - while dialplan is handling a request. + * BuildSystem: Avoid an extra case for OpenBSD. - The deadlock is between : - 1) Dialplan execution: pbx_extension_helper() first taking conlock, - then pbx_findapp() [when called] asking for lock on apps list. - 2) Application unregistration: ast_unregister_application() first taking lock - on apps list, then unreference_cached_app() [when called] asking for conlock. + 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. - As a protection, I suggest to modify ast_unregister_application(), so that it - anticipates the need of conlock, before taking the lock on apps list. - The side effect is a longer unavailability of conlock when unregistering an - application. + Today with OpenBSD 6.2, all libvorbis*.so declare their dependencies correctly. + Therefore, an extra case is not required anymore. - ASTERISK-27041 + Change-Id: Ifd04e0994ce9f1e4ad29c3948a0398b91d1e97bc - Change-Id: I0db0f1eb320da6a5758cce3a47d765be1face8e2 +2018-03-05 10:10 +0000 [00789174f6] Alexander Traud -2017-06-12 09:23 +0000 [7a46309d3d] Alexei Gradinari + * BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD. - * res_pjsip: New endpoint option "notify_early_inuse_ringing" + 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. - This option was added to control whether to notify dialog-info state - 'early' or 'confirmed' on Ringing when already INUSE. - The value "yes" is useful for some SIP phones (Cisco SPA) - to be able to indicate and pick up ringing devices. + Furthermore, no supported platform/version was found, which still (ever?) + requires those additional libraries. Therefore, they were simply removed. - ASTERISK-26919 #close + Finally, this change adds the error code ESTRPIPE to the channel driver + chan_alsa for those platforms which lack it, again for example NetBSD. - Change-Id: Ie050bc30023543c7dfb4365c5be3ce58c738c711 + ASTERISK-27720 -2017-06-15 13:48 +0000 [53b7df82f4] Alexei Gradinari + Change-Id: I3b21f2135f6cbfac7590ccdc2df753257f426e0b - * app_voicemail: IMAP logout on reload/unload +2018-03-16 09:02 +0000 [4d1e3fef6b] George Joseph - Closing IMAP connection on module reload or unload. + * app_voicemail: Fix json blob errors - ASTERISK-24052 #close + 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. - Change-Id: I2a40182aa9ef249fa6865d33570430e9ada68525 + * Keypress results passed to ast_test_suite_notify are now checked with + isprint() and a '?' is substituted if the check fails. -2017-03-30 09:33 +0000 [9aeab4aced] Jan Friesse + Change-Id: I78ee188916bbac840f3d03f40201b692347ea865 - * res_corosync: Change thread stack size +2018-03-15 09:32 +0000 [ebe957c5e9] Corey Farrell - In Corosync 2.x libraries were changed to use LibQB IPC. - Sadly LibQB IPC doesn't support copy-free access to received buffer, so - Corosync libraries were rewritten to use stack as buffer. Mostly the - needed stack size is quite small, but for all *_dispatch functions, 1MiB - is needed. + * main/cdr: Use ast_cli_completion_add for CDR channel completion. - Asterisk function ast_pthread_create_background set stack size for new - thread to much smaller AST_BACKGROUND_STACKSIZE (~500KiB). + Change-Id: Ie81830647a23aad61c1162583b6d50adbe6e7822 - This results in Asterisk crash when running with Corosync 2.x. +2018-03-12 10:20 +0000 [dbf5ff6ed0] Alexander Traud - Patch solves this issue by creating it's own version of - ast_pthread_create_background which sets stack size to much higher value - (actually it's AST_BACKGROUND_STACKSIZE + 3MiB). + * install_prereq: Add Arch Linux. - Another problem may appear when "corosync show members" netconsole - command is executed. It is also executed in thread and also has only - 500KiB stack size. Sadly it calls corosync_cfg_get_node_addrs which - again needs at least 1MiB stack. + ASTERISK-27738 - Solution is to use HAVE_COROSYNC_CFG_STATE_TRACK as a discriminator - between Corosync 1.x and 2.x. If 1.x is found, nothing changes. If 2.x - is found, NodeID is displayed instead of IP address. + Change-Id: I7ca620e3c4dfb4b064a19382c4915aeb42a2a09f - ASTERISK-25370 #close - Reported by: mdu113 +2018-03-15 08:19 +0000 [89ba4d4e3d] Corey Farrell - Change-Id: Id95b0d21ab6e708e7d74ad8786c587211676fa08 + * main/ccss: Use ast_cli_completion_add for core id. -2017-06-13 11:33 +0000 [1ac0096512] George Joseph + Change-Id: I44b25d6d24c7d9bc1bb38a50774b38883162f98f - * res_ari: Add "module loaded" check to ari stubs +2018-03-15 07:29 +0000 [aa0d95c730] Corey Farrell - The recent change to make the use of LOAD_DECLINE more consistent - caused res_ari to unload itself before declining if the ari.conf - file wasn't found. The ari stubs though still tried to use the - configuration resulting in segfaults. + * astobj2_container: Use ast_cli_completion_add for container names. - This patch creates a new CHECK_ARI_MODULE_LOADED macro which tests - to see if res_ari is actually loaded and causes the stubs to also - decline if it isn't. The macro was then added to the mustache - template's "load_module" function. + Change-Id: I4f0fc09e820eb8d8da2354a177dbcf503c56ddd1 - ASTERISK-27026 #close - Reported-by: Ronald Raikes +2017-12-09 04:52 +0000 [b929a7fb8d] Corey Farrell - Change-Id: I263d56efa628ee3c411bdcd16d49af6260c6c91d + * main/channel: Use ast_cli_completion_add for channeltypes. -2017-06-15 12:33 +0000 [11ec2945c7] Richard Mudgett + Change-Id: Ia845fae6a84801cc7d9996767b99efb2753cbb48 - * chan_pjsip: Fix PJSIP_MEDIA_OFFER dialplan function read. +2018-03-14 12:38 +0000 [b45bb476bb] Corey Farrell - The construction of the returned string assumed incorrectly that the - supplied buffer would always be initialized as an empty string. If it is - not an empty string we could overrun the supplied buffer by the length of - the non-empty buffer string plus one. It is also theoreticaly possible - for the supplied buffer to be overrun by a string terminator during a read - operation even if the supplied buffer is an empty string. + * cli: Enable ast_cli_completion_add on public completion generators. - * Fix the assumption that the supplied buffer would already be an empty - string. The buffer is not guaranteed to contain an empty string by all - possible callers. + * ast_cli_complete + * ast_complete_channels + * ast_complete_applications - * Fix string terminator buffer overrun potential. + These generators will now use ast_cli_completion_add if state == -1. - Change-Id: If6a0806806527678c8554b1dcb34fd7808aa95c9 + Change-Id: I7ff311f0873099be0e43a3dc5415c0cd06d15756 -2017-06-08 11:38 +0000 [e563a1920e] Richard Mudgett +2018-03-14 11:17 +0000 [92158b7f37] Ross Beer - * SDP: Add get/set option calls for RTP sched context per type. + * res_pjsip_rfc3326.c: Account for more than one 'Reason' header - Change-Id: I82dc75c63c48904e9e5a49e2205dcc06e88487e4 + ASTERISK-27741 -2017-05-11 18:49 +0000 [716abaf33d] Richard Mudgett + Change-Id: I0aa59a54735c6d20b95c54db1bd095dbf93e7adf - * SDP: Search for the ice-lite attribute in the right place. +2018-03-12 08:05 +0000 [b0fff03bb5] Alexander Traud - * Pulled finding the rtcp-mux attribute flag out of the ICE candidate for - loop. Also ordered the RTCP ICE candidate skip test to fail earlier. + * install_prereq: Add SUSE. - Change-Id: I8905d9c68563027a46cd3ae14dbcc27e9c814809 + ASTERISK-27736 -2017-05-11 18:46 +0000 [a95584d079] Richard Mudgett + Change-Id: I4cafc8973349d50a7cb7919ddf0bb1aaef4bfc3e - * SDP: Set the remote c= line in RTP instance. +2018-02-16 21:11 +0000 [572a508ef2] Corey Farrell - Change-Id: I23b646392082deab65bedeb19b12dcbcb9216d0c + * loader: Convert reload_classes to built-in modules. -2017-06-09 19:03 +0000 [06265b8c8a] Richard Mudgett + * acl (named_acl.c) + * cdr + * cel + * ccss + * dnsmgr + * dsp + * enum + * extconfig (config.c) + * features + * http + * indications + * logger + * manager + * plc + * sounds + * udptl - * stream: Add ast_stream_topology_del_stream() and unit test. + 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. - Change-Id: If07e3c716a2e3ff85ae905c17572ea6ec3cdc1f9 + 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). -2017-05-11 14:09 +0000 [0fdb99c268] Richard Mudgett + Change-Id: I371a9a45064f20026c492623ea8062d02a1ab97f - * SDP: Add t= line in sdp_create_from_state() +2018-03-13 16:39 +0000 [9e488dd482] Corey Farrell - Change-Id: I4060391328a893101ed87d0d9bacbbab4fd8b141 + * core: Remove incorrect usage of attribute_malloc. -2017-06-14 13:07 +0000 [4797a8bb81] Richard Mudgett + 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. - * stream: Ignore declined streams for some topology calls. + Change-Id: If507f33ffb3ca3b83b702196eb0e8215d27fc7d2 - * Made ast_format_cap_from_stream_topology() not include any formats from - declined streams. +2018-03-12 05:19 +0000 [d9776870e8] Alexander Traud - * Made ast_stream_topology_get_first_stream_by_type() ignore declined - streams to return the first active stream of the type. + * BuildSystem: Enable IMAP storage on openSUSE and Arch Linux. - * Updated unit tests to check these changes have the expected effect. + ASTERISK-27734 - Change-Id: Iabbc6a3e8edf263a25fd3056c3c614407c7897df + Change-Id: I8d6e6a1c08c031649764f5277fbbb85e57c3a9d4 -2017-06-15 07:32 +0000 [bd16c3c524] Joshua Colp +2018-02-23 07:41 +0000 [ea9768ff07] Corey Farrell - * channel: Fix reference counting in ast_channel_suppress. + * stringfields: Remove MALLOC_DEBUG fields from struct ast_string_field_mgr. - The ast_channel_suppress function wrongly decremented the - reference count of the underlying structure used to keep - track of what should be suppressed on a channel if the - function was called multiple times on the same channel. + 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. - This change cleans up the reference counting a bit so - this no longer occurs. + Change-Id: Idd18e6639a87ab862079b580c114d90361412289 - ASTERISK-27016 +2018-03-10 03:33 +0000 [fee929c8ac] Corey Farrell - Change-Id: I2eed4077cb4916e6626f9f120b63b963acc5c136 + * core: Remove non-critical cleanup from startup aborts. -2017-06-14 12:34 +0000 [b8b0b61a24] Richard Mudgett + 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. - * app_voicemail.c: Fix compile error when IMAP enabled. + 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. - Change-Id: I2703f15b4099b4210c68eccf293105d1975c1fc1 + 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. -2017-06-12 17:55 +0000 [023eede265] Alexei Gradinari + Replace ast_register_atexit with ast_register_cleanup in media_cache.c. + There is no reason for this cleanup to happen unconditionally. - * app_voicemail: IMAP logout on MWI unsubscribe + Change-Id: Iecc2df98008b21509925ff16740bd5fa29527db3 - Closing IMAP connection on MWI unsubscribe. +2018-03-12 06:40 +0000 [ea3b8bb080] Alexander Traud - ASTERISK-24052 #close + * install_prereq: Update FreeBSD libraries. - Change-Id: I4ff964026002b2817b48c20fb4239f0a880228fd + 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. -2017-06-14 11:12 +0000 [65ed2ea311] George Joseph + This change here fixes this by adding those (optional) dependencies for + Asterisk 15 and newer (again). - * res_pjsip_pubsub: Fix reference to released endpoint + ASTERISK-27686 - destroy_subscription was attempting to get the id of the - subscription tree's endpoint after we'd already called ao2_cleanup - on it causing a segfault. + Change-Id: I6638a3d0dc37ad4ff5f94be15463e3dd8a2bfe74 - Moved the cleanup until after the debug statement and since - endpoint could also be NULL at this point, check for that as well. +2018-03-12 04:11 +0000 [9164be19d2] Alexander Traud - ASTERISK-27057 #close - Reported-by: Ryan Smith + * res_srtp: Add support for libsrtp2.x on openSUSE. - Change-Id: Ice0a7727f560cf204d870a774c6df71e159b1678 + 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. -2017-06-14 08:29 +0000 [ea3f8c6889] George Joseph + ASTERISK-27733 - * res_pjsip_session: Correct inverted test in session_outgoing_nat_hook + Change-Id: I25c5cb8fa966043d1506ebef449e5a724412b4b6 - There was a typo introduced in commit 776ffd77 which was preventing - the transport's external media address from being used. +2018-03-08 09:14 +0000 [5b525c9781] Alexander Traud - ASTERISK-27024 #close - Reported-by: Christopher van de Sande - patches: - patch.diff submitted by Florian Floimair (license 6892) + * BuildSystem: Add NetBSD. - Change-Id: I7ec617171eaa2d86d2680b00cf37d5088adafc27 + Headers, libraries, and rpath. -2017-06-14 08:54 +0000 [88f18faf2a] George Joseph + ASTERISK-27728 + ASTERISK-11015 + Reported by: Curt Sampson - * res_rtp_asterisk: Fix ssrc change for rtcp srtp + Change-Id: I50aa5fcd095937df32a2e33307caac7e79a8b5b7 - It looks like there was a copy/paste error in ast_rtp_change_source - where if there was a rtcp srtp instance, instead of updating its - ssrc we were updating the srtp instance ssrc twice. +2018-03-09 03:13 +0000 [c5f2332953] Alexander Traud - ASTERISK-27022 #close - Reported-by: Michael Walton + * BuildSystem: For consistency, avoid double-checking via if clauses. - Change-Id: Ic88f3aee7227b401c58745ac265ff92c19620095 + 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. -2017-06-08 14:38 +0000 [d6386a8f0c] Joshua Colp + 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. - * bridge: Add a deferred queue. + Change-Id: I4a6f48127b7af3a48168c917e888be1f70625027 - This change adds a deferred queue to bridging. If a bridge - technology determines that a frame can not be written and - should be deferred it can indicate back to bridging to do so. - Bridging will then requeue any deferred frames upon a new - channel joining the bridge. +2018-03-09 02:44 +0000 [36c8885c66] Alexander Traud - This change has been leveraged for T.38 request negotiate - control frames. Without the deferred queue there is a race - condition between the bridge receiving the T.38 request - negotiate and the second channel joining and being in the - bridge. If the channel is not yet in the bridge then the T.38 - negotiation fails. + * BuildSystem: Enable dladdr on non-Linux platforms like FreeBSD. - A unit test has also been added that confirms that a T.38 - request negotiate control frame is deferred when no other - channel is in the bridge and that it is requeued when a new - channel joins the bridge. + ASTERISK-27641 - ASTERISK-26923 + Change-Id: I587e8ba0123c70fc10cfd8b0ac3299551f61d84b - Change-Id: Ie05b08523f399eae579130f4a5f562a344d2e415 +2018-03-08 13:53 +0000 [e6738b79b3] Richard Mudgett -2017-06-13 14:17 +0000 [9e53c30610] Kevin Harwell + * Complete deprecating legacy modules. - * res_pjsip_refer/session: Calls dropped during transfer + The menuselect comment was updated to deprecate these modules but the + AST_MODULE_INFO block at the end of file was missed. - When doing an attended transfer it's possible for the transferer, after - receiving an accepted response from Asterisk, to send a BYE to Asterisk, - which can then be processed before Asterisk has time to start and/or - complete the transfer process. This of course causes the transfer to not - complete successfully, thus dropping the call. + ASTERISK-27671 - This patch makes it so any BYEs received from the transferer, after the REFER, - that initiate a session end are deferred until the transfer is complete. This - allows the channel that would have otherwise been hung up by Asterisk to - remain available throughout the transfer process. + Change-Id: I63070b5c4d4f08af010c6034acd4793c1bcef839 - ASTERISK-27053 #close +2018-03-07 13:50 +0000 [7f4354c10f] Richard Mudgett - Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a + * res_pjproject.c: Upgrade bundled PJPROJECT to 2.7.2 -2017-06-13 10:47 +0000 [b2fd7e5069] George Joseph + Update patches included in bundled PJPROJECT for the new version. - * pjproject_bundled: Use the asterisk github mirror for download + ASTERISK-27730 - We now mirror the pjproject tarball and md5 at - https://github.com/asterisk/third-party/tree/master/pjproject + Change-Id: Id3c8c8ad82126846bcd9768bc3d0a18d89be8944 - To improve download reliability, we now get the tarball from - our mirror instead of from pjsip.org. +2018-03-08 12:02 +0000 [9ff95e46e3] Alexander Traud - ASTERISK-27052 #close - Reported-by: 'alex' + * install_prereq: Add NetBSD. - Change-Id: I60236587a8935bfa71fcc391f4e2ecb31918c08a + ASTERISK-27729 -2017-06-12 09:57 +0000 [42f738e052] Alexei Gradinari + Change-Id: I7a706d51375d54cf5e36d32397bfe09a48670804 - * res_pjsip_mwi: don't create mwi subscriptions if initial unsolicited disabled +2018-03-08 09:04 +0000 [75cebc3e71] Alexander Traud - If sending unsolicited mwi to all endpoints on startup is disabled - (mwi_disable_initial_unsolicited=yes) do not need to create subscriptions. - If there are many (thousands) realtime endpoints configured with unsolicited mwi - and Vociemail Storage configured as ODBC or IMAP there will be huge number of - DB/IMAP requests on startup. + * BuildSystem: Re-check for another UUID library only when previous check failed. - ASTERISK-26230 #close + As a side-effect, this avoids the ambiguous output: + checking for uuid_generate_random... no + which was printed always previously. - Change-Id: I50ae909639e3ee298b931a54def4b2b9e0fb86c5 + ASTERISK-25586 + Reported by: John Nemeth -2017-06-11 12:06 +0000 [847087a4ff] Sean Bright + Change-Id: I6d541dfcf453932a9856c5e251aa22e0e6c233c9 - * codecs.conf.sample: Fix max_bandwidth speling error +2018-03-08 05:28 +0000 [fc64a0e2b3] Alexander Traud - Reported by Sylvain Boily via asterisk-dev mailing list. + * BuildSystem: Instead of $PJPROJECT_LIBS with s, use $PJPROJECT_LIB everywhere. - Change-Id: Idc7623f335aea3e144dd369ba383b9a757480a9d + 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. -2017-06-08 17:31 +0000 [8d1f54b92e] Jørgen H + Change-Id: I7359860a5d730cdc784c2c48e501a082196434d3 - * res_pjsip_transport_websocket: Add NULL check in get_write_timeout +2018-03-06 06:28 +0000 [16f6e94033] Alexander Traud - Added check for NULL return value when calling - ast_sorcery_retrieve_by_id in function get_write_timeout + * BuildSystem: Enable PortAudio in NetBSD. - ASTERISK-27046 + 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. - Change-Id: I9357717278da631c3a1cb502c412693929b0cb41 + ASTERISK-27721 -2017-06-08 10:54 +0000 [d27168d36f] Guido Falsi + Change-Id: I4175500126909ad1b181fff8e11bb4a3a6ae4fa9 - * BuildSystem: Add patches to allow building with recent LibreSSL +2018-03-07 14:36 +0000 [c8a521b6c8] Corey Farrell - Add some #if defined checks which allow building against LibreSSL. - These patchess come from OpenBSD ports: - https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/telephony/asterisk/patches/ + * Replace direct checks of option_debug with DEBUG_ATLEAST macro. - ASTERISK-27043 #close - Reported by: OpenBSD ports + 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: I2f6c08a5840b85ad4d2b75370b947ddde7a9a572 + Change-Id: Ic342d4799a945dbc40ac085ac142681094a4ebf0 -2017-06-06 14:54 +0000 [fcb1a0d7e8] David M. Lee +2018-03-07 13:13 +0000 [1fe913f7bd] Richard Mudgett - * CFLAGS for BIND8 support + * BuildSystem regression: Fix errors reported by clean targets. - Some systems (like macOS) require BIND_8_COMPAT to be defined so that - the nameser libraries are, well, BIND8 compatible. + Doing a 'make clean', 'make distclean', or 'make dist-clean' gets errors + about an invalid shell option: "/bin/sh: 0: Illegal option -". - Change-Id: If79fc27a64f90de1835b5aa3aadfa9be22bd16b0 + 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. -2017-06-08 10:36 +0000 [7b668297f3] Guido Falsi + ASTERISK-27715 - * BuildSystem: Fix build on FreeBSD due to missing crypt.h + Change-Id: I33d40acdb03862bc89aeb6fb1ff497894a8ea7f5 - FreeBSD does not include a crypt.h include file. Definitions for - crypt() and crypt_r() are in unistd.h +2018-03-06 13:31 +0000 [88cef40f6e] Ross Beer - ASTERISK-27042 #close + * res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints - Change-Id: Ib307ee5e384870c6af50efa89fb73722dd0c3a7e + ASTERISK-27554 -2017-06-07 15:19 +0000 [5b80496b42] Joshua Colp + Change-Id: If61c7faab7d2fa1031c056ed6268fe928e2391cf - * chan_pjsip: Update device state when in early media. +2018-03-06 08:14 +0000 [961dd9fe52] Sungtae Kim - The chan_pjsip module uses a calculation approach for - determining device state. This means that in situations - where we would expect device state to change we need to - tell the core to query. A scenario that was missed is - when early media was signaled. + * voicemail: Fixed wrong voicemail message count - This change adds the notification for the core to - query device state when we are told that early media - is being provided. + Fixed wrong voicemail mailbox reference for Action: VoicemailUsersList. - ASTERISK-27039 + ASTERISK-27703 - Change-Id: Iafebfd152894966344ff2e950a3cee9f59a3eb6f + Change-Id: Ie6578ad80bba2bfaf34b84f0be978f59045ce6cd -2017-06-07 14:32 +0000 [e497a76d24] Sean Bright +2018-03-07 09:32 +0000 [58f44f225a] Alexander Traud - * eventfd: Disable during cross compilation + * utils: In Solaris, avoid a warning about an unused variable. - Reported by Lonnie Abelbeck via private e-mail. + 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: Icc80f12b8d8d591e14a8e0ed9f1c02cbd193a89b + Change-Id: Ic3ea23ccf84ac4bc2d501b514985b989030abab5 -2017-06-07 11:21 +0000 [19da99df2f] Alexei Gradinari +2018-03-07 01:45 +0000 [add03e207c] Corey Farrell - * CHANGES: correct version for a new option 'refer_blind_progress' + * app_osplookup: Move header defines into the app. - Change-Id: If4817d26a8974610827624fb8a4e56d681d6bf97 + 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. -2017-06-06 07:04 +0000 [d3e951edf5] Joshua Colp + Change-Id: I0a6c4debd7c9543b608520b1765abfa4fab7b2fd - * pjsip: Extend 'asymmetric_rtp_codec' option to include us changing. +2018-02-14 07:33 +0000 [75a35ee5e8] Jean Aunis - PJSIP support in Asterisk differs from chan_sip in that it - allows media to be sent as-is without transcoding provided - the codecs were negotiated in the SDP. This is allowed - according to the RFC. Support for this differs quite a lot - though and some endpoints do not handle it well. + * chan_sip: Fix improper RTP framing on outgoing calls - This change extends the 'asymmetric_rtp_codec' option to - also cover this case. When set to no (the default) the code - behaves as chan_sip does - the best codec is selected and - we will only ever send that, unless we change what we are - sending if the remote side changes. When set to yes we - will send media as-is without transcoding if the codec - has been negotiated in the SDP. + 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. - ASTERISK-26996 + This patch systematically stores the framing information in the + ast_rtp_codecs structure, taking it from the response or from the + configuration as appropriate. - Change-Id: Ib1647f6902a0843e8c435946f831c2159e8d1d51 + ASTERISK-27674 -2017-06-06 10:04 +0000 [b3ca24d216] Sean Bright + Change-Id: I828a6a98d27a45a8afd07236a2bd0aa3cbd3fb2c - * res_rtp_multicast: Use consistent timestamps when possible +2018-02-20 11:48 +0000 [3fb26df4ac] lvl - When a frame destined for a MulticastRTP channel does not have timing - information (such as when an 'originate' is done), we generate the RTP - timestamps ourselves without regard to the number of samples we are - about to send. + * res_pjsip_session: properly handle SDP from a forked call with early media - Instead, use the same method as res_rtp_asterisk and 'predict' a - timestamp given the number of samples. If the difference between the - timestamp that we generate and the one we predict is within a specific - threshold, use the predicted timestamp so that we end up with timestamps - that are consistent with the number of samples we are actually sending. + 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. - Change-Id: I2bf0db3541b1573043330421cbb114ff0f22ec1f + ASTERISK-27441 -2017-05-31 10:41 +0000 [861984eac0] Joshua Colp + Change-Id: If0d5150ffe6f38d8a854831fef37942258d4629c - * res_pjsip: Add support for returning only reachable contacts and use it. +2018-03-05 08:01 +0000 [ef79e583ec] Alexander Traud - This introduces the ability for PJSIP code to specify filtering flags - when retrieving PJSIP contacts. The first flag for use causes the - query code to only retrieve contacts that are not unreachable. This - change has been leveraged by both the Dial() process and the - PJSIP_DIAL_CONTACTS dialplan function so they will now only attempt - calls to contacts which are not unreachable. + * BuildSystem: Enable Lua in NetBSD. - ASTERISK-26281 + luaL_openlib got removed with Lua 5.2. + luaL_newstate is available in all versions. - Change-Id: I8233b4faa21ba3db114f5a42e946e4b191446f6c + ASTERISK-27718 -2017-06-05 11:27 +0000 [d8802a6a0f] Kevin Harwell + Change-Id: I9c8c8880315ee36ab740d7c40153306c0bfd6f71 - * channel: ast_write frame wrongly freed after call to audiohooks +2018-03-06 07:33 +0000 [162fc4fba6] Alexander Traud - ASTERISK-26419 introduced a bug when calling ast_audiohook_write_list in - ast_write. It would free the frame given to ast_write if the frame returned - by ast_audiohook_write_list was different than the given one. The frame give - to ast_write should never be freed within that function. It is the caller's - resposibility to free the frame after writing (or when it its done with it). - By freeing it within ast_write this of course led to some memory corruption - problems. + * BuildSystem: Depend not implicitly but explicitly on external libraries. - This patch makes it so the frame given to ast_write is no longer freed within - the function. The frame returned by ast_audiohook_write_list is now subsequently - used in ast_write and is freed later. It is freed either after translate if the - frame returned by translate is different, or near the end of ast_write prior to - function exit. + ASTERISK-27722 - ASTERISK-26973 #close + Change-Id: Ie7b8c30d86cb00a54d6ac4e09e6f28f42d2bd52c - Change-Id: Ic9085ba5f555eeed12f6e565a638c3649695988b +2018-03-05 08:15 +0000 [99b6a14737] Alexander Traud -2017-05-31 11:45 +0000 [001f4ddda4] Sean Bright + * res_http_post: Enable GMime in NetBSD. - * pbx_builtin: Properly handle hangup during Background + ASTERISK-27719 - Before this patch, when a user hung up during a Background, we would - stuff 0xff into a char and attempt a dialplan lookup of it. This caused - problems for some realtime engines which interpreted the value as the - beginning of an invalid UTF-8 sequence. + Change-Id: I230c5f9f316b2e9465c093c13580f72ebbaf67a7 - ASTERISK-19291 #close - Reported by: Andrew Nowrot +2018-03-05 04:16 +0000 [7e9734a858] Alexander Traud - Change-Id: I8ca6da93252d61c76ebdb46a4aa65e73ca985358 + * BuildSystem: Enable autotools in NetBSD. -2017-05-31 04:25 +0000 [f6eeaaafd5] Joshua Colp + ASTERISK-27716 - * channel / app_meetme: Fix parentheses. + Change-Id: I52525e35e1620341272219911d054a1e3d3ec01e - ASTERISK-27025 +2018-03-05 03:42 +0000 [b97905aaf2] Alexander Traud - Change-Id: Id736b0aa4ec6b6b0f04663d64fa8d151f81fdbed + * BuildSystem: AC_PATH_PROG sets to colon character when not found. -2017-05-30 16:07 +0000 [9dce4a947b] Sean Bright + ASTERISK-27715 + Reported by: Corey Farrell - * stasis_recording: Correct ast_asprintf error checking + Change-Id: I0d6d9572d1352dc7ad30c9917173f1e980d8c938 - ASTERISK-27021 #close - Reported by: Tim Morgan +2018-03-03 09:06 +0000 [aabbb49e33] Alexander Traud - Change-Id: I0ac061f040093e806c3b1f4e2340864f3ce4dd75 + * chan_unistim: NetBSD has an incompatible struct in_pktinfo. -2017-05-28 15:43 +0000 [5c27fe2187] Sean Bright + ASTERISK-27714 + Reported by: John Nemeth - * format: Reintroduce smoother flags + Change-Id: I1b84a89315a5f61222123d21bf35c59224da8990 - In review 4843 (ASTERISK-24858), we added a hack that forced a smoother - creation when sending signed linear so that the byte order was adjusted - during transmission. This was needed because smoother flags were lost - during the new format work that was done in Asterisk 13. +2018-03-03 08:30 +0000 [5d19762b5f] Alexander Traud - Rather than rolling that same hack into res_rtp_multicast, re-introduce - smoother flags so that formats can dictate their own options. + * BuildSystem: Cast any intptr_t explicitly to its proposed type. - Change-Id: I77b835fba0e539c6ce50014a984766f63cab2c16 + ASTERISK-27713 -2017-05-24 10:09 +0000 [39d14834f8] Mark Michelson + Change-Id: I90c769e3c7f8c26de8a3af11335862cec15a1b22 - * Confbridge: Add "sfu" video mode to bridge profile options. +2018-03-03 06:56 +0000 [9749524520] Alexander Traud - A previous commit added plumbing to bridge_softmix to allow for an SFU - experience with Asterisk. This commit adds an option to app_confbridge - that allows for a confbridge to actually make use of the SFU video mode. + * BuildSystem: Detect whether uselocale(.) is available. - SFU mode is implemented in a "set it and forget it" kind of way. That - is, when the bridge is created, if SFU mode is enabled, then the video - mode gets set to SFU and cannot be changed. Future improvements may - allow for a hybrid experience (e.g. forward multiple video streams, - specifically those of the most recent talkers), but for this addition, - no such capability is present. + ASTERISK-27712 + Reported by: Joerg Sonnenberger, D'Arcy Cain - Change-Id: I87bbcb63dec6dbbb42488f894871b86f112b2020 + Change-Id: Idf1c9d43617a3e13028b95b313415903d80ef807 -2017-05-05 11:56 +0000 [2da869408a] Mark Michelson +2018-03-03 03:53 +0000 [f7b845ff41] Alexander Traud - * Add primitive SFU support to bridge_softmix. + * BuildSystem: Avoid re-defining of pthread_* on NetBSD. - This sets up the "plumbing" in bridge_softmix to - be able to accommodate Asterisk asking as an SFU - (selective forwarding unit) for conferences. + ASTERISK-27711 - The way this works is that whenever a channel enters or leaves a - conference, all participants in the bridge get sent a stream topology - change request. The topologies consist of the channels' original - topology, along with video destination streams corresponding to each - participants' source video streams. So for instance, if Alice, Bob, and - Carol are in the conference, and each supplies one video stream, then - the topologies for each would look like so: + Change-Id: Idc9194035b2958b99f6b01eb5b438d45a074565b - Alice: - Audio, - Source video(Alice), - Destination Video(Bob), - Destination video (Carol) +2018-03-02 07:05 +0000 [313a9fe255] Alexander Traud - Bob: - Audio, - Source video(Bob) - Destination Video(Alice), - Destination video (Carol) + * BuildSystem: Install init scripts on openSUSE Tumbleweed. - Carol: - Audio, - Source video(Carol) - Destination Video(Alice), - Destination video (Bob) + ASTERISK-27710 - This way, video that arrives from a source video stream can then be - copied out to the destination video streams on the other participants' - channels. + Change-Id: I4c777e41b31d4415bbe21cb435ad47b43ebb5467 - Once the bridge gets told that a topology on a channel has changed, the - bridge constructs a map in order to get the video frames routed to the - proper destination streams. This is done using the bridge channel's - stream_map. +2018-03-02 05:12 +0000 [a9c02e484a] Alexander Traud - This change is bare-bones with regards to SFU support. Some key features - are missing at this point: + * BuildSystem: Avoid == for comparison in ./configure. - * Stream limits. This commit makes no effort to limit the number of - streams on a specific channel. This means that if there were 50 video - callers in a conference, bridge_softmix will happily send out topology - change requests to every channel in the bridge, requesting 50+ - streams. + ASTERISK-27709 + Reported by: John Nemeth - * Configuration. The plumbing has been added to bridge_softmix, but - there has been nothing added as of yet to app_confbridge to enable SFU - video mode. + Change-Id: I11b1ae8fd404c04066f1458f5d71f9536359d58d - * Testing. Some functions included here have unit tests. - However, the functionality as a whole has only been verified by - hand-tracing the code. +2018-02-19 19:55 +0000 [c711e4076a] Richard Mudgett - * Selectivenss. For a "selective" forwarding unit, this does not - currently have any means of being selective. + * core: Remove ABI effects of MALLOC_DEBUG. - * Features. Presumably, someone might wish to only receive video from - specific sources. There are no external-facing functions at the moment - that allow for users to select who they receive video from. + 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. - * Efficiency. The current scheme treats all video streams as being - unidirectional. We could be re-using a source video stream as a - desetnation, too. But to simplify things on this first round, I did it - this way. + Change-Id: Ic07ad80b2c2df894db984cf27b16a69383ce0e10 - Change-Id: I7c44a829cc63acf8b596a337b2dc3c13898a6c4d +2018-02-27 15:40 +0000 [1a36a452bd] Richard Mudgett -2017-05-30 09:34 +0000 [045d7b8cb7] Sean Bright + * pjproject: Add cache_pools debugging option. - * format_mp3: Re-work menuselect/build issues + 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. - Rather than removing format_mp3 from ALL_C_MODS (which caused format_mp3 - to not show up in menuselect), use .PHONY targets when the necessary - source files are not present. + * 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. - ASTERISK-23951 - Reported by: Tzafrir Cohen + To disable the pool caching simply disable the cache_pools option in + pjproject.conf and restart Asterisk. - Change-Id: I0a7512c51acc9e86043671795020b0de725bd9e8 + Sample pjproject.conf setting: + [startup] + cache_pools=no -2017-05-30 09:43 +0000 [80206cdc65] George Joseph + * Made current users of the caching pool factory initialization and + destruction calls call common routines to create and destroy cached pools. - * test_json: Fix test names with reserved words + ASTERISK-27704 - Some of the test names were actually reserved words (true, false, - int, null, string, bool). When the jenkins test results analyzer - does its thing it tries to create a map using the test names as - keys and fails because they're reserved words. + Change-Id: I64d5befbaeed2532f93aa027a51eb52347d2b828 - Added "type_" to those test names. +2018-01-31 11:48 +0000 [eacee03f0e] Corey Farrell - Change-Id: I90d809f46969c78a1c605b736ff0635196a2cf1b + * gitreview: Reorder and add padding. -2017-05-26 11:41 +0000 [9c4f63263c] Joshua Colp + Change-Id: I459dc320a8c9452a01eed6f403d786741587c890 - * manager: Clear the flag on the other channel. +2018-02-23 21:24 +0000 [7b01236028] Michael Cargile - During the channel flag audit an incorrect change was - done. The flag should be cleared on the second channel. + * apps/app_amd.c: Fixed total time and silence calculations - ASTERISK-26469 + 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 - Change-Id: I770c5a389550a2fb5a6ade942fccbb2e1d9199c8 + * Additional debug messages were added + * AST_FRAME_NULL are now ignored -2017-05-26 11:15 +0000 [1f136fe885] Sean Bright + ASTERISK-27610 - * res_srtp: Add support for libsrtp2 + Change-Id: I18aca01af98f87c1e168e6ae0d85c136d1df5ea9 - ASTERISK-25294 #close - Reported by: Tzafrir Cohen +2018-02-23 14:58 +0000 [7e2128c8e6] George Joseph - ASTERISK-26976 #close - Reported by: Alex + * ast_coredumper: Minor fixes - Change-Id: I789b1c3d1ed31365bbd9339fa58ef36f48833c40 + * Fix --tarball-config so the option doesn't cause an error. -2017-05-25 11:10 +0000 [59348aa182] Sean Bright + * Allow for missing /etc/os-release. - * format_mp3: Don't try to build format_mp3 if we don't have sources + * Add a sleep between tarballing the coredump and removing the + output directory to allow the filesystem to settle. - ASTERISK-23951 #close - Reported by: Tzafrir Cohen + Change-Id: I73e03b13087978bcc7f6bc9f45753990f82d9d77 - Change-Id: Iebf181d44bb735787fde4b5be863c4d7e2478a30 +2018-02-22 14:27 +0000 [0be1c388e4] Ben Ford -2017-05-23 11:07 +0000 [44c5a144ce] Martin Tomec + * Add extended properties to rtp_engine for RTP retransmission support. - * Sqlite3: make busy_timeout configurable. + 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. - Enables runtime configuration of busy_timeout for sqlite databases. - Default timeout remains 1000ms. + For more information, refer to the wiki page: + https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements - ASTERISK-27014 #close + Change-Id: Ic598acd042a045f9d10e5bdccb66f4efc9e587cc - Change-Id: I8921a3aac3c335843be4cb17d2dd0a5c157a36da +2018-02-23 10:09 +0000 [a7927471ad] Corey Farrell -2017-05-24 15:50 +0000 [08edd54c1b] George Joseph + * core: Fix handling of maximum length lines in config files. - * unittests: Add a unit test that causes a SEGV and... + 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. - ...that can only be run by explicitly calling it with - 'test execute category /DO_NOT_RUN/ name RAISE_SEGV' + 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. - This allows us to more easily test CI and debugging tools that - should do certain things when asterisk coredumps. + ASTERISK-26688 #close - To allow this a new member was added to the ast_test_info - structure named 'explicit_only'. If set by a test, the test - will be skipped during a 'test execute all' or - 'test execute category ...'. + Change-Id: I80864a0d40d2e2d8cd79d72af52a8f0a3a99c015 - Change-Id: Ia3a11856aae4887df9a02b6b081cc777b36eb6ed +2018-02-22 13:53 +0000 [bb9c1938a0] Richard Mudgett -2017-05-23 15:42 +0000 [d847fe6585] Sean Bright + * res_pjsip_refer.c: Fix attended transfer race condition crash. - * res_agi: Allow configuration of audio format of EAGI pipe + 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. - This change allows the format of the EAGI audio pipe to be changed by - setting the dialplan variable 'EAGI_AUDIO_FORMAT' to the name of one of - the loaded formats. + * 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-26124 #close + ASTERISK-27568 - Change-Id: I7a10fad401ad2a21c68c2e7246fa357d5cee5bbd + Change-Id: Iacda724e7cb24d7520e49b2fd7e504aa398d7238 -2017-05-23 13:33 +0000 [e2e6baa8d8] Sean Bright +2018-02-17 03:28 +0000 [c4c5d00528] Alexander Traud - * res_agi: Clarify 'RECORD FILE' documentation + * install_prereq: Update FreeBSD libraries. - Documented the 'beep' option in both the parameters list and the command - description. + deleted + autoconf gcc libsamplerate sqlite - ASTERISK-23839 #close + changed + binutils to libbfd + freetds-devel to freetds + gmime2 to gmime26 + mysql55-client to mysql57-client - Change-Id: I4970395c922dbdce3f7cf0f56d5b065ec9aa53ea + 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 -2017-05-23 13:06 +0000 [3dcb3c88aa] Sean Bright + ASTERISK-27686 - * res_agi: Prevent crash when SET VARIABLE called without arguments + Change-Id: Ibe88c9b26e59c30d26cdb313a3ef01c9f37ac80d - Explicitly check that the appropriate number of arguments were passed to - SET VARIABLE before attempting to reference them. Also initialize the - arguments array to zeroes before populating it. +2018-02-22 10:54 +0000 [50d9af101e] Sean Bright - ASTERISK-22432 #close + * func_audiohookinherit: Remove deprecated module. - Change-Id: I5143607d80a2724f749c1674f3126b04ed32ea97 + Change-Id: Id52f719078a65c4b2eee7ab99d761eba6b6aed94 -2017-05-23 12:35 +0000 [e490aa3176] Sean Bright +2018-02-21 12:52 +0000 [f083edc43c] Richard Mudgett - * res_agi: Fix malformed AGI usage response + * manager.c: Fix lseek() parameter order. - If the generated XML documentation for a command does not end with a \n, - the postamble of the usage message does not appear on its own line. + ASTERISK-27659 - ASTERISK-25662 #close + Change-Id: I04a2705d2cb7df250769967bc59e2b397a49b797 - Change-Id: If190f1e9e37fe215fed95897d78d4a6e142b0020 +2018-02-20 13:11 +0000 [39f733406d] Richard Mudgett -2017-05-23 10:06 +0000 [8ae0227cf3] Sean Bright + * bridge_simple.c: Fix stream topology handling. - * res_format_attr_h26x: Trim blanks in fmtp attributes + The handling of stream topologies was not protected by channel locks in + simple_bridge_request_stream_topology_change(). - Some devices separate format attributes with a semicolon followed by a - space, so trim blanks before trying to match them. + * Fixed topology handling to be protected by channel locks where needed in + simple_bridge_request_stream_topology_change(). - ASTERISK-27008 #close + ASTERISK-27692 - Change-Id: Ia44cb2e4fef5c73dc541a29da79cb0e19c22d9cc + Change-Id: Ica5d78a6c7ecf4f0b95fb16de28d3889b32c4776 -2017-05-15 15:03 +0000 [faab058014] Joshua Colp +2018-02-05 16:46 +0000 [6436137959] Sean Bright - * app_queue: Fix members showing as being in call when not. + * AST-2018-006: Properly handle WebSocket frames with 0 length payload. - A change was done which added an 'in_call' flag to queue - members that was set to true while talking to an agent. - Unfortunately in practice this does not accurately reflect - whether they are talking to an agent or not. If a Local - channel is involved and a transfer is performed then the - app_queue application would incorrectly think the agent - was still in a call with the caller. This was done to - fix a race condition between an agent becoming available - by device state and the checking of the last call information - for the wrapup time. There was a small window where the - last call information would be the previous value instead - of the new one. + 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. - This change goes about fixing the original issue in a - different way by considering the call completed if device - state is received which would make the agent available - and if they are currently in a call. If this occurs the - last call information is updated before the agent becomes - available ensuring that old information is not present - when checking if the member should be called. This also - improves the transfer situation by actually updating - and enforcing the wrapup time. + ASTERISK-27658 #close - ASTERISK-26399 - ASTERISK-26400 - ASTERISK-26715 - ASTERISK-26975 + Change-Id: I9d59f83bc563f711df1a6197c57de473f6b0663a - Change-Id: Ife1cb686e3173b3a6d368601adef9aff69d4beea +2018-01-31 13:37 +0000 [880c69f00f] Kevin Harwell -2017-05-23 05:45 +0000 [36e90952ec] Robert Mordec + * AST-2018-003: Crash with an invalid SDP fmtp attribute - * app_confbridge: Race between removing and playing name recording while leaving + 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 user leaves a conference, its channel calls async_play_sound_file() - in order to play the name announcement and then unlinks the sound file. - The async_play_sound_file() function adds a task to conference playback queue, - which then runs playback_common() function in a different thread. + When retrieving the format this patch now makes sure the fmtp attribute is + available. If not available it now returns an error status. - It leads to a race condition when, in some cases, channel thread may unlink - the sound file before playback_common() had a chance to open it. + ASTERISK-27583 #close - This patch creates a file deletion task, that is queued after playback. + Change-Id: I5cebe000ce2d846cae3af33b6d72c416e51caf2f - ASTERISK-27012 #close +2018-01-31 13:33 +0000 [d3a398cf90] Kevin Harwell - Change-Id: I412f7922d412004b80917d4e892546c15bd70dd3 + * AST-2018-002: Crash with an invalid SDP media format description -2017-05-22 13:51 +0000 [440ff38c08] Kevin Harwell + 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. - * res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm + 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. - When using rtcp mux if an rtcp payload came in it would still use the srtp - unprotect algorithm instead of the srtp unprotect rtcp method. Since rtcp - data was being passed to the rtp unprotect method this would result in an - error. + ASTERISK-27582 #close - This patch ensures that the correct unprotect method is chosen by making - sure the passed in rtcp flag is appropriately set when rtcp mux is enabled - and an rtcp payload is received. + Change-Id: I883b3a4ef85b6972397f7b56bf46c5779c55fdd6 - ASTERISK-26979 #close +2018-02-06 12:07 +0000 [758409de56] George Joseph - Change-Id: Ic5409f9d1a267f1d4785fc5aed867daaecca6241 + * AST-2018-005: res_pjsip_transport_management: Move to core -2017-05-19 10:05 +0000 [0f487978a9] Sean Bright + 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. - * chan_sip: Better ICE handling for RTCP-MUX + ASTERISK-27618 + Reported By: Sandro Gauci - If we are offered or are offering RTCP-MUX, don't consider RTCP ICE - candidates. This confuses certain browsers (current Firefox for - example) and causes intial audio setup delays. + Change-Id: I21a2d33d9dda001452ea040d350d7a075f9acf0d - ASTERISK-26982 #close +2018-02-06 11:28 +0000 [de871515ba] George Joseph - Change-Id: Ifeaf47e83972fe8dbe58b7fb3d6d1823400cfb91 + * AST-2018-005: Fix tdata leaks when calling pjsip_endpt_send_response(2) -2017-05-12 10:38 +0000 [be4beff3e4] Steve Davies + 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. - * app_queue: Add QUEUE_RAISE_PENALTY feature + 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. - Additional variable to work alongside QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY, - including an extra parameter in queuerules.conf. This value causes lower - Agent penalty values to "raise up" so that they can join higher penalty agents - and be treated equally after a period of time. + res_pjsip: + ast_sip_send_response wasn't decrementing the ref count on error. - ASTERISK-26995 #close + ASTERISK-27618 + Reported By: Sandro Gauci - Change-Id: If1c6421a983667a5ac4c359f6dac25b212b4c459 + Change-Id: Iab33a6c7b6fba96148ed465b690ba8534ac961bf -2017-04-13 17:17 +0000 [7c0466092c] Mark Michelson +2018-02-06 11:21 +0000 [c53d8dcb68] George Joseph - * AST-2017-003: Handle zero-length body parts correctly. + * AST-2018-005: Add a check for NULL tdata in ast_sip_failover_request - ASTERISK-26939 #close + 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. - Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd + ASTERISK-27618 + Reported By: Sandro Gauci -2017-04-13 11:14 +0000 [949e9147bf] George Joseph + Change-Id: Ic2b63f6d4ae617c4c19dcdec2a7a6156b54fd15b - * AST-2017-004: chan_skinny: Add EOF check in skinny_session +2018-02-07 08:09 +0000 [d424850d58] Joshua Colp - The while(1) loop in skinny_session wasn't checking for EOF so - a packet that was longer than a header but still truncated - would spin the while loop infinitely. Not only does this - permanently tie up a thread and drive a core to 100% utilization, - the call of ast_log() in such a tight loop eats all available - process memory. + * AST-2018-004: Restrict the number of Accept headers in a SUBSCRIBE. - Added poll with timeout to top of read loop + 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. - ASTERISK-26940 #close - Reported-by: Sandro Gauci + This change enforces the limit so only 32 Accept headers are + processed. - Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898 + ASTERISK-27640 + Reported By: Sandro Gauci -2017-04-13 17:16 +0000 [2bb98d8fac] Mark Michelson + Change-Id: I99a814b10b554b13a6021ccf41111e5bc95e7301 - * AST-2017-002: Ensure transaction key buffer is large enough. +2018-01-13 08:04 +0000 [e70c4ec84d] Joshua Colp - ASTERISK-26938 #close + * AST-2018-001: rtp / channel: Don't allow an unnegotiated format to be passed up. - Change-Id: I266490792fd8896a23be7cb92f316b7e69356413 + 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. -2017-05-18 16:35 +0000 [4141748e85] Sean Bright + 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. - * res_hep_rtcp: Add support level to module info + ASTERISK-27488 - Change-Id: I5661478f9cf12d431f730e42be79323b62831e92 + Change-Id: I022556f524ad8379ee73f14037040af17ea3316a -2017-05-15 13:26 +0000 [a60d1f3974] Kevin Harwell +2018-02-20 13:11 +0000 [e2f98fbd63] Richard Mudgett - * app_stream_echo: Added a multi-stream echo application + * channel.c: Fix typo. - If the channel does not have multi-stream support then this application acts - just like app_echo. If it does have multi-stream support then each stream is - echoed back to itself (one-to-one). + Change-Id: I4eeedf89085697e81c354eb92d546686c67b0b5b - If a "num" is specified, then a new topology is made that contains clones (from - the channel's topology) of all media types that are not equal to the given - "type". If the media type differs then the first stream matching the "type" is - cloned into the new topology and then up to "num" - 1 of the same stream are - also cloned into it. Any additional streams from the original topology matching - the "type" are subsequently ignored (i.e. not added to the new topology). +2018-02-20 10:33 +0000 [259c80675e] Joshua Colp - For this same case when a frame is read from a stream that frame is still - echoed back like before, but now that frame is also echoed out to the - additional streams that matched on the specified "type". + * chan_sip: Emit a second ringing event to ensure channel is found. - ASTERISK-26997 #close + 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. - Change-Id: I254144486734178e196c7f590a26ffc13543ff2c + 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. -2017-05-15 13:25 +0000 [51375686f7] Kevin Harwell + ASTERISK-24488 - * core/conversions: Added string to unsigned integer and long conversions + Change-Id: I547a458fc59721c918cb48be060cbfc3c88bcf9c - Added functions that convert a string to an unsigned integer or unsigned long. - A couple of unit test were also created to test the routines. The reasons for - adding these conversion utilities (and hopefully eventually more) are as - follows: +2018-02-20 04:31 +0000 [0ad13949c1] Corey Farrell - * Conversion routines are functionally contained with consistent and - better error checking - * The function names offer a better description of what is happening - * It encourages code reuse for easier bug fixing at a single source - * It's simpler to use - * It's unit testable + * doc/lang/language-criteria.txt: Link to wiki. - For instance, currently in a lot of places when converting to an integer or - similar the "sscanf" function is used. When using "sscanf" it may not be - immediately clear what's happening as it lacks semantic naming. Limited error - checking is usually done as well. For example, most of the time a check is done - to make sure the value converted, but does not check for overflows or negative - valued conversions when converting unsigned numbers. + This document is out of date and is superseded by content on the + Asterisk wiki. - Why use/wrap "strtoul" and not "sscanf" then? Primarily, it lacks some of the - built in error handling that "strtoul" has. For instance "strtoul" contains - overflow checks. Less so, but can still factor as reasons, "sscanf" is slightly - more complex in its use. And maybe a bit controversial, but it may be ("big if") - potentially slower than "strtoul" in some cases. + ASTERISK-24386 #close - Change-Id: If7eaca4a48f8c7b89cc8b5a1f4bed2852fca82bb + Change-Id: Idbf95b27b096c205251e1bbb560c79224ba81822 -2017-05-13 11:40 +0000 [5a7af00e80] Joshua Colp +2018-02-19 04:21 +0000 [4b555d7147] Thomas Guebels - * asterisk: Audit locking of channel when manipulating flags. + * res_rtp_asterisk: Fix ICE candidate nomination - When manipulating flags on a channel the channel has to be - locked to guarantee that nothing else is also manipulating - the flags. This change introduces locking where necessary to - guarantee this. It also adds helper functions that manipulate - channel flags and lock to reduce repeated code. + 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. - ASTERISK-26789 + 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. - Change-Id: I489280662dba0f4c50981bfc5b5a7073fef2db10 + ASTERISK-27646 -2017-05-12 21:04 +0000 [30fbed65f1] Richard Mudgett + Change-Id: I5dbc69ad63cacbb067922850fbb113d479bd729c - * res_pjsip_session.c: Process initial INVITE sooner. (key exists) +2018-02-18 10:27 +0000 [8b18247af6] Sean Bright - Retransmissions of an initial INVITE could be queued in the serializer - before we have processed the first INVITE message. If the first INVITE - message doesn't get completely processed before the retransmissions are - seen then we could try to setup the same call from the retransmissions. A - symptom of this is seeing a (key exists) message associated with an - INVITE. An earlier change attempted to address this kind of problem by - calculating a distributor serializer to use for unassociated messages. - Part of that change also made incoming calls keep using that distributor - serializer. (ASTERISK-26088) However, some leftover code was still - deferring the INVITE processing to the session's serializer even though we - were already in that serializer. This not only is unnecessary but would - cause the same call resetup problem. + * res_http_websocket: Don't leak memory on read failure - * Removed the code to defer processing the initial INVITE to the session's - serializer because we are already running in that serializer. + Change-Id: Ic449ea832bc81a1671c0e910c5fbe8c683e3da89 - ASTERISK-26998 #close +2018-02-19 03:57 +0000 [97c21e9cb3] Corey Farrell - Change-Id: I1e822d82dcc650e508bc2d40d545d5de4f3421f6 + * core: Rename sounds_index.c to sounds.c. -2017-05-14 00:37 +0000 [6e7b78414f] Rodrigo Ramírez Norambuena + 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. - * Fix spelling queues.conf.sample file + Change-Id: Ifb8e489575b27eb33d8c0b6a531f266670557f6e - Change-Id: Ie1c2d83af66f27a449da09a68d987e0992627fee +2018-02-19 02:49 +0000 [e03f0f9572] Corey Farrell -2017-05-08 13:40 +0000 [93b7f84c1a] Vitezslav Novy + * config: Fix locking for extconfig reload. - * chan_sip: Change sip_get_codec() to return correct codec list + Expand locking to include full reload process for extconfig to ensure + nothing can read the config mappings between clearing and reloading. - Return cahnnel nativeformats to fix bridge technology selection process. - Same approach as in pjsip module. + Change-Id: I378316bad04f1b599ea82d0fef62b8978a644b92 - ASTERISK-26143 - Reported-by: Henning Holtschneider +2018-02-15 14:09 +0000 [e4a5c9ccf4] Sean Bright - Change-Id: I64e863753954d6ad67a9e722df2ebc328705ad48 + * res_pjsip_header_funcs: Various cleanups -2017-05-08 15:56 +0000 [808f299808] Alexei Gradinari + * Prefer strcasecmp() over stricmp() + * Use a list with no lock since we never actually lock + * Minor cleanups to error messages - * res_pjsip: New endpoint option "refer_blind_progress" + Change-Id: I8446f44795ee8f3072e1c1f9193c6912dfc0c42b - This option 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". +2018-02-17 08:49 +0000 [a70c92121d] Alexander Traud - Some SIP phones like Mitel/Aastra or Snom keep the line busy until - receive "200 OK". + * rtp_engine: Load format name / mime type in uppercase again. - ASTERISK-26333 #close + This reverts a previous change partly. - Change-Id: Id606fbff2e02e967c02138457badc399144720f2 + ASTERISK-27689 -2017-05-11 00:25 +0000 [045dbcc2d6] Ivan Poddubny + Change-Id: Ia3d2f282db6995be8c1c253b5d52f6038761e8af - * app_queue: Fix duplicate queue_log entries for EXITEMPTY and ABANDON +2018-02-16 17:58 +0000 [525c0251c0] Corey Farrell - There are 2 places in app_queue.c that log EXITEMPTY event: one in - wait_our_turn, and another one in queue_exec in the loop trying to - call an agent after wait_our_turn. + * BuildSystem: Use single bootstrap.sh for Asterisk and menuselect. - In most cases it leads to logging EXITEMPTY twice. + 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. - ABANDON is also logged on two places, and in the rare case when an agent - and caller hang up simultaneously it's also possible to get duplicates - in queue_log. + Change-Id: I2bfd8537bbb63b3d46b11efabbb15eaaf9ef731a - This commit changes wait_our_turn to return -1 ("the caller should exit - the queue") instead of 0 ("the caller's turn has arrived") in case of - leaving when empty, so queue_exec skips the agent calling loop. +2018-02-16 13:33 +0000 [65a4084060] Sean Bright - Also, leave_queue is now executed only once in this case, because 2nd - time is just a noop when the queue entry has already been removed. + * res_pjsip: Endpoint destruction does not free DTLS configuration - Also, it sets qe->handled to -1 to indicate that the call was not - answered by an agent, but the necessary handling has already been done - in order to avoid logging an extra ABANDON entry. + ASTERISK-27679 #close + Reported by: Mak Dee - ASTERISK-25665 #close - Reported by: Ove Aursand + Change-Id: I89a2783a11be0763bf123d1619ed176b6225cf42 - Change-Id: I4578dd383bf2ac41589cf167865e8aaebcd4c11e +2018-02-16 12:42 +0000 [a7e7302ab6] Alexander Traud -2017-04-27 19:37 +0000 [b8659be9b0] Richard Mudgett + * install_prereq: Update OpenBSD libraries. - * SDP: Make process possible multiple fmtp attributes per rtpmap. + deleted + jack sqlite - Change-Id: Ie7511008d82b59590e0eb520a21b5e1da4bd7349 + renamed + freetds-0.63p1-msdblib to freetds + mysql-client to mariadb-client -2017-04-28 11:53 +0000 [c2906dfa05] Richard Mudgett + 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 - * SDP: Remove sdp_state.remote_capabilities + ASTERISK-27684 - The sdp_state.remote_capabilities was only used inside merge_sdps() and - subsequent calls to merge_sdps() by re-INVITE's would leak them. + Change-Id: I26bdcb0a1d0e484a8dad1052da97f194aefd3370 - Change-Id: I0ceb7838ea044cc913e8ad4a255c39c9740ae0ce +2018-02-16 12:30 +0000 [14796f529e] Alexander Traud -2017-05-05 14:30 +0000 [16785c0908] Richard Mudgett + * BuildSystem: Allow newer autotools on OpenBSD. - * SDP: Add interface_address to specify our address to use. + ASTERISK-27683 - When we optionally set the interface_address we are forcing the media to - go out a specific interface address. This allows us to optionally have - the media go out the interface that SIP signalling came in on or if we are - configured to have the media always go out a specific address. + Change-Id: I5ec9dafbb0c16b6f2740c641980bc2eaaf995624 - Change-Id: I160d9fac322a075bd2557b430632544178196189 +2017-10-16 07:36 +0000 [976afd26ab] Torrey Searle -2017-05-05 14:49 +0000 [367042bd3e] Richard Mudgett + * contrib/script/sip_to_pjsip: add support for realtime - * SDP: Explicitly stop a RTP instance before destoying it. + Add a new script that can read from legacy realtime peers & generate + an sql file for populating pjsip endpoints, identify, and aor records. - * Made sdp_add_m_from_rtp_stream() and sdp_add_m_from_udptl_stream() - handle generating disabled/declined streams. + ASTERISK-27348 #close - * Added /main/sdp/sdp_merge_asymmetric unit test. It currently does not - check the offerer side negotiated SDP because that isn't the purpose of - this patch and there is much to be done to handle declined/dummy streams. + Change-Id: Idd3d7968a3c9c3ee7936d21acbdaf001b429bf65 - * Added T.38 image streams to the /main/sdp/sdp_merge_symmetric and - /main/sdp/sdp_merge_crisscross unit tests. +2018-02-16 07:52 +0000 [dda73c5018] Alexander Traud - Change-Id: Ib4dcb3ca4f9a9133b376f4e3302f9a1f963f2b31 + * BuildSystem: Fix a typo related to ./configure --prefix= on OpenBSD. -2017-04-28 19:48 +0000 [be5809fac8] Richard Mudgett + Reported by: Stuart Henderson - * SDP: Rework merge_capabilities(). + Change-Id: Ieae8624f48b6ae78cf29930b9a45a3c842c7a764 - * Tried to give better variable names. - * Made our SDP answer use the offer's RTP payload types as the SDP RFC - says we SHOULD. - * Updating the local topology now takes the stream format caps. We are - likely preparing to send an offer. +2018-02-16 05:58 +0000 [5fd59014a5] Alexander Traud - Change-Id: I34d3be8e3036402a8575ffcae3eebc5ce348d7c0 + * res_calendar: Specialized calendars depend on symbols of general calendar. -2017-04-28 12:30 +0000 [ae7689f093] Richard Mudgett + ASTERISK-27680 - * SDP: Update ast_get_topology_from_sdp() to keep RTP map. + Change-Id: Ifb77912e424fe3710a025c18526fada673ec0b79 - * Add failure exits to ast_get_topology_from_sdp(). +2018-02-16 06:41 +0000 [c674efa996] Alexander Traud - Change-Id: I4cc85c1ede8d712766ed20f544dbcef04c8c1049 + * BuildSystem: Enable IMAP storage on OpenBSD. -2017-05-09 10:34 +0000 [cbbd119c21] Joshua Colp + ASTERISK-27681 + Reported by: Stuart Henderson - * tcptls: Improve error messages for TLS connections. + Change-Id: Ifb6b614acb251b695b9417d76510e73eb335b679 - This change uses the functions provided by OpenSSL to query - and better construct error messages for situations where - the connection encounters a problem. +2018-02-16 04:50 +0000 [2c814afb86] Alexander Traud - ASTERISK-26606 + * BuildSystem: Enable system provided libedit on OpenBSD. - Change-Id: I7ae40ce88c0dc4e185c4df1ceb3a6ccc198f075b + ASTERISK-27677 -2017-05-04 17:28 +0000 [10a4439ac9] Joshua Elson + Change-Id: I0854e3616d1361ae9b6907d3d3444a02784ac62b - * Prevent Undefined Capath Crash +2018-02-15 14:30 +0000 [af2dd3a678] Sean Bright - It is possible to initialize a valid config without a capath - or cafile definition. This will cause a crash on a reload. + * bridge_roles: Use a non-locking linked list where appropriate - This fix ensures capath is always allocated. + Also explicitly initialize with the AST_LIST_HEAD_NOLOCK_INIT macro for + clarity. - ASTERISK-26983 #close + Change-Id: I4bc39ec33bc3ff77e1a971a01ace87deb965be3f - Change-Id: I63ff715d9d9023427543a5b8a4ba7b0d82533c12 +2018-02-15 13:29 +0000 [303e43f8a6] Sean Bright -2017-05-05 11:33 +0000 [1a1c86239d] George Joseph + * res_pjsip: Use pjsip_sip_uri.user_param instead of other_param - * cel_odbc: Fix timestamp processing for microseconds + 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. - When a column is of type timestamp, the fraction part of the event - field's seconds was frequently parsed incorrectly especially if - there were leading zeros. For instance "2017-05-23 23:55:03.023" - would be parsed into an int as "23" then when the timestamp was - formatted again to be inserted into the database column it'd be - "2017-05-23 23:55:03.23" which is now 230 milliseconds instead of - 23 milliseconds. "03.000001" would be transformed to "03.1", etc. + Change-Id: I0a0ce8a60ecee27489735bf56fd707719d8c2ed6 - * If the event field is 'eventtime' and the db column is timestamp, - then existing processing has already correctly formatted the - timestamp so now we simply use it rather than parsing it and - re-printing it. This is the most common use case anyway. +2018-02-12 07:37 +0000 [8ac198aff3] Alexander Traud - * If the event field is other than 'eventtime' and the db column - is timestamp, we now parse the seconds, including the fractional - part into a double rather than 2 ints. This preserves the - magnitude and precision of the fractional part. When we print - it, we now print it as a "%09.6lf" which correctly represents the - input. + * BuildSystem: Remove chan_h323 leftovers. - To be honest, why we parse the string timestamp into components, - test the components, then print the components back into a string - timestamp is beyond me. We should use parse it, test it, then if - it passes, use the original string representation in the database - call. Maybe someone thought that some implementations wouldn't - take a partial timestamp string like "2017-05-06" and decided to - always produce a full timestamp string even if an abbreviated one - was supplied. Anyway, I'm leaving it as it is. + ASTERISK-27670 - ASTERISK-25032 #close - Reported-by: Etienne Lessard + Change-Id: I07a8ef8bbd6001e25711fa1bff152eb6c9efa729 - Change-Id: Id407e6221f79a5c1120e1a70bc7e893bbcaf1938 +2018-01-17 08:17 +0000 [6b6b3ffa5b] Alexander Traud -2017-05-09 05:25 +0000 [3c36c29c81] Joshua Colp + * BuildSystem: Invoke ldconfig with previous path. - * res_hep_rtcp: Provide chan_sip Call-ID for RTCP messages. + On OpenBSD, gmake uninstall{-all} registered only libraries from /usr/lib and + lost those from /usr/local/lib. Instead, invoke ldconfig on a path. - This change adds the required logic to allow the SIP - Call-ID to be placed into the HEP RTCP traffic if the - chan_sip module is used. In cases where the option is - enabled but the channel is not either SIP or PJSIP then - the code will fallback to the channel name as done - previously. + ASTERISK-27595 - Based on the change on Nir's branch at: - team/nirs/hep-chan-sip-support + Change-Id: I4aa2c0b5e07119d1a556f8ff6349eaf09e986888 - ASTERISK-26427 +2017-12-22 15:27 +0000 [9f74afbdcf] Corey Farrell - Change-Id: I09ffa5f6e2fdfd99ee999650ba4e0a7aad6dc40d + * Deprecate legacy modules. -2017-05-08 16:11 +0000 [201346fb7d] George Joseph + * app_fax (replaced by res_fax). + * res_config_sqlite (replaced by res_config_sqlite3). + * res_monitor (replaced by app_mixmonitor). - * logger: Added logger_queue_limit to the configuration options. + This is related to ASTERISK~23657 but does not resolve that ticket. + Resolving that ticket would require complete removal of res_monitor. - 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. - Should something go bezerk and log tons of messages in a tight - loop, this will prevent memory escalation. + ASTERISK-27671 #close - When the limit is reached, a WARNING is logged to that effect - and messages are discarded until the queue is empty again. At - that time another WARNING will be logged with the count of - discarded messages. There's no "low water mark" for this queue - because the logger thread empties the entire queue and processes it - in 1 batch before going back and waiting on the queue again. - Implementing a low water mark would mean additional locking as - the thread processes each message and it's not worth it. + Change-Id: I16a3edd61fc1abd4a7b2e9357693ed663f62dd49 - A "test" was added to test_logger.c but since the outcome is - non-deterministic, it's really just a cli command, not a unit - test. +2018-01-28 03:02 +0000 [f9ba31bb21] Alexander Traud - Change-Id: Ib4520c95e1ca5325dbf584c7989ce391649836d1 + * BuildSystem: Do not warn when bash is not installed. -2017-05-02 18:05 +0000 [56c5c51076] Richard Mudgett + ASTERISK-27631 - * stream: ast_stream_clone() cannot copy the opaque user data. + Change-Id: Iefdf268b0b98c3e7d8089ba87cf78136ac1d785b - ast_stream_clone() cannot copy the opaque user data stored on a stream. - We don't know how to clone the data so it isn't copied into the clone. +2018-02-12 22:15 +0000 [9e45d3f893] Corey Farrell - Change-Id: Ia51321bf38ecbfdcc53787ca77ea5fd2cabdf367 + * main/asterisk.c: Remove silly usage of RAII_VAR. -2017-05-04 17:32 +0000 [924628812b] Richard Mudgett + Change-Id: I7e2996397fbd3c3a6a69dd805c38448ddfc34ae9 - * netsock2.c: Made get/set addr port avoid potential uninitialized memory. +2017-12-25 19:32 +0000 [02ee296f81] Corey Farrell - Change-Id: I532052bd7cd95a4b3565485fc01e2a1ea07ee647 + * optional_api: Refactor to use vector's and standard allocators. -2017-05-05 08:48 +0000 [4146facfec] Joshua Colp + * 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. - * func_cdr: Allow empty value for CDR dialplan function. + Change-Id: Ic6ecb31798d4a78e7df39ece86a68b60eac05bf5 - A regression was introduced in 12 where passing an empty value - to the CDR dialplan function was not longer allowed. This - change returns to the behavior of 11 where it is permitted. +2018-02-11 15:27 +0000 [8372138cce] Richard Mudgett - ASTERISK-26173 + * chan_sip.c: Fix crash processing CANCEL. - Change-Id: I3f148203b54ec088007e29e30005a5de122e51c5 + Check if initreq data string exists before using it when processing a + CANCEL request. -2017-05-04 16:04 +0000 [0001834157] George Joseph + ASTERISK-27666 - * app_confbridge: Fix reference to cfg in menu_template_handler + Change-Id: Id1d0f0fa4ec94e81b332b2973d93e5a14bb4cc97 - menu_template_handler wasn't properly accounting for the fact that - it might be called both during a load/reload (which isn't really - valid but not prevented) and by a dialplan function. In both cases - it was attempting to use the "pending" config which wasn't valid in - the latter case. aco_process_config is also partly to blame because - it wasn't properly cleaning "pending" up when a reload was done and - no changes were made. Both of these contributed to a crash if - CONFBRIDGE(menu,template) was called in a dialplan after a reload. +2018-02-06 14:27 +0000 [cb4cfb8c43] Sungtae Kim - * aco_process_config now sets info->internal->pending to NULL - after it unrefs it although this isn't strictly necessary in the - context of this fix. - * menu_template_handler now uses the "current" config and silently - ignores any attempt to be called as a result of someone uses the - "template" parameter in the conf file. + * manager: Add AMI event Load/Unload - Luckily there's no other place in the codebase where - aco_pending_config is used outside of aco_process_config. + Add an AMI events Load and Unload for notify when the + module has been loaded and unloaded. - ASTERISK-25506 #close - Reported-by: Frederic LE FOLL + ASTERISK-27661 - Change-Id: Ib349a17d3d088f092480b19addd7122fcaac21a7 + Change-Id: Ib916c41eddd63651952998f2f49c57c42ef87a64 -2017-04-30 16:40 +0000 [c90d81ef51] Joshua Colp +2018-01-30 20:31 +0000 [04490fb1d8] Corey Farrell - * bridge: Fix returning to dialplan when executing Bridge() from AMI. + * json: Add conditionals to avoid locking if Jansson is thread safe. - When using the Bridge AMI action on the same channel multiple times - it was possible for the channel to return to the wrong location in - the dialplan if the other party hung up. This happened because the - priority of the channel was not preserved across each action - invocation and it would fail to move on to the next priority in - other cases. + 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. - This change makes it so that the priority of a channel is preserved - when taking control of it from another thread and it is incremented - as appropriate such that the priority reflects where the channel - should next be executed in the dialplan, not where it may or may not - currently be. + Change-Id: Id985cb3ffa6681f9ac765642e20fcd187bd4aeee - The Bridge AMI action was also changed to ensure that it too - starts the channels at the next location in the dialplan. +2018-02-12 06:16 +0000 [b21915bd1c] Alexander Traud - ASTERISK-24529 + * pjproject_bundled: Disable G.729 from Belledonne Communications. - Change-Id: I52406669cf64208aef7252a65b63ade31fbf7a5a + 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. -2017-04-25 11:49 +0000 [7b0e3b92fd] Kevin Harwell + ASTERISK-27584 + Reported by: Stuart Henderson - * bridge_simple: Added support for streams + Change-Id: I88b6b18ad777bcfe2d8201187b4b90eec0a172a6 - This patch is the first cut at adding stream support to the bridging framework. - Changes were made to the framework that allows mapping of stream topologies to - a bridge's supported media types. +2018-02-12 05:38 +0000 [97f45d5816] Alexander Traud - The first channel to enter a bridge initially defines the media types for a - bridge (i.e. a one to one mapping is created between the bridge and the first - channel). Subsequently added channels merge their media types into the bridge's - adding to it when necessary. This allows channels with different sized - topologies to map correctly to each other according to media type. The bridge - drops any frame that does not have a matching index into a given write stream. + * codecs: Add support for WebRTC iLBC 2.0. - For now though, bridge_simple will align its two channels according to size or - first to join. Once both channels join the bridge the one with the most streams - will indicate to the other channel to update its streams to be the same as that - of the other. If both channels have the same number of streams then the first - channel to join is chosen as the stream base. + When the latest version of that library was installed, Asterisk did not build. - A topology change source was also added to a channel when a stream toplogy - change request is made. This allows subsystems to know whether or not they - initiated a change request. Thus avoiding potential recursive situations. + ASTERISK-27669 + Reported by: Николай Михо - ASTERISK-26966 #close + Change-Id: I27e09bb875fdd56423bd9fae1be85fddb428eb96 - Change-Id: I1eb5987921dd80c3cdcf52accc136393ca2d4163 +2018-02-12 01:26 +0000 [9fddc8b4dc] Corey Farrell -2017-05-01 13:04 +0000 [008e25def9] Kevin Harwell + * core: Remove embedded editline. - * res_rtp_asterisk: Clearing the remote RTCP address causes RTCP failures + This removes the embedded copy of editline from the Asterisk source + tree, making a system copy of libedit mandatory in Asterisk 16+. - When a call gets put on hold RTP is temporarily stopped and Asterisk was - setting the remote RTCP address to NULL. Then when RTCP data was received - from the remote endpoint, Asterisk would be missing this information when - publishing the rtcp_message stasis event. Consequently, message subscribers - (in this case res_hep_rtcp) trying to parse the "from" field output the - following error: + ASTERISK-27634 #close - "ast_sockaddr_split_hostport: Port missing in (null)" + Change-Id: Iedb64ad92acb78419f3caefedaa2bb7cd2a1a33f - This patch makes it so the remote RTCP address is no longer set to NULL when - stopping RTP. There was only one place that appeared to check if the remote - RTCP address was NULL as a way to tell if RTCP was running. This patch added - an additional check on the RTCP schedid for that case to make sure RTCP was - truly not running. +2018-01-30 09:58 +0000 [32e610d9e6] Alexander Traud - ASTERISK-26860 #close + * backtrace: Avoid potential spurious output. - Change-Id: I6be200fb20db647e48b5138ea4b81dfa7962974b + clang 4.0 found this via -Wlogical-not-parentheses. -2017-05-02 11:34 +0000 [675e058e77] Sean Bright + ASTERISK-27642 - * cleanup: Change severity of fread short-read warning + Change-Id: I9ec3e144d425a976c02811bd23cd0c533d2eca4e - Many sound files don't have a full frame's worth of data at EOF, so the - warning messages were a bit too noisy. So we demote them to debug - messages. +2018-02-10 05:39 +0000 [971378bbdb] Alexander Traud - Change-Id: I6b617467d687658adca39170a81797a11cc766f6 + * install_prereq: Update Debian/Ubuntu libraries. -2017-04-26 16:22 +0000 [cd272da7a8] Richard Mudgett + ASTERISK-27555 - * SDP: Replace SDP telephone_event option with dtmf option + Change-Id: Idc36e91db30c0163c560d04c5a82bca5d6ce92a8 - The telephone_event option was used as a flag and a bit mapped value in - different places when it is a boolean. It is also inadequate to configure - the DTMF operation of the RTP instance created for the stream. +2018-02-09 12:06 +0000 [b2fcb30d38] Richard Mudgett - Change-Id: Ib1addeaf0ce86f07039f2f979cab29405dc5239b + * cdr.c: Fix runtime leak of CDR records. -2017-04-29 16:11 +0000 [52e4f02b1a] Richard Mudgett + Need to remove all CDR's listed by a CDR object from the active_cdrs_all + container including the root/master record. - * res_pjsip_t38.c: Fix deadlock in T.38 framehook. + ASTERISK-27656 - A deadlock can happen between a channel lock and a pjsip session media - container lock. One thread is processing a reINVITE's SDP and walking - through the session's media container when it waits for the channel lock - to put the determined format capabilities onto the channel. The other - thread is writing a frame to the channel and processing the T.38 frame - hook. The T.38 frame hook then waits for the pjsip session's media - container lock. The two threads are now deadlocked. + Change-Id: I48b4970663fea98baa262593d2204ef304aaf80e - * Made the T.38 frame hook release the channel lock before searching the - session's media container. This fix has been done to several other - frame hooks to fix deadlocks. +2018-01-31 17:48 +0000 [67cd90f10d] Richard Mudgett - ASTERISK-26974 #close + * app_confbridge: ConfbridgeList event has standard channel shapshot headers. - Change-Id: Ie984a76ce00bef6ec9aa239010e51e8dd74c8186 + * 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 "". -2017-04-28 10:56 +0000 [8170793be6] George Joseph + ASTERISK-27651 - * res_pjsip_outbound_authenticator_digest: Add context to log messages + Change-Id: Iaf7d54a9d40194c2db060bc9b4979fab6720d977 - There was no context info in this module's log messages so it was - impossible to toubleshoot. +2018-01-31 15:45 +0000 [f4b161440b] Richard Mudgett - Added endpoint or host to all messages and added the realms in the - challenge for the "No auth credentials for any realm" message. + * app_confbridge: Add the Muted header to ConfbridgeJoin AMI event. - Change-Id: Ifeed2786f35fbea7d141237ae15625e472acff9b + ASTERISK-27651 -2017-04-27 16:46 +0000 [48566b8c66] Richard Mudgett + Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34 - * res_sdp_translator_pjmedia.c: Add TODO notes. +2017-12-19 02:52 +0000 [5b8fea93d1] Oron Peled - Change-Id: If27ca61f79accc882c3376d2e876d2b44aa1347b + * chan_console: don't read and write at the same time -2017-04-24 18:13 +0000 [ede90e4aa5] Richard Mudgett + 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. - * SDP: Make SDP translation to/from internal representation more const. + 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. - Change-Id: I473a174b869728604b37c60853896b0c458bc504 + ASTERISK-27426 #close -2017-04-20 19:25 +0000 [5c1851cbc0] Richard Mudgett + Change-Id: I635eacee45f5413faa18f5a3b606af03b926dacb - * stream: Make ast_stream_topology_create_from_format_cap() allow NULL cap. +2018-02-02 17:35 +0000 [1017db107c] Richard Mudgett - Change-Id: Ie29760c49c25d7022ba2124698283181a0dd5d08 + * endpoint identifiers: Some code cleanup. -2017-04-24 16:55 +0000 [d71c6e3bfd] Richard Mudgett + 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(). - * SDP: Make ast_sdp_state_set_remote_sdp() return error. + 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: I7707c9d872c476d897ff459008652b35142a35e1 + Change-Id: I86924c31db5bd225ca0c1219c761b668c6f91189 -2017-04-14 11:52 +0000 [176123e76c] Richard Mudgett +2018-02-02 17:20 +0000 [b71e469d68] Richard Mudgett - * SDP: Misc cleanups (Mostly memory leaks) + * res_pjsip/config_domain_aliases.c: Add check for missing domain. - Change-Id: I74431b385da333f2c5f5a6d7c55e70b69a4f05d2 + What is the point of defining an alias and not saying what is being + aliased? -2017-04-27 18:15 +0000 [bad091b317] Richard Mudgett + Change-Id: I98a892016ed61dcf5efeb6619fd748925103f0be - * chan_vpb.cc: Fix compile error. +2018-02-02 15:11 +0000 [0960de71ae] Richard Mudgett - Change-Id: I6d9edd34d8b2474222c86f44e379ead61e57a54f + * res_pjsip.c: Fix documentation typos. -2017-04-26 16:14 +0000 [d6535c0080] Mark Michelson + Change-Id: I82ae0b92bfa2ece84a5c684efd9eefdc83ebd068 - * SDP API: Add SSRC-level attributes +2018-02-02 15:43 +0000 [bef49d90c1] Richard Mudgett - RFC 5576 defines how SSRC-level attributes may be added to SDP media - descriptions. In general, this is useful for grouping related SSRCes, - indicating SSRC-level format attributes, and resolving collisions in RTP - SSRC values. These attributes are used widely by browsers during WebRTC - communications, including attributes defined by documents outside of RFC - 5576. + * res_sorcery_realtime.c: Fix ref leak if object failed to apply. - This commit introduces the addition of SSRC-level attributes into SDPs - generated by Asterisk. Since Asterisk does not tend to use multiple - SSRCs on a media stream, the initial support is minimal. Asterisk - includes an SSRC-level CNAME attribute if configured to do so. This at - least gives browsers (and possibly others) the ability to resolve SSRC - collisions at offer-answer time. + Change-Id: I3c7106ff77009754725cee790eadf5da44154ab6 - In order to facilitate this, the RTP engine API has been enhanced to be - able to retrieve the SSRC and CNAME on a given RTP instance. +2018-01-24 19:58 +0000 [7e32adf044] Sungtae Kim - res_rtp_asterisk currently does not provide meaningful CNAME values in - its RTCP SDES items, and therefore it currently will always return an - empty string as the CNAME value. A task in the near future will result - in res_rtp_asterisk generating more meaningful CNAMEs. + * manager.c: Fixed "(null):" header in AMI AsyncAGIEnd event - Change-Id: I29e7f23e7db77524f82a3b6e8531b1195ff57789 + * Changed to create ami_event string only when the given blob is not + json_null(). + * Fixed bad expression. -2017-04-27 08:02 +0000 [d6b2a58736] George Joseph + ASTERISK-27621 - * res_pjsip_session: Add cleanup to ast_sip_session_terminate + Change-Id: Ice58c16361f9d9e8648261c9ed5d6c8245fb0d8f - If you use ast_request to create a PJSIP channel but then hang it - up without causing a transaction to be sent, the session will - never be destroyed. This is due ot the fact that it's pjproject - that triggers the session cleanup when the transaction ends. - app_chanisavail was doing this to get more granular channel state - and it's also possible for this to happen via ARI. +2018-02-01 13:01 +0000 [73f92c2c52] Joshua Elson - * ast_sip_session_terminate was modified to explicitly call the - cleanup tasks and unreference session if the invite state is NULL - AND invite_tsx is NULL (meaning we never sent a transaction). + * res_pjsip_mwi.c: Fix null pointer crash - * chan_pjsip/hangup was modified to bump session before it calls - ast_sip_session_terminate to insure that session stays valid - while it does its own cleanup. + ASTERISK-27652 #close - * Added test events to session_destructor for a future testsuite - test. + Change-Id: I78a0d38bfd8d0d82830f3d53da04872d6b67284d - ASTERISK-26908 #close - Reported-by: Richard Mudgett +2018-02-01 15:03 +0000 [fc98843d4b] Sean Bright - Change-Id: I52daf6f757184e5544c261f64f6fe9602c4680a9 + * appdocsxml.xslt: Add Language to channel snapshot transformation -2017-04-24 10:59 +0000 [2b22c3c84b] Joshua Colp + Change-Id: I8f494b0c895a69b8bc94656d0c6ceebecb0394d8 - * channel: Add ability to request an outgoing channel with stream topology. +2018-01-31 15:40 +0000 [3419a048b9] Richard Mudgett - This change extends the ast_request functionality by adding another - function and callback to create an outgoing channel with a requested - stream topology. Fallback is provided by either converting the - requested stream topology into a format capabilities structure if - the channel driver does not support streams or by converting the - requested format capabilities into a stream topology if the channel - driver does support streams. + * manager.c: Fix potential memory leak and corruption. - The Dial application has also been updated to request an outgoing - channel with the stream topology of the calling channel. + ast_str_append_event_header() could potentially leak and corrupt memory if + the ast_str needed to expand to add the AMI event header. - ASTERISK-26959 + * Fixed to return error if the ast_str_append() failed. - Change-Id: Ifa9037a672ac21d42dd7125aa09816dc879a70e6 + Change-Id: I92f36b855540743b208d76e274152ee2d758176d -2017-04-26 14:20 +0000 [c6b757fa05] Kevin Harwell +2018-01-31 17:27 +0000 [bcfe172f8d] Richard Mudgett - * res_pjsip/res_pjsip_callerid: NULL check on caller id name string + * manager_channels.c: Reordered ast_manager_build_channel_state_string_prefix() - It's possible for a name in a party id structure to be marked as valid, but the - name string itself be NULL (for instance this is possible to do by using the - dialplan CALLERID function). There were a couple of places where the name was - validated, but the string itself was not checked before passing it to functions - like 'strlen'. This of course caused a crashed. + * Made not allocate memory if the channel snapshot is an internal channel. - This patch adds in a NULL check before attempting to pass it into a function - that is not NULL tolerant. + * Free memory earlier when no longer needed. - ASTERISK-25823 #close + Change-Id: Ia06e0c065f1bd095781aa3f4a626d58fa4d28b38 - Change-Id: Iaa6ffe9d92f598fe9e3c8ae373fadbe3dfbf1d4a +2018-01-31 12:44 +0000 [4e4428ef3c] Corey Farrell -2017-04-25 11:43 +0000 [cf3429b934] Kevin Harwell + * res_pjsip_registrar_expire: Delete empty module. - * vector: defaults and indexes + Verified nothing in the testsuite lists this module as a dependency. - Added an pre-defined integer vector declaration. This makes integer vectors - easier to declare and pass around. Also, added the ability to default a vector - up to a given size with a default value. Lastly, added functionality that - returns the "nth" index of a matching value. + Change-Id: I90c7d52c7e15e85fde3389d5eaccb05b97848813 - Also, updated a unit test to test these changes. +2018-01-30 19:22 +0000 [1ccac0be0e] Richard Mudgett - Change-Id: Iaf4b51b2540eda57cb43f67aa59cf1d96cdbcaa5 + * bridge_softmix.c: Report not talking immediately when muted. -2017-04-26 05:38 +0000 [985a5fd7aa] Joshua Colp + 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. - * frame: Better handle interpolated frames. + * 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. - Interpolated frames are frames which contain a number of - samples but have no actual data. Audiohooks did not - handle this case when translating an incoming frame into - signed linear. It assumed that a frame would always contain - media when it may not. If this occurs audiohooks will now - immediately return and not act on the frame. + ASTERISK-27647 - As well for users of ast_trans_frameout the function has - been changed to be a bit more sane and ensure that the data - pointer on a frame is set to NULL if no data is actually - on the frame. This allows the various spots in Asterisk that - check for an interpolated frame based on the presence of a - data pointer to work as expected. + Change-Id: Ie4fdbc05a0bc7343c2972bab012e2567917b3d4e - ASTERISK-26926 +2018-01-30 15:00 +0000 [b9024197ab] Richard Mudgett - Change-Id: I7fa22f631fa28d540722ed789ce28e84c7f8662b + * app_confbridge: Update dsp_silence_threshold and dsp_talking_threshold docs. -2017-04-26 09:22 +0000 [99dea9ba84] Yasin CANER + 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. - * res_pjsip_session : fixed wrong From Header number On Re-invite + Change-Id: If6f939c100eb92a5ac6c21236559018eeaf58443 - ASTERISK-26964 #close +2018-01-31 11:00 +0000 [6c5e3226ec] Richard Mudgett - Change-Id: I55a9caa7dc90e6c4c219cb09b5c2ec08af84a302 + * res_pjsip_registrar.c: Fix compiler error. -2017-04-26 08:45 +0000 [858ed60446] George Joseph + Need to include signal.h to define pthread_kill() and SIGURG. - * pjproject_bundled: Add --disable-libwebrtc to configure + Change-Id: I10ae3aa4bf8e7386ac29ade78c0f2caed8e674fa - Without the disable, pjproject tries to build it's internal - webrtc implementation which requires sse2. This fails on - platforms without sse2. +2018-01-30 23:05 +0000 [60701b3252] Corey Farrell - ASTERISK-26930 #close - Reported-by: abelbeck + * res_pjsip_session: Prevent crash during shutdown. - Change-Id: I07231f9160c35cfa42b194d3aad4e7d51fd9a410 + 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. -2017-04-26 07:58 +0000 [585f9405b1] Thierry Magnien + ASTERISK-27571 #close - * channels/chan_sip.c: use binding IP address for outgoing TCP SIP connections + Change-Id: Ia550fcba563e2328f03162d79fb185f16b7c9b9d - For outgoing TCP connections, Asterisk uses the first IP address of the - interface instead of the IP address we asked him to bind to. +2018-01-27 13:03 +0000 [720dbb5745] Corey Farrell - ASTERISK-26922 #close - Reported-by: Ksenia + * core: Create ast_atomic macro's. - Change-Id: I43c71ca89211dbf1838e5bcdb9be8d06d98e54eb + Create ast_atomic macro's to provide a consistent interface to the + common functionality of __atomic and __sync built-in functions. -2017-04-21 12:04 +0000 [f5b67871df] Sean Bright + ASTERISK-27619 - * cleanup: Fix fread() and fwrite() error handling + Change-Id: Ieba3f81832a0e25c5725ea067e5d6f742d33eb5b - Cleaned up some of the incorrect uses of fread() and fwrite(), mostly in - the format modules. Neither of these functions will ever return a value - less than 0, which we were checking for in some cases. +2018-01-28 10:10 +0000 [2b9aa6b5bb] George Joseph - I've introduced a fair amount of duplication in the format modules, but - I plan to change how format modules work internally in a subsequent - patch set, so this is simply a stop-gap. + * res_pjsip_pubsub: Prune subs with reliable transports at startup - Change-Id: I8ca1cd47c20b2c0b72088bd13b9046f6977aa872 + 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. -2017-04-25 07:52 +0000 [199d4776c0] Joshua Colp + Also fixed issues in res_pjsip_registrar where it wasn't handling the + monitoring correctly when multiple registrations came in over the same + transport. - * alembic: Add table for 'resource_list' PJSIP RLS type. + 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. - This change adds an Alembic migration which adds a - ps_resource_list table that can contain resource_list - RLS configuration objects. + ASTERISK-27612 + Reported by: Ross Beer - ASTERISK-26929 + Change-Id: Iee87cf4eb9b7b2b93d5739a72af52d6ca8fbbe36 - Change-Id: I7c888fafc67b3e87012de974f71ca7a5b8b1ec05 +2018-01-29 13:46 +0000 [81db0aca0f] George Joseph -2017-04-14 05:21 +0000 [19a79ae12c] Joshua Colp + * res_pjsip_registrar_expire: Refactor into res_pjsip_register - * sdp: Add support for T.38 + res_pjsip_registrar_expire remains as an empty module for now. - This change adds a T.38 format which can be used in a stream - topology to specify that a UDPTL stream needs to be created. - The SDP API has been changed to understand T.38 and create - the UDPTL session, add the attributes, and parse the attributes. + Change-Id: Ib93698938bae548d2199cb542f3692d1a171239f - This change does not change the boundary of the T.38 state - machine. It is still up to the channel driver to implement and - act on it (such as queueing control frames or reacting to them). +2018-01-29 07:51 +0000 [cf21e9fc97] Corey Farrell - ASTERISK-26949 + * Sample modules.conf: comment out example load statement. - Change-Id: If28956762ccb8ead562ac6c03d162d3d6014f2c7 + 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. -2017-03-21 15:44 +0000 [32b3e36c68] Mark Michelson + Also remove reference to unknown module pbx_gtkconsole. - * SDP: Ensure SDPs "merge" properly. + Change-Id: Ib01888994d9f1364b14d3c9fb6ff96774a6e580a - The gist of this work ensures that when a remote SDP is received, it is - merged properly with the local capabilities. The remote SDP is converted - into a stream topology. That topology is then merged with the current - local topology on the SDP state. That new merged topology is then used - to create an SDP. Finally, adjustments are made to RTP instances based - on knowledge gained from the remote SDP. +2018-01-29 10:20 +0000 [913773cd75] Alexander Traud - There are also a battery of tests in this commit that ensure that some - basic SDP merges work as expected. + * BuildSystem: Enable autotools in FreeBSD. - While this may not sound like a big change, it has the property that it - caused lots of ancillary changes. + 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. - * The remote SDP is no longer stored on the SDP state. Biggest reason: - there's no need for it. The remote SDP is used at the time it is being - set and nowhere else. + ASTERISK-27637 - * Some new SDP APIs were added in order to find attributes and convert - generic SDP attributes into rtpmap structures. + Change-Id: Id7b94b80e78cc943a40ba79b697e3f70019820a7 - * Writing tests made me realize that retrieving a value from an SDP - options structure, the SDP options needs to be made const. +2018-01-29 10:00 +0000 [156b12340e] Alexander Traud - * The SDP state machine was essentially gutted by a previous commit. - Initially, I attempted to reinstate it, but I found that as it had - been defined, it was not all that useful. What was more useful was - knowing the role we play in SDP negotiation, so the SDP state machine - has been transformed into an indicator of role. + * app_voicemail: Avoid always true when using pointer address. - * Rather than storing separate local and joint stream state - capabilities, it makes more sense to keep track of current stream - state and update it as things change. + clang 4.0 warned about this. - Change-Id: I5938c2be3c6f0a003aa88a39a59e0880f8b2df3d + ASTERISK-27635 -2017-04-24 13:16 +0000 [0611f2ca17] Sean Bright + Change-Id: I213f230607d7fbe97c0f5f2d60da9cbf5a2d8231 - * res_hep: Add additional config initialization and validation +2018-01-19 05:13 +0000 [e7f8ef1935] Alexander Traud - * Initialize hepv3_runtime_data.sockfd to -1 so that our ao2 destructor - does not close fd 0 + * install_prereq: Update RHEL/CentOS/Fedora libraries. - * Add logging output when the required option - capture_address - is not - specified. + deleted + automake git ncurses-devel pjproject-devel sqlite2-devel libsqlite3x-devel - * Remove a no longer relevant #define and correct related documentation + renamed + radiusclient-ng-devel to radcli-devel + gmime22-devel to gmime-dev - * Pass appropriate flags to aco_option_register so that capture_address - cannot be the empty string. + 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-26953 #close + ASTERISK-27599 + Reported by: Said Masoud - Change-Id: Ief08441bc6596d6f1718fa810e54a5048124f076 + Change-Id: I05bb0af98ae532b2d5f37478e38b8f0762b1c035 -2017-04-17 19:06 +0000 [59203c51cc] Sean Bright +2018-01-28 05:20 +0000 [aaf14670b5] Alexander Traud - * core: Use eventfd for alert pipes on Linux when possible + * BuildSystem: Remove unused variables. - The primary win of switching to eventfd when possible is that it only - uses a single file descriptor while pipe() will use two. This means for - each bridge channel we're reducing the number of required file - descriptors by 1, and - if you're using timerfd - we also now have 1 - less file descriptor per Asterisk channel. + 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. - The API is not ideal (passing int arrays), but this is the cleanest - approach I could come up with to maintain API/ABI. + Change-Id: I252de5a98c17ea54459174875357c22c2eebe8d5 - I've also removed what I believe to be an erroneous code block that - checked the non-blocking flag on the pipe ends for each read. If the - file descriptor is 'losing' its non-blocking mode, it is because of a - bug somewhere else in our code. +2018-01-25 12:06 +0000 [84a6365164] Corey Farrell - In my testing I haven't seen any measurable difference in performance. + * loader: Use ast_cli_completion_add for 'module load' completion. - Change-Id: Iff0fb1573e7f7a187d5211ddc60aa8f3da3edb1d + 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. -2017-04-21 12:33 +0000 [f1d20c84a1] Richard Mudgett + Change-Id: I8bf51ffaa7ef1606f3bd1b5bb13f1905d72c6134 - * res_pjsip_session.c: Send 100 Trying out earlier to prevent retransmissions. +2018-01-27 09:44 +0000 [d9e42f27b9] Alexander Traud - If ICE is enabled and a STUN server does not respond then we will block - until we give up on the STUN response. This will take nine seconds. In - the mean time the peer that sent the INVITE will send retransmissions. + * core: Fix unused variable error in handle_show_sysinfo. - * Restructure res_pjsip_session.c:new_invite() to send a 100 Trying out - earlier to prevent these retransmissions. + The previous fix broke the case + HAVE_SYSINFO = no + HAVE_SYSCTL = yes + HAVE_SWAPCTL = no + which occurs on FreeBSD 11.1 for example. - ASTERISK-26890 + ASTERISK-26563 - Change-Id: Ie3fc611e53a0eff6586ad55e4aacad81cf6319a8 + Change-Id: If77c39bc75f0b83a6c8a24ecb2fa69be8846160a -2017-04-21 12:07 +0000 [835c209445] Richard Mudgett +2018-01-27 08:54 +0000 [3c26eec043] Alexander Traud - * res_pjsip_session.c: Restructure ast_sip_session_alloc() + * editline: Avoid shifting a negative signed value. - * Restructure ast_sip_session_alloc() to need less cleanup on off nominal - error paths. + clang 4.0 warned about this. - * Made ast_sip_session_alloc() and ast_sip_session_create_outgoing() avoid - unnecessary ref manipulation to return a session. This is faster than - calling a function. That function may do logging of the ref changes with - REF_DEBUG enabled. + ASTERISK-27630 - Change-Id: I2a0affc4be51013d3f0485782c96b8fee3ddb00a + Change-Id: Ie2725048c661c1792d8b1d498575144350b6e9ba -2017-04-20 02:13 +0000 [b4b1943c5d] Jean Aunis +2018-01-27 03:25 +0000 [c38da18ec6] Alexander Traud - * chan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK + * headers: Consistent use of typeof and/or __typeof__. - Some equipments may send a re-INVITE containing an SDP in the final ACK - request. If this happens in the context of direct media, the remote end - should be updated with a re-INVITE. - This patch queues an "update RTP peer" frame to trigger the re-INVITE, - instead of the "source change" frame wich was used previously. + 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. - ASTERISK-26951 + Change-Id: I2a962c3e596e882f691a19345445b14571a5f07c - Change-Id: I3644d2025f20e086ea9f8f62b486172c52b5b2e6 +2018-01-24 18:25 +0000 [5d320d2d4b] Richard Mudgett -2017-04-19 15:08 +0000 [c47b3e74d2] Sean Bright + * Update sounds release to fix siren7 and siren14 files. - * pbx: Use same thread if AST_OUTGOING_WAIT_COMPLETE specified + ASTERISK-16172 - Both ast_pbx_outgoing_app() and ast_pbx_outgoing_exten() cause the core - to spawn a new thread to perform the dial. When AST_OUTGOING_WAIT_COMPLETE - is passed to these functions, the calling thread will be blocked until - the newly created channel has been hung up. + Change-Id: I2fb564258cd4db0f35952ad48b8687355c2dcad3 - After this patch, we run the dial on the current thread rather than - spawning a new one. The only in-tree code that passes - AST_OUTGOING_WAIT_COMPLETE is pbx_spool, so you should see reduced - thread usage if you are using .call files. +2018-01-15 11:08 +0000 [6da970bfb9] Alexander Traud - Change-Id: I512735d243f0a9da2bcc128f7a96dece71f2d913 + * BuildSystem: Raise autoconf version requirement to 2.60a. -2017-04-19 13:23 +0000 [afad2ffd9f] Richard Mudgett + AC_COMPUTE_INT requires at least autoconf 2.60a. - * res_rtp_asterisk.c: Fix crash in RTCP DTLS operation. + 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. - Occasionally a crash happens when processing the RTCP DTLS timeout - handler. The RTCP DTLS timeout timer could be left running if we have not - completed the DTLS handshake before we place the call on hold or we - attempt direct media. + ASTERISK-16951 - * Made ast_rtp_prop_set() stop the RTCP DTLS timer when disabling RTCP. + Change-Id: Ibca850e2fe0e77d935207bd959bacf7197d7f637 - * Made some sanity tweaks to ast_rtp_prop_set() when switching from - standard RTCP mode to RTCP multiplexed mode. +2018-01-26 06:48 +0000 [0afff31ed0] Alexander Traud - ASTERISK-26692 #close + * install_prereq: Download latest Jansson. - Change-Id: If6c64c79129961acfa4b3d63a864e8f6b664acc0 + ASTERISK-27603 -2017-03-22 16:05 +0000 [d165079cbc] Richard Mudgett + Change-Id: I65c587534c0ae364f063d68da1bed40bb3d5e8aa - * rtp_engine/res_rtp_asterisk: Fix RTP struct reentrancy crashes. +2018-01-01 15:59 +0000 [39fcecad59] Corey Farrell - The struct ast_rtp_instance has historically been indirectly protected - from reentrancy issues by the channel lock because early channel drivers - held the lock for really long times. Holding the channel lock for such a - long time has caused many deadlock problems in the past. Along comes - chan_pjsip/res_pjsip which doesn't necessarily hold the channel lock - because sometimes there may not be an associated channel created yet or - the channel pointer isn't available. + * core: Tweak startup order. - In the case of ASTERISK-26835 a pjsip serializer thread was processing a - message's SDP body while another thread was reading a RTP packet from the - socket. Both threads wound up changing the rtp->rtcp->local_addr_str - string and interfering with each other. The classic reentrancy problem - resulted in a crash. + 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. - In the case of ASTERISK-26853 a pjsip serializer thread was processing a - message's SDP body while another thread was reading a RTP packet from the - socket. Both threads wound up processing ICE candidates in PJPROJECT and - interfering with each other. The classic reentrancy problem resulted in a - crash. + Change-Id: I1d15384acad16a22c3498124421af474fa517478 - * rtp_engine.c: Make the ast_rtp_instance_xxx() calls lock the RTP - instance struct. +2018-01-25 01:37 +0000 [23381d2c5e] Corey Farrell - * rtp_engine.c: Make ICE and DTLS wrapper functions to lock the RTP - instance struct for the API call. + * Build System: Require __sync or __atomic functions. - * res_rtp_asterisk.c: Lock the RTP instance to prevent a reentrancy - problem with rtp->rtcp->local_addr_str in the scheduler thread running - ast_rtcp_write(). + This change causes the configure script to throw an error if neither + __sync nor __atomic builtin functions are available. - * res_rtp_asterisk.c: Avoid deadlock when local RTP bridging in - bridge_p2p_rtp_write() because there are two RTP instance structs - involved. + ASTERISK-27619 - * res_rtp_asterisk.c: Avoid deadlock when trying to stop scheduler - callbacks. We cannot hold the instance lock when trying to stop a - scheduler callback. + Change-Id: Ie01a281e0f5c41dfeeb5f250c1ccea8752f56ef9 - * res_rtp_asterisk.c: Remove the lock in struct dtls_details and use the - struct ast_rtp_instance ao2 object lock instead. The lock was used to - synchronize two threads to prevent a race condition between starting and - stopping a timeout timer. The race condition is no longer present between - dtls_perform_handshake() and __rtp_recvfrom() because the instance lock - prevents these functions from overlapping each other with regards to the - timeout timer. +2018-01-24 22:44 +0000 [a164b7ccfb] Corey Farrell - * res_rtp_asterisk.c: Remove the lock in struct ast_rtp and use the struct - ast_rtp_instance ao2 object lock instead. The lock was used to - synchronize two threads using a condition signal to know when TURN - negotiations complete. + * loader: Correct overly strict startup checks. - * res_rtp_asterisk.c: Avoid deadlock when trying to stop the TURN - ioqueue_worker_thread(). We cannot hold the instance lock when trying to - create or shut down the worker thread without a risk of deadlock. + 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. - This patch exposed a race condition between a PJSIP serializer thread - setting up an ICE session in ice_create() and another thread reading RTP - packets. + Clear the missingdeps vector when appropriate to ensure the next loop + starts clean. - * res_rtp_asterisk.c:ice_create(): Set the new rtp->ice pointer after we - have re-locked the RTP instance to prevent the other thread from trying to - process ICE packets on an incomplete ICE session setup. + ASTERISK-27620 - A similar race condition is between a PJSIP serializer thread resetting up - an ICE session in ice_create() and the timer_worker_thread() processing - the completion of the previous ICE session. + Change-Id: I45547d9641fd45bd86d80250224417625631ad84 - * res_rtp_asterisk.c:ast_rtp_on_ice_complete(): Protect against an - uninitialized/null remote_address after calling - update_address_with_ice_candidate(). +2018-01-24 18:49 +0000 [6fbd855228] Corey Farrell - * res_rtp_asterisk.c: Eliminate the chance of ice_reset_session() - destroying and setting the rtp->ice pointer to NULL while other threads - are using it by adding an ao2 wrapper around the PJPROJECT ice pointer. - Now when we have to unlock the RTP instance object to call a PJPROJECT ICE - function we will hold a ref to the wrapper. Also added some rtp->ice NULL - checks after we relock the RTP instance and have to do something with the - ICE structure. + * Build System: Add support for __atomic built-in operators. - ASTERISK-26835 #close - ASTERISK-26853 #close + 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. - Change-Id: I780b39ec935dcefcce880d50c1a7261744f1d1b4 + ASTERISK~27619 -2017-04-19 08:39 +0000 [b8b3380944] Sean Bright + Change-Id: I65b4feb02bae368904ed0fb03f585c05f50a690e - * build: Update config.guess and config.sub +2017-12-29 02:57 +0000 [527cf5a570] Corey Farrell - Change-Id: Id078a1df07a771808775e1053cdfe1d99c8fb172 + * Remove redundant module checks and references. -2017-04-14 13:52 +0000 [6c0ab9afa7] Sean Bright + This removes references that are no longer needed due to automatic + references created by module dependencies. - * format_wav: Read 16khz wav samples properly + In addition this removes most calls to ast_module_check as they were + checking modules which are listed as dependencies. - When opening a PCM wave file for reading, we aren't tracking the - frequency of the opened file, so we treat 16khz files as 8khz and do - half reads. + Change-Id: I332a6e8383d4c72c8e89d988a184ab8320c4872e - This patch also cleans up some of the data types and an unnecessarily - complex `if` expression. +2018-01-24 10:30 +0000 [b9e35bf6d3] Richard Mudgett - ASTERISK-26613 #close - Reported by: Vitaly K + * CHANGES: Add AMI action 'PJSIPShowContacts' note. - Change-Id: I05f8b263058dc573ea8ffe0c62e7964506e11815 + ASTERISK-27581 -2017-04-16 19:59 +0000 [b55d21ad91] George Joseph + Change-Id: If6af275764741a11030f0a4fd324fa29b376d74e - * make ari-stubs so doc periodic jobs can run +2018-01-14 12:33 +0000 [5b8e71ab9f] Sungtae Kim - The periodic doc job does a make ari-stubs and checks that - there are no changes before generating the docs. Since I changed - the mustache template (and the generated code directly) recently - and forgot to regenerate the stubs, the doc job thinks they're out - of date. + * res_pjsip: Add AMI action 'PJSIPShowContacts' - Change-Id: I94b97035311eccf52b0101b8590223265a7881d4 + Add an AMI action which provides information on all + configured Contacts. -2017-04-14 12:51 +0000 [4fb9f5d60e] Sean Bright + ASTERISK-27581 - * format_ogg_vorbis: Clear ogg/vorbis data structures on close + Change-Id: I2eed42c74bbc725fad26b8b33b1a5b3161950c73 - On filestream close, we need to clear out the ogg & vorbis data - structures to prevent a memory leak. +2018-01-18 20:19 +0000 [2f78dc2bfa] Richard Mudgett - ASTERISK-26169 #close - Reported by: Ivan Myalkin + * pbx_variables.c: Misc fixes in variable substitution. - Change-Id: Iee94c5a5d5bdafbf8b181c5c064d15d90ace8274 + * Copy more than one character at a time when there is nothing to + substitute. -2017-04-14 17:32 +0000 [a3e623dd70] Richard Mudgett + * Fix off by one error if a '}' or ']' is missing. - * Revert "bridging: Ensure successful T.38 negotation" + * 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. - This reverts commit 7819f95791fe0ca0e0cdc417e2687a5900444053. + * 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: Ib91a7e6c9856f5f41329e42f40ba2394fee861a4 + Change-Id: Ia83d99f4f16abe47f329eb39b6ff2013ae7c9854 -2017-04-14 16:50 +0000 [f6600f2c2e] Sean Bright +2018-01-18 09:01 +0000 [679fa5fb34] Corey Farrell - * res_stun_monitor: Don't fail to load if DNS resolution fails + * Add missing OPTIONAL_API and ARI dependences. - res_stun_monitor will fail to load if DNS resolution of the STUN server - fails. Instead, we continue without the STUN server being resolved and - we will re-attempt the resolution on the STUN refresh interval. + 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. - ASTERISK-21856 #close - Reported by: Jeremy Kister + 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: I6334c54a1cc798f8a836b4b47948e0bb4ef59254 + Change-Id: Ia0c70571f5566784f63605e78e1ceccb4f79c606 -2017-04-14 14:36 +0000 [be71be7ed2] Sean Bright +2018-01-22 09:18 +0000 [140f937c7e] Alexander Traud - * format_pcm: Track actual header size of .au files + * res_config_mysql: Avoid the header mysql_version.h. - Sun's Au file format has a minimum data offset 24 bytes, but this - offset is encoded in each .au file. Instead of assuming the minimum, - read the actual value and store it for later use. + ASTERISK-27607 - ASTERISK-20984 #close - Reported by: Roman S. - Patches: - asterisk-1.8.20.0-au-clicks-2.diff (license #6474) patch - uploaded by Roman S. + Change-Id: I23d00ded955c4afd5f2c3c9dc96dcb48b3f74eec - Change-Id: I524022fb19ff2fd5af2cc2d669d27a780ab2057c +2018-01-05 14:46 +0000 [fd557ad041] Alexander Traud -2017-04-12 07:50 +0000 [2e6075c51f] George Joseph + * install_prereq: For PJProject, point users to configure script. - * modules: change module LOAD_FAILUREs to LOAD_DECLINES (master) + 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. - Change-Id: Iac40ecb20e10513d67bf0eaf61807f306067b258 + ASTERISK-24598 -2017-04-10 05:13 +0000 [72c5f3b0ba] Alexander Traud + Change-Id: Icbf4b562f81f7c05bd24a3805bd46c0beb4ebd44 - * res_pjsip_sdp_rtp: No rtpmap for static RTP payload IDs in SDP. +2018-01-20 12:58 +0000 [d427bb84a2] Alexander Traud - This saves around 100 bytes when G.711, G.722, G.729, and GSM are advertised in - SDP. This reduces the chance to hit the MTU bearer of 1300 bytes for SIP over - UDP, if many codecs are allowed in Asterisk. This new feature is enabled - together with the optional feature compact_headers=yes via the file pjsip.conf. + * BuildSystem: Remove AC_CONFIG_AUX_DIR. - ASTERISK-26932 #close + ASTERISK-27602 - Change-Id: Iaa556ab4c8325cd34c334387ab2847fab07b1689 + Change-Id: I9f4d3d2bc1481748e39ad1e2b0a364d38e38978b -2017-04-12 07:47 +0000 [6db0939b96] George Joseph +2018-01-19 12:21 +0000 [693e509566] Alexander Traud - * modules: change module LOAD_FAILUREs to LOAD_DECLINES (14) + * BuildSystem: Remove orphaned .PHONY targets. - Change-Id: If99e3b4fc2d7e86fc3e61182aa6c835b407ed49e + Change-Id: Ic44d75141b9bf99e7d72fcc82ee111b5cf6989d2 -2017-04-11 11:07 +0000 [747beb1ed1] George Joseph +2018-01-19 12:14 +0000 [70137794e9] Alexander Traud - * modules: change module LOAD_FAILUREs to LOAD_DECLINES + * BuildSystem: Allow make clean all again. - In all non-pbx modules, AST_MODULE_LOAD_FAILURE has been changed - to AST_MODULE_LOAD_DECLINE. This prevents asterisk from exiting - if a module can't be loaded. If the user wishes to retain the - FAILURE behavior for a specific module, they can use the "require" - or "preload-require" keyword in modules.conf. + ASTERISK-27600 + Reported by: Hamid R. Hashmi - A new API was added to logger: ast_is_logger_initialized(). This - allows asterisk.c/check_init() to print to the error log once the - logger subsystem is ready instead of just to stdout. If something - does fail before the logger is initialized, we now print to stderr - instead of stdout. + Change-Id: I683d14d024650be04074b037b6300464519409f4 - Change-Id: I5f4b50623d9b5a6cb7c5624a8c5c1274c13b2b25 +2018-01-19 06:16 +0000 [93471373f6] Alexander Traud -2017-04-05 06:41 +0000 [7819f95791] Torrey Searle + * install_prereq: Update Debian/Ubuntu libraries. - * bridging: Ensure successful T.38 negotation + ASTERISK-27555 - When a T.38 happens immediatly after call establishment, the control - frame can be lost because the other leg is not yet in the bridge. + Change-Id: Ieb41b0cbf968af12882b39454b819ebb48b9ea46 - This patch detects this case an makes sure T.38 negotation happens - when the 2nd leg is being made compatible with the negotating - first leg +2018-01-19 04:46 +0000 [4c511c1a4d] Alexander Traud - ASTERISK-26923 #close + * install_prereq: Support package manager DNF and yum option strict=1. - Change-Id: If334125ee61ed63550d242fc9efe7987e37e1d94 + 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. -2017-04-07 08:58 +0000 [7901225261] Torrey Searle + ASTERISK-27598 + Reported by: Hunter Stevens, Said Masoud - * strings.h: Avoid overflows in the string hash functions + Change-Id: I40f9517122aaa6906e8fc0962b4b8008dfddb368 - On 2's compliment machines abs(INT_MIN) behavior is undefined and - results in a negative value still being returnd. This results in - negative hash codes that can result in crashes. +2018-01-09 11:29 +0000 [77f2814d01] Benoît Dereck-Tricot - ASTERISK-26528 #close + * pbx: Reduce verbosity while loading extensions - Change-Id: Idff550145ca2133792a61a2e212b4a3e82c6517b + 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. -2017-04-07 16:14 +0000 [7312cbe803] Richard Mudgett + ASTERISK-27084 - * res_rtp_asterisk.c: Add stun_blacklist option + Change-Id: I5662902161c50890997ddc56835d4cafb456c529 - 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. +2018-01-18 14:55 +0000 [5964061a21] Sean Bright - ASTERISK-26890 #close + * res_pjsip: Document tlsv1_1 and tlsv1_2 methods - Change-Id: I3ff4f729e787f00c3e6e670fe6435acce38be342 + Change-Id: I67ed9039bf3f132fb20ee7a750e0aef0f704d7d3 -2017-04-06 17:31 +0000 [7c37365f03] Richard Mudgett +2018-01-08 23:50 +0000 [33d5ab3e69] Igor Goncharovsky - * stun.c: Fix ast_stun_request() erratic timeout. + * chan_unistim: Fix hold function ability to lock/crash asterisk - If ast_stun_request() receives packets other than a STUN response then we - could conceivably never exit if we continue to receive packets with less - than three seconds between them. + 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 - * Fix poll timeout to keep track of the time when we sent the STUN - request. We will now send a STUN request every three seconds regardless - of how many other packets we receive while waiting for a response until we - have completed three STUN request transmission cycles. - - Change-Id: Ib606cb08585e06eb50877f67b8d3bd385a85c266 + ASTERISK-26596 #close -2017-04-06 18:30 +0000 [8d323c74fa] Richard Mudgett + Change-Id: Ib1e04e482e7c8939607a42d7fddacc07e26e14d4 - * sorcery.c: Speed up ast_sorcery_retrieve_by_id() +2017-10-29 22:00 +0000 [25cb1ab05b] Corey Farrell - Return early if ast_sorcery_retrieve_by_id() is not passed an id to find. - Also eliminated the RAII_VAR() usage in the function. + * loader: Add support for built-in modules. - Change-Id: I871dbe162a301b5ced8b4393cec27180c7c6b218 + * Add SRC_EMBEDDED variable to main/Makefile. Built-in module sources + must be listed in this variable to ensure they get the correct CFLAGS. -2017-04-10 11:30 +0000 [5b4e2ec267] Richard Mudgett + Change-Id: I920852bc17513a9c2627061a4ad40511e3a20499 - * res_pjsip: Fix pointer use after unref. +2017-12-09 00:03 +0000 [e6142a1282] Corey Farrell - Change-Id: I4b6e1b0070563eeaee223cb58326f1b962ed5bc1 + * loader: Rework load_resource_list. -2017-04-06 18:18 +0000 [6f793ac149] Richard Mudgett + 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. - * res_pjsip_sdp_rtp.c: Don't use deprecated transport struct member. + Change-Id: I60c15cd57ff9680b62e2a94c7519401fa4a38e45 - * create_rtp(): Eliminate use of deprecated transport struct member. That - member and several others in the transport structure were deprecated - because of an infinite loop created when using realtime configuration. - See 2451d4e4550336197ee2e482750cc53f30afa352 +2017-12-08 23:30 +0000 [a80cbb046e] Corey Farrell - ASTERISK-26851 + * loader: Remove global symbol only startup phase. - Change-Id: I0533aa13c9ce3c6cc394e0fd2b5bf1cd1b2ef3bc + 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. -2017-04-10 17:45 +0000 [d76bc0565c] Richard Mudgett + Change-Id: I33e3174d67f3b4552d3d536326dcaf0ebabb097d - * tcptls.c: Cleanup TCP/TLS listener thread on abnormal exit. +2017-11-21 23:39 +0000 [3b73ed28c5] Corey Farrell - Temporarily running out of file descriptors should not terminate the - listener thread. Otherwise, when there becomes more file descriptors - available, nothing is listening. + * loader: Process module dependencies. - * Added EMFILE exception to abnormal thread exit. + * 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. - * Added an abnormal TCP/TLS listener exit error message. + Module dependencies result in automatic references being managed by the + module loader. This enforces unload order. - * Closed the TCP/TLS listener socket on abnormal exit so Asterisk does not - appear dead if something tries to connect to the socket. + Change-Id: I9be08d1dd331aceadc1dcba00b804d71360b2fbb - ASTERISK-26903 #close +2017-12-27 17:44 +0000 [86b484dec7] Graham Mainwaring - Change-Id: I10f2f784065136277f271159f0925927194581b5 + * app_followme: Add a prompt to be read when a call is connected -2017-04-08 03:05 +0000 [2b8dbc9e00] Walter Doekes + 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. - * samples: Undo removal of include from canonicalize-app-names commit. + ASTERISK-24372 #close - This include was accidentally removed in changeset - Ia79aea64de89531362e993e34230c2044a70aa93. My bad. + Change-Id: I6ec1c6c883347f7d1e1f597189544993c8d65272 - Change-Id: I1d716c7f9590b4e97909fb8bca1f2ed9bd0e4082 +2018-01-17 00:28 +0000 [4fd303b630] Corey Farrell -2017-04-07 08:35 +0000 [270b485f04] Joshua Colp + * loader: Miscellaneous fixes. - * pjsip: Add Alembic for PUBLISH support. + * 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. - This change adds database tables for the PUBLISH support so it - can be configured using realtime. A minor fix to the - res_pjsip_publish_asterisk module was done so that it read the - sorcery configuration from the correct section. Finally the - sample configuration files have been updated. + Change-Id: I22261599c46d0f416e568910ec9502f45143197f - ASTERISK-26928 +2018-01-17 08:36 +0000 [2a1b52cc67] Alexander Traud - Change-Id: I81991ae5c75af98d247f7eacd1c0b0a763675952 + * BuildSystem: Use the detected name for MD5 everywhere. -2017-04-07 08:06 +0000 [7a46cd7433] Alexander Traud + Affacted the (automatic) download script for external modules: + ./build_tools/download_externals - * pjproject_bundled: Crash on pj_ssl_get_info() while ioqueue_on_read_complete(). + ASTERISK-27596 - When the Asterisk channel driver res_pjsip offers SIP-over-TLS, sometimes, not - reproducible, Asterisk crashed in pj_ssl_sock_get_info() because a NULL pointer - was read. This change avoids this crash. + Change-Id: If4c3176f7bf58df32fec6e02a659f1a78d57cf4b - ASTERISK-26927 #close +2018-01-17 07:11 +0000 [4cd3f5c162] Alexander Traud - Change-Id: I24a6011b44d1426d159742ff4421cf806a52938b + * BuildSystem: Invoke install not in GNU but POSIX style. -2017-04-05 09:10 +0000 [e6ae3651b8] Walter Doekes + ASTERISK-27594 - * samples: Canonicalize app names in extensions.conf.sample. + Change-Id: Iaaa6a19d2fe031dffcba441d0502a7ea65c93cb3 - This takes care of warnings by ossobv/asterisklint. +2018-01-17 06:47 +0000 [7e7a20642c] Alexander Traud - Change-Id: Ia79aea64de89531362e993e34230c2044a70aa93 + * BuildSystem: In OpenBSD, xmlstarlet is xml. -2017-04-04 16:20 +0000 [01e9eaf3a6] George Joseph + ASTERISK-27593 - * pjproject_bundled: Add 3 upstream patches + Change-Id: I1c7087f7f7582e40b3312c690d912c9a86466805 - 0035-r5572-svn-backport-dialog-transaction-deadlock.patch - 0036-r5573-svn-backport-ua-pjsua-transaction-deadlock.patch - 0037-r5576-svn-backport-session-timer-crash.patch +2018-01-17 02:51 +0000 [8f31b70246] Alexander Traud - Also removed the progress bar from wget download to stdout. + * BuildSystem: Detect external library Lua in version 5.3. - ASTERISK-26905 #close - Reported-by: Ross Beer + 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. - Change-Id: I268fb3cf71a3bb24283ff0d24bd8b03239d81256 + ASTERISK-27592 -2017-04-04 11:44 +0000 [fac5115c43] Troy Bowman + Change-Id: If7a4b395d844a464e9a1f4f626c5bff4ee67eed8 - * app_queue: Log reason for PAUSEALL/UNPAUSEALL +2017-12-22 19:50 +0000 [8494e78010] Richard Mudgett - We needed the reason for our reporting when agents pause/unpause all of - their queues at once. This is a small, simple patch that adds a reason - for PAUSEALL and UNPAUSEALL. I have been using it in production for years. + * res_pjsip: Split type=identify to IP address and SIP header matching priorities - ASTERISK-26920 #close + 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. - Change-Id: Ifb3f0d1a0abd5194253d9794023546e1395baf3d + * 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. -2017-04-05 14:50 +0000 [40e9d5e8b7] George Joseph + ASTERISK-27491 - * sample_config: Add samples for pubsub to pjsip.conf.sample + Change-Id: I9df142a575b7e1e3471b7cda5d3ea156cef08095 - Added: - * outbound-publish - * resource_list - * inbound-publication - * asterisk-publication +2018-01-16 08:32 +0000 [7ed7d525fb] Richard Mudgett - Change-Id: I65043a896c35483f30a92d30b5b118359af7ba5a + * taskprocessor.c: Increase the number of tps_singletons container buckets. -2017-04-03 15:38 +0000 [f2ee8ac21e] Richard Mudgett + 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. - * res_pjsip_sdp_rtp.c: Don't alter global addr variable. + 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. - * create_rtp(): Fix unexpected alteration of global address_rtp if a - transport is bound to an address. + Change-Id: Ice0603606614ba49f7c0c316c524735c064e7e43 - * create_rtp(): Fix use of uninitialized memory if the endpoint RTP media - address is invalid or the transport has an invalid address. +2018-01-16 08:20 +0000 [f0a3c977d6] George Joseph - ASTERISK-26851 + * pjproject_bundled: Prevent crash on bad outgoing header - Change-Id: Icde42e65164a88913cb5c2601b285eebcff397b7 + 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. -2017-03-27 09:03 +0000 [380973cc47] Corey Farrell + For several users, this crash happens when sending 183 progress + messages. - * CDR: Protect from data overflow in ast_cdr_setuserfield. + ASTERISK-26832 + Reported by: Ross Beer, Jan Rozhon - ast_cdr_setuserfield wrote to a fixed length field using strcpy. This could - result in a buffer overrun when called from chan_sip or func_cdr. This patch - adds a maximum bytes written to the field by using ast_copy_string instead. + Change-Id: Ie5c5a921c890c843587763e7f33f987dfe66bd16 - ASTERISK-26897 #close - patches: - 0001-CDR-Protect-from-data-overflow-in-ast_cdr_setuserfie.patch submitted - by Corey Farrell (license #5909) +2018-01-16 06:34 +0000 [a046305fae] Alexander Traud - Change-Id: Ib23ca77e9b9e2803a450e1206af45df2d2fdf65c + * BuildSystem: Avoid $EUID and use id -u instead. -2017-03-25 19:01 +0000 [6c3ae397cb] Daniel Journo + 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. - * Unused realtime MOH classes not purged on 'moh reload' + ASTERISK-27589 - Purge Realtime MOH classes on 'moh reload' even when musiconhold.conf - hasn't changed. + Change-Id: Ia6e74f5bc9aab4e6dc62b7439f647b7964e6f657 - ASTERISK-25974 #close +2018-01-15 18:03 +0000 [6fbe315f77] Richard Mudgett - Change-Id: I42c78ea76528473a656f204595956c9eedcf3246 + * cel_odbc.c: Fix menuslect module description display. -2017-03-31 12:09 +0000 [8e36064109] Corey Farrell + 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. - * core: Improve/simplify handling of required headers. + Change-Id: I80f13a63818e4e28d683639a94a4dfaea405c1d5 - * Report failures if configure finds a required header is missing. - * Deduplicate includes between asterisk.h, astmm.h and compat.h. - * Unconditionally include headers in compat.h if required elsewhere. +2017-11-19 16:30 +0000 [9cfdb81e91] Corey Farrell - Change-Id: Ie67d0185ca71fbfb81c9bdfaebe46a49e3c56dc5 + * loader: Add dependency fields to module structures. -2017-04-03 13:56 +0000 [a889621b14] Richard Mudgett + * Declare 'requires' and 'enhances' text fields on module info structure. + * Rename 'nonoptreq' to 'optional_modules'. + * Update doxygen comments. - * res_pjsip: Fix transport ref leak. + Still need to investigate dependencies among modules I cannot compile. - We were leaking a transport ref in multihomed_on_rx_message() which - resulted in the FRACK about excessive ref counts. + Change-Id: I3ad9547a0a6442409ff4e352a6d897bef2cc04bf - ASTERISK-26916 #close +2017-11-19 20:10 +0000 [35ae99c712] Corey Farrell - Change-Id: I7a96658a9614a060565bb9ad51cb1c9c11ee145f + * vector: Additional string vector definitions. -2017-04-03 02:30 +0000 [4fc22c7673] Alexander Traud + 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. - * chan_sip: Session Timers required but refused wrongly. + ast_vector_const_string: + A vector of 'const char *'. - SIP user-agents indicate which protocol extensions are allowed in headers - like Supported and Required. Such protocol extensions are Session Timers - (RFC 4028) for example. Session Timers are supported since Mantis-10665. - Since ASTERISK-21721, not only the first but multiple Supported/Required - headers in a message are parsed. In that change, an existing variable was - re-used within a newly added do-loop. Currently, at the end of that loop, - that variable is an empty string always. Previously, that variable was used - within log output. However, the log output was not changed. + Change-Id: I1bf02a1efeb2baeea11c59c557d39dd1197494d7 - ASTERISK-26915 #close +2018-01-15 10:57 +0000 [645297614e] Alexander Traud - Change-Id: I09315f31b4d78fb214bb2a9fb6c0f5e143eae990 + * BuildSystem: Resolve resolv.h not via Generic but Particular Header-Check. -2017-03-31 16:31 +0000 [48be02c5d8] Joshua Colp + ASTERISK-27585 - * res_pjsip_session: Allow BYE to be sent on disconnected session. + Change-Id: I27c67563788e6f67eeda5fb51a741823a50a95e2 - It is perfectly acceptable for a BYE to be sent on a disconnected - session. This occurs when we respond to a challenge to the BYE - for authentication credentials. +2018-01-13 13:49 +0000 [cabe80631b] George Joseph - ASTERISK-26363 + * config_transport: Enable TCP_NODELAY on TLS transports - Change-Id: I6ef0ddece812fea6665a1dd2549ef44fb9d90045 + We did this for TCP transports already but I'm not sure why we + didn't do it for TLS transports. -2017-03-31 13:14 +0000 [e8b1bb3041] Richard Mudgett + ASTERISK_27474 #not_final_fix - * chan_vpb.cc: Fix compiler error. + Change-Id: I5b1ef4b882f7b859e718236686b7898751dbb262 - Added missing channel technology read/write stream callback - initialization. +2018-01-12 18:37 +0000 [de7f2a6cb4] Corey Farrell - Change-Id: I829043a327d987e0d964485dd3d27964bebbd623 + * res_stasis_recording: Allow symbolic links in configured recordings dir. -2017-03-30 18:28 +0000 [f9695dc057] Corey Farrell + 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. - * Forward declare 'struct ast_json' in asterisk.h + This is needed by the testsuite when run by 'run-local'. - The ast_json structure is used in many Asterisk headers and is often the - only part of json.h used. This adds a forward declaration to asterisk.h - and removes the include of json.h from many headers. The declaration - has been left in endpoints.h and stasis.h to avoid problems with source - files that use ast_json functions without directly including json.h. + Change-Id: I9145e841865edadcb5f75cead3471ad06bbb56c0 - ari.h continues to include json.h as it uses enum - ast_json_encoding_format. +2018-01-12 12:00 +0000 [99535b0497] Corey Farrell - Change-Id: Id766aabce6bed56626d27e8d29f559b5e687b769 + * menuselect: Remove unused dev-mode option TRACE_FRAMES. -2017-03-30 08:11 +0000 [c537f99488] Sean Bright + ASTERISK-27575 #close - * cdr_pgsql: Fix buffer overflow calling libpq + Change-Id: Ica3a522892afed7a96816a5ecf140e1671f46ad4 - Implement the same buffer size checking done in cel_pgsql. +2018-01-12 03:50 +0000 [eb9b85baec] Alexander Traud - ASTERISK-26896 #close - Reported by: twisted + * res_config_pgsql: Avoid typecasting an int to unsigned char. - Change-Id: Iaacfa1f1de7cb1e9414d121850d2d8c2888f3f48 + clang 5.0 warned about this. -2017-03-28 13:01 +0000 [a7d94f504f] Walter Doekes + ASTERISK-27576 - * build: Fix deb build issues with fakeroot + Change-Id: If41f400a51973c06cdb9b75462e535b616bfe385 - If DESTDIR is set, don't call ldconfig. Assume that DESTDIR is used to - create a binary archive. The ldconfig call should be delegated to the - archive postinst script. This fixes the case where fakeroot wraps 'make - install' causing $EUID to be 0 even though it doesn't have permission to - call ldconfig. +2018-01-12 03:17 +0000 [cff3add680] Alexander Traud - The previous logic in configure.ac to detect and correct libdir - has been removed as it was not completely accurate. CentOS 64-bit - users should again specifiy --libdir=/usr/lib64 when configuring - to prevent install to /usr/lib. + * BuildSystem: Really do not pass unknown-warning options to the compiler. - Updated Makefile:check-old-libdir to check for orphans in - lib64 when installing to lib as well as orphans in lib when installing - to lib64. + 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. - Updated Makefile and main/Makefile uninstall targets to remove the - orphans using the new logic. + ASTERISK-27560 - ASTERISK-26705 + Change-Id: Ia9d148e689c173df4e91699113605dab2de36038 - Change-Id: I51739d4a03e60bff38be719b8d2ead0007afdd51 +2018-01-12 04:27 +0000 [685bab254c] Alexander Traud -2017-03-27 15:32 +0000 [f3290d6b66] Joshua Colp + * app_osplookup.c: Avoid two format truncations. - * sdp: Add support for setting connection address and clean up state. + GCC 7 warned about this. - This change cleans up state management for media streams by moving - RTP instances into their own session structure and adding additional - details that are not relevant to the core (such as connection address). - These can live either in the local capabilities or joint capabilities. + ASTERISK-27578 - The ability to set explicit connection address information for - the purposes of direct media and NAT has also been added at the - global and stream specific level. + Change-Id: I4a00458dbe9b575ef04338b6a7852272745e1552 - ASTERISK-26900 +2018-01-12 04:03 +0000 [797747afa7] Alexander Traud - Change-Id: If7e5307239a9534420732de11c451a2705b6b681 + * chan_ooh323: Avoid typecasting an int to unsigned short. -2017-03-29 10:11 +0000 [5c1ea3ebbd] Sean Bright + clang 5.0 warned about this. - * astobj2: Prevent potential deadlocks with ao2_global_obj_release + ASTERISK-27577 - The ao2_global_obj_release() function holds an exclusive lock on the - global object while it is being dereferenced. Any destructors that - run during this time that call ao2_global_obj_ref() will deadlock - because a read lock is required. + Change-Id: I898fe4255023138a9e8b579fe4482fcf582f2b78 - Instead, we make the global object inaccessible inside of the write - lock and only dereference it once we have released the lock. This - allows the affected destructors to fail gracefully. +2018-01-05 15:13 +0000 [b9e2b72de6] Alexander Traud - While this doesn't completely solve the referenced issue (the error - message about not being able to create an IQ continues to be shown) - it does solve the backtrace spew that accompanied it. + * install_prereq: Update Debian/Ubuntu libraries. - ASTERISK-21009 #close - Reported by: Marcello Ceschia + ASTERISK-27555 - Change-Id: Idf40ae136b5070dba22cb576ea8414fbc9939385 + Change-Id: I0818b6e42631be1b69237e2b41d3415275693e53 -2017-03-30 10:18 +0000 [4e5cc70fb4] Corey Farrell +2018-01-11 12:05 +0000 [6d5f4768a4] Joshua Colp - * CEL: Remove header declarations of non-existant functions. + * chan_sip: Check that an iostream exists before accessing. - ast_cel_alloc and ast_cel_destroy do not exist in code, remove them from - the headers. + Before getting the file descriptor for an iostream check + that it is present. - Change-Id: I99ce848e2e109e7d61771559f559b9e57973e45c + ASTERISK-27534 -2017-03-27 11:49 +0000 [f66edcb8b0] Josh Roberson + Change-Id: Ie0aa1394007a37c30e337ea1176a6fb3a63bc99c - * cel_pgsql.c: Fix buffer overflow calling libpq +2018-01-11 08:09 +0000 [30b5ec023f] Tzafrir Cohen - PQEscapeStringConn() expects the buffer passed in to be an - adequitely sized buffer to write out the escaped SQL value string - into. It is possible, for large values (such as large values to - Dial with a lot of devices) to have more than our 512+1 byte - allocation and thus cause libpq to create a buffer overrun. + * Ignore quilt .pc directory, used in deb packaging - glibc will nicely ABRT asterisk for you, citing a stack smash. + 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 . - Let's only allocate it to be as large as needed: - If we have a value, then (strlen(value) * 2) + 1 (as recommended - by libpq), and if we have none, just one byte to hold our null - will do. + Change-Id: I22c90f3d7ab8918e6216e7b686de6fa0e1fdaa7b + Signed-off-by: Tzafrir Cohen - ASTERISK-26896 #close +2018-01-09 11:23 +0000 [f0eb00d1e7] Corey Farrell - Change-Id: If611c734292618ed68dde17816d09dd16667dea2 + * stasis: Remove silly usage of RAII_VAR. -2017-03-29 08:04 +0000 [e76cc51d5e] Alexander Traud + Change-Id: Ib11193531e797bcb16bba560a408eab155f706d1 - * srtp: Allow zero as tag value for a sRTP Crypto Suite. +2018-01-09 11:09 +0000 [a383e1ddb1] Corey Farrell - ASTERISK-25490 #close + * stasis_cache_pattern: Remove silly usage of RAII_VAR. - Change-Id: I1c5fc0942c33c96d62b24203aad0f1e1a1a0131f + Change-Id: Ic98a51f555062cd863b6db3f8d76065943a9dea3 -2017-03-28 13:10 +0000 [2fe52174de] George Joseph +2018-01-09 16:23 +0000 [9e2fcb82ed] Sean Bright - * res_pjsip_config_wizard: Add 2 new parameters to help with proxy config + * cdr_syslog: Deprecate unmaintained module - Two new parameters have been added to the pjsip config wizard. + 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. - * Setting 'sends_line_with_registrations' to true will cause the wizard - to skip the creation of an identify object to match incoming request - to the endpoint and instead add the line and endpoint parameters to - the outbound registration object. + 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. - * Setting 'outbound_proxy' is a shortcut for adding individual - endpoint/outbound_proxy, aor/outbound_proxy and - registration/outbound_proxy parameters. + Change-Id: Ic77b94cd97f355a9cf5b1d3f3444964a6e0ba5dc - Change-Id: I678e5f80765734c056620528a6d40d82736ceeb0 - (cherry picked from commit a827892ff77cd37912b528d9c45b446be091bbc0) - (cherry picked from commit 27344675be1941d30508c6e6bd684acdd0791e1a) +2018-01-09 11:16 +0000 [0de004dd85] Corey Farrell -2017-03-28 09:29 +0000 [7c0b12dc41] Sean Bright + * stasis_bridges: Remove silly usage of RAII_VAR. - * alembic: Turn off execute bit on non-executable python scripts + Change-Id: I0fa7ab05454f183dc4ff10e26d18776d2b0fcf1f - Change-Id: I744c986da4a38aeff8c00837eb89de7841fbc86c +2018-01-09 11:10 +0000 [01127e1664] Corey Farrell -2017-03-27 12:37 +0000 [3d8899bacf] Richard Mudgett + * stasis_cache: Remove silly usage of RAII_VAR. - * Add DTLS sanity check. + Change-Id: Ifa95e5801c949df296c7e4376347730fb0ed52ef - Change-Id: Ib32612cf6c7ce9213a11b9cba82f630f8cd3564b +2018-01-09 10:57 +0000 [175a9ef873] Corey Farrell -2017-03-08 07:24 +0000 [5d938045d4] Joshua Colp + * stasis_endpoints: Remove silly usage of RAII_VAR. - * channel: Remove old epoll support and fixed max number of file descriptors. + Change-Id: Ic099dc552f36c353c89783a4bcfd09f010432733 - This change removes the old epoll support which has not been used or - maintained in quite some time. +2018-01-09 10:55 +0000 [4b655184b0] Corey Farrell - The fixed number of file descriptors on a channel has also been removed. - File descriptors are now contained in a growable vector. This can be - used like before by specifying a specific position to store a file - descriptor at or using a new API call, ast_channel_fd_add, which adds - a file descriptor to the channel and returns its position. + * stasis_message_router: Remove silly usage of RAII_VAR. - Tests have been added which cover the growing behavior of the vector - and the new API call. + Change-Id: I50d6ae230920e0b878ed9cc8f79eef746e06701d - ASTERISK-26885 +2018-01-09 10:53 +0000 [3074c4165c] Corey Farrell - Change-Id: I1a754b506c009b83dfdeeb08c2d2815db30ef928 + * stasis_system: Remove silly usage of RAII_VAR. -2017-03-27 09:35 +0000 [fd204d5c65] Sean Bright + Change-Id: Iedbe5656cee68cd3a96a953558764aa02d4a0c3b - * res_musiconhold: Document the 'format' option +2018-01-03 17:26 +0000 [8f3167c5f1] Richard Mudgett - ASTERISK-26086 #close - Reported by: Jens Bürger + * res_pjsip.c: Update the endpoint identification documentation. - Change-Id: I6aab666c0bf01fd0c64d7a5bcb22fa7f5d41335e + * Endpoint identify_by documentation. + * IP/Header endpoint identifier documentation. -2017-03-24 07:43 +0000 [cf6a6226ab] Sean Bright + Change-Id: Id92f00b495acca7be945daf749d2abd7f76a0b5a - * core: Remove embedded module support +2018-01-03 15:20 +0000 [42a61d9db6] Richard Mudgett - This has not worked for some time and is no longer actively maintained. + * res_pjsip_endpoint_identifier_ip.c: Remove unnecessary requirement. - Change-Id: I5110b0db69c152761b58fa025cb0a53b0e544d99 + 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. -2017-03-27 08:58 +0000 [d22c678999] Sean Bright + * Remove the code change that enforces the requiremnt. Listing the "ip" + method in the identify_by value is simply documentation. - * res_musiconhold: Don't chdir() when scanning MoH files + Change-Id: Ia057f92a33fb5d9f51dc5d5692e3d5ee1a6f2c11 - There doesn't appear to be any reason that we are chdir'ing in - moh_scan_files, and in the event of an Asterisk crash, the core files - may not get written because we have changed into a read-only directory. +2018-01-05 19:03 +0000 [a7bbb18e5c] Richard Mudgett - ASTERISK-23996 #close - Reported by: Walter Doekes + * res_pjsip.c: Fix ident_to_str() and refactor ident_handler(). - Change-Id: Iac806dce01b3335963fbd62d4b4da9a65c614354 + * Extracted sip_endpoint_identifier_type2str() and + sip_endpoint_identifier_str2type() to simplify the calling functions. -2017-03-23 09:48 +0000 [d5a8799c4b] Sean Bright + * Fixed pjsip_configuration.c:ident_to_str() building the endpoint's + identify_by value string. - * res_xmpp: Use incremental backoff when a read error occurs + Change-Id: Ide876768a8d5d828b12052e2a75008b0563fc509 - If a read error occurs, we immediately attempt a reconnect without any - delay. Instead, let's sleep and backoff up to 60 seconds before we try - again. +2018-01-04 17:04 +0000 [be488eb14a] Richard Mudgett - ASTERISK-24712 #close - Reported by: Matthias Urlichs + * res_pjsip_endpoint_identifier_ip.c: Allow multiple IdentifyDetail AMI events. - Change-Id: I6fe10ef4734837727437beab715e336777f13f48 + 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. -2017-03-24 11:29 +0000 [d08c69a9e2] Sean Bright + * Reworked format_ami_endpoint_identify() to generate as many + IdentifyDetail AMI events as there are matching identifiers. - * res_pjsip_sdp_rtp: Set hangup cause for RTP timeouts + Change-Id: Ie146792aef72d78e05416ab5b27bc552a30399db - chan_sip sets the hangup cause code to AST_CAUSE_REQUESTED_CHAN_UNAVAIL - (44) when a channel is hung up due to an RTP timeout. So do the same - when it happens with PJSIP for parity. +2018-01-05 05:51 +0000 [3a7d917256] Alexander Traud - Change-Id: I3546ebbde6460c22a27c9da1bf321711b5961ab8 + * translate: Avoid absolute value on unsigned substraction. -2017-03-23 14:01 +0000 [d2f2cdf476] Kevin Harwell + 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. - * AMI: Updated version + ASTERISK-27549 - Updated the AMI version for the following reason (see CHANGES for more details): + Change-Id: Ib904d9ee0d46b6fdd1476fbc464fbbf813304017 - The 'PJSIPShowEndpoint' command's response event of 'IdentifyDetail' now - contains a new optional parameter, 'MatchHeader'. +2018-01-09 08:22 +0000 [25022de875] Sean Bright - Change-Id: Ie206913ef1dcfa6a2ebe3282da2387e52d6f05b9 + * Revert "codec_opus: Make libcurl a dependency in menuselect" -2017-03-23 12:07 +0000 [12dde3b568] Kevin Harwell + This reverts commit 028f4320de60a204e457ad606ab0a3318493b431. - * pjproject_bundled: raise timeout value used when downloading + Change-Id: Ieb91f825cb55202a937f5361c01d356e7662b70c - After configuring Asterisk with '--with-pjproject-bundled' the configure/build - process attempts to download pjproject from its download site. Currently, a - timeout of 10 seconds is used that will stop the download process if pjproject - has not been fully downloaded in that time. For some systems this was not enough - time and the process was timing out too early. +2018-01-08 10:54 +0000 [a21841bf40] Joshua Colp - This patch raises the download timeout value to '60'. Also, this patch fixes - another bug where the DOWNLOAD_TIMEOUT variable was not being properly exported - due to a naming error. DOWNLOAD_MAX_TIMEOUT is now properly renamed to - DOWNLOAD_TIMEOUT. + * res_pjsip_session: Always bundle streams if WebRTC is enabled. - ASTERISK-26814 #close + 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. - Change-Id: Ia56e4e8a3d39db76bc8a1852b2cf07ec10b39842 + ASTERISK-27566 -2017-03-22 20:33 +0000 [98a88e9ffa] Sean Bright + Change-Id: I7fe9b7ac35a2798627d9c2c8369129f407af6461 - * res_xmpp: Correct implementation of JABBER_STATUS & JabberStatus +2018-01-08 20:25 +0000 [d46cbe788a] Corey Farrell - The documentation for JABBER_STATUS (and the deprecated JabberStatus - app) indicate that a return value of 7 indicates that the specified - buddy was not in the roster. It also indicates that you can specify a - "bare" JID (one without a resource). Unfortunately the actual behavior - does not match the documented behavior. + * bridge_softmix: Fix sfu_append_source_streams test. - Assuming that our roster includes the buddy online and available - "valid@example.org/Valid" and does *not* include the buddy - "invalid@example.org", the JABBER_STATUS() function returns the - following before this patch: + * 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. - +------------------------------+------------+--------------------------+ - | Buddy | Status | Result | - +------------------------------+------------+--------------------------+ - | valid@example.org | Online | 7 (Not in roster) | - | valid@example.org/Valid | Online | 1 (Online) | - | valid@example.org/Invalid | N/A | 7 (Not in roster) | - | invalid@example.org | N/A | Error logged, no return | - | invalid@example.org/Valid | N/A | Error logged, no return | - +------------------------------+------------+--------------------------+ + Change-Id: I6b1dd8bed10439d3c7406f033eb1896b6c419147 - And after this patch: +2018-01-08 18:47 +0000 [5380fb9978] Corey Farrell - +------------------------------+------------+--------------------------+ - | Buddy | Status | Result | - +------------------------------+------------+--------------------------+ - | valid@example.org | Online | 1 (Online) | - | valid@example.org/Valid | Online | 1 (Online) | - | valid@example.org/Invalid | N/A | 6 (Offline) | - | invalid@example.org | N/A | 7 (Not in roster) | - | invalid@example.org/Valid | N/A | 7 (Not in roster) | - +------------------------------+------------+--------------------------+ + * app_confbridge: Fix NULL check in action_kick_last. - This brings the behavior in line with the documentation. + 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. - ASTERISK-23510 #close - Reported by: Anthony Critelli + Change-Id: I274f737aa8af9d2d53e4a78cdd7ad57561003945 - Change-Id: I9c3241035363ef4a6bdc21fabfd8ffcd9ec657bf +2018-01-06 02:17 +0000 [55a540272f] Corey Farrell -2017-03-23 09:45 +0000 [be94105d6d] Sean Bright + * res_stasis: Reduce RAII_VAR usage. - * res_xmpp: Try to provide useful errors messages from OpenSSL + 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. - If any errors occur during the TLS connection setup, we currently dump a - fairly generic error message. So instead we try to pull in something - useful from OpenSSL to report instead. + Change-Id: I4ce67120583a446babf9adeec678b71d37fcd9e5 - ASTERISK-24712 - Reported by: Matthias Urlichs +2018-01-04 18:47 +0000 [faeb9e1b26] Sungtae Kim - Change-Id: I288500991a9681f447d92913b11fedaf426087f4 + * res_pjsip: Add AMI action 'PJSIPShowAuths' -2017-03-23 05:19 +0000 [ee81ee1f14] Sean Bright + Add an AMI action which provides information on all + configured Auths. - * res_xmpp: Fix ref counting issue + ASTERISK-27547 - The only remaining reference to the endpoint is in the endpoints - container, and because it is unlinked in ast_endpoint_shutdown, we don't - have to explicitly cleanup the endpoint ourselves. + Change-Id: I1a88a75b38a2b1dd9d1de6c0307b20a3f584c817 - Change-Id: I912a2692e52d3e2ed445b32d8ae3f9004bc2f2e8 +2018-01-07 21:38 +0000 [8b3083cac5] Corey Farrell -2017-03-23 09:30 +0000 [9493981419] Sean Bright + * res_stasis: Fix dial bridge unload. - * res_xmpp: Correctly check return value of SSL_connect + If the dial bridge has been created it must be released by calling + ast_bridge_destroy, simply releasing the ao2 reference is not enough. - SSL_connect returns non-zero for both success and some error conditions - so simply negating is inadequate. + 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: Ifbf882896e598703b6c615407fa456d3199f95b1 + Change-Id: I372302de94ca63876069e2585a049c5060e5e767 -2017-03-22 17:32 +0000 [7657c279b5] Sean Bright +2018-01-07 20:21 +0000 [6870ba5f26] Corey Farrell - * res_xmpp: Don't crash when trying to send a message without a connection + * res_stasis: Fix app_is_subscribed_bridge_id. - If we never establish a connection to our Jabber server, iksemel never sets up - its internal transport pointer, so attempting to send a message dereferences a - NULL pointer and causes a crash. + 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. - ASTERISK-21855 #close - Reported by: Jeremy Kister + Change-Id: Ib5caca69e11727c5c8a7284a1d00621f40f1e60a - Change-Id: I204a568894e4a53ab929783ecc594a000f04d79c +2018-01-05 07:44 +0000 [7e9781c25e] Alexander Traud -2017-03-22 15:40 +0000 [0136ec12a3] Sean Bright + * General: Silence modules on (un)load. - * res_xmpp: Include client name in connection related error messages + 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-25622 #close - Reported by: Sean Darcy + ASTERISK-27553 - Change-Id: I8472cb7bfb58d411a3cfbd482da98cae2d94d1e9 + Change-Id: I9f105f46d72553994e820679bfde3478a551b281 -2017-03-20 13:27 +0000 [9b103e7bea] Kevin Harwell +2018-01-06 15:40 +0000 [512286e3c8] Alexander Traud - * rtp_engine: allocate RTP dynamic payloads per session + * BuildSystem: Really do not pass unknown-warning options to the compiler. - Dynamic payload types were statically defined in Asterisk. This unfortunately - limited the number of dynamic payloads that could be registered. With this patch - dynamic payload type numbers are now assigned dynamically and per RTP instance. - However, in order to limit any issues where some clients expect the old - statically defined value this patch makes it so the value Asterisk used to pre- - designate is used for the dynamic assignment if available. + 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. - An option, "rtp_use_dynamic", has also been added (can be set in asterisk.conf) - that turns the new dynamic behavior on or off. When off it reverts back to using - statically defined payload values. This option defaults to "yes" in Asterisk 15. + ASTERISK-27560 - ASTERISK-26515 #close - patches: - ASTERISK-26515.diff submitted by jcolp (license 5000 + Change-Id: Ia9b7747f649b27ff5e9f75c3db3fee4fe7a29621 - Change-Id: I7653465c5ebeaf968f1a1cc8f3f4f5c4321da7fc +2018-01-06 01:25 +0000 [f84fcc1fc1] Alexander Traud -2017-03-21 12:32 +0000 [bb2936f3e4] Sebastian Gutierrez + * General: Avoid implicit conversion to char when changes value to negative. - * cdr: Allow setting of user field from 'h' extension + clang 5.0 warned about this. - The CDR code previously did not allow the user field to be set - from the 'h' extension in the dialplan. This change removes that - limitation and allows it to be set. + ASTERISK-27557 - ASTERISK-26818 + Change-Id: I7cceaa88e147cbdf81a3a7beec5c1c20210fa41e - Change-Id: I0fed8a79b5e408bac4e30542b8f33a61c5ed9aa6 +2018-01-05 06:06 +0000 [b12c8cffad] Alexander Traud -2017-03-14 16:45 +0000 [6b7697ed48] Richard Begg + * bridge_softmix: Removed unused parameter from check_binaural_position_change(.). - * res_pjsip_session: Enable RFC3578 overlap dialing support. + Found as a result of the function being passed an uninitalized variable by + clang. - Support for RFC3578 overlap dialling (i.e. 484 Response to partially matched - destinations) as currently provided by chan_sip is missing from res_pjsip. - This patch adds a new endpoint attribute (allow_overlap) [defaults to yes] - which when set to yes enables 484 responses to partial destination - matches rather than the current 404. + ASTERISK-27550 - ASTERISK-26864 + Change-Id: I8af3bd84656b685a956d498459f8db3613f68954 - Change-Id: Iea444da3ee7c7d4f1fde1d01d138a3d7b0fe40f6 +2018-01-06 06:45 +0000 [ad3252ccef] Alexander Traud -2017-03-21 06:59 +0000 [d4fcf196a2] Sean Bright + * editline: Avoid comparison between pointer and zero character constant. - * res_hep: Capture actual transport type in use + gcc 7.2 warned about this. - Rather than hard-coding UDP, allow consumers of the HEP API to specify - which protocol is in use. Update the PJSIP provider to pass in the - current protocol type. + ASTERISK-27559 - ASTERISK-26850 #close + Change-Id: I48960dda9cf0a11b6a9426f775e632363f8caa74 - Change-Id: I54bbb0a001cfe4c6a87ad4b6f2014af233349978 +2018-01-06 05:01 +0000 [ef68df9111] Alexander Traud -2017-03-21 09:57 +0000 [1bf839d44b] Sean Bright + * codec_gsm: Avoid shifting a negative signed value. - * Revert "app_queue: Handle the caller being redirected out of a queue bridge" + clang 5.0 warned about this. - This reverts commit 163e9e53dc7d84dd42721e733b7706c8147bdd27. + ASTERISK-27558 - Change-Id: Ief28479c77a298879dfe2c56be7ee92dc465da4b + Change-Id: Icc452ecb0d86bbeba78dae768cc472ec540699df -2017-03-21 08:26 +0000 [6b4b87787c] Sean Bright +2018-01-04 12:23 +0000 [b20b5758d9] Richard Mudgett - * res_pjsip_messaging: Check URI type before dereferencing + * res_pjsip_endpoint_identifier_ip.c: Fix apply identify validation. - We aren't validating that the URI we just parsed is a SIP/SIPS one before - trying to access the user, host, and port members of a possibly uninitialized - structure. + The ip_identify_apply() did not validate the configuration for simple + static configuration errors or deal well with address resolution errors. - Also update the MessageSend documentation to indicate what 'from' formats are - accepted. + * 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. - ASTERISK-26484 #close - Reported by: Vinod Dharashive + Change-Id: I8b519607263fe88e8ce964f526a45359fd362b6e - Change-Id: I476b5cc5f18a7713d0ee945374f2a1c164857d30 +2018-01-04 17:42 +0000 [705e6c04b3] Richard Mudgett -2017-03-13 15:21 +0000 [65ad554c98] Joshua Elson + * res_pjsip.c: Fix endpoint identifier registration name search. - * pjsip: prevent memory corruption on creation of xml bodies + 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. - ASTERISK-26776 #close + Assuming + endpoint_identifier_order=username,ip,anonymous - Change-Id: I884b6f4e8233a355d0be687ec78d41bc0e4d3fd2 + then registering the "ip_only" identifier would put the identifier in the + wrong position of the priority list. -2017-03-20 16:27 +0000 [fc794de756] Sean Bright + * Fix incorrect strncmp() string prefix matching. - * bridge_softmix: Ignore non-voice frames from translator + Change-Id: Ib8819ec4b811da8a27419fd93528c54d34f01484 - Some codecs - codec_speex specifically - take voice frames and return - other types of frames, like CNG. If we subsequently treat those as - voice frames, we'll run into trouble when destroying the frame because - of the requirement that each voice frame have an associated format. +2018-01-05 03:33 +0000 [af064eaf13] Alexander Traud - ASTERISK-26880 #close - Reported by: Kirsty Tyerman + * BuildSystem: Find ptlib-config on Debian/Ubuntu. - Change-Id: I43f8450c48fb276ad8b99db8512be82949c1ca7c + 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. -2017-03-14 23:49 +0000 [25016a74f8] Aaron An + ASTERISK-25329 - * audiohook.c: Lost RTP packets lead to out-of-sync MixMonitor. + Change-Id: I9c6ab78b7246c21536e1d252dcbffe682f63f83d - Fixed a bug in function "ast_audiohook_write_frame" that checked the - variable other_factory_samples and only flushed the factories, so they - would be in sync, when other_factory_samples > 0. When there is not any - rtp incoming the variable other_factory_samples will be 0, and although - the result of "our_factory_ms - other_factory_ms" may be very large, - this led to the record file not syncing. +2018-01-05 06:42 +0000 [f0c8f04c73] Alexander Traud - ASTERISK-26875 #close - Reported-by: Aaron An - Tested-by: Aaron An + * chan_ooh323: Limit outgoinglimit to positive values as intended. - Change-Id: Ia4d890fb8fc1636a7188502bab35f555685aea22 + ASTERISK-27552 -2017-03-18 12:30 +0000 [fc71c18a9b] Sean Bright + Change-Id: Ifbf9d51e7374ca2e8b27ec568f6770050fc1a854 - * thread safety: Don't use getprotobyname() +2018-01-05 06:19 +0000 [09f339bda5] Alexander Traud - POSIX does not require getprotobyname() to be thread safe and some - implementations use static memory which causes issues when multiple - threads are used. + * ooh323cDriver: Fix typo in header guard. - Further, our usage of it today is just to ultimately get IPPROTO_TCP - for calls to setsockopt(). So instead we just use IPPROTO_TCP directly. + ASTERISK-27551 - Change-Id: I2e14e58674808f7ce99b2f5e900d0f90d0d8da48 + Change-Id: I39ff66031e3373e895e2bc47b23a5e860ea4e012 -2017-03-19 13:26 +0000 [516e028b44] Sean Bright +2018-01-05 03:36 +0000 [bc1b4f4d43] Alexander Traud - * res_rtp_asterisk: Pass correct data length to ast_rtcp_interpret + * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf. - We are currently passing in the capacity of the read buffer instead of the - number of bytes that we actually read off the wire. + ASTERISK-26046 - Change-Id: I60465049727d955c7f9a5e529e6f2aaff04cda36 + Change-Id: I48f05698c235f709225b92bec5aa260fb57d69d1 -2017-03-14 09:27 +0000 [79069f8ccb] Robert Mordec +2018-01-04 15:37 +0000 [cfb88f3ac1] Corey Farrell - * app_queue: Member stuck as pending after forwarding previous call from queue + * pbx: Prevent execution of NULL pointer. - Queue member will get stuck in pending_members if queue calls a device - that is different from the one observed for state changes. + 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. - This patch removes members from pending_members as a result of channel stasis - events such as blind or attended transfers and hangup. + 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). - ASTERISK-26862 #close + Change-Id: I0693af921fdc7f56b6a72a21fb816ed08b960a69 - Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727 +2018-01-04 10:50 +0000 [82cf585fb5] Corey Farrell -2017-02-22 23:26 +0000 [8cb4f9cea1] Richard Mudgett + * translators: Don't use ast_module_running_ref. - * CHANNEL(callid): Give dialplan access to the callid. + Translators are run during module load before the module is actually + running, so it cannot use ast_module_running_ref. - * Added CHANNEL(callid) to retrieve the call identifier log tag associated - with the channel. 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. + ASTERISK-20346 - ASTERISK-26878 + Change-Id: Iaa0e75da99c696e38000f1a41e340abbd7a88f56 - Change-Id: I2c97ebd928b6f3c5bc80c5729e4d3c07f453049f +2018-01-04 09:39 +0000 [da365affbd] Corey Farrell -2017-03-16 08:42 +0000 [c13ea6080e] Sean Bright + * rtp_engine: Add missing unlock. - * app_queue: Fix locking behavior in stasis message handlers + Change-Id: I380c31a255e060309f4916da11176e0d00813215 - The queue_stasis_data structure contains various mutable fields that require - appropriate locking. Specifically, the 'dying,' 'member_uniqueid,' and - 'caller_uniqueid' fields need to be locked when read from or written to. +2018-01-04 09:30 +0000 [73bf5035b8] Corey Farrell - Change-Id: I246b7dbff8447acc957a1299f6ad0ebd0fd39088 + * res_pjsip_history: Add missing unlock to CLI command. -2017-03-07 19:28 +0000 [15aa3c0a23] Sean Bright + Change-Id: I872060a30543776a176a316309602d924a23eb29 - * chan_sip: Add rtcp-mux support +2018-01-04 09:27 +0000 [aaed0b8b3a] Corey Farrell - ASTERISK-26846 #close + * aco: Fix NULL dereference in error path. - Change-Id: I541a1602ff55ab73684e9f8002edb9e0e745d639 + Change-Id: Id505167cf0f9414a3c144fa2c1e181a2cf288694 -2017-03-16 16:50 +0000 [57656e2b5b] Richard Mudgett +2018-01-03 19:07 +0000 [e3c9314a2e] Corey Farrell - * app_confbridge: Fix ConfbridgeTalking AMI event description. + * func_odbc: Add missing unlock's to acf_odbc_read. - Thanks to Chris Howard for pointing this out on the wiki. + Change-Id: I828329ecbd252ae8f27a369a046d2b03102b07c6 - Change-Id: I18e56de09a70e736b5d04719d45ef29cf0636705 +2017-12-29 18:24 +0000 [55f1d69c43] Corey Farrell -2017-03-16 16:37 +0000 [82982a191c] Richard Mudgett + * loader: Create ast_module_running_ref. - * res_pjsip_asterisk.c: Fix compile error if libsrtp is not installed. + 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. - struct ast_rtcp does not define the dtls member if SRTP is not enabled. + 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-26732 + ASTERISK-20346 #close - Change-Id: Id15ea212e04490e012f2cf4a56818b4dd948875e + Change-Id: Ia16fd28e188b2fc0b9d18b8a5d9cacc31df73fcc -2017-03-16 15:45 +0000 [49b1f1ca16] Richard Mudgett +2018-01-03 10:41 +0000 [62f862e2cd] Kevin Harwell - * res_pjsip_sdp_rtp.c: Fix cut-n-paste error + * res_pjsip_session: Check if sequence header is missing - We were inadvertenly referencing the cos_video option to determine if we - should set the tos_audio and cos_audio value on the RTP instance. + 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: Ia7964f486801d39dc6f5dae570baff079e1595b0 + Change-Id: I19af23aeeded65be016be92360e8cb7ffe51fad2 -2017-03-16 10:39 +0000 [e6dc28b78f] Matt Jordan +2018-01-02 07:36 +0000 [9b5d1454b4] Tzafrir Cohen - * res/res_pjsip_session: Only check localnet if it is defined + * cdr: submit: fix logic of test for batch mode - If local_net is not defined on a transport, transport_state->localnet - will be NULL. ast_apply_ha will, be default, return AST_SENSE_ALLOW in - this case, causing the external_media_address, if set, to be skipped. + ASTERISK-27539 #close - This patch causes us to only check if we are sending within a network if - local_net is defined. + Change-Id: I33cdf329d2bb4486dcae975c450f6aae94c515f7 - ASTERISK-26879 #close +2017-12-29 23:14 +0000 [ffbf5be116] Sungtae Kim - Change-Id: Ib661c31a954cabc9c99f1f25c9c9a5c5b82cbbfb + * res_pjsip: Add AMI action 'PJSIPShowAors' -2017-03-14 16:22 +0000 [44568fc712] Richard Begg + Add an AMI action which provides information on all + configured AORs. - * res_pjsip_sdp_rtp: RTP instance does not use same IP as explicit transport + ASTERISK-27537 - Currently a wildcard address is used for the local RTP socket, which - will not always result in the same address as used by the SIP socket - (e.g. if explicit transport addresses are configured). - Use the transport's host address when binding new local RTP sockets if - available. + Change-Id: If8b990a00909e5b6c0f04a3b8dccd9903dc445eb - ASTERISK-26851 +2018-01-02 00:26 +0000 [f298178583] Corey Farrell - Change-Id: I098c29c9d1f79a4f970d72ba894874ac75954f1a + * aco: Add missing aco_option_type_string for OPT_TIMELEN_T. -2017-03-07 08:33 +0000 [5013d8f5d3] George Joseph + ASTERISK-27117 - * res_pjsip: Symmetric transports + Change-Id: I8f6c34bb30830be9f7a40823723eb4dcaaa91c61 - A new transport parameter 'symmetric_transport' has been added. +2017-12-31 10:26 +0000 [15f8b9b8bf] Sean Bright - 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. + * ice: Increase foundation buffer size - * config_transport was modified to accept and store the new parameter. + Per RFC 5245, the foundation specified with an ICE candidate can be up + to 32 characters but we are only allowing for 31. - * config_transport/transport_apply was updated to store the transport - name in the pjsip_transport->info field using the pjsip_transport->pool - on UDP transports. + ASTERISK-27498 #close + Reported by: Michele Prà - * A 'multihomed_on_rx_message' function was added to - pjsip_message_ip_updater that, for incoming requests, retrieves the - transport name from pjsip_transport->info and retrieves the transport. - If transport->symmetric_transport is set, an 'x-ast-txp' uri parameter - containing the transport name is added to the incoming Contact header. + Change-Id: I05ce7a5952721a76a2b4c90366168022558dc7cf - * An 'ast_sip_get_transport_name' function was added to res_pjsip. - It takes an ast_sip_endpoint and a pjsip_sip_uri and returns a - transport name if endpoint->transport is set or if there's an - 'x-ast-txp' parameter on the uri and the uri host is an ipv4 or - ipv6 address. Otherwise it returns NULL. +2017-12-29 22:03 +0000 [b32d6d5e2d] Corey Farrell - * An 'ast_sip_dlg_set_transport' function was added to res_pjsip - which takes an ast_sip_endpoint, a pjsip_dialog, and an optional - pjsip_tpselector. It calls ast_sip_get_transport_name() and if - a non-NULL is returned, sets the selector and sets the transport - on the dialog. If a selector was passed in, it's updated. + * astobj2: Create case-insensitive variants of container function macros. - * res_pjsip/ast_sip_create_dialog_uac and ast_sip_create_dialog_uas - were modified to call ast_sip_dlg_set_transport() instead of their - original logic. + * AO2_STRING_FIELD_CASE_HASH_FN + * AO2_STRING_FIELD_CASE_CMP_FN + * AO2_STRING_FIELD_CASE_SORT_FN - * res_pjsip/create_out_of_dialog_request was modified to call - ast_sip_get_transport_name() and pjsip_tx_data_set_transport() - instead of its original logic. + Change-Id: I11af8c6a0c43380a42732553f519c667abb842cf - * Existing transport logic was removed from endpt_send_request - since that can only be called after a create_out_of_dialog_request. +2017-12-29 22:59 +0000 [bc73337e07] Corey Farrell - * res_pjsip/ast_sip_create_rdata was converted to a wrapper around - a new 'ast_sip_create_rdata_with_contact' function which allows - a contact_uri to be specified in addition to the existing - parameters. (See below) + * core: Use macros to generate ao2_container callbacks where possible. - * res_pjsip_pubsub/internal_pjsip_evsub_send_request was eliminated - since all it did was transport selection and that is now done in - ast_sip_create_dialog_uac and ast_sip_create_dialog_uas. + This uses AO2_STRING_FIELD_HASH_FN and AO2_STRING_FIELD_CMP_FN where + possible in the Asterisk core. - * 'contact_uri' was added to subscription_persistence. This was - necessary because although the parsed rdata contact header has the - x-ast-txp parameter added (if appropriate), - subscription_persistence_update stores the raw packet which - doesn't have it. subscription_persistence_recreate was then - updated to call ast_sip_create_rdata_with_contact with the - persisted contact_uri so the recreated subscription has the - correct transport info to send the NOTIFYs. + 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 - * res_pjsip_session/internal_pjsip_inv_send_msg was eliminated since - all it did was transport selection and that is now done in - ast_sip_create_dialog_uac. + Change-Id: Ide4c1449a894bce70dea1fef664dade9b57578f1 - * pjsip_message_ip_updater/multihomed_on_tx_message was updated - to remove all traces of the x-ast-txp parameter from the - outgoing headers. +2017-12-29 14:50 +0000 [0fe7df641a] Corey Farrell - NOTE: This change does NOT modify the behavior of permanent - contacts specified on an aor. To do so would require that the - permanent contact's contact uri be updated with the x-ast-txp - parameter and the aor sorcery object updated. If we need to - persue this, we need to think about cloning permanent contacts into - the same store as the dynamic ones on an aor load so they can be - updated without disturbing the originally configured value. + * datastore: Add automatic module references. - You CAN add the x-ast-txp parameter to a permanent contact's uri - but it would be much simpler to just set endpoint->transport. + 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. - Change-Id: I4ee1f51473da32ca54b877cd158523efcef9655f + ASTERISK-25128 #close -2017-03-16 09:07 +0000 [68749a9fa7] Joshua Colp + Change-Id: I8357a3711e77591d0d1dd8ab4211a7eedd782c89 - * res_rtp_asterisk: Fix crash when RTCP is not present when DTLS is stopped. +2017-12-28 13:27 +0000 [2dde5bef47] Richard Mudgett - This change removes an assumption that when DTLS is stopped - an RTCP session will be present on the RTP session. This is not - always the case. + * stasis_channels.c: Misc cleanup. - ASTERISK-26732 + * Use current OBJ_SEARCH_xxx defines instead of the deprecated versions. - Change-Id: Ib9f7c09ce0b005efe362dbcc8795202b18f94611 + * Fix hash_cb and cmp_cb container functions to correctly use the + OBJ_SEARCH_xxx values. -2017-03-15 13:24 +0000 [c87e7dd9ec] Richard Mudgett + * 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(). - * autochan/mixmonitor/chanspy: Fix unsafe channel locking and references. + * Remove unnecessary usage of RAII_VAR(). - Dereferencing struct ast_autochan.chan without first calling - ast_autochan_channel_lock() is unsafe because the pointer could change at - any time due to a masquerade. Unfortunately, ast_autochan_channel_lock() - itself uses struct ast_autochan.chan unsafely and can result in a deadlock - if the original channel happens to get destroyed after a masquerade in - addition to the pointer getting changed. + Change-Id: I02c405518cab22aa2a082b61e2353bf7cd629a70 - The problem is more likely to happen with v11 and earlier because - masquerades are used to optimize out local channels on those versions. - However, it could still happen on newer versions if the channel is - executing a dialplan application when the channel is transferred or - redirected. In this situation a masquerade still must be used. +2017-12-13 15:43 +0000 [898b3b080a] Sean Bright - * Added a lock to struct ast_autochan to safely be able to use - ast_autochan.chan while trying to get the channel lock in - ast_autochan_channel_lock(). The locking order is the channel lock then - the autochan lock. Locking in the other direction requires deadlock - avoidance. + * cdr_mysql: Make sure connection charset is always set - * Fix unsafe ast_autochan.chan usages in app_mixmonitor.c. + 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'"). - * Fix unsafe ast_autochan.chan usages in app_chanspy.c. + 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. - * app_chanspy.c: Removed unused autochan parameter from next_channel(). + I also snuck a few other changes into this patch: - ASTERISK-26867 + * Default the MySQL port to MYSQL_PORT (3306) instead of 0 if it's not + defined. - Change-Id: Id29dd22bc0f369b44e23ca423d2f3657187cc592 + * Fix some erroneous and/or silly checks on the contents of the + configuration ast_str values. -2017-03-07 14:13 +0000 [10fa49e327] Mark Michelson + ASTERISK-27366 #close + Reported by: Halil İbrahim YILDIZ - * Add rtcp-mux support + Change-Id: I36bf8dc5d5f83584e803b3b1a151dea9396ab8f5 - This commit adds support for RFC 5761: Multiplexing RTP Data and Control - Packets on a Single Port. Specifically, it enables the feature when - using chan_pjsip. +2017-12-27 20:48 +0000 [d69b7c6c6d] Richard Mudgett - A new option, "rtcp_mux" has been added to endpoint configuration in - pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with - whatever it communicates with. Asterisk follows the rules set forth in - RFC 5761 with regards to falling back to standard RTCP behavior if the - far end does not indicate support for rtcp-mux. + * manager.c: Update AMI Status event documentation - The lion's share of the changes in this commit are in - res_rtp_asterisk.c. This is because it was pretty much hard wired to - have an RTP and an RTCP transport. The strategy used here is that when - rtcp-mux is enabled, the current RTCP transport and its trappings (such - as DTLS SSL session) are freed, and the RTCP session instead just - mooches off the RTP session. This leads to a lot of specialized if - statements throughout. + The AMI Status event had linkedid listed twice and was missing the + effective connected line name and number headers. - ASTERISK-26732 #close - Reported by Dan Jenkins + 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: If46a93ba1282418d2803e3fd7869374da8b77ab5 + Change-Id: I004c4c4f9e7b40ef55035c831702721bec82496c -2017-03-14 08:49 +0000 [dc4cdafd42] Torrey Searle +2017-12-27 22:36 +0000 [fa36f9c01b] Richard Mudgett - * res/res_pjsip_refer: call xfer w/o extension + * bridge_native_rtp.c: Fix reentrancy framehook crash. - When transfering to a URI without an extension, ensure that the - s extension of the dialplan is entered + 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. - ASTERISK-26869 #close + * Fixed the reentrancy corruption by changing the framehook interface + struct static variable to a stack local variable. - Change-Id: I07403df66cf93f09e00a40ab5b41bfc6f72b1525 + * 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. -2017-03-09 11:05 +0000 [982d6173c5] Sean Bright + The testsuite + channels/pjsip/basic_calls/two_parties/nominal/alice_initiated/bob_hangs_up + test caught this with MALLOC_DEBUG and DO_CRASH enabled. - * app_queue: Handle the caller being redirected out of a queue bridge + Change-Id: If9e35b97d19209b0f984941c1d8eb5f7c55eea91 - A caller can leave the Queue() application after being bridged with a - member in a few ways: +2017-12-27 20:22 +0000 [1d3dc9aea2] Richard Mudgett - * Caller or member hangup - * Caller is transferred somewhere else (blind or atx) - * Caller is externally redirected elsewhere + * func_channel.c: Update MASTER_CHANNEL documentation - The first 2 scenarios are currently handled by subscribing to stasis - messages, but the 3rd is not explicitly covered. If a caller is - redirected away from the Queue() application, the member who was last - bridged with that caller will remain in an "In use" state until the - caller hangs up. + Be more explicit in what is meant by the master channel to eliminate + misunderstanding. - This patch adds handling of the caller leaving the queue via - redirection. We monitor the caller-member bridge, and if the caller is - the one that leaves, we treat it the same as we would a caller hangup. + ASTERISK-23133 - ASTERISK-26400 #close - Reported by: Etienne Lessard + Change-Id: I453bcaf4b99404a5a3e345dbf093ac6c1afcfc72 - Change-Id: Iba160907770de5a6c9efeffc9df5a13e9ea75334 +2017-12-27 19:27 +0000 [6338a03ce9] Corey Farrell -2017-03-15 08:44 +0000 [0b8a57af6d] Joshua Colp + * menuselect: Fix check for running configure. - * res_pjsip_endpoint_identifier_ip: Don't output error if no header_match. + 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. - This change ensures that if no header_match option is set on an - identify an error message is not output stating the option is set - to an invalid value. + Instead of looking at autoconfig.h we just need to ensure that makeopts + is newer than configure. - ASTERISK-26863 + Also make change to configure.ac so bootstrap.sh doesn't re-add the + extra trailing line-feed. - Change-Id: I239bc6d2319dd3da24ba96a38d4d6e9b5526d62a + Change-Id: Ief1f831d6717007f9cebb668c14e92782cd2b794 -2017-03-14 07:50 +0000 [1475604eff] Matt Jordan +2017-12-21 23:56 +0000 [94eb12ca56] Corey Farrell - * res_pjsip_endpoint_identifier_ip: Add an option to match requests by header + * cdr: Missing NULL check and unlock. - This patch adds a new features to the endpoint identifier module, - 'match_header'. When set, inbound requests are matched by a provided SIP - header: value pair. This option works in conjunction with the existing - 'match' configuration option, such that if any 'match*' attribute - matches an inbound request, the request is associated with the specified - endpoint. + * handle_dial_message: Missing a check for NULL peer. + * cdr_generic_register: Missing unlock on allocation failure. - Since this module now identifies by more than just IP address, - appropriate renaming of the module and/or variables can be done in a - non-release branch. + cdr_generic_register is fixed by reordering so the new structure is + allocated and initialized before locking the list. - ASTERISK-26863 #close + Change-Id: I5799b99270d1a7a716a555c31ac85f4b00ce8686 - Change-Id: Icfc14835c962f92e35e67bbdb235cf0589de5453 - (cherry picked from commit 30f52d79d7fc9ab0b628bef2b61ea515413795a2) +2017-12-23 22:51 +0000 [23aa20bf20] Corey Farrell -2017-03-14 16:16 +0000 [f997090877] Richard Mudgett + * loader: Add volatile to resource_being_loaded. - * pbx.c: Fix crash from malformed exten pattern. + 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. - Forgetting to indicate an exten is a pattern can cause a crash if the - "pattern" has a character set range. e.g., "9999[3-5]" The crash is due - to a buffer overwrite because the '-' exten eye-candy wasn't removed as - expected and overran the allocated space. + ASTERISK-27531 #close + Tested By: abelbeck - The buffer overwrite is fixed two ways in this patch. + Change-Id: If17a3b889e06811a0e7119f0539d052494d6ece9 - 1) Fix ext_strncpy() to distinguish between pattern and non-pattern - extens. Now '-' characters are removed when they are eye-candy and not - when they are part of a pattern character set. Since the function is - private to pbx.c, the return value now returns the number of bytes written - to the destination buffer instead of the strlen() of the final buffer so - the callers that care don't need to add one. +2017-12-20 16:17 +0000 [553306548c] Kevin Harwell - 2) Fix callers to ext_strncpy() to supply the correct available buffer - size of the destination buffer. + * AST-2017-014: res_pjsip - Missing contact header can cause crash - ASTERISK-26668 + 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. - Change-Id: I555d97411140e47e0522684062d174fbe32aa84a + 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". -2017-03-14 16:51 +0000 [0dc007e94d] Richard Begg + ASTERISK-27480 #close - * chan_iax2: Reload of iax peer results in loss of host address/port + Change-Id: I1810db87683fc637a9e3e1384a746037fec20afe - When using a non-dynamic peer address, build_peer() invalidates the - peer address structure by setting the address family to unspecified. - However, if dnsmgr is enabled, the subsequent call to ast_dnsmgr_lookup() - will not amend the peer address if the cache is still valid, resulting - in peer connectivity failures. - To fix this, we call ast_dnsmgr_refresh() instead. +2017-12-22 14:00 +0000 [c2529a352c] Corey Farrell - ASTERISK-26865 + * astobj.h: Remove from Asterisk core. - Change-Id: Id8a89a2f771ebbaf32255a35fe596a6dcb97a082 + 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. -2017-03-14 15:12 +0000 [59130260e7] Matt Jordan + Change-Id: I7e4ae96678b36b9f41d3cae14b167f110eb5d349 - * configure: Don't use the progress bar with curl when downloading to stdout +2017-12-22 08:23 +0000 [fd0ca1c3f9] Sean Bright - In some scenarios, such as when there may not be a terminal (such as - inside a Docker container), curl will apparently direct the progress bar - to stdout. This can cause extra data to be appended to a file curl'd - down to stdout, resulting in md5 verification failures. + * Remove as much trailing whitespace as possible. - This patch removes the progress bar, and tells curl to download the file - silently. + Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0 - ASTERISK-26872 #close +2017-12-21 09:51 +0000 [a1a179c09d] Sean Bright - Change-Id: Ie860b020f627d4372b3e7ce9453de5faafeebe6c + * Fix some invalid Unicode characters -2017-03-02 17:11 +0000 [8470c2bdea] George Joseph + configs/samples/minivm.conf.sample contains invalid UTF-8, but that + appears to be intentional. - * RFC sdp: Initial SDP creation + Change-Id: I7b1e0d332f3380fd0425962a3c9c55f9b200c8cc - * Added additional fields to ast_sdp_options. - * Re-organized ast_sdp. - * Updated field names to correspond to RFC4566 terminology. - * Created allocs/frees for SDP children. - * Created getters/setters for SDP children where appropriate. - * Added ast_sdp_create_from_state. - * Refactored res_sdp_translator_pjmedia for changes. +2017-12-20 21:11 +0000 [f2f51ff4ea] Corey Farrell - Change-Id: Iefbd877af7f5a4d3c74deead1bff8802661b0d48 + * app_voicemail: Fix file copy error handling. -2017-03-14 09:55 +0000 [05713c36ea] Matt Jordan + Fix error where input/output file descriptors would be closed multiple + times. - * configs/samples/hep.conf.sample: Clarify how the HEP stack works + Change-Id: Iba5140b60cb7de79e3d5d92be3c256947aa99da9 - This patch updates the documenation in hep.conf.sample to better specify - how the various HEP modules interact. +2017-12-20 14:54 +0000 [9415ec2877] Sean Bright - ASTERISK-26717 #close + * docs: Remove old API changes documentation - Change-Id: I337fb742a89e3ec5edc7fc7a7a0295218d841124 + Change-Id: I1bc7957121cc7ae27dca04acc3613f4e1858476a -2017-03-14 09:59 +0000 [0ded269bfa] Matt Jordan +2017-12-20 11:14 +0000 [1b80ffa495] Corey Farrell - * funcs/func_devstate: Remove new line in Device field of during module load + * Fix Common Typo's. - During module loading of func_devstate, Asterisk emits the current - device state of all Custom device states currently stored in the AstDB. - This was erroneously including a new line character ('\n') to the end of - the device state, causing two new lines to be emitted in - DeviceStateChange AMI events. + Fix instances of: + * Retreive + * Recieve + * other then + * different then + * Repeated words ("the the", "an an", "and and", etc). + * othterwise, teh - Note that this only happened for those device state changes that - occurred during startup. Regular device state changes for Custom device - states are handled elsewhere, and did not have the newline. + ASTERISK-24198 #close - ASTERISK-26643 #close - Reported by: Roman Bedros - Tested by: Matt Jordan - patches: - ami_devstate.diff uploaded by Roman Bedros (License 6842) + Change-Id: I3809a9c113b92fd9d0d9f9bac98e9c66dc8b2d31 - Change-Id: I1f4c02fc79c448d43bf725f5039c83d9611d7d93 +2017-12-20 11:30 +0000 [3625e91586] Richard Mudgett -2017-03-14 09:37 +0000 [b03b72717f] Matt Jordan + * manager.h: Bump AMI version - * main/stasis_cache: Demote the ERROR message when removing a nonexistent item + Change-Id: I62e6ddeb261ef012687e1fb6734c554e2499b6bf - This patch demotes the ERROR message that is displayed when a - nonexistent item is removed from the Stasis cache. The genesis of this - demotion is due to chan_sip's realtime peers and their interaction with - Asterisk's core ast_endpoint code, but ostensibly it could happen from - other channel drivers as well. +2017-12-20 10:23 +0000 [aaa3884d4a] Corey Farrell - Since Mark Michelson already did an excellent job of explaining on this - issue, it is quoted here for posterity: + * bridge: Old channel video source not set to NULL after unref. - "Internally, when a realtime peer is retrieved, Asterisk creates an - ast_endpoint structure. When that peer is destroyed, the ast_endpoint is - destroyed as well. Part of the destruction of the ast_endpoint involves - clearing the Stasis cache of all information about that endpoint. The - problem here is that the act of creating the ast_endpoint is not enough - to actually put any information in the Stasis cache. Instead, something - has to happen, such as a state change, in order for the Stasis cache to - have any information about that endpoint. When a device registers, - chan_sip creates an ast_endpoint structure, processes the REGISTER, and - then destroys the ast_endpoint. When the ast_endpoint is destroyed, - there is nothing to destroy in the Stasis cache, so an error message is - emitted. When you use rtcachefriends, ast_endpoint structures persist - for the lifetime of the module and so you do not see this error - message." + The bridge holds onto the old channel video source after it's been + released. This can lead to use after free errors. - ASTERISK-25237 #close + ASTERISK-27229 #close - Change-Id: I53cebc6b4a897a1ab9564182b75c177780feff70 + Change-Id: Ib2dab61677dd8a21f7ad53cdc9b8ca93297838b3 -2017-03-08 12:39 +0000 [2d7e68c075] Matt Jordan +2017-12-20 10:13 +0000 [c2850bfebc] Corey Farrell - * res_pjsip_endpoint_identifier_ip: Clean up a spaces/tabs issue + * core: Fix unused variable error in handle_show_sysinfo. - Tabs > spaces. Always. + 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. - Change-Id: I899ff662361c7ab0327173bd7851a67b53dd65f1 + ASTERISK-26563 #close -2017-03-12 09:21 +0000 [12460b05c1] Joshua Colp + Change-Id: I8ec5b1897b786cc1abaf62264aa75039eea05510 - * chan_pjsip: Don't assume a session will have a channel. +2017-12-20 00:53 +0000 [fff7782cf5] Corey Farrell - When querying for PJSIP specific information using the dialplan - function CHANNEL() it is possible that the underlying session - will no longer have a channel associated with it. This is - most likely to occur when the RTCP HEP module attempts to get - the channel name. If this happens then a crash will occur. + * app_festival: Fix fd leak on connection failure. - This change just adds a check that the channel exists on the - session before querying it. + Change-Id: If5efaddcf735ff7d17e55c36cc1388946cee9e0f - ASTERISK-26857 +2017-12-18 20:12 +0000 [d51837a1b9] Corey Farrell - Change-Id: I113479cffff6ae64cf8ed089e9e1565223426f01 + * CLI: Address multiple issues. -2017-03-10 20:29 +0000 [d1ef127084] George Joseph + * 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". - * pjproject_bundled: Reduce the need for rebuilds + Change-Id: I8f633ceb1714867ae30ef4e421858f77c14485a9 - Bundled pjproject should now only rebuild if one of the menuselect - "Compiler Flags" options changes. +2017-12-18 22:48 +0000 [b8f54f742f] Corey Farrell - Change-Id: If114a2e16b9e77af371a600d6a5e197bbf28fe43 + * dns_core: Protect against array index violation. -2017-03-05 15:26 +0000 [36fed72614] Daniel Journo + Add a check to allocate_dns_record to prevent calling a pointer + retrieved from beyond dns_alloc_table. - * pjsip/cli_commands: pjsip show channelstats shows wrong codec + ASTERISK-27495 #close - * cli_commands.c Fixed CLI output + Change-Id: Ie2f6e4991cea46baa12e837bd64cc22b44d322bb - ASTERISK-26822 #close +2017-12-18 18:59 +0000 [3c037ef972] Corey Farrell - Change-Id: I3889ef6a8f6738fc312fab42db5efacd6e452b01 + * chan_sip: Fix memory leaks. -2017-03-08 14:29 +0000 [b14724adb3] Daniel Journo + 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. - * res_musiconhold: moh general section is a class and issues warning + handle_response_subscribe leaked a reference to the ccss monitor + instance. - * res_musiconhold.c: Ensure the general section is not treated as - a moh class. + Change-Id: Ib11444de69c3d5b2360a88ba2feb54d2c2e9f05f - ASTERISK-26353 #close +2017-12-16 07:51 +0000 [3b99a0332c] Ivan Poddubny - Change-Id: Ia3dbd11ea2b43ab3e6c820a9827811dd24bea82d + * bridge: Stop music on hold on adding an arbitrary channel to a bridge -2017-03-08 17:08 +0000 [35cfd2c0cc] Sean Bright + 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". - * media_cache: Prefer ast_file_is_readable() over access() + 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. - Change-Id: Icc0dc6e61b2e68d5cdcb74b016b2726a388c7def + Reported by: Zane Conkle -2017-03-07 06:25 +0000 [bc2c66b594] Sean Bright + ASTERISK-25079 #close - * pbx_spool: Set AST_OUTGOING_ATTEMPT variable on channel + Change-Id: I4b129c5a20c15e63968842460ac5a1a85903cf9f - Set a variable on the channel that indicates which attempt number we - are currently performing to allow for attempt-specific behavior. +2017-12-18 15:36 +0000 [b3e839debd] Corey Farrell - ASTERISK-26568 #close - Reported by: Roman Shubovich + * Remove constant conditionals (dead-code). - Change-Id: Iacd7e8d43b0ed5b6cb021c62f41f1a1f5733dd89 + Some variables are set and never changed, making them constant. This + means that code in the 'false' block of the conditional is unreachable. -2017-03-07 07:37 +0000 [4e3b0cedba] Joshua Colp + 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. - * res_pjsip_transport_websocket: Add support for IPv6. + Change-Id: I62e2aac353d739fb3c983cf768933120f5fba059 - This change adds a PJSIP patch (which has been contributed upstream) - to allow the registration of IPv6 transport types. +2017-12-19 02:50 +0000 [c02e256407] Oron Peled - Using this the res_pjsip_transport_websocket module now registers - an IPv6 Websocket transport and uses it for the corresponding - traffic. + * chan_console: Use correct parameter for 'set active' - ASTERISK-26685 + chan_console supports multiple devices but the CLI only works on a + single device. 'console set active' selects this device. - Change-Id: Id1f9126f995b31dc38db8fdb58afd289b4ad1647 + Sadly that CLI picks the wrong command-line parameter and will only + work for a device called 'active'. -2017-03-08 08:16 +0000 [60998371e3] Daniel Journo + ASTERISK-27490 #close - * app_voicemail: Cannot set fromstring on a per-mailbox basis + Change-Id: I2f0e5fe63db19845bee862575b739360797dc73d - * apps/app_voicemail.c fromstring field added to mailbox which will - override the global fromstring if set. +2017-12-18 23:17 +0000 [bf33a09c37] Corey Farrell - ASTERISK-24562 #close + * core: Fix multiple trivial issues in the core. - Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe + * 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. -2017-03-07 13:38 +0000 [5d0371d743] Mark Michelson + Change-Id: Id7782775486175c739e0c4bf3ea5e17e3f452a99 - * res_http_websocket: Fix faulty read logic. +2017-12-18 06:14 +0000 [81474dfb23] Aaron An - When doing some WebRTC testing, I found that the websocket would - disconnect whenever I attempted to place a call into Asterisk. After - looking into it, I pinpointed the problem to be due to the iostreams - change being merged in. + * res_rtp_asterisk: Avoid close the rtp/rtcp fd twice. - Under certain circumstances, a call to ast_iostream_read() can return a - negative value. However, in this circumstance, the websocket code was - treating this negative return as if it were a partial read from the - websocket. The expected length would get adjusted by this negative - value, resulting in the expected length being too large. + 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. - This patch simply adds an if check to be sure that we are only updating - the expected length of a read when the return from a read is positive. + ASTERISK-27299 #close + Reported-by: Aaron An + Tested-by: AaronAn - ASTERISK-26842 #close - Reported by Mark Michelson + Change-Id: I870a072d73fd207463ac116ef97100addbc0820a - Change-Id: Ib4423239828a013d27d7bc477d317d2f02db61ab +2017-12-18 19:47 +0000 [8dfc973d64] Corey Farrell -2017-03-07 08:12 +0000 [d51ca4b406] Jean Aunis + * main/app: Fix leaks. - * chan_sip: Call not cancelled after receiving a 422 response + * 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. - When receiving a 422 response, the invitestate variable must be reset to - INV_CALLING. + Additionally added whitespace to ast_linear_stream, pulled assignments + out of conditionals for improved readability. - ASTERISK-26841 + Change-Id: I6d1a10cf9161b1529d939b9b2d63ea36d395b657 - Change-Id: Ia0502d6b02192664cefa4e75bafdd2645ce56099 +2017-12-18 19:19 +0000 [a790ced2e8] Corey Farrell -2017-03-07 05:22 +0000 [3ed05badb9] Joshua Colp + * func_callerid: Initialize app argument structures. - * core: Add stream topology changing primitives with tests. + 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. - This change adds a few things to facilitate stream topology changing: + Change-Id: If97fbdd8d63a204e2efd498a192effc14e90fb31 - 1. Control frame types have been added for use by the channel driver - to notify the application that the channel wants to change the stream - topology or that a stream topology change has been accepted. They are - also used by the indicate interface to the channel that the application - uses to indicate it wants to do the same. +2017-08-11 17:02 +0000 [4c04e13783] Richard Mudgett - 2. Legacy behavior has been adopted in ast_read() such that if a - channel requests a stream topology change it is denied automatically - and the current stream topology is preserved if the application is - not capable of handling streams. + * bridge_softmix.c: Change remove_destination_streams() return meaning. - Tests have also been written which confirm the multistream and - non-multistream behavior. + 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. - ASTERISK-26839 + Change-Id: Icd91571d856a1d04299a24c411e325c1d9d5c61d - Change-Id: Ia68ef22bca8e8457265ca4f0f9de600cbcc10bc9 +2017-08-11 16:57 +0000 [ea4179599f] Richard Mudgett -2017-03-06 15:54 +0000 [272259a2c6] Daniel Journo + * bridge_softmix.c: Don't match dead streams. - * Saynumber is trying to get "and" from "digits/" subfolder + * Made is_video_source() and is_video_dest() not match dead streams. - * say.c Changed 'digits/and' to 'vm-and' for en_GB + * Optimized is_video_dest() to reduce duplicated code. - ASTERISK-26598 #close + Change-Id: I4e7ab762c7ee98395e78e6516399f57a2609b9a1 - Change-Id: If1b713e5daea6f952b339f139178d292a6c4fcfe +2017-12-18 18:40 +0000 [91d9eae79b] Corey Farrell -2017-03-06 13:15 +0000 [5a74abc53b] Sean Bright + * bridge_softmix: Fix memory leaks. - * pbx_spool: Gracefully handle long lines in call files + Change-Id: Ifaf3e93b398595d21d07f535330fef77ff15a80c - Per the linked issue, we aren't checking the buffer filled by fgets() - to determine if it contains a newline, so we will fail to correctly - parse the trailing portion of a long line. +2015-11-11 17:20 +0000 [f6393b59af] Richard Mudgett - This patch increases the buffer size from 256 to 1024, and skips any - line that exceeds that length, logging a warning in the process. + * ast_json_pack(): Use safer json ref mechanism. - ASTERISK-17067 #close - Reported by: Dave Olszewski + Change-Id: I49204db2e57ae96eee43909c18ed007c09ac817e - Change-Id: I51bcf270c1b4347ba05b43f18dc2094c76f5d7b0 +2017-12-18 18:04 +0000 [dc04d1ec93] Corey Farrell -2017-03-02 21:27 +0000 [c9296b23d1] Richard Mudgett + * app_voicemail: Fix memory management issues. - * core: Cleanup ast_get_hint() usage. + * 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. - * manager.c:manager_state_cb() Fix potential use of uninitialized hint[] - if a hint does not exist for the requested extension. Ran into this when - developing a testsuite test. The AMI event ExtensionStatus came out with - the hint header value containing garbage. The AMI event PresenceStatus - also had the same issue. + Change-Id: I6282c542ff7b82fa091177a912d11234a8b00a30 - * manager.c:action_extensionstate() no need to completely initialize the - hint[]. Only initialize the first element. +2015-11-11 16:52 +0000 [7054fb8756] Richard Mudgett - * pbx.c:ast_add_hint() Remove unnecessary assignment. + * rtp_engine.c: Eliminate rtcp_report_to_json() RAII_VAR usage. - * chan_sip.c: Eliminate an unneeded hint[] local variable. We only care - about the return value of ast_get_hint() there. + Change-Id: I58a22c2ca82e91d7537409b7b3af2d735827a54d - Change-Id: Ia9a8786f01f93f1f917200f0a50bead0319af97b +2017-12-06 20:35 +0000 [5335ad117d] Rodrigo Ramírez Norambuena -2017-02-16 04:22 +0000 [7922f26cb0] Jørgen H + * app_queue: Add feature to set wrapuptime on the queue member - * res_pjsip WebRTC/websockets: Fix usage of WS vs WSS. + This patch adds the ability to set the wrapuptime on the queue member + config. - According to the RFC[1] WSS should only be used in the Via header - for secure Websockets. + When the option is set the wrapuptime on the queue member is used instead + of the queue's wrapuptime. - * Use WSS in Via for secure transport. + ASTERISK-27483 #close - * Only register one transport with the WS name because it would be - ambiguous. Outgoing requests may try to find the transport by name and - pjproject only finds the first one registered. This may mess up unsecure - websockets but the impact should be minimal. Firefox and Chrome do not - support anything other than secure websockets anymore. + Change-Id: I11c85809537f974eb44dc5bbf82bcedd8a458902 - * Added and updated some debug messages concerning websockets. +2017-12-18 14:00 +0000 [064c74e4af] Corey Farrell - * security_events.c: Relax case restriction when determining security - transport type. + * netsock: Remove from Asterisk core. - * The res_pjsip_nat module has been updated to not touch the transport - on Websocket originating messages. + 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. - [1] https://tools.ietf.org/html/rfc7118 + Change-Id: I28c6578043bac18de5ea608e136acec4f83d5dd3 - ASTERISK-26796 #close +2017-12-18 12:23 +0000 [731a23fba7] Corey Farrell - Change-Id: Ie3a0fb1a41101a4c1e49d875a8aa87b189e7ab12 + * CLI: Fix 'core set debug channel' completion bug. -2017-02-24 15:30 +0000 [0560c32375] George Joseph + The completion generator is missing a return so typing "core set debug + all off " causes the command to actually execute. - * stream: Unit tests for stream read and tweaks framework + Change-Id: Ibf6462088a74eee66967732b50445783ebefc20b - * Removed the AST_CHAN_TP_MULTISTREAM tech property. We now rely - on read_stream being set to indicate a multi stream channel. - * Added ast_channel_is_multistream convenience function. - * Fixed issue where stream and default_stream weren't being set on - a frame retrieved from the queue. - * Now testing for NULL being returned from the driver's read or - read_stream callback. - * Fixed issue where the dropnondefault code was crashing on a - NULL f. - * Now enforcing that if either read_stream or write_stream are - set when ast_channel_tech_set is called that BOTH are set. - * Added the unit tests. +2017-12-18 08:25 +0000 [1769d4a5c6] Joshua Colp - ASTERISK-26816 + * confbridge: Clarify mute sound documentation. - Change-Id: If7792b20d782e71e823dabd3124572cf0a4caab2 + The mute/unmute sounds are only played when the + action is initiated using the DTMF menu. -2017-03-01 07:23 +0000 [1dacf317f3] Sean Bright + ASTERISK-24756 - * res_config_pgsql: Make 'require' return consistent with other backends + Change-Id: I55b3dd5bc166096bf5e2f547ddd0ce355f36e3dc - res_config_pgsql should match the behavior of other realtime backend - drivers so that queue_log can disable adaptive logging. +2017-12-18 06:36 +0000 [b40c00c97b] Joshua Colp - ASTERISK-25628 #close - Reported by: Dmitry Wagin + * app_transfer: Remove LOCAL from documentation. - Change-Id: Ic1fb1600c7ce10fdfb1bcdc43c5576b7e0014372 + The Local channel has never supported app_transfer + from what I can see so remove it from the documentation. -2017-02-22 15:11 +0000 [9c55a71798] Mark Michelson + ASTERISK-25649 - * SDP: Add initial SDP state machine. + Change-Id: Icbcfe297f6f866285a26b3e9fd5c6d00fa22e0e9 - This introduces and documents the various states in the state machine. - This also introduces API functions that induce state changes, and places - TODO comments telling what needs to be done in addition to what is - already there. Those TODOs will be replaced with real code in upcoming - changes. +2017-12-15 19:01 +0000 [4a461bcde4] Richard Mudgett - Change-Id: I871c0eb480b4c84d83e91ac5628e7a673e8b89ed + * chan_pjsip.c: Improve ast_request() diagnostic msgs. -2017-02-28 13:48 +0000 [60e9e4fcc0] Sean Bright + 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. - * media_cache: Mark cache entry stale if cache file is removed + * Added missing endpoint not found message. - In the event that a cache file is removed out from under us, we should - treat the cache entry as stale and force a refresh. + * Added more information to the empty endpoint name msgs if available. - ASTERISK-26774 #close - Reported by: Igor Gamayunov + * Eliminated RAII_VAR in request(). - Change-Id: I3b1bd0c999d59d18664ef73a29823bc5b431dc52 + Change-Id: I21da85ebd62dcc32115b2ffcb5157416ebae51e4 -2017-02-28 09:41 +0000 [e5b44c26b4] Sean Bright +2016-10-06 01:29 +0000 [6f8b34f9c1] Corey Farrell - * res_config_pgsql: Release table locks where appropriate + * chan_sip: Add security event for calls to invalid extension. - The find_table() functions NULL or a locked table pointer. We are - not consistently calling release_table() in failure paths. + Log a message to security events when an INVITE is received to an + invalid extension. - Change-Id: I6f665b455799c84b036e5b34904b82b05eab9544 + ASTERISK-25869 #close -2017-02-28 05:41 +0000 [6ebdcfe27d] Tzafrir Cohen + Change-Id: I0da40cd7c2206c825c2f0d4e172275df331fcc8f - * pjsip.conf.sample: user_agent: not a specific version +2017-12-15 10:26 +0000 [e6768c0f81] Corey Farrell - Use the description of useragent from sip.conf here. + * cdr: Minor optimizations. - ASTERISK-26825 #close + * bridge_candidate_process: remove SCOPED_AO2LOCK and return value. + * handle_standard_bridge_enter_message: replace recursive call with goto + statement. - Change-Id: I5b33a4aaa0ae1d793289d05e3bc09521affbf755 + ASTERISK-24297 -2017-02-27 20:07 +0000 [fb68db87b1] George Joseph + Change-Id: Id2eaa0822fb8dc799f63422bb3aa89de9d4ee2a2 - * res_pjsip_pubsub: Remove unneeded endpoint unref +2017-12-12 12:55 +0000 [bf2d35931d] Corey Farrell - When a subscription was being recreated and the endpoint wasn't - found, we were trying to unref the endpoint. This was causing - FRACKs. Removed the unref. + * aco: Minimize use of regex. - ASTERISK-26823 #close + 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: If86d2aecff8fe853c7f38a1bfde721fcef3cd164 + Change-Id: Ib5ed478218d8a661ace4d2eaaea98b59a897974b -2017-02-16 04:16 +0000 [ee0a123f43] Jørgen H +2017-12-12 12:36 +0000 [a455e18320] Corey Farrell - * res_pjsip: Fix crash when contact has no status + * aco: Create ways to minimize use of regex. - This change fixes an assumption in res_pjsip that a contact will - always have a status. There is a race condition where this is - not true and would crash. The status will now be unknown when - this situation occurs. + ACO uses regex in many situations where it is completely unneeded. In + some cases this doubles the total processing performed by + aco_process_config. - ASTERISK-26623 #close + * 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: Id52d3ca4d788562d236da49990a319118f8d22b5 + Change-Id: I66a920dcd8e2b0301f73f968016440a985e72821 -2017-02-21 18:06 +0000 [22242fef5d] George Joseph +2017-12-15 07:56 +0000 [03c25a869f] Corey Farrell - * res_pjsip_outbound_registration: Subscribe to network change events + * res_smdi: Fix shutdown ref. - Outbound registration now subscribes to network change events - published by res_stun_monitor and refreshes all registrations - when an event happens. + 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. - The 'pjsip send (un)register' CLI commands were updated to accept - '*all' as an argument to operate on all registrations. + Change-Id: I2b9da38fbc11ef78ea23dbb2df92b684be7f647c - The 'PJSIP(Un)Register' AMI commands were also updated to - accept '*all'. +2017-12-11 17:07 +0000 [9d5797616c] Corey Farrell - ASTERISK-26808 #close + * loader: Use vector to build apha sorted module lists. - Change-Id: Iad58a9e0aa5d340477fca200bf293187a6ca5a25 + Change-Id: I9c519f4dec3cda98b2f34d314255a31d49a6a467 -2017-02-27 12:25 +0000 [4692a32ed7] George Joseph +2017-11-21 00:28 +0000 [7b54903313] Corey Farrell - * build: Warn if asterisk is installed in both 32 and 64 bit sys dirs + * loader: Replace priority heap with vector. - ... and clean them both up on uninstall. + This is needed for future changes which will require being able to + process the load priority out of order. - We've fixed the issue where 'make install' was installing to - /usr/lib on 64-bit systems that use /usr/lib64. Now we need - to clean up the remnants in /usr/lib. + Change-Id: Ia23421197f09789940510b03ebbbf3bf24d51bea - * 'make install' now prints a warning if DESTDIR/ASTLIBDIR - contains 'lib64' and libasterisk* shared libraries or modules - are also found in DESTDIR/ASTLIBDIR with 'lib64' transformed - to 'lib'. +2017-12-14 18:55 +0000 [9755eff46f] Sean Bright - * 'make uninstall' ALWAYS cleans up both DESTDIR/ASTLIBDIR and - DESTDIR/ASTLIBDIR with 'lib64' transformed to 'lib'. + * res_hep: hepv3_is_loaded() should check if we are enabled - ASTERISK-26705 + 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: I6edddeb3c07a51e7c7ba7cac3c05e4bf3ec3f01f + Change-Id: I3eddfeea09c6b5bc7c641952ee0ae487fd09b64b -2017-02-27 07:02 +0000 [ff2b4308d1] Joshua Colp +2017-11-20 23:10 +0000 [3505cc88e8] Corey Farrell - * bridge_native_rtp: Handle case where channel joins already suspended. + * loader: Rework of load_dynamic_module. - The bridge_native_rtp module did not properly handle the case where - a smart bridge operation occurs while a channel is suspended. In this - scenario the module would incorrectly set up local or remote RTP - bridging despite the media having to flow through Asterisk. The remote - endpoint would see two media streams and experience wonky audio. + * 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. - The module has been changed so that it ensures both channels are - not suspended when performing the native RTP bridging and this - requirement has been documented in the bridge technology. + 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. - ASTERISK-26781 + Change-Id: Ib2c9903cfddcc01aed3e01c1e7fe4a3fb9af0f8b - Change-Id: Id4022d73ace837d4a293106445e3ade10dbc7c7c +2017-11-21 20:34 +0000 [80bf0ee99a] Corey Farrell -2016-08-12 11:23 +0000 [5b1796f59d] frahaase + * loader: Minor fix to module registration. - * Binaural synthesis (confbridge): DTMF conference management. + This protects the module loader itself against crashing if dlopen is + called on a module from outside loader.c. - DTMF configuration options for the binaural softmix bridge: - toggle binaural rendering (per channel). + * 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. - ASTERISK-26292 + Change-Id: I40f07a315e55b92df4fc7faf525ed6d4f396e7d2 - Change-Id: Ibfe708b9fe26097c1798fcbfcc4dc461267d8af8 +2017-12-14 15:27 +0000 [a8aa209901] Corey Farrell -2017-02-24 11:49 +0000 [2046743938] Joshua Colp + * res_clialiases: Fix completion pass-through. - * config: Improve documentation and behavior of outbound_proxy option. + Never ignore contents of line when generating completion options. - This change updates the documentation for the outbound_proxy option - to ensure it is consistently stated that a full SIP URI must be - provided for the option. + Change-Id: I74389efdfea154019d3b56a9f381610614c044c8 - The res_pjsip_outbound_registration module has also been changed so - that the provided outbound_proxy value is checked to ensure it is a - URI and if not an error is output stating so. +2017-12-11 18:20 +0000 [98f7e9251f] Richard Mudgett - ASTERISK-26782 + * res_rtp_asterisk.c: Disable packet flood detection for video streams. - Change-Id: I6c239a32274846fd44e65b44ad9bf6373479b593 + 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. -2017-02-23 13:03 +0000 [c07c6714f2] Joshua Colp + * Added code to selectively disable packet flood detection for video RTP + streams. - * channel: Add ast_read_stream function for reading frames from all streams. + ASTERISK-27440 - This change introduces an ast_read_stream function and callback in - the channel technology which allows reading frames from all streams - and not just the default streams. + Change-Id: I78031491a6e75c2d4b1e9c2462dc498fe9880a70 - The stream number has also been added to frames. This is to allow the - case where frames are queued onto the channel instead of being read - directly from the driver. +2017-12-14 14:05 +0000 [283d2df680] George Joseph - This change does impose a restriction on reading though: a chain of - frames can only contain frames from the same stream. + * res_pjsip_sdp_rtp: Add NULL check in add_crypto_to_stream - ASTERISK-26816 + 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: I5d7dc35e86694df91fd025126f6cfe0453aa38ce + Change-Id: I57c6229954a38145da9810fc18657bfcc4d9d0c9 -2017-02-09 18:05 +0000 [a537dae6d0] George Joseph +2017-12-14 12:14 +0000 [c387beb456] Sean Bright - * pjproject_bundled: Update for pjproject 2.6 + * res_musiconhold: Start playlist after initial announcement - * Removed all 2.5.5 functional patches. - * Updated usages of pj_release_pool to be "safe". - * Updated configure options to disable webrtc. - * Updated config_site.h to disable webrtc in pjmedia. - * Added Richard Mudgett's recent resolver patches. + 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. - Change-Id: Ib400cc4dfca68b3d07ce14d314e829bfddc252c7 + Also add the selected annoucement to the output of 'moh show classes.' -2017-02-23 15:49 +0000 [b0067bcf2c] George Joseph + ASTERISK-24329 #close + Reported by: Thomas Frederiksen - * build: Execute ldconfig to build cache. (take two) + Change-Id: I2a5f986a31279c981592f49391409ebf38d6f6d0 - On some platforms a multiarch approach is used for libraries. - The build system does not take this into account and still - places libraries into the lib directory if no --libdir is - specified to configure. On initial startup this results in - libasteriskssl.so not being found, as it is not in the multiarch - lib directory. To make matters worse, options were being passed - to ldconfig on both Linux and FreeBSD that actually prevented - the rebuild of the cache. +2017-12-14 10:51 +0000 [7a8a187a56] Sean Bright - * Fedora has a /usr/share/config.site that automatically tells - autoconf to use /usr/lib64 but CentOS does not. This logic was - copied to configure.ac and modified so systems like Ubuntu, - which still use /usr/lib for 64-bit systems, aren't affected. + * coverity: Fix warnings in res_smdi - Now that we have them in the correct directory... + ASTERISK-19657 #close + Reported by: Matt Jordan III, Esq. - In order for the system loader to find libasteriskssl and - libasteriskpj, one of 3 things has to happen... + Change-Id: I59a5e6ef3e7d9e848bec1f4b40cb73321bc7956a - - The linker cache must be rebuilt including the directory - where the libasterisk* libraries were installed. Only root - can rebuild the cache. This was busted. - - We have to link the asterisk binary with an rpath pointing - to the directrory where the libasterisk* libraries were - installed. This makes things very complicated and will happen - over the collective dead bodies of everyone who's had to - package a distribution with an rpath. - - Finally, you can start asterisk with LD_LIBRARY_PATH set to the - directrory where the libasterisk* libraries were installed. +2017-12-14 10:22 +0000 [dac5e3a0df] Sean Bright - There are no other options. So... + * configs: Comment out and change IP of iax.conf [demo] - * The invokation of ldconfig has been moved from main/Makefile - to ASTTOPDIR/Makefile, the options have been removed, and - DESTDIR/ASTLIBDIR appended. If you aren't root, you will be - warned after the "Asterisk Installation Compete" banner that - you must re-run 'make install' as root, manually run - 'ldconfig DESTDIR/ASTLIBDIR' as root, or run asterisk with - LD_LIBRARY_PATH. + This no longer appears to exist, so no sense in causing confusion. - ASTERISK-26705 + ASTERISK-27175 #close + Reported by: Tzafrir Cohen - Change-Id: I2a64b7c33a7d3e9bde20f47e3d3ab771977af982 + Change-Id: Idde967924c69f6a741dc9a5ab7dacb44d22cf100 -2017-02-23 14:48 +0000 [0f4b349d37] Sean Bright +2017-12-13 14:26 +0000 [a51bfe5a79] George Joseph - * res_config_pgsql: Fix thread safety problems + * README: Remove outdated references to tex docs - * A missing AST_LIST_UNLOCK() in find_table() + Added links to the wiki to replace references to outdated + tex docs. - * The ESCAPE_STRING() macro uses pgsqlConn under the hood and we were - not consistently locking before calling it. + ASTERISK-27430 + Reported by: Corey Farrell - * There were a handful of other places where pgsqlConn was accessed - directly without appropriate locking. + Change-Id: I5007e732b30bc7b63d124c530ae8857c89991209 - Change-Id: Iea63f0728f76985a01e95b9912c3c5c6065836ed +2017-12-13 09:50 +0000 [5f6a3c4399] Corey Farrell -2017-02-22 05:00 +0000 [6cc890b880] Joshua Colp + * CLI: Remove special handling of 'core set verbose' from rasterisk. - * channel: Add support for writing to a specific stream. + 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. - This change adds an ast_write_stream function which allows - writing a frame to a specific media stream. It also moves - ast_write() to using this underneath by writing media - frames provided to it to the default streams of the channel. - Existing functionality (such as audiohooks, framehooks, etc) - are limited to being applied to the default stream only. + ASTERISK-20281 #close - Unit tests have also been added which test the behavior of - both non-multistream and multistream channels to confirm that - the write() and write_stream() callbacks are invoked - appropriately. + Change-Id: Ia305f75f1fc424a9169bfa30ef70d626ace2c8a8 - ASTERISK-26793 +2017-12-08 06:48 +0000 [daa3a3009a] sungtae kim - Change-Id: I4df20d1b65bd4d787fce0b4b478e19d2dfea245c + * Add new AMI action for app_voicemail -2016-08-12 11:23 +0000 [094c26aa68] frahaase + 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. - * Binaural synthesis (confbridge): Adds binaural synthesis to bridge_softmix. + ASTERISK-27470 - Adds binaural synthesis to bridge_softmix (via convolution using libfftw3). - Binaural synthesis is conducted at 48kHz. - For a conference, only one spatial representation is rendered. - The default rendering is applied for mono-capable channels. + Change-Id: Ie4eba1424a142e5fbd1d9fb1821a3fc1a1e238b7 - ASTERISK-26292 +2017-11-30 10:12 +0000 [62f2860c39] Joshua Colp - Change-Id: Iecdb381b6adc17c961049658678f6219adae1ddf + * AST-2017-012: Place single RTCP report block at beginning of report. -2017-02-22 08:53 +0000 [e57961db84] Sean Bright + 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. - * res_config_ldap: Various code improvements + 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. - The initial motivation for this patch was to properly handle memory - allocation failures - we weren't checking the return values from the - various LDAP library allocation functions. + 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. - In the process, because update_ldap() and update2_ldap() were - substantially the same code, they've been consolidated. + ASTERISK-27382 + ASTERISK-27429 - Change-Id: Iebcfe404177cc6860ee5087976fe97812221b822 + Change-Id: Iad6c8a9985c4b608ef493e19c421211615485116 -2017-02-22 13:08 +0000 [66a35e2451] Michael L. Young +2017-12-13 06:54 +0000 [3370cd21df] Joshua Colp - * build_tools: Fix download_externals to allow the use of curl or wget + * res_pjsip_session: Reinvite using active stream topology if none requested. - Not sure if this is really a bug versus an improvement. I can see it being - viewed as a bug though by some. + 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. - The current build_tools/download_externals file depends on wget in order to - download external modules. The current build system is able to discover - which tool to use for fetching remote files - either wget or curl. + 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. - This patch takes advantage of this capability by modifying the two calls to - the wget binary to instead use what was discovered by the build system. + ASTERISK*27397 - ASTERISK-26812 #close + Change-Id: I7a57117f0183479e6884b7bf3a53bb8c7464f604 - Change-Id: If9411a2554f009274d377445613ae91192d948a1 +2017-12-06 08:24 +0000 [0b532367bd] Joshua Colp -2017-02-22 11:12 +0000 [ced73d5b79] Joshua Colp + * pjsip: Ignore state changes from old transactions. - * Revert "build: Execute ldconfig to build cache." + 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 reverts commit 28c8e4f58f0f38792c7c79a05bd07788ebf15332. + This change backports a fix from PJSIP that eliminates the + incorrect state change and reduces when they would be raised + in the first place. - Change-Id: Ie2e1aaf61fd49045994974a4581545ac8348fe4c + ASTERISK-27408 -2017-02-21 10:47 +0000 [15ed7af027] Sean Bright + Change-Id: Id22d087591782eee31311753d11e7eca4b95ef34 - * pbx_realtime: Prevent premature extension matching +2017-12-12 22:42 +0000 [cb249b2419] Yasuhiko Kamata - The patterns provided by pbx_realtime were checked in the order in - which they were returned from the realtime backend. If there was - overlap between multiple patterns, the first one to correctly match was - chosen even though it may not have been the best match. + * chan_sip: 3PCC patch for AMI "SIPnotify" - We now sort the patterns descending by their length and compare in that - order. There may be cases where this still results in a sub-optimal - match, but this patch should improve the overall behavior. + A patch for sending in-dialog SIP NOTIFY message + with "SIPnotify" AMI action. - ASTERISK-18271 #close - Reported by: Charlie Smurthwaite + ASTERISK-27461 - Change-Id: I56d9ac15810eb1775966b669c3028e32cc7bd809 + Change-Id: I5797ded4752acd966db6b13971284db684cc5ab4 -2017-02-22 08:32 +0000 [f58aefba5b] Joshua Colp +2017-12-12 15:38 +0000 [c7f94e570e] Ivan Poddubny - * core: Show streams in "core show channel". + * app_queue: Fix extension state subscriptions removed on dialplan reload - The "core show channel" CLI command will now output the streams - present on the channel with their details. + 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. - ASTERISK-26811 + 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. - Change-Id: I9c95b57aa09415005f0677a1949a0feb07e4987a + 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. -2017-02-21 15:09 +0000 [fc70ca9499] Sean Bright + Reported by: Steven T. Wheeler - * pbx_dundi: DUNDi weight parameter not processed correctly + ASTERISK-18411 #close - The DUNDi weight field is not always converted from network byte order - to host byte order. This can result in incorrect weight values and - incorrect selection of DUNDi destinations. + Change-Id: I4956af2136ea2a7f110ac9272eae5f6e676d8f89 - ASTERISK-18731 #close - Reported by: Peter Racz - Patches: - dundi_weight.patch (license #6290) patch uploaded by Peter Racz +2017-12-12 15:28 +0000 [0c9cc7e975] Sean Bright - Change-Id: Iba3e1a700ff539db57211a7bbc26f7b22ea9a1be + * chan_sip: Don't send trailing \0 on keep alive packets -2017-02-15 14:43 +0000 [a738772edd] Mark Michelson + This is a partial fix for ASTERISK~25817 but does not address the + comments regarding RFC 5626. - * Add initial SDP state code. + Change-Id: I227e2d10c0035bbfa1c6e46ae2318fd1122d8420 - This establishes the basic allocation/destruction of an SDP state - object, plus some of the simpler getter methods involved. Subsequent - tasks will deal with adding a state machine, creating SDPs from - capabilities and options, and merging SDPs into a joint SDP. +2017-12-12 15:19 +0000 [5039b5741c] Dwayne Hubbard - Change-Id: Ie3757ce186f04b65e9d1883f5aace53f24e53709 + * chan_sip: Don't crash in Dial on invalid destination -2017-02-21 10:47 +0000 [ab04a018e4] Sean Bright + 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. - * realtime: Fix ast_load_realtime_multientry handling + ASTERISK-26131 #close + Reported by: Dwayne Hubbard + Patches: + dw-asterisk-master-dnid-crash.patch (license #6257) patch + uploaded by Dwayne Hubbard - ast_load_realtime_multientry() returns an ast_config structure whose - ast_categorys are keyed with the empty strings. Several modules were - giving semantic meaning to the category names causing problems at - runtime. + Change-Id: Ib84c1f740a9ec0539d582b09d847fc85ddca1c5e - * app_directory: Treated the category name as the mailbox name, and - would fail to direct calls to the appropriate extension after an - entry was chosen. +2017-12-12 15:16 +0000 [6a67828b46] Corey Farrell - * app_queue: Queues, queue members, and queue rules were all affected - and needed to be updated. + * menuselect: Tweak check for recently run configure. - * pbx_realtime: Pattern matching would never succeed because the - extension entered by the user was always compared to the empty - string. + 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: Ie7e44986344b0b76ea8f6ddb5879f5040c6ca8a7 + Change-Id: Ibca155035fa1392c95e33cbf25f257902abba17b -2017-02-21 08:56 +0000 [6e6c96d713] Sean Bright +2017-12-07 17:51 +0000 [22810fc635] Richard Mudgett - * realtime: Centralize some common realtime backend code + * chan_pjsip/res_pjsip: Add CHANNEL(pjsip,request_uri) - All of the realtime backends create artificial ast_categorys to pass - back into the core as query results. These categories have no filename - or line number information associated with them and the backends differ - slightly on how they create them. So create a couple helper macros to - help make things more consistent. + This patch does three things associated with the initial incoming INVITE + request URI. - Also updated the call sites to remove redundant error messages about - memory allocation failure. + 1) Add access to the full initial incoming INVITE request URI. - Note that res_config_ldap sets the category filename to the 'table name' - but that is not read by anything in the core, so I've dropped it. + 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). - Change-Id: I3a1fd91e0c807dea1ce3b643b0a6fe5be9002897 + 3) Fix CHANNEL(pjsip,target_uri) documentation. -2017-02-16 10:30 +0000 [28c8e4f58f] Joshua Colp + * The initial incoming INVITE request URI is now available using + CHANNEL(pjsip,request_uri). - * build: Execute ldconfig to build cache. + * Set the DNID on PJSIP channel creation so CALLERID(dnid) can return the + initial incoming INVITE request URI user portion. - On some platforms a multiarch approach is used for libraries. - The build system does not take this into account and still - places libraries into the lib directory if no --libdir is - specified to configure. On initial startup this results in - libasteriskssl.so not being found, as it is not in the multiarch - lib directory. + * CHANNEL(pjsip,target_uri) now correctly documents that the target URI is + the contact URI. - This change does the minimally invasive thing and executes - ldconfig so that the libraries in the lib directory are found - and their location cached. By doing so Asterisk starts up fine. + * Refactored print_escaped_uri() out of channel_read_pjsip() to handle + pjsip_uri_print() error condition when the buffer is too small. - If DESTDIR is specified, however, the old logic is executed as - the install process may not have permission to alter the ldconfig - cache. + ASTERISK-27478 - ASTERISK-26705 + Change-Id: I512e60d1f162395c946451becb37af3333337b33 - Change-Id: If4eca46ac510c6fea5568256280ffdb3888d7bb4 +2017-12-12 09:28 +0000 [ec1f4bf48d] Sean Bright -2017-01-08 20:32 +0000 [6f15500ced] Richard Mudgett + * res_pjsip: Add TLSv1.1 and TLSv1.2 support - * res_pjsip_authenticator_digest.c: Fix sorcery's immutable contract violation. + Support for these protocols was added in the same commit as the 'proto' + field, so we can safely use the same ./configure check. - The inbound authentication object is supposed to be immutable when it is - stored in sorcery. However, the immutable property is violated if the - authentication object does not have a realm set. + For reference: https://trac.pjsip.org/repos/changeset/4968 - The immutable contract violation has a different effect depending upon - what sorcery back end is used. If it is the config file back end you - would get the same object back until res_pjsip is reloaded. If it is the - real-time or AstDB back end you would get a new object on each query. If - it is cached you would get the same object back until it is refreshed from - the database. + Change-Id: Icf4975d785d6bfb8f30ac7ffa695a0adf9382dac - Once an inbound authentication object has its realm set it may or may not - get updated again if the default_realm changes. +2017-12-12 08:06 +0000 [0b9d2135a9] Sean Bright - If the same authentication object is used for inbound and outbound - authentication then the immutable violation can make it very hard to - determine why the outbound authentication now fails. The only diagnostic - message is a complaint about no realms matching when it had worked - earlier. It fails because of the difference in behaviour for an empty - realm setting between inbound and outbound authentication objects. + * res_pjsip: Assign support levels to a few modules - * Fixed the sorcery object immutable violation by creating a new object - and setting the default_realm on it instead. The new object is a shallow - copy for speed. + Change-Id: I51f6945c4023cb93fc7b87be5ab4c50e9e6ee27d - * The auth_store thread storage no longer holds an auth ref. It - interferes with the shallow copy and never needed a ref anyway. +2017-12-09 00:35 +0000 [c01ba7437e] Corey Farrell - ASTERISK-26799 #close + * CLI: Fix 'core show sysinfo' function ordering. - Change-Id: I2328a52f61b78ed5fbba38180b7f183ee7e08956 + Handle CLI initialization before any processing occurs. -2017-02-04 20:17 +0000 [6400f5f309] Richard Mudgett + Change-Id: I598b911d2e409214bbdfd0ba0882be1d602d221c - * res_pjsip: Update artificial auth whenever default_realm changes. +2017-12-11 15:27 +0000 [b088cddc03] Kevin Harwell - There was code attempting to update the artificial authentication object - whenever the default_realm changed. However, once the artificial - authentication object was created it would never get updated. The - artificial authentication object would require a system restart for a - change to the default_realm to take effect. + * pjsip_options: wrongly applied "UNKNOWN" status - ASTERISK-26799 + 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. - Change-Id: Id59036e9529c2d3ed728af2ed904dc36e7094802 + 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. -2017-01-01 08:02 +0000 [0b660c9989] Richard Mudgett + ASTERISK-27467 - * res_pjsip: Update authentication realm documentation. + Change-Id: Id67509d25df92a72eb3683720ad2a95a27b50c89 - Using the same auth section for inbound and outbound authentication is not - recommended. There is a difference in meaning for an empty realm setting - between inbound and outbound authentication uses. +2017-12-08 12:04 +0000 [c2ec82bf36] Richard Mudgett - An empty inbound auth realm represents the global section's default_realm - value when the authentication object is used to challenge an incoming - request. An empty outgoing auth realm is treated as a don't care wildcard - when the authentication object is used to respond to an incoming - authentication challenge. + * stasis_channels.c: Don't set channel snapshot caller_dnid twice. - ASTERISK-26799 + Change-Id: Ib8d45bbdfbda81e65045f6dff874d189b74e5471 - Change-Id: Id3952f7cfa1b6683b9954f2c5d2352d2f11059ce +2017-12-11 09:45 +0000 [00578fae0a] Sean Bright -2017-02-13 17:11 +0000 [7f83bcd63d] Richard Mudgett + * codec_opus: Make libcurl a dependency in menuselect - * pjproject: Fixes to resolve DNS SRV crashes. + ASTERISK-27475 #close - * Re #1945 (misc): Don't trigger SRV complete callback when there is a - parse error. + Change-Id: If7384bc6ed002ef140dec69798d14c52b7cfd800 - * srv_resolver.c: Don't try to send query if already considered resolved. +2017-12-08 12:48 +0000 [521f741b04] Sean Bright - ** In resolve_hostnames() don't try to resolve a query that is already - considered resolved. + * pjsip: Improve CLI completion performance - ** In resolve_hostnames() fix DNS typo in comments. + Use the new ast_cli_completion_add() function to improve completion + performance for commands like 'pjsip show endpoint.' - ** In build_server_entries() move a common expression assigning to cnt - earlier. + Change-Id: I76d802294d2ac1766110dc75f7d117c8541ce348 - * sip_transport.c: Fix tdata object name to actually contain the pointer. +2017-12-07 14:19 +0000 [9a9edc6c9e] Sean Bright - It helps if the logs referencing a tdata object buffer actually have a - name that includes the correct pointer as part of the name. Also since - the tdata has its own pool it helps if any logs referencing the pool have - the same name as the tdata object. This change brings tdata logging in - line with how tsx objects are named. + * astdb: Improve prefix searches in astdb - ASTERISK-26669 #close - ASTERISK-26738 #close + Using the LIKE operator requires a full table scan of 'astdb', whereas a + comparison operation is able to use the primary key index. - Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af + 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. -2017-02-20 13:38 +0000 [bf78c3c9c3] Richard Mudgett + Related to ASTERISK~26806, but does not completely resolve it. - * pjproject: Increase SENDER_WIDTH column size for 64-bit system logs. + Change-Id: I7d37f9ba2aea139dabf2ca72d31fbe34bd9b2fa1 - ASTERISK-26669 - ASTERISK-26738 +2017-12-08 18:19 +0000 [d2e87b8e14] Corey Farrell - Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0 + * loader: Refactor resource_name_match. -2017-02-06 14:26 +0000 [54812f18b5] Richard Mudgett + Optimize resource_name_match. This change eliminates use of + ast_strdupa, instead verifying that both basename's are the same length, + then using strncasecmp. - * pjsip_distributor.c: Update some debug messages to get transaction name. + Change-Id: I477275c0e954c99d74be5abfc8bb6545b04e5a3d - * Removed overloaded unmatched response ignore. We obviously sent the - request so we shouldn't ignore it because it isn't new work. +2017-12-08 14:58 +0000 [dbb376f166] Sean Bright - ASTERISK-26669 - ASTERISK-26738 + * pjsip_configuration: Add correct file header - Change-Id: I55fb5cadc83a8e6699b347c6dc7fa32c5a617d37 + Change-Id: I25348c386a222bb704aff07f54375108a6402906 -2017-02-20 06:28 +0000 [b18f1bfb13] Sean Bright +2017-12-07 09:52 +0000 [2ffe52a116] Sean Bright - * app_voicemail: vm_authenticate accesses uninitialized memory + * utils: Add convenience function for setting fd flags - vm_authenticate doesn't always set the passed ast_vm_user argument, so - we initialize to 0 before passing it in. + 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. - ASTERISK-25893 #close - Reported by: Filip Jenicek + Change-Id: I8b81901e1b1bd537ca632567cdb408931c6eded7 - Change-Id: Ia3cc0128f93d352ed9add8d5c2f0f7232c2cbe4a +2017-12-07 19:33 +0000 [e2dbc26376] Corey Farrell -2017-02-20 11:19 +0000 [7739b0b3ae] Joshua Colp + * res_stasis and res_speech: Fix load order. - * Revert "build: Execute ldconfig to build cache." + 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. - This reverts commit 8851c3e0885cb704a5a6159a51768ea5297e9b10. + Change-Id: I27f4f3810a95b6be8a5bfbf62be2ace6bfab6ff3 - Change-Id: I124380be5e3bd57da978428a2a93604336ccd0db +2017-12-07 18:22 +0000 [0e4d31eb9c] Kevin Harwell -2017-02-20 08:04 +0000 [ffa7d69766] George Joseph + * pjsip_options: contacts sometimes not being updated on reload - * pjproject cli: Add object count after object lists + 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. - When listing a container, we now print the number of objects - in the container at the end of the list. + 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". - Change-Id: I791cbc3ee9da9a2af9adc655164b5d32953df812 + This patch makes it so all contacts (static and dynamic) are selected, and + appropriately updated if need be. -2017-02-20 05:53 +0000 [e84353b8a8] Sean Bright + ASTERISK-27467 #close - * res_config_ldap: Don't try to delete non-existent attributes + Change-Id: I7a920170f89c683af9505d4723a44fc6841decdb - OpenLDAP will raise an error when we try to delete an LDAP attribute - that doesn't exist. We need to filter out LDAP_MOD_DELETE requests - based on which attributes the current LDAP entry actually has. There - is of course a small window of opportunity for this to still fail, - but it is much less likely now. +2017-12-07 18:18 +0000 [bd2218ce63] Kevin Harwell - Change-Id: I3fe1b04472733e43151563aaf9f8b49980273e6b + * pjsip_options: dynamic contact's fields not updated on reload -2017-02-20 05:49 +0000 [9f392574f9] Sean Bright + 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. - * res_config_ldap: Remove extraneous line numbers from log messages + 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. - Extraneous line numbers were being output in many log messages. These - have been removed. + ASTERISK-27467 - Change-Id: Ice9efa3d252ee87f37fa8f5ea852fda482675431 + Change-Id: I8e3165dc6a745218c1c9db837f77fafa0516985d -2017-02-20 05:45 +0000 [ef0944395e] Sean Bright +2017-12-06 23:35 +0000 [c2c9995830] Corey Farrell - * res_config_ldap: Make memory allocation more consistent + * translate: Skip matrix_rebuild during shutdown. - The code in update_ldap() and update2_ldap() was using both Asterisk's - memory allocation routines as well as OpenLDAP's. I've changed it so - that everything that is passed to OpenLDAP's functions are allocated - with their routines. + Change-Id: I1e5eef4029cba56e33d786c5a5ade8091e531a1e - Change-Id: Iafec9c1fd8ea49ccc496d6316769a6a426daa804 +2017-12-06 14:49 +0000 [ab191e9782] Corey Farrell -2017-02-20 05:30 +0000 [dd3efdf525] Sean Bright + * sounds_index: Avoid repeatedly reindexing. - * res_config_ldap: Fix configuration inheritance from _general + 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. - The "_general" configuration section allows administrators to provide - both general configuration options (host, port, url, etc.) as well as a - global realtime-to-LDAP-attribute mapping that is a fallback if one of - the later sections do not override it. This neglected to exclude the - general configuration options from the mapping. As an example, during - my testing, chan_sip requested 'port' from realtime, and because I did - not have it defined, it pulled in the 'port' configuration option from - "_general." We now filter those out explicitly. + 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: I1fc61560bf96b8ba623063cfb7e0a49c4690d778 + Change-Id: I585fd6ee04200612ab1490dc804f76805f89cf0a -2017-02-20 05:27 +0000 [d6d86f1c09] Sean Bright +2017-12-05 18:04 +0000 [3078b7adc2] Richard Mudgett - * res_config_ldap: Fix erroneous LDAP_MOD_REPLACE in LDAP modify + * CDR: Fix deadlock setting some CDR values. - We always treat the first change of our modification batch as a - replacement when it sometimes is actually a delete. So we have to pass - the correct arguments to the OpenLDAP library. + 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. - ASTERISK-26580 #close - Reported by: Nicholas John Koch - Patches: - res_config_ldap.c-11.24.1.patch (license #6833) patch uploaded - by Nicholas John Koch + * 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. - Change-Id: I0741d25de07c9539f1edc6eff3696165dfb64fbe + * Made the CHANNEL function and the CDR function process amaflags the same + way. -2017-02-15 11:55 +0000 [44abe214d2] Sean Bright + * Fixed referencing the wrong message type in cdr_prop_write(). - * res_config_sqlite3: Fix crash when loading with invalid config + ASTERISK-27460 - When ast_config_load() fails with CONFIG_STATUS_FILEINVALID, it has - already destroyed the ast_config struct for us. Trying to do it again - results in a crash. + Change-Id: I5eacb47586bc0b8f8ff76a19bd92d1dc38b75e8f - Change-Id: If6a5c0ca718ad428e01a1fb25beb209a9ac18bc6 +2017-12-06 12:42 +0000 [2af59ebb3a] Corey Farrell -2017-02-17 17:06 +0000 [51e3b11989] Sean Bright + * media_index: Improve startup. - * pjproject-bundled: Fix checksum verification when using cURL + This eliminates some wasteful operations in media_index startup. - ASTERISK-26802 #close - Reported by: Michael L. Young + * 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. - Change-Id: Iad293080f55d4d69ab615717a15211d916eed613 + 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. -2017-02-17 16:57 +0000 [0b427f9b59] Richard Mudgett + Change-Id: Ia50b752f8efb356f852b05c4be495a6631af8652 - * tcptls.c: Add some missing allocation failure checks. +2017-12-06 07:36 +0000 [e97e41552e] Richard Mudgett - * Fix tcptls_session ref and fd leak in ast_tcptls_server_root(). + * bridge_basic.c: Update transfer diagnostic messages addendum. - Change-Id: I0ddf01cd3c10d3b6666d7bf68d4e206a37f4fbdb + * Added start DTMF transfer verbose messages. + * Made associated transfer messages use a similar message format. + * Adjusted message verbose level as requested by initial reporter. -2017-02-17 14:58 +0000 [dbc3598014] Mark Michelson - - * Remove extra ast_iostream_close() calls. + ASTERISK-27449 - When AMI encounters an error at the beginning of a session, it would - explicitly call ast_iostream_close() on its tcptls session's iostream. - It then would jump to a label where it would shut down the tcptls - session instance. The tcptls session instance would again attempt to - close the iostream. + Change-Id: I2045714586414b3c5ef1f3cc56c1c4af4b31f551 - Under normal circumstances, this might go by unnoticed. However, when - MALLOC_DEBUG is enabled, all fields on the iostream get set to - 0xdeaddead when the iostream is freed. Thus a second call to - ast_iostream_close() after the iostream has been freed would reslt in an - attempt to call SSL_shutdown on 0xdeaddead, which would crash and burn - horribly. +2017-11-29 06:21 +0000 [9d00583164] Niklas Larsson - The fix here is to not directly close the iostream from the dangerous - scenarios. The specific scenarios are: - * Exceeding the configured authlimit - * Failing to build a mansession on a new connection + * bridge_basic.c: Update transfer diagnostic messages. - Change-Id: I908f98d516afd5a263bd36b072221008a4731acd + * Add the channel name to diagnostic messages so you will know which + channel failed to transfer. -2017-02-14 09:54 +0000 [5a130b2e17] Mark Michelson + * Promoted some debug messages to verbose 4 messages. - * Add SDP translator and PJMEDIA implementation. + ASTERISK-27449 #close - This creates the following: - * Asterisk's internal representation of an SDP - * An API for translating SDPs from one format to another - * An implementation of a translator for PJMEDIA + Change-Id: Idac66b7628c99379cc9269158377fd87dc97a880 - Change-Id: Ie2ecd3cbebe76756577be9b133e84d2ee356d46b +2017-12-01 13:54 +0000 [8536a09b86] Richard Mudgett -2017-02-07 09:50 +0000 [8af6342555] Mark Michelson + * security-events: Fix SuccessfulAuth using_password declaration. - * Add initial SDP options. + 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. - This is step one of adding an SDP API: defining some - configurable settings for SDPs. This is based on options - that are currently supported in Asterisk. + Change-Id: Ia08bc797613a62f07e5473425f9ccd8d77c80935 - Change-Id: I1ede91aafed403b12a9ccdfb91a88389baa7e5d7 +2017-11-30 12:50 +0000 [ab63448fa6] Richard Mudgett -2017-02-16 10:30 +0000 [8851c3e088] Joshua Colp + * res_rtp_asterisk.c: Increase strictrtp learning timeout time. - * build: Execute ldconfig to build cache. + 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. - On some platforms a multiarch approach is used for libraries. - The build system does not take this into account and still - places libraries into the lib directory if no --libdir is - specified to configure. On initial startup this results in - libasteriskssl.so not being found, as it is not in the multiarch - lib directory. + * Increase the strictrtp learning timeout time from 1.5 to 5 seconds. - This change does the minimally invasive thing and executes - ldconfig so that the libraries in the lib directory are found - and their location cached. By doing so Asterisk starts up fine. + ASTERISK-27453 - ASTERISK-26705 + Change-Id: Ic5e711164cbb91b4d1c1e40c83697755640f138c - Change-Id: I6d30b6427e9d5e69470e11327c7ff203fa7da519 +2017-12-04 08:33 +0000 [e0354bbe82] Alexander Traud -2017-02-16 08:38 +0000 [e93f2a5142] Sean Bright + * res_rtp_asterisk: Correct default in sample configuration file. - * realtime: Fix LIKE escaping in SQL backends + 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". - The realtime framework allows for components to look up values using a - LIKE clause with similar syntax to SQL's. pbx_realtime uses this - functionality to search for pattern matching extensions that start with - an underscore (_). + ASTERISK-20643 - When passing an underscore to SQL's LIKE clause, it will be interpreted - as a wildcard matching a single character and therefore needs to be - escaped. It is (for better or for worse) the responsibility of the - component that is querying realtime to escape it with a backslash before - passing it in. Some RDBMs support escape characters by default, but the - SQL92 standard explicitly says that there are no escape characters - unless they are specified with an ESCAPE clause, e.g. + Change-Id: I2a2e0a900455d0767a99ea576e30adc6d7608a36 - SELECT * FROM table WHERE column LIKE '\_%' ESCAPE '\' +2017-12-04 05:27 +0000 [b2c4e8660a] Alexander Traud - This patch instructs 3 backends - res_config_mysql, res_config_pgsql, - and res_config_sqlite3 - to use the ESCAPE clause where appropriate. + * chan_sip: Peers with distinct source ports don't match, regardless of transport. - Looking through documentation and source tarballs, I was able to - determine that the ESCAPE clause is supported in: + 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. - MySQL 5.0.15 (released 2005-10-22 - earliest version available from - archives) - PostgreSQL 7.1 (released 2001-04-13) - SQLite 3.1.0 (released 2005-01-21) + 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. - The versions of the relevant libraries that we depend on to access MySQL - and PostgreSQL will not work on versions that old, and I've added an - explicit check in res_config_sqlite3 to only use the ESCAPE clause when - we have a sufficiently new version of SQLite3. + ASTERISK-27457 + Reported by: Stephane Chazelas - res_config_odbc already handles the escape characters appropriately, so - no changes were required there. + Change-Id: Id190428bf1d931f2dbfd4b293f53ff8f20d98efa - ASTERISK-15858 #close - Reported by: Humberto Figuera +2017-12-04 03:40 +0000 [0611fe581c] Sungtae Kim - ASTERISK-26057 #close - Reported by: Stepan + * Add new object for VoicemailUserEntry - Change-Id: I93117fbb874189ae819f4a31222df7c82cd20efa + 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. -2017-02-16 08:28 +0000 [f8f513d363] George Joseph + ASTERISK-27456 - * stream: Rename creates/destroys to allocs/frees + Change-Id: I5c71521c2d1daf8b7b161e31c34d28cca6aea4c7 - To be consistent with sdp implementation. +2017-12-03 18:49 +0000 [e2715d2cd4] Joshua Colp - Change-Id: I714e300939b4188f58ca66ce9d1e84b287009500 + * pjproject: Clean up disabling of WebRTC support. -2017-02-16 05:46 +0000 [30aaeec5a1] Sean Bright + 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. - * res_config_sqlite3: Properly create missing columns when necessary + ASTERISK-26980 - There were two specific issues resolved here: + Change-Id: I27da2c894f87914956a72710222e17462d8a44bc - 1) The code that iterated over the required fields - (via ast_realtime_require) was broken for the RQ_INTEGER1 field - type. Iteration would stop when the first RQ_INTEGER1 (0) field - was encountered. +2017-12-02 15:55 +0000 [39939cecfa] Corey Farrell - 2) sqlite3_changes() was used to try and count the number of rows - returned by a SELECT statement. sqlite3_changes() only counts - affected rows, so this was always returning the value from the - most recent data modification statement. We now separate read-only - queries from data modification queries and count rows appropriately - in both cases. + * autoconf: Remove use of m4_ifblank. - ASTERISK-23457 #close - Reported by: Scott Griepentrog + 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: I91ed20494efc3fcfbc2a96ac7646999a49814884 + Change-Id: I280785deb872ed8d3339d99cce63a2b54d5f1438 -2017-02-15 14:44 +0000 [ac7a34c531] Joshua Elson +2017-11-30 14:38 +0000 [075faac2fd] George Joseph - * http: Ensure capath is defined on all http creations + * AST-2017-013: chan_skinny: Call pthread_detach when sess threads end - ASTERISK-26794 #close + 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. - Change-Id: I9cbc3b6b6a8aab590f5ccde9c262a98e4d5253a1 + * 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. -2017-02-15 23:09 +0000 [135bea931c] Igor Goncharovsky + ASTERISK-27452 + Reported by: Juan Sacco - * chan_unistim: fix char type to have consistent behavior on ARM + Change-Id: I9af7268eba14bf76960566f891320f97b974e6dd + (cherry picked from commit 8f5dff543e457ee3450d21e741901609af0cd779) - There is difference exists in behaviour of char type on x86 and ARM. - On x86 by default char variable type means signed char, but in ARM - unsigned char used. This make binary calculations and negative values - works wrong on ARM. +2017-12-01 10:01 +0000 [d9fdeae6a4] Sean Bright - This patch change type of char variables used for store negative - values and binary calculations to signed char. + * config: Speed up config template lookup - ASTERISK-26714 + 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. - Change-Id: Id78716dee9568a58419d4ef63c038affc3dfc7ab + 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. -2017-02-07 13:17 +0000 [4bdf5d329f] George Joseph + 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. - * res_pjsip_pubsub: Correctly implement persisted subscriptions + Change-Id: I59b95f288e11eb6bb34f31ce4cc772136b275e4a - This patch fixes 2 original issues and more that those 2 exposed. +2017-12-01 08:29 +0000 [1ad0fbc80e] Sean Bright - * When we send a NOTIFY, and the client either doesn't respond or - responds with a non OK, pjproject only calls our - pubsub_on_evsub_state callback, no others. Since - pubsub_on_evsub_state (which does the sub_tree cleanup) does not - expect to be called back without the other callbacks being called - first, it just returns leaving the sub_tree orphaned. Now - pubsub_on_evsub_state checks the event for PJSIP_EVENT_TSX_STATE - which is what pjproject will set to tell us that it was the - transaction that timed out or failed and not the subscription - itself timing our or being terminated by the client. If is - TSX_STATE, pubsub_on_evsub_state now does the proper cleanup - regardless of the state of the subscription. + * config: Speed up ACO & sorcery initialization - * When a client renews a subscription, we don't update the - persisted subscription with the new expires timestamp. This causes - subscription_persistence_recreate to prune the subscription if/when - asterisk restarts. Now, pubsub_on_rx_refresh calls - subscription_persistence_update to apply the new expires timestamp. - This exposed other issues however... + 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. - * When creating a dialog from rdata (which sub_persistence_recreate - does from the packet buffer) there must NOT be a tag on the To - header (which there will be when a client refreshes a - subscription). If there is one, pjsip_dlg_create_uas will fail. - To address this, subscription_persistence_update now accepts a flag - that indicates that the original packet buffer must not be updated. - New subscribes don't set the flag and renews do. This makes sure - that when the rdata is recreated on asterisk startup, it's done - from the original subscribe packet which won't have the tag on To. + 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: - * When creating a dialog from rdata, we were setting the dialog's - remote (SUBSCRIBE) cseq to be the same as the local (NOTIFY) cseq. - When the client tried to resubscribe after a restart with the - correct cseq, we'd reject the request with an Invalid CSeq error. + Call this routine to speed up XPath computation on static documents. - * The acts of creating a dialog and evsub by themselves when - recreating a subscription does NOT restart pjproject's subscription - timer. The result was that even if we did correctly recreate the - subscription, we never removed it if the client happened to go away - or send a non-OK response to a NOTIFY. However, there is no - pjproject function exposed to just set the timer on an evsub that - wasn't created by an incoming subscribe request. To address this, - we create our own timer using ast_sip_schedule_task. This timer is - used only for re-establishing subscriptions after a restart. + 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. - An earlier approach was to add support for setting pjproject's - timer (via a pjproject patch) and while that patch is still included - here, we don't use that call at the moment. + Change-Id: I45d457f1580e26bf5a2b0dab16e8e9ae46dcbd82 - While addressing these issues, additional debugging was added and - some existing messages made more useful. A few formatting changes - were also made to 'pjsip show scheduled tasks' to make displaying - the subscription timers a little more friendly. +2017-12-01 06:07 +0000 [892df22ccd] Joshua Colp - ASTERISK-26696 - ASTERISK-26756 + * res_http_post: Not all versions of gmime have GMIME_MAJOR_VERSION. - Change-Id: I8c605fc1e3923f466a74db087d5ab6f90abce68e + This change makes the presence of the GMIME_MAJOR_VERSION + definition optional, as not all versions of gmime actually + define it. -2017-02-15 11:03 +0000 [11886dea82] Sean Bright + ASTERISK-27454 - * res_rtp_asterisk: Use PJ_ICE_MAX_CAND instead of hard-coding 16 + Change-Id: I01d99590045971ed6787899147170a5954077238 - pjsip limits the total number of ICE candidates to PJ_ICE_MAX_CAND, - which is a compile-time constant. Instead of hard-coding 16 when we - enumerate local interfaces, use PJ_ICE_MAX_CAND so that we can - potentially collect more interfaces if the compile time options are - changed. +2017-11-30 21:24 +0000 [35a7036a0d] Corey Farrell - Tangentially related to ASTERISK~24464 + * README-SERIOUSLY.bestpractices.txt: Convert to markdown - Change-Id: I1b85509e39e33b1fed63c86261fc229ba14bbabd + Follow-up to conversion of README.md. -2016-12-22 09:42 +0000 [b58de2fab7] Dennis Guse + Change-Id: I17ee7cf25bc027ece844efa2c1dfe613aff1e35b - * Binaural synthesis (confbridge): Adds utils/conf_bridge_binaural_hrir_importer +2017-11-17 10:38 +0000 [ce5cfc8ffb] Corey Farrell - Adds the import tool for converting a HRIR database to hrirs.h + * autoconf: Use m4 conditionals where possible. - ASTERISK-26292 + Change-Id: I530c0a72f965437acef6a9a4fbfe5c487f078b65 - Change-Id: I51eb31b54c23ffd9b544bdc6a09d20c112c8a547 +2017-11-17 09:15 +0000 [87a57e8d46] Corey Farrell -2017-02-14 12:33 +0000 [a9c15a0e4c] Joshua Colp + * autoconf: Fix call to AC_CONFIG_AUX_DIR. - * stream: Add unit tests for channel stream usage. + The `pwd` parameter to AC_CONFIG_AUX_DIR is unnecessary, the default + value is $srcdir. - This change adds unit tests cover the following: + Additionally remove the AC_REVISION call. It only added a comment and + is pointless without SVN tag replacements. - 1. That retrieving the first media stream of a specific media - type from a stream topology retrieves the expected media - stream. + Change-Id: I99299a3217f095bddcb2edefb3b9af0ab147bc29 - 2. That setting the native formats of a channel which does - not support streams results in the creation of streams on - its behalf according to the formats of the channel. +2017-11-20 16:58 +0000 [d12a2ab400] Corey Farrell - 3. That setting a stream topology on a channel which supports - streams sets the topology to the provided one. + * CLI: Remove compatibility code. - ASTERISK-26790 + Previous commits maintained compatibility with older remote console + clients as well as maintaining all API's. - Change-Id: Ic53176dd3e4532e8c3e97d9e22f8a4b66a2bb755 + Remove the following compatibility code: + * ast_cli_generatornummatches. + * Remote command "_command nummatches". + * Sorting / duplicate removal by remote console. -2017-02-13 16:50 +0000 [275f469a4d] Sean Bright + Change-Id: I59e6ce94fa57ae564888442049695f7e46746437 - * app_voicemail: Allow 'Comedian Mail' branding to be overriden +2017-11-26 11:47 +0000 [58115e9c21] Alexander Traud - Original patch by John Covert, slight modifications by me. + * translate: Transcode siren14, speex32, silk24, and silk12 via slin16. - ASTERISK-17428 #close - Reported by: John Covert - Patches: - app_voicemail.c.patch (license #5512) patch uploaded by - John Covert + 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. - Change-Id: Ic3361b0782e5a5397a19ab18eb8550923a9bd6a6 + 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. -2017-02-13 11:50 +0000 [bf2f091bbb] George Joseph + 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). - * stream: Add stream topology to channel + ASTERISK-23735 + Reported by: Richard Kenner - Adds topology set and get to channel. + Change-Id: I9448295c1978be26f8633b6066395e7bbbe2e213 - ASTERISK-26790 +2017-11-26 09:44 +0000 [55c4d8e008] Richard Mudgett - Change-Id: Ic379ea82a9486fc79dbd8c4d95c29fa3b46424f4 + * res_ari: Fix inverted test giving wrong error message. -2017-01-25 16:25 +0000 [2b245b12d9] Ryan Rittgarn + The patch for ASTERISK_24560 inverted a test checking if the bridge name + is being updated to a different name. - * app_voicemail: VoiceMailPlayMsg did not play database stored messages + * Fix the test to return "Changing bridge name is not implemented" when + someone attempts to change the bridge name. - When attempting to use VoiceMailPlayMsg with a realtime data backend - the message is located, but never retrieved. This patch adds the - required RETRIEVE and DISPOSE calls that will fetch the message from - the database (and IMAP storage as well for that matter). + ASTERISK-27445 - Also, removed extraneous make_file call. + Change-Id: I4b70bf08b0e02e016108b077ff75b345dec12fc9 - ASTERISK-26723 #close +2017-11-25 04:09 +0000 [74e7005a74] Alexander Traud - Change-Id: I1e122dd53c0f3d7faa10f3c2b7e7e76a47d51b8c + * translate: Show sample rate for silk, speex, and slin in translation table. -2017-02-14 08:12 +0000 [662c9e69fa] Sean Bright + ASTERISK-24662 - * app_record: Add option to prevent silence from being truncated + Change-Id: I3822956984292c99c48bca8e97807e498ccc0e88 - When using Record() with the silence detection feature, the stream is - written out to the given file. However, if only 'silence' is detected, - this file is then truncated to the first second of the recording. +2017-11-23 13:27 +0000 [02a9952709] Richard Mudgett - This patch adds the 'u' option to Record() to override that behavior. + * features.conf.sample: Clarify ActivatedBy documentation wording. - ASTERISK-18286 #close - Reported by: var - Patches: - app_record-1.8.7.1.diff (license #6184) patch uploaded by var + Change-Id: Id2899331fe05d1909a862ea879742879d086bc64 - Change-Id: Ia1cd163483235efe2db05e52f39054288553b957 +2017-11-22 18:37 +0000 [4b1262c94b] Corey Farrell -2017-02-07 11:13 +0000 [9f394d074a] Sebastian Gutierrez + * Add defaultbranch to .gitreview. - * app_queue: reset abandoned in sl for sl2 calculations + 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. - ASTERISK-26775 #close + Change-Id: I3db009217c5ae399fb84bee95076f4dbb7fa52d2 - Change-Id: I86de4b1a699d6edc77fea9b70d839440e4088284 +2017-11-22 18:43 +0000 [fcd9ba2b87] Alexander Anikin -2017-02-13 11:00 +0000 [6c4657e28e] Joshua Colp + * add cmd connection creation on creation ooh323 call data structure - * stream: Add stream topology unit tests and fix uncovered bugs. + ASTERISK-27353 #close - This change adds unit tests for the various API calls relating - to stream topologies. This includes creation, destruction, - inspection, and manipulation. + Reported by: Marco Giordani - Through this a few bugs were uncovered in the implementation: + Change-Id: I455096bd7da016b871afe09af86067c2c7c9f33f - 1. Creating a topology using a format capabilities would fail as - the code considered a return value of 0 from the append stream - function to indicate an error which is incorrect. +2017-11-22 10:42 +0000 [db21f7f2e1] Kevin Harwell - 2. Not all functions which placed a stream into a topology - set the position on the stream itself. + * pjsip: 183 without To tag does not negotiate media - 3. Appending a stream would cause a frack if the position - provided was the last one. This occurred because the existing - stream was queried but the index was outside of what the - vector was currently at for size. + 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. - ASTERISK-26786 + 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. - Change-Id: Id5590e87c8a605deea1a89e53169a9c011d66fa0 + ASTERISK-27442 #close -2017-02-11 09:57 +0000 [3f94373778] Sean Bright + Change-Id: Ic9d6b01e05e8f4874eebbd7adfe05d932025d203 - * cli: Fix various CLI documentation and completion issues +2017-11-21 06:39 +0000 [1a349d832d] Alexander Traud - * app_minivm: Use built-in completion facilities to complete optional - arguments. + * res_rtp_asterisk: ICE server-reflexive candidates (srflx) with Dual-Stack. - * app_voicemail: Use built-in completion facilities to complete - optional arguments. + 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. - * app_confbridge: Add missing colons after 'Usage' text. + ASTERISK-27437 - * chan_alsa: Use built-in completion facilities to complete optional - arguments. + Change-Id: Ie07d8e2bfa7b6fe06fcdc73d390a7a9a4d8c0bc1 - * chan_sip: Use built-in completion facilities to complete optional - arguments. Add completions for 'load' for 'sip show user', 'sip show - peer', and 'sip qualify peer.' +2017-11-20 13:05 +0000 [8e1506154f] Corey Farrell - * chan_skinny: Correct and extend completions for 'skinny reset' and - 'skinny show line.' + * res_parking: Set load_pri more appropriately. - * func_odbc: Correct completions for 'odbc read' and 'odbc write' + 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. - * main/astmm: Use built-in completion facilities to complete arguments - for 'memory' commands. + Change-Id: I297b6fb3ff6993ec004e667b22a74f5925906259 - * main/bridge: Correct completions for 'bridge kick.' +2017-11-17 21:33 +0000 [90f9885f73] Corey Farrell - * main/ccss: Use built-in completion facilities to complete arguments - for 'cc cancel' command. + * README: Convert to README.md. - * main/cli: Add 'all' completion for 'channel request hangup.' Correct - completions for 'core set debug channel.' Correct completions for 'core - show calls.' + 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. - * main/pbx_app: Remove redundant completions for 'core show - applications.' + Change-Id: I7d13131764a9a9026e5f8a6ddb245a01bbd788e7 - * main/pbx_hangup_handler: Remove unused completions for 'core show - hanguphandlers all.' +2017-11-20 16:48 +0000 [b79d04f8f8] Corey Farrell - * res_sorcery_memory_cache: Add completion for 'reload' argument of - 'sorcery memory cache stale' and properly implement. + * CLI: Finish conversion of completion handling to vectors. - Change-Id: Iee58c7392f6fec34ad9d596109117af87697bbca + Change-Id: Ib81318f4ee52a5e73b003316e13fe9be1dd897a1 -2017-02-10 15:45 +0000 [8b72ec312b] George Joseph +2017-11-07 15:34 +0000 [fbb8c0d3e4] Corey Farrell - * stream: Add media stream topology definition and API + * CLI: Refactor cli_complete. - This change adds the media stream topology definition and API for - accessing and using it. + * 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. - Some refactoring of the stream was also done. + Change-Id: Ie2211b519a3d4bec45bf46e0095bdd01d384cb69 - ASTERISK-26786 +2017-11-07 14:13 +0000 [1cd24cd726] Corey Farrell - Change-Id: Ic930232d24d5ad66dcabc14e9b359e0ff8e7f568 + * CLI: Rewrite ast_el_strtoarr to use vector's internally. -2017-01-13 11:21 +0000 [75f8167e66] Norbert Varga + This rewrites ast_el_strtoarr to use vector's internally, but still + return the original NULL terminated array of strings. - * chan_pjsip: Multidomain endpoint finding on call + Change-Id: Ibfe776cbe14f750effa9ca360930acaccc02e957 - When PJSIP tries to call an endpoint with a domain (e.g. 1000@test.com), - the user part is stripped down as it would be a trunk with a specified user, - and only the host part is called as a PJSIP endpoint and can't be found. - This is not correct in the case of a multidomain SIP account, so the stripping - after the @ sign is done only if the whole endpoint (in multidomain case - 1000@test.com) can't be found. +2017-11-07 14:47 +0000 [9c0a2110f0] Corey Farrell - ASTERISK-26248 + * CLI: Refactor ast_cli_display_match_list. - Change-Id: I3a2dd6f57f3bd042df46b961eccd81d31ab202e6 + * 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. -2017-02-13 05:05 +0000 [89871576b9] Joshua Colp + Change-Id: I7f92afa8bea92241a95227587367424c8c32a5cb - * channel: Protect flags in ast_waitfor_nandfds operation. +2017-11-08 23:42 +0000 [9587a61f4c] Corey Farrell - The ast_waitfor_nandfds operation will manipulate the flags - of channels passed in. This was previously done without - the channel lock being held. This could result in incorrect - values existing for the flags if another thread manipulated - the flags at the same time. + * CLI: Create ast_cli_completion_add function. - This change locks the channel during flag manipulation. + 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. - ASTERISK-26788 + Change-Id: I73d26d270bbbe1e3e6390799cfc1b639e39cceec - Change-Id: I2c5c8edec17c9bdad4a93291576838cb552ca5ed +2017-11-09 00:39 +0000 [a02cbc2ef3] Corey Farrell -2017-02-11 11:25 +0000 [07abb39d6a] Richard Mudgett + * CLI: Remove calls to ast_cli_generator. - * res_pjsip.c: Fix inconsistency between warning and action. + 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'. - The original return value corresponded to AST_SIP_AUTHENTICATION_CHALLENGE - but we have no authenticator registered to create the challenge. + * 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: I62368180d774b497411b80fbaabd0c80841f8512 + Change-Id: I8cd6b93905363cf7a33a2d2b0e2a8f8446d9f248 -2017-02-11 11:26 +0000 [ce810a892b] Richard Mudgett +2017-11-20 09:13 +0000 [491e2eba0d] Alexander Traud - * pjsip_distributor.c: Fix off-nominal tdata ref leak. + * chan_sip: ICE contained square brackets around IPv6 addresses. - Change-Id: I571f371d0956a8039b197b4dbd8af6b18843598d + ASTERISK-27434 -2017-02-09 10:01 +0000 [0910773077] Sean Bright + Change-Id: Iaeed89b4fa05d94c5f0ec2d3b7cd6e93d2d5a8f7 - * manager: Restore Originate failure behavior from Asterisk 11 +2017-11-19 21:23 +0000 [10b4b5d200] Corey Farrell - In Asterisk 11, if the 'Originate' AMI command failed to connect the provided - Channel while in extension mode, a 'failed' extension would be looked up and - run. This was, I believe, unintentionally removed in 51b6c49. This patch - restores that behavior. + * loader: Fix comments in struct ast_module. - This also adds an enum for the various 'synchronous' modes in an attempt to - make them meaningful. + Make the comments follow doxygen format, move comments to the line + before each field they describe. - ASTERISK-26115 #close - Reported by: Nasir Iqbal + Change-Id: Ic445468398b5e88f13910f7c2f70bd15aad33a27 - Change-Id: I8afbd06725e99610e02adb529137d4800c05345d +2017-11-16 17:25 +0000 [9ae805c900] Corey Farrell -2017-02-08 14:27 +0000 [16fdb11bc3] Richard Mudgett + * cli: Remove silly usage of RAII_VAR. - * core: Cleanup some channel snapshot staging anomalies. + Change-Id: I81aacfee7cd26e4fc5eef07bca582700c2975bd7 - We shouldn't unlock the channel after starting a snapshot staging because - another thread may interfere and do its own snapshot staging. +2017-11-16 13:19 +0000 [89ccab95c2] Corey Farrell - * app_dial.c:dial_exec_full() made hold the channel lock while setting up - the outgoing channel staging. Made hold the channel lock after the called - party answers while updating the caller channel staging. + * ccss: Remove silly usage of RAII_VAR. - * chan_sip.c:sip_new() completed the channel staging on off-nominal exit. - Also we need to use ast_hangup() instead of ast_channel_unref() at that - location. + Change-Id: I5ce40035e0a940e4e56f6322c1dcd47fbd509b98 - * channel.c:__ast_channel_alloc_ap() added a comment about not needing to - complete the channel snapshot staging on off-nominal exit paths. +2017-11-16 12:51 +0000 [5e99c334d1] Corey Farrell - * rtp_engine.c:ast_rtp_instance_set_stats_vars() made hold the channel - locks while staging the channels for the stats channel variables. + * app: Remove silly usage of RAII_VAR. - Change-Id: Iefb6336893163f6447bad65568722ad5d5d8212a + Change-Id: Ideb594f7aae134974fb78d5477ba0853b97b8625 -2017-02-07 06:56 +0000 [bab4885f1e] Joshua Colp +2017-11-16 12:19 +0000 [abdd9fa1a8] Corey Farrell - * stream: Add media stream definition and API with unit tests. + * aoc: Remove silly usage of RAII_VAR. - This change adds the media stream definition and API for - accessing and using it. Unit tests have also been written - which exercise aspects of the API. + Change-Id: I07907f833b81aeb0128bc9442a2abb52679c7511 - ASTERISK-26773 +2017-11-16 12:55 +0000 [48e1b39b28] Corey Farrell - Change-Id: I3dbe54065b55aaa51f467e1a3bafd67fb48cac87 + * abstract_jb: Remove silly usage of RAII_VAR. -2017-02-10 09:35 +0000 [648d181d2f] George Joseph + Change-Id: I9d56175369363d1dc735504cf78a3a5577069f49 - * configs/samples: Fix placement of 'identify' entry in sorcery.conf +2017-11-20 13:08 +0000 [d6bbcec571] Corey Farrell - The entry for 'identify' was incorrectly placed in the - res_pjsip section when it should be in - res_pjsip_endpoint_identifier_ip. + * res_mwi_external_ami: Remove incorrect load priority. - ASTERISK-26785 #close + 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: Ia1372b12a952bfe2df6b1b1e0e725ca306a5d41a + Change-Id: I82987fcf10d3ea42716b2f9df915b16687fd5839 -2017-02-08 11:50 +0000 [46147a8f30] Mark Michelson +2017-11-20 12:54 +0000 [58fa3885cc] Corey Farrell - * Revert "Update qualifies when AOR configuration changes." + * Loader: Remove unneeded load_pri declarations. - This reverts commit 6492e91392b8fd394193e411c6eb64b45486093f. + Instead of specifying AST_MODFLAG_LOAD_ORDER with load_pri + AST_MODPRI_DEFAULT just use AST_MODFLAG_DEFAULT. - The change in question was intended to prevent the need to reload in - order to update qualifies on contacts when an AOR changes. However, this - ended up causing a deadlock instead. + Change-Id: I0123258eafce324249433a69df15a85cc16e509f - Change-Id: I1a835c90a5bb65b6dc3a1e94cddc12a4afc3d71e +2017-11-20 09:49 +0000 [7397961b02] Alexander Traud -2017-02-07 12:01 +0000 [5422ec140c] Joshua Colp + * BuildSystem: pjsip_evsub_set_uas_timeout was not used. - * srv: Fix crash when ast_srv_lookup is used and 0 records are returned. + ASTERISK-27435 - When performing an SRV lookup using the ast_srv_lookup function it - did not properly handle the situation where 0 records are returned. - If this happened it would wrongly assume that at least one record - was present. + Change-Id: Id318a7ae6d7d69b53f911d30bf3eece64852f15c - This change fixes the code so it will exit early if an error occurs - or if 0 records are returned. +2017-11-19 09:57 +0000 [b4f7f8250f] Corey Farrell - ASTERISK-26772 - patches: - srv_lookup.patch submitted by nappsoft (license 6822) + * Build: Fix OSX build issues. - Change-Id: I09b19081c74e0ad11c12bf54a257243b1bcb2351 + 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. -2017-02-06 11:40 +0000 [b79cc62057] Joshua Colp + ASTERISK-27332 - * res_stasis_device_state: Protect the adding/removing of subscriptions. + Change-Id: I5d34ecca905384decb22ead45c913ae5e8aff748 - The adding and removing of device state subscriptions did not protect - fully against simultaneous manipulation. In particular the subscribe - case allowed a small window where two subscriptions could be added for - the same device state instead of just one. +2017-11-19 13:52 +0000 [999e0c17d7] Corey Farrell - This change makes the code hold the subscriptions lock for the entirety - of each operation to ensure that two are not occurring at the same time. + * Build: Fix issues building without SSL. - ASTERISK-26770 + * Fix conditional in libasteriskssl. + * Use variables produced by configure to link the SSL and uuid libraries + into libasteriskpj.so instead of hard-coding them. - Change-Id: I3e7f8eb9d09de440c9024d2dd52029f6f20e725b + ASTERISK-27431 -2017-02-01 17:56 +0000 [b47cf1a7d6] Richard Mudgett + Change-Id: I3977931fd3ef8c4e4376349ccddb354eb839b58d - * res_pjsip: Fix some off nominal tdata leaks. +2017-11-19 13:28 +0000 [53f42cc052] Corey Farrell - Change-Id: I243a4be5e7fbfe604923764969c4ee04eee89b9d + * res_pjsip: Fix warning by deferring implicit type cast. -2017-02-03 15:26 +0000 [7b280e7ccf] Sebastien Duthil + 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. - * res_ari: fix memory leak for channelvars + Change-Id: I0c262c1719ee951aae1f437d733a301cf5f8ad29 - In ari.conf, when setting the option channelvars, every Stasis channel - snapshot would create a list of variable/value that would not be freed - when the snapshot is freed, resulting in a often-recurring memory - leak. +2017-11-18 21:13 +0000 [75cb403775] Corey Farrell - ASTERISK-26767 #close + * tests: Fix warnings found on Mac. - Change-Id: Ia37dd9d68063d7f879193df02ede293e5ded716d + test_pbx used raise without explicitly including signal.h. On Mac for + some reason nothing else includes it. -2017-02-03 02:25 +0000 [c6c7f17206] Tzafrir Cohen + test_logger checked if an unsigned int was negative. Switch the + variable to 'int' so that error check can be effective. - * libasteriskssl: do nothing with OpenSSL >= 1.1 + Change-Id: Ie1db5dd1818ac25cc2ae41b644f848b5865b1362 - OpenSSL 1.1 requires no explicit initialization. The hacks in the - library are not needed. They also happen to fail running Asterisk. +2017-11-18 20:25 +0000 [83a2c4d2ae] Corey Farrell - Change-Id: I3b3efd5d80234a4c45a8ee58dcfe25b15d9ad100 + * res_snmp: Declare RONLY if net-snmp headers do not. -2017-01-20 23:59 +0000 [bc041ca14a] Tzafrir Cohen + 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. - * tcptls: use TLS_client_method with OpenSSL 1.1 + Change-Id: Ida5c7ad9406515825485c4d3b4a34fd6ad0da577 - OpenSSL 1.1 introduced TLS_client_method() and deprecated the previous - version-specific methods (such as TLSv1_client_method(). Other than - being simpler to use and more correct (gain support for TLS newer that - TLS1, in our case), the older ones produce a deprecation warning that - fails the build in dev-mode. +2017-11-18 20:02 +0000 [5a899fc503] Corey Farrell - Change-Id: I257b1c8afd09dcb0d96cda3a41cb9f7a15d0ba07 + * res_fax: Remove checks for unsigned values being >= 0. -2017-01-20 23:57 +0000 [2c8d0764de] Tzafrir Cohen + It's impossible for gwtimeout or fdtimeout to be less than 0 because + they are unsigned int's. Remove checks and unreachable branches. - * openssl 1.1 support: use OPENSSL_VERSION_NUMBER + Change-Id: Ib2286960621e6ee245e40013c84986143302bc78 - Use OPENSSL_VERSION_NUMBER instead of OPENSSL_API_COMPAT to detect - the openssl 1.1 API. +2017-11-18 19:50 +0000 [b4862e463c] Corey Farrell - Change-Id: I4e448f55ef516aedf6ad154037c35577a421a458 + * iostream: Fix ast_iostream_printf declaration. -2017-01-31 18:28 +0000 [50029f585e] Richard Mudgett + 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. - * channel.c: Fix unbalanced read queue deadlocking local channels. + Change-Id: I71c33a8262590042ee451e1146760c10bb22fb78 - Using the timerfd timing module can cause channel freezing, lingering, or - deadlock issues. The problem is because this is the only timing module - that uses an associated alert-pipe. When the alert-pipe becomes - unbalanced with respect to the number of frames in the read queue bad - things can happen. If the alert-pipe has fewer alerts queued than the - read queue then nothing might wake up the thread to handle received frames - from the channel driver. For local channels this is the only way to wake - up the thread to handle received frames. Being unbalanced in the other - direction is less of an issue as it will cause unnecessary reads into the - channel driver. +2017-11-18 19:29 +0000 [2fab3aacd6] Corey Farrell - ASTERISK-26716 is an example of this deadlock which was indirectly fixed - by the change that found the need for this patch. + * app_minivm: Fix possible uninitialized return value. - * In channel.c:__ast_queue_frame(): Adding frame lists to the read queue - did not add the same number of alerts to the alert-pipe. Correspondingly, - when there is an exceptionally long queue event, any removed frames did - not also remove the corresponding number of alerts from the alert-pipe. + Declare 'res' initialized to -1 to deal with earlier error paths that + could cause 'res' to be returned uninitialized. - ASTERISK-26632 #close + Change-Id: I8ac2a5755bf4174d89ef893e924c940f702b104e - Change-Id: Ia98137c5bf6e9d6d202ce0eb36441851875863f6 +2017-11-16 02:47 +0000 [0ca406c202] Pirmin Walthert -2017-01-31 16:38 +0000 [97c308471d] Richard Mudgett + * res_rtp_asterisk.c: Fix rtp source address learning for broken clients - * res_agi: Prevent an AGI from eating frames it should not. (Re-do) + 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. - A dialplan intercept routine is equivalent to an interrupt routine. As - such, the routine must be done quickly and you do not have access to the - media stream. These restrictions are necessary because the media stream - is the responsibility of some other code and interfering with or delaying - that processing is bad. A possible future dialplan processing - architecture change may allow the interception routine to run in a - different thread from the main thread handling the media and remove the - execution time restriction. + 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. - * Made res_agi.c:run_agi() running an AGI in an interception routine run - in DeadAGI mode. No touchy channel frames. + 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-25951 + ASTERISK-27421 #close - ASTERISK-26343 + Change-Id: If778fe07678a6fd2041eaca7cd78267d0ef4fc6c - ASTERISK-26716 +2017-11-17 19:36 +0000 [9316a064fd] Corey Farrell - Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43 + * README: Send people to secure websites where available. -2017-01-31 16:32 +0000 [72e3fc5845] Richard Mudgett + We should be sending people to secure web URL's where available. + Update README's and docs. - * Frame deferral: Revert API refactoring. + Change-Id: Id5b1e049b0b18b49a784f1254605aefa244ce19a - There are several issues with deferring frames that are caused by the - refactoring. +2017-11-17 19:54 +0000 [5d0529c4d9] Corey Farrell - 1) The code deferring frames mishandles adding a deferred frame to the - deferred queue. As a result the deferred queue can only be one frame - long. + * doxygen: Remove obsolete contents. - 2) Deferrable frames can come directly from the channel driver as well as - the read queue. These frames need to be added to the deferred queue. + Remove doxygen contents that have nothing to do with the current state + of Asterisk. - 3) Whoever is deferring frames is really only doing the __ast_read() to - collect deferred frames and doesn't care about the returned frames except - to detect a hangup event. When frame deferral is completed we must make - the normal frame processing see the hangup as a frame anyway. As such, - there is no need to have varying hangup frame deferral methods. We also - need to be aware of the AST_SOFTHANGUP_ASYNCGOTO hangup that isn't real. - That fake hangup is to cause the PBX thread to break out of loops to go - execute a new dialplan location. + Change-Id: Ic072cc8641f9533a202990ccf275ce87e3efd95c - 4) To properly deal with deferrable frames from the channel driver as - pointed out by (2) above, means that it is possible to process a dialplan - interception routine while frames are deferred because of the - AST_CONTROL_READ_ACTION control frame. Deferring frames is not - implemented as a re-entrant operation so you could have the unsupported - case of two sections of code thinking they have control of the media - stream. +2017-11-17 09:57 +0000 [1b6e4c1175] Sean Bright - A worse problem is because of the bad implementation of the AMI PlayDTMF - action. It can cause two threads to be deferring frames on the same - channel at the same time. (ASTERISK_25940) + * res_pjsip: Use reasonable buffer lengths for endpoint identification - * Rather than fix all these problems simply revert the API refactoring as - there is going to be only autoservice and safe_sleep deferring frames - anyway. + Domains themselves can be up to 255 characters long (per RFC 1035), so + our current buffer sizes are wholly inadequate for many use cases. - ASTERISK-26343 + Change-Id: If3f30a68307f1365a1fe06bc4b854c62842c9292 - ASTERISK-26716 #close +2017-11-11 10:09 +0000 [b9f4bb5988] Corey Farrell - Change-Id: I45069c779aa3a35b6c863f65245a6df2c7865496 + * menuselect: Remove ineffective weak attribute detection. -2017-02-02 11:26 +0000 [4c51ad158d] Sean Bright + 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. - * res_odbc: Remove deprecated settings from sample configuration file + 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. - ASTERISK-26704 #close - Reported by: Anthony Messina + Additionally removed: + - WEAKREF variable from Asterisk makeopts.in. + - Related disabled code from test_utils. + - Pointless AC_REVISION call from menuselect/configure.ac. - Change-Id: I976a1f94cf79c5f31e76174c61f5c6a65fd6354f + Change-Id: Ifa702e5f98eb45f338b2f131a93354632a8fb389 -2017-02-01 17:14 +0000 [7d9b50a7b2] Richard Mudgett +2017-11-16 09:48 +0000 [c4f11911ea] Corey Farrell - * res_resolver_unbound.c: Fix frequent ref leak caught by excessive ref trap. + * acl: Fix allocation related issues. - ASTERISK-26765 + Add checks for allocation errors, cleanup and report failure when they + occur. - Change-Id: I27eb97df7f8d7e624b0b9a61c0fcee4718c86d8d + * 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. -2017-02-01 15:56 +0000 [2849b726b6] Sean Bright + Change-Id: Ia19eaaeb0b139ff7ce7b971c7550e85c8b78ab76 - * audiohooks: Muting a hook can mute underlying frames +2017-11-16 09:04 +0000 [781a520b73] Joshua Colp - If an audiohook is placed on a channel that does not require transcoding, - muting that hook will cause the underlying frames to be muted as well. + * bridge_basic: Ignore answer from transfer target when they've timed out. - The original patch is from David Woolley but I have modified slightly. + This is a fun one. - ASTERISK-21094 #close - Reported by: David Woolley - Patches: - ASTERISK-21094-Patch-1.8-1.txt (license #5737) patch uploaded - by David Woolley + Given the following attended transfer scenario: - Change-Id: Ib2b68c6283e227cbeb5fa478b2d0f625dae338ed + 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 -2017-02-01 13:54 +0000 [bbed75c3ba] Mark Michelson + 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. - * Update qualifies when AOR configuration changes. + 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. - Prior to this change, qualifies would only update in the following - cases: - * A reload of res_pjsip.so was issued. - * A dynamic contact was re-registered after its AOR's qualify_frequency - had been changed - This does not work well if you are using realtime for your AORs. You can - update your database to have a new qualify_frequency, but the permanent - contacts on that AOR will not have their qualifies updated. And the - dynamic contacts on that AOR will not have their qualifies updated until - the next registration, which could be a long time. + ASTERISK-27361 - This change seeks to fix this problem by making it so that whenever AOR - configuration is applied, the contacts pertaining to that AOR have their - qualifies updated. + Change-Id: Ifb8b255a9c4d2c5c1b8ad77bf54f659ed286df99 - Additions from this patch: - * AOR sorcery objects now have an apply handler that calls into a newly - added function in the OPTIONS code. This causes all contacts - associated with that AOR to re-schedule qualifies. - * When it is time to qualify a contact, the OPTIONS code checks to see - if the AOR can still be retrieved. If not, then qualification is - canceled on the contact. +2017-11-16 19:39 +0000 [a95f2994c6] Corey Farrell - Alterations from this patch: - * The registrar code no longer updates contact's qualify_frequence and - qualify_timeout. There is no point to this since those values already - get updated when the AOR changes. - * Reloading res_pjsip.so no longer calls the OPTIONS initialization - function. Reloading res_pjsip.so results in re-loading AORs, which - results in re-scheduling qualifies. + * aoc: Fix memory management issues. - Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121 + aoc_publish_blob failed to check for msg allocation error and never + released msg. -2017-01-31 11:17 +0000 [aeea634bc0] Joshua Colp + Change-Id: Ib31a9ffb81056a0d496a49d7eec795005a44bcd5 - * res_pjsip: Handle invocation of callback on outgoing request when error occurs. +2017-11-16 16:18 +0000 [7a735d45e2] Sean Bright - There are some error cases in PJSIP when sending a request that will - result in the callback for the request being invoked. The code did not - handle this case and assumed on every error case that the callback was not - invoked. + * res_pjsip_transport_websocket: Give transport a meaningful description - The code has been changed to check whether the callback has been invoked - and if so to absorb the error and treat it as a success. + 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. - ASTERISK-26679 - ASTERISK-26699 + Change-Id: I63d96ef8f7516ac02a0f91e22dfa8acdc615042c - Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91 +2017-11-16 15:00 +0000 [6c53fb5d21] Sean Bright -2017-01-30 09:02 +0000 [7a16524a83] Sean Bright + * res_pjsip: Use sorcery prefix operation for contact lookup - * res_rtp_asterisk: Swap byte-order when sending signed linear + This improves performance for registrations assuming that + res_config_astdb is not in use. - Before Asterisk 13, signed linear was converted into network byte order by a - smoother before being sent over the network. We restore this behavior by - forcing the creation of a smoother when slinear is in use and setting the - appropriate flags so that the byte order conversion is always done. + Change-Id: I86f37aa9ef07a4fe63448cb881bbadd996834bb1 - ASTERISK-24858 #close - Reported-by: Frankie Chin +2017-10-19 14:44 +0000 [d995064fb7] Nir Simionovich - Change-Id: I868449617d1a7819578f218c8c6b2111ad84f5a9 + * This patch adds a beanstalk CEL backend. -2017-01-31 12:46 +0000 [e252aff9ad] George Joseph + 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 - * debug_utilities: Install ast_logescalator to /var/lib/asterisk/scripts + This module is based upon the beanstalk-client library, available + for download at: https://github.com/deepfryed/beanstalk-client - Forgot to install it with the original patch + This module currently doesn't support user defined events. - Change-Id: I8bdb540a6694971ae5fe21f48d532332c6482e4c + Change-Id: Ic3a087faeeac045d69a2a018e60e29831ddb95ab -2017-01-25 06:50 +0000 [ef4deb8ecd] George Joseph +2017-11-09 19:58 +0000 [e793501084] Richard Mudgett - * debug_utilities: Add ast_logescalator + * chan_pjsip.c: Improve answer failure log messages. - The escalator works by creating a set of startup commands in cli.conf - that set up logger channels and issue the debug commands for the - subsystems specified. If asterisk is running when it is executed, - the same commands will be issued to the running instance. The original - cli.conf is saved before any changes are made and can be restored by - executing '$prog --reset'. + * Balanced the session->inv_session refs on answer failure. - The log output will be stored in... - $astlogdir/message.$uniqueid - $astlogdir/debug.$uniqueid - $astlogdir/dtmf.$uniqueid - $astlogdir/fax.$uniqueid - $astlogdir/security.$uniqueid - $astlogdir/pjsip_history.$uniqueid - $astlogdir/sip_history.$uniqueid + Change-Id: I33542d639d37e692cb46550b972a5fcfc3b804b8 - Some minor tweaks were made to chan_sip, and res_pjsip_history - so their history output could be send to a log channel as packets - are captured. +2017-11-14 18:00 +0000 [b7b800b689] Richard Mudgett - A minor tweak was also made to manager so events are output to verbose - when "manager set debug on" is issued. + * audiohook.c: Fix freeing a frame and still using it. - Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543 + 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. -2017-01-23 09:35 +0000 [178b90af02] Torrey Searle + * 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. - * libastssl/pj: libastssl/pj should have an so_version + * Made plc.c:normalise_history() use memmove() instead of memcpy() on a + memory block that could overlap. Found by valgrind investigating this + issue. - Issue introduced in b59956a87. In the non-darwin case libastssl/pj - should be versioned. This causes the symbol file for this lib - to not be generated. + ASTERISK-27238 + ASTERISK-27412 - Change-Id: Ib07ae8c40252813c488e2c1ac6204fd42816dd4c - (cherry picked from commit 54b027916a71f2b83b2050cef5ef704ea5de39b2) + Change-Id: I548d86894281fc4529aefeb9f161f2131ecc6fde -2017-01-24 19:51 +0000 [138cd8d019] Kirill Katsnelson +2017-11-15 12:10 +0000 [f512707362] George Joseph - * make_build_h: handle backslashes in external strings + * app_record: Don't set RECORD_STATUS chan var until file is closed - LikewiseOpen creates user names with a backslash in them. A gentle - massage with sed(1) allows such strings to be inserted into build.h - properly quoted. I am also adding the same for host name and other - strings used in the script that are more or less user-controlled. + 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. - ASTERISK-26754 + We now delay calling pbx_builtin_setvar_helper until after we close + the file. - Change-Id: Iac5ef2b67a68ee58f35ddbf86bb818ba6eabecae + ASTERISK-27423 -2017-01-24 22:31 +0000 [8270d2436d] Kirill Katsnelson + Change-Id: I7fe9de99953e46b4bafa2b38cf151fe8f6488254 - * app_queue: Fix queues randomly disappearing on reload +2017-11-07 08:25 +0000 [cf1cb3345e] George Joseph - With 500+ queues and a reload every minute, a random queue disappears - upon reload. The cause is mususe of the 'dead' flag. Namely, all queues - were marked dead up front, and then "resurrected" by dropping this flag - for those found in the configuration. But a queue marked dead can be - removed also when control leaves the app entry point on a PBX thread. + * ast_coredumper: Add ability to use directory other than /tmp - With this change, the queue is marked only not found, and at the end of - reload only the queues that are still not found are actually marked as - dead, so the dead flag is never reset, and set only on positively dead - queues. + 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. - ASTERISK-26755 + Also added the --tarball-config option that includes the contents + of /etc/asterisk when either --tarball-coredumps or --tarball-results + are used. - Change-Id: I3a4537aec9eb8d8aeeaa0193407e3523feb004bf + Change-Id: I66b2553319df61caea5b313d084f51978f730b4c -2017-01-26 07:57 +0000 [7fa3de7ae9] Joshua Colp +2017-11-13 07:14 +0000 [29e0add14f] Joshua Colp - * res_pjsip_endpoint_identifier_ip: Fix memory leak of hosts when resolving. + * pjsip / hep: Provide correct local address for Websockets. - This change adds a missing unreference of the hostname when resolving and - also cleans up the iterator. + Previously for PJSIP the local address of WebSocket connections + was set to the remote address. For logging purposes this is + not particularly useful. - ASTERISK-26735 + 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. - Change-Id: Ic012ebaf3d89e714eec340b7b0c5e63c66af857a + 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. -2017-01-25 15:26 +0000 [d32bd63860] Mark Michelson + ASTERISK-26758 + ASTERISK-27363 - * Add reload options to CLI/AMI stale object commands. + Change-Id: Icd305fd038ad755e2682ab2786e381f6bf29e8ca - Marking an object as stale in a memory cache is supposed to prime the - cache so that the next time the item is retrieved, the stale item is - deleted from the cache and a background task is run to re-populate the - cache with a fresh version of the object. +2017-11-13 17:47 +0000 [14253f9535] Corey Farrell - The problem is, there are some object types out there for which there is - no natural reason that they would be retrieved from the backend with any - regularity. Outbound PJSIP registrations are a good example of this. At - startup, they are read, and an object-specific state is created that - refers to the initially-retrieved object for all time. + * alertpipe: Correct documented return of ast_alertpipe_write. - Adding the "reload" option to the CLI/AMI commands gives the cache the - opportunity to manually re-retrieve the object from the backend, both - storing the new object in the cache and applying the new object's - configuration to the module that uses that object. + Change-Id: I4ea49c441890a81384144479dc93ab5a3989486d - Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8 +2017-11-09 19:47 +0000 [edd1016dd8] Corey Farrell -2017-01-10 17:39 +0000 [20aed30d9a] Richard Mudgett + * core: Use ast_alertpipe for Asterisk signal monitoring thread. - * T.140: Fix format ref and memory leaks. + Reduce the signal monitoring thread file descriptor use from two to one + on systems that support eventfd. - * channel.c:ast_sendtext(): Fix T.140 SendText memory leak. + Change-Id: Id4041a237d481ff699639e153ea6982fee14a462 - * format_compatibility.c: T.140 RED and T.140 were swapped. +2017-11-13 16:20 +0000 [cdaaa14a5f] Corey Farrell - * res_rtp_asterisk.c:rtp_red_init(): Fix ast_format_t140_red ref leak. + * core: Fix configuration of remote console socket path. - * res_rtp_asterisk.c:rtp_red_init(): Fix data race after starting periodic - scheduled red_write(). + 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. - * res_rtp_asterisk.c: Some other minor misc tweaks. + ASTERISK-27415 - Change-Id: Ifa27a2e0f8a966b1cf628607c86fc4374b0b88cb + Change-Id: Ib1e2805d55d6b0955c6430a1a2a93acbf9b091e8 -2017-01-24 15:39 +0000 [ee2b0f2eef] Joshua Colp +2017-11-10 10:37 +0000 [f6ebd16bb8] George Joseph - * res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0. + * bundled_pjproject: sip_parser: Fix return code in pjsip_find_msg - When configuring a match using a netmask the error variable was - not defaulting to 0. For some people this would cause the code - to think an error occurred when adding the match when in reality - it added perfectly fine. + 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. - ASTERISK-26693 + Also added the volatile keyword to a few variables that are used + both inside and outside the PJ_TRY/PJ_CATCH block. - Change-Id: I850c250813742bddde65c84e739093c9e01dfe56 + Partial fix for ASTERISK_27408 -2017-01-10 17:37 +0000 [930a24a730] Richard Mudgett + Change-Id: If82ba9de921e3d57df9c68cf96ee45ccc1491f7a - * astobj2.c: Add excessive ref count trap. +2017-11-13 14:35 +0000 [2e7f6cd31b] Ben Ford - Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a + * bundled_pjproject: Update to 2.7.1 -2017-01-10 13:11 +0000 [de28c1b9f1] Richard Mudgett + Update from 2.7 to 2.7.1 for bundled pjproject. Changed version + and removed patch files included in the update. - * main/app.c: Memory corruption from early format destruction. + Change-Id: I55cea8e734b318c2df9daf86aa0802c559ec8357 - * make_silence() created a malloced silence slin frame without adding a - slin format ref. When the frame is destroyed it will unref the slin - format that never had a ref added. Memory corruption is expected to - follow. +2017-11-09 08:21 +0000 [ffccce76d9] Sean Bright - * Simplified and fixed counting the number of samples in a frame list for - make_silence(). + * sorcery: Add ast_sorcery_retrieve_by_prefix() - * Eliminated an unnecessary RAII_VAR associated with the make_silence() - frame. + 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. - Change-Id: I47de3f9b92635b7f8b4d72309444d6c0aee6f747 + Rather than using regular expressions for simple prefix lookups, add + a new operation - ast_sorcery_retrieve_by_prefix - that does them. -2017-01-11 14:59 +0000 [2039eb8edf] Richard Mudgett + Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79 - * frame.c: Fix off-nominal format ref leaks. +2017-11-07 17:07 +0000 [14d60cee0c] Corey Farrell - * ast_frisolate() could leak frame format refs on allocation - failures. + * CLI: Create ast_cli_completion_vector. - * Similified code in ast_frisolate() and code used by - ast_frisolate(). + 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. - Change-Id: I79566d4d36b3d7801bf0c8294fcd3e9a86a2ed6d + 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. -2017-01-13 19:08 +0000 [e922979d49] Richard Mudgett + Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519 - * stasis_bridge.c: Fix off-nominal stasis control ref leak. +2017-11-07 14:00 +0000 [4930404715] Corey Farrell - Change-Id: Ib17218343a6596832060180e19386da9df150ac8 + * vectors: Add new macro and a string vector definition. -2017-01-10 12:30 +0000 [56854f22d2] Richard Mudgett + * AST_VECTOR_STEAL_ELEMENTS - steal the array of elements for use + with non-vector code. + * struct ast_vector_string - a vector of 'char *'. - * res_musiconhold.c: Fix format ref leak when parsing MOH config class. + Change-Id: I104d1b204be03fccf67e02a195596adcb5ab1e42 - Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5 +2017-11-11 13:01 +0000 [90bb0a3e10] Richard Mudgett -2017-01-10 14:03 +0000 [d87f81ddb1] Richard Mudgett + * core: Add cache_media_frames debugging option. - * chan_oss.c: Fix format ref leak in oss_read(). + 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. - Change-Id: I0a5d56c7dcf327d60f86a4c25a23571733709fd0 + * 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. -2017-01-10 17:48 +0000 [36bdd7c1a0] Richard Mudgett + To disable the media frame cache simply disable the cache_media_frames + option in asterisk.conf and restart Asterisk. - * Add notes about embedded ast_frame structs holding a format ref. + Sample asterisk.conf setting: + [options] + cache_media_frames=no - mod_format.h: Note ast_filestream.fr holds a format ref. + ASTERISK-27413 - translate.h: Note ast_trans_pvt.f holds a format ref. + Change-Id: I0ab2ce0f4547cccf2eb214901835c2d951b78c00 - Change-Id: I86bda354d725207b41e08920355d7c31b2d7f749 +2017-11-11 09:42 +0000 [b865d29f1c] Richard Mudgett -2017-01-20 21:13 +0000 [6f3e8c8e01] Richard Mudgett + * frame.c: Make ast_frame_free()/ast_frfree() NULL tolerant - * PJPROJECT logging: Fix detection of max supported log level. + Change-Id: Ic49d821ef88ada38a31bdd835b9531443c55d793 - The mechanism used for detecting the maximum log level compiled into the - linked pjproject did not work. The API call simply stores the requested - level into an integer and does no range checking. Asterisk was assuming - that there was range checking and limited the new value to the allowable - range. To get the actual maximum log level compiled into the linked - pjproject we need to get and save off the initial set log level from - pjproject. This is the maximum log level supported. +2017-11-10 22:04 +0000 [96987737b9] Corey Farrell - * Get and save off the initial log level setting before altering it to the - desired level on startup. This has to be done by a macro rather than - calling a core function to avoid incorrectly linking pjproject. + * menuselect: Delete and ignore aclocal.m4. - * Split the initial log level warning messages to warn if the linked - pjproject cannot support the requested startup level and if it is too low - to get the pjproject buildopts for "pjproject show buildopts". + This file is temporary output from the bootstrap.sh command, it does not + need to be committed. - * Adjust the CLI "pjproject set log level" to check the saved max log - level and to generate normal output messages instead of a warning message. + Change-Id: Ie0fd113aff6eac44924c0bd0c900833c6c86a6d9 - ASTERISK-26743 #close +2017-10-30 22:09 +0000 [e9f8b317c3] Corey Farrell - Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4 + * Build: Make function constructor/destructor attributes mandatory. -2017-01-05 13:21 +0000 [0ea3c371c5] Richard Mudgett + 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. - * res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands. + 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. - ASTERISK-23828 #close + Change-Id: Id68e8a1447f2a6d707c54b56350e7bfdb33fb663 - Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567 +2017-11-10 07:06 +0000 [96f2ee865e] Joshua Colp -2017-01-23 16:18 +0000 [4bfeda6ee4] Mark Michelson + * pjsip: Add patch to allow all transports to be destroyed. - * Free endpoint ACLs when destroying PJSIP endpoints. + 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 endpoint ACLs were specified, they were not being freed - when endpoints were destroyed. On systems with realtime endpoints, this - could add up quickly since each DB lookup would allocate the ACL without - freeing it. + 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. - ASTERISK-26731 #close - Reported by Ustinov Artem + This change updates the logic to query not just the main storage + method for transports but also the "tp_list". - Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad + Upstream issue https://trac.pjsip.org/repos/ticket/2061 -2017-01-19 09:05 +0000 [6691606723] George Joseph + ASTERISK-27411 - * ari: Implement 'debug all' and request/response logging + Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429 - 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. To accomplish this, a new global_debug global - variable was added to res/stasis/app.c and new APIs were added to - set and query the value. +2017-11-09 20:34 +0000 [bb77666620] Corey Farrell - 'ari set debug' now displays requests and responses as well as events. - This required refactoring the existing debug code. + * core: Remove disabled code. - * The implementation for 'ari set debug' was moved from stasis/cli.{c,h} - to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted. - * In order to print the body of incoming requests even if a request - failed, the consumption of the body was moved from the ari stubs - to ast_ari_callback in res_ari.c and the moustache templates were - then regenerated. The body is now passed to ast_ari_invoke and then - on to the handlers. This results in code savings since that template - was inserted multiple times into all the stubs. + handle_quit has been disabled since 2003, remove it. - An additional change was made to the ao2_str_container implementation - to add partial key searching and a sort function. The existing cli - code assumed it was already there when it wasn't so the tab completion - was never working. + Change-Id: Idc3aaa6c81676160547078f9b71e8aa43de2db18 - Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf - (cherry picked from commit 1d890874f39a5a81b20da44358143ed9b54ab0fe) +2017-11-09 13:24 +0000 [23b0ef3e9b] Corey Farrell -2017-01-20 23:41 +0000 [f3f9175df0] Tzafrir Cohen + * Build System: Disable parallel make in the root Makefile. - * test_voicemail_api: order of params to VERIFY macros + 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. - Fix order of parameters in calls to VM_API_INT_VERIFY and - VM_API_STRING_VERIFY + 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. - ASTERISK-26739 #close + Change-Id: I4f2ec6fbbec1ada0ccb1109a28ea303524239b1e - Change-Id: I30dc6b36893aadad6012be3f16f93aa5720870d6 - Note: status: builds. Not tested any further. +2017-03-29 20:46 +0000 [12010fc5c0] Richard Mudgett -2017-01-23 09:10 +0000 [96e7291cbd] George Joseph + * chan_pjsip.c: Fix uninitialized cause value on failure. - * pjproject_bundled: Fix setting max log level + Change-Id: I3f9dd3c31bd582e54a30381500077de2319d8cc3 - An earlier attempt to prevent pjsua from spitting out an extra 6795 - lines of debug output every time the testsuite called it was also - turning off the ability for asterisk to output debug info when it - needed to. This patch reverts the earlier fix and instead adds - a pjproject patch that sets the startup log level to 1 for pjsua - pjsystest and the pjsua python binding. This is an asterisk-only - patch that does not affect pjproject functionality and will not be - submitted upstream. +2017-11-08 01:40 +0000 [0bda39c668] Corey Farrell - Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8 + * DEBUG_FD_LEAKS: Add missing FD creators. -2017-01-23 10:08 +0000 [23690c1b35] Joshua Colp + This adds FD tracking for the following functions: + * eventfd + * timerfd_create + * socketpair + * accept - * res_pjsip_endpoint_identifier_ip: Read settings before resolving. + ASTERISK-27404 - An option has been added, srv_lookups, which controls whether - SRV lookups are performed on the provided match hosts or not. - It was possible for this option to be applied after resolution - had already happened. + Change-Id: Id6848fe904ade2d34eb39d2a20bd6b223e1111fc - This change makes it so hosts are stored away, settings are read - and applied, and then resolution is done. This ensures that no - matter the ordering the srv_lookups option is in effect. +2017-11-07 11:49 +0000 [05f557820b] Corey Farrell - ASTERISK-26735 + * bridge_softmix: Note why ast_stream_topology_set_stream cannot fail. - Change-Id: I750378cb277be0140f8c5539450270afbfc43388 + 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. -2016-11-29 09:31 +0000 [1061539b75] Lorenzo Miniero + Change-Id: I91d25704859efbe50b8b82cfe1cd3c40ba177c9f - * media: Add experimental support for RTCP feedback. +2017-10-19 13:35 +0000 [dd1a914495] Kevin Harwell - This change adds experimental support for providing RTCP - feedback information to codec modules so they can dynamically - change themselves based on conditions. + * AST-2017-011 - res_pjsip_session: session leak when a call is rejected - ASTERISK-26584 + 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. - Change-Id: Ifd6aa77fb4a7ff546c6025900fc2baf332c31857 + 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. -2017-01-22 17:25 +0000 [cfe72c39cf] Richard Mudgett + 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. - * LISTFILTER: Remove outdated ERROR message. + ASTERISK-27345 #close - Feeding LISTFILTER an empty variable results in an invalid ERROR message. - Earlier changes made the message useless because we can no longer tell if - the variable is empty or does not exist. It is valid to try to remove a - value from an empty list just as it is valid to try to remove a value that - is not in a non-empty list. + Reported by: Corey Farrell - * Removed the outdated ERROR message. + Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed - * Added more test cases to the LISTFILTER unit test. +2017-10-03 16:19 +0000 [b358e441cd] Richard Mudgett - Change-Id: Ided9040e6359c44a335ef54e02ef5950a1863134 + * AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun -2017-01-21 14:43 +0000 [dbb9c8141d] Tzafrir Cohen + 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. - * tests: use datadir for sound files + 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. - Some (voicemail-related) tests API symlinks beep.gsm and other files - from ast_config_AST_VAR_DIR. It should use ast_config_AST_DATA_DIR. + ASTERISK-27337 - ASTERISK-26740 #close + Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652 - Change-Id: Id49c56fb9e16df64b1a2b829693ca7601252df89 +2017-10-19 13:53 +0000 [74432f51f9] George Joseph -2017-01-05 15:11 +0000 [ef9164b9ca] Richard Mudgett + * AST-2017-009: pjproject: Add validation of numeric header values - * res_pjsip_pubsub.c: Fix AMI event list counts. + 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. - Fix the AMI PJSIPShowSubscriptionsInbound, PJSIPShowSubscriptionsOutbound, - and PJSIPShowResourceLists actions event counts. The reported counts may - not necessarily be accurate depending on what happens. + * 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. - The subscriptions count would be wrong if Asterisk ever has outbound - subscriptions. + * 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. - The resource list count could be wrong if a list were added or removed - during the AMI action being processed. + * Updated sip_parser to validate the numeric fields. - Change-Id: I4344301827523fa174960a42c413fd19abe4aed5 + * Fixed an issue in sip_transport that prevented error messages + from being properly displayed. -2017-01-05 13:02 +0000 [ab858295a2] Richard Mudgett + * Added "volatile" to some variables referenced in PJ_CATCH blocks + as the optimizer was sometimes optimizing them away. - * res_pjsip_pubsub.c: Fix incorrect message string wrapping. + * Fixed length calculation in sip_transaction/create_tsx_key_2543 + to account for signed ints being 11 characters, not 9. - Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120 + ASTERISK-27319 + Reported by: Youngsung Kim at LINE Corporation -2017-01-05 13:01 +0000 [6d648185bc] Richard Mudgett + Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff - * res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage. +2017-11-06 17:58 +0000 [2c4db2a3d5] Corey Farrell - Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be + * res_pjsip_pubsub: Fix multiple leaks on failure to append vectors. -2017-01-05 12:58 +0000 [90f3b1270c] Richard Mudgett + Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482 - * res_pjsip: alloca can never fail. +2017-11-06 18:12 +0000 [48e96aba6a] Corey Farrell - Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1 + * res_pjsip_history: Fix multiple leaks on vector append failure. -2017-01-13 11:03 +0000 [d16b3a9917] George Joseph + Change-Id: I41e8d5183ace284095cc721f3b1fb32ade3f940f - * debug_utilities: Create ast_loggrabber +2017-11-06 18:01 +0000 [ecb81ae4de] Corey Farrell - ast_loggrabber gathers log files from customizable search patterns, - optionally converts POSIX timestamps to a readable format and - tarballs the results. + * res_pjsip_session: Fix multiple leaks. - Also a few tweaks were made to ast_coredumper. + * 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: I8bfe1468ada24c1344ce4abab7b002a59a659495 - (cherry picked from commit c70915287837704090d75f181525765de7a17221) + Change-Id: Ib5ffc9b198683fa7e9bf166d74d30c1334c23acb -2017-01-01 03:47 +0000 [48730ae65e] Richard Mudgett +2017-11-07 12:03 +0000 [9b3db9a7fd] Corey Farrell - * res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages. + * main/sdp_state: Check for errors from ast_stream_topology_set_stream. - Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49 + Change-Id: I84a83ae69daba5d185cc1d939b133a4c23565497 -2016-12-22 04:07 +0000 [40b9766a31] Martin Tomec +2017-11-06 16:37 +0000 [0cfc3cbf02] Richard Mudgett - * app_queue: add RINGCANCELED log event on caller hang up + * res_pjsip_registrar.c: Fix AOR and pjproject group deadlock. - QueueLog did not log ringnoanswer when the caller abandoned call - before first timeout. It was impossible to get agent membername - and ringing duration for this short calls. After some discusions - it seems that the best way is to add new event RINGCANCELED, - which is generated after caller hangup during ringing. + 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. - ASTERISK-26665 + * Made send the REGISTER response after we completed processing the + request contacts and released the AOR lock to avoid the deadlock. - Change-Id: Ic70f7b0f32fc95c9378e5bcf63865519014805d3 + ASTERISK-27391 -2017-01-12 15:58 +0000 [283c16c6b6] Kevin Harwell + Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364 - * abstract/fixed/adpative jitter buffer: disallow frame re-inserts +2017-11-07 11:40 +0000 [eba1179795] Corey Farrell - It was possible for a frame to be re-inserted into a jitter buffer after it - had been removed from it. A case when this happened was if a frame was read - out of the jitterbuffer, passed to the translation core, and then multiple - frames were returned from said translation core. Upon multiple frames being - returned the first is passed on, but sebsequently "chained" frames are put - back into the read queue. Thus it was possible for a frame to go back into - the jitter buffer where this would cause problems. + * res_pjsip_session: Check for errors from ast_stream_topology_set_stream. - This patch adds a flag to frames that are inserted into the channel's read - queue after translation. The abstract jitter buffer code then checks for this - flag and ignores any frames marked as such. + Free memory and return error if ast_stream_topology_set_stream fails. - Change-Id: I276c44edc9dcff61e606242f71274265c7779587 + Change-Id: I9f4dbf44bed627243d2f1dd8aea2eab6c38a028d -2016-11-06 06:30 +0000 [8cc1cd5df7] Sebastian Gutierrez +2017-11-07 11:34 +0000 [4ac6dd4e95] Corey Farrell - * app_queue: Add QueueUpdate application. + * res_pjsip_t38: Better error checking for t38_create_media_state. - Add an application that allows tracking outbound calls - using app_queue. + Change-Id: I81b2587427c6982aa3e2a3f9ad69cce8d316eb10 - ASTERISK-19862 +2017-11-06 15:38 +0000 [fb18895108] Corey Farrell - Change-Id: Ia0ab64aed934c25b2a25022adcc7c0624224346e + * stream: Return error from ast_stream_topology_set_stream. -2017-01-13 21:23 +0000 [f4e77a5678] Richard Mudgett + 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. - * taskprocessor.c: Change when high water warning logged. + Change-Id: I6c0d12755743eadba1357f6153526cc055592856 - The task processor queue reached X scheduled tasks message was originally - intended to get logged only once per task processor to prevent spamming - the log. This is no longer necessary since high and low water thresholds - can better control when the message is logged. +2017-11-06 17:21 +0000 [801094da7b] Corey Farrell - It is beneficial to generate the warning each time a task processor - reaches the high water level because PJSIP stops processing new requests - while any high water alert is active. Without this change you would have - to enable at least debug level 3 logging to know about a repeated alert - trigger. + * res_stasis: Fix multiple leaks. - * Made generate the warning message whenever a task is pushed into the - task processor that triggers the high water alert. + * res/stasis/app.c JSON passed to app_send needs to be released. + * res/stasis_message.c: objects leak if vector append fails. - * Appended 'again' to the warning for a repeated high water alert trigger. + Change-Id: I8dd5385b9f50a5cadf2b1d16efecffd6ddb4db4a - Change-Id: Iabf75a004f7edaf1e5e8c323099418e667cac999 +2017-11-07 06:56 +0000 [02329b9a34] Richard Mudgett -2017-01-10 05:54 +0000 [e0e502d9d2] Aaron An + * res_pjproject.c: Fix ast_strdup() alloc failure. - * res_rtp_asterisk: Fix bug in function CHANNEL(rtcp, all_rtt) + Change-Id: I74688038e7afe3a279359cce53aadb28ade51ead - Function CHANNEL(rtcp,all_rtt) CHANNEL(rtcp,all_loss) CHANNEL(rtcp,all_jitter) - always return 0.0 due to wrong define of macro "AST_RTP_SATA_SET" and - "AST_RTP_STAT_STRCPY". - It should compare "combined" with "stat" not "current_stat". +2017-11-05 22:06 +0000 [a36d8cc533] Aaron An - ASTERISK-26710 #close - Reported-by: Aaron An - Tested-by: AaronAn + * res_pjsip: Avoid crash when contact uri is empty string - Change-Id: Id4140fafbf92e2db689dac5b17d9caa009028a15 + Asterisk will crash if contact uri is invalid, so contact_apply_handler + should check if the uri is NULL or empty. -2017-01-10 18:10 +0000 [0d53c91fba] George Joseph + ASTERISK-27393 #close + Reported-by: Aaron An + Tested-by: AaronAn - * debug_utilities: Create the ast_coredumper utility + Change-Id: Ia0309bdc6b697c73c9c736e1caec910b77ca69f5 - This utility allows easy manipulation of asterisk coredumps. +2017-11-06 17:55 +0000 [7ef38d399a] Corey Farrell - * Configurable search paths and patterns for existing coredumps - * Can generate a consistent coredump from the running instance - * Can dump the lock_infos table from a coredump - * Dumps backtraces to separate files... - - thread apply 1 bt full -> .thread1.txt - - thread apply all bt -> .brief.txt - - thread apply all bt full -> .full.txt - - lock_infos table -> .locks.txt - * Can tarball corefiles and optionally delete them after processing - * Can tarball results files and optionally delete them after processing - * Converts ':' in coredump and results file names '-' to facilitate - uploading. Jira for instance, won't accept file names with colons - in them. + * res_pjsip_outbound_registration: Fix leak on vector add failure. - Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1]. + Change-Id: I774b88b3c9da41edd4dc8d78f095481f52f2bd46 - [1] For *BSDs, the "devel/gdb" package might have to be installed to - get a recent gdb. The utility will check all instances of gdb - it finds in $PATH and if one isn't found that can run python, it - prints a friendly error. +2017-11-06 17:48 +0000 [8684219f79] Corey Farrell - Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd - (cherry picked from commit cb47b4556053cd50d9102eef913671ad0306062d) + * res_pjsip_exten_state: Check for vector append failure. -2017-01-08 10:29 +0000 [e54c8aec34] George Joseph + Release reference to publisher if we fail to add it to the vector. - * pjproject_bundled: Fix compilation with MALLOC_DEBUG + Change-Id: I64dff3f481b67b9884f37cadba7a5ccf23d084f3 - When MALLOC_DEBUG was specified, make was failing. Immediately - remaking would work. The issues was in the ordering of the make - dependencies. +2017-11-06 17:44 +0000 [f899368cd6] Corey Farrell - Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd + * res_pjsip_config_wizard: Fix leaks and add check for malloc failure. -2017-01-05 06:11 +0000 [a7d856cd96] Joshua Colp + wizard_apply_handler(): + - Free host if we fail to add it to the vector. - * res_pjsip_endpoint_identifier_ip: Add support for SRV lookups. + wizard_mapped_observer(): + - Check for otw allocation failure. + - Free otw if we fail to add it to the vector. - This change implements SRV support for the IP based endpoint - identifier module. All possible addresses through SRV are looked - up and added as matches. If no SRV records are available a - fallback to normal host resolution is done. If an IP address - is provided then no SRV lookup occurs. + Change-Id: Ib5d3bcabbd9c24dd8a3c9cc692a794a5f60243ad - This is configured using the "srv_lookups" option on the - identify section and defaults to "yes". +2017-11-06 17:38 +0000 [4016884ef3] Corey Farrell - ASTERISK-26693 + * res_stasis_playback: Check for failure to append vector. - Change-Id: I6b641e275bf96629320efa8b479737062aed82ac + Free resources and return error if we fail to append the vector in + stasis_app_control_play_uri. -2016-11-06 06:37 +0000 [740ca862e4] Sebastian Gutierrez + Change-Id: I22c4a90dd859b253f2850c6511de48b25609422b - * app_queue: add new Service Level calculation +2017-11-06 17:33 +0000 [24b9751aaa] Corey Farrell - Adds a new formula for SL2 and documentation + * test_sorcery_memory_cache_thrash: Handle error from vector append. - ASTERISK-26559 + Cleanup resources when we fail to append the vector and report test + failure. - Change-Id: I0970c620460507cd9d45b0d43600779c8915e770 + Change-Id: I6eb41586fd11dee8c0dfe35e91cb465a4cab7298 -2016-12-19 15:03 +0000 [d96e350256] Jonathan R. Rose +2017-11-06 17:28 +0000 [29205e7adc] Corey Farrell - * core/pbx: dialplan show - display filename/line# + * res_pjsip: Fix leak on error in ast_sip_auth_vector_init. - Adds the ability for extensions to be registered to include filename and - line number so that dialplan show output can show the filename and line - number of a config file responsible for generating a given extension. + Change-Id: Ib0fc7a18f3135ca8990c3984c9e15f6d26e556e8 - This only affects config modules that are written to use the new extension - registering functions. In this patch, that only includes pbx_config, so - extensions registered in extensions.conf and any included extension will - be shown in this manner. Extensions registered in this manner will show - the filename and line number *instead* of the registrar. +2017-11-06 17:17 +0000 [70fcc043bb] Corey Farrell - ASTERISK-26658 #close - Reported by: Jonathan R. Rose + * res_pjproject: Handle error from adding to the buildopts vector. - Change-Id: Ieccc6abccdff34ed5c7da3511fd24972b8f2dd30 + Change-Id: I076c7bd207c7989a23005395ce1735392657be65 -2016-12-22 09:13 +0000 [aea2285865] Alexander Traud +2017-11-06 17:11 +0000 [5247ba4b88] Corey Farrell - * res_pjsip_session: Access SIPDOMAIN via Dialplan. + * res_ari_events: Fix use after free / double-free of JSON message. - This feature was available in the SIP channel driver chan_sip. For example, - Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not - local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect - and dial remote SIP-URIs. This change here sets the SIP destination domain of - an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well. + 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. - ASTERISK-26670 #close + Change-Id: I82696df8fe723b3365c15c3f7089501da8daa892 - Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243 +2017-11-06 15:33 +0000 [adb4fdcb7b] Corey Farrell -2017-01-04 05:50 +0000 [e220c11bec] Alexander Traud + * stasis: Release object if vector append fails. - * chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND. + Change-Id: I3e5cc669169aab6175ddfaf7486edeaeb4fdcfb1 - After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats - but remember the joint format. Cached formats contain default parameters, - often create an empty fmtp line. However, a joint format might have passed - format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and - contain the resulting format parameters from a SDP negotiation. +2017-11-06 15:20 +0000 [2f4f216026] Corey Farrell - ASTERISK-26691 #close + * RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE. - Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc + Check for errors from AST_VECTOR_REPLACE and clean memory if needed. -2017-01-03 15:14 +0000 [ceb9dae566] George Joseph + Change-Id: I124d15cc1d645f85a72a1279f623c1993b304b0b - * pjproject_bundled: Compile pjsua with max log level = 2 +2017-11-06 15:16 +0000 [5762f72425] Corey Farrell - A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6. - This allowed us to control the log level better from inside Asterisk. - An unfortunate side effect of this was that the pjsua binary and - python bindings were also compiled with log level set to 6 so whenever - a testsuite test that uses pjsua runs, it spits out 6795 lines of - debug in an instant even before the test starts. I believe this - overruns the Jenkins capture buffer and prevents the test from - properly terminating. In turn, this results in the testsuite just - hanging until the job is killed. It's more frequent on the higher - end agents because they can spit out the messages faster. + * PBX: Handle errors from AST_VECTOR_APPEND. - Unfortunately, the messages are all spit out before we have control - of the python pj.Lib instance where we can set logging levels so the - only alternative was to actually compile pjsua and _pjsua.so with an - overridden PJ_LOG_MAX_LEVEL. Although defining a lower max level was - done in the Makefile, the define in config_site.h had to be wrapped - with "#ifndef" so the change would take effect. + This resolves potentials leaks on AST_VECTOR_APPEND error in: + * ast_context_add_include2 + * ast_context_add_switch2 + * ast_context_add_ignorepat2 - Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff + Change-Id: Ib60e95c4f622fa3b832d87227c0523a695d736b6 -2016-12-22 16:00 +0000 [ae57652983] Joshua Colp +2017-11-06 15:10 +0000 [714026b32e] Corey Farrell - * chan_pjsip: Use session for retrieving CHANNEL() information. + * Messaging: Report error on failure to register tech or handler. - The CHANNEL() dialplan function implementation for PJSIP allows - querying of PJSIP specific information. This used the channel - passed in to get the PJSIP session and associated information. - It is possible for this channel to be masqueraded and end - up as a different channel type by the time the information - request is actually acted upon. + Message tech and handler registrations use a vector which could fail to + expand. If it does log and error and return error. - This change retrieves the PJSIP session safely and accesses - data from it (including channel). This provides a guarantee - that the session and channel will not be altered when the - request is being acted upon. + Change-Id: I593a8de81a07fb0452e9b0efd5d4018b77bca6f4 - ASTERISK-26673 +2017-11-06 15:07 +0000 [e43c8af77c] Corey Farrell - Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6 + * format_cap: Fix leak on AST_VECTOR_APPEND error. -2016-12-31 19:56 +0000 [386e3a01b3] Joshua Elson + format_cap_framed_init can fail on AST_VECTOR_APPEND. This should + report failure to the caller and clean the newly allocated frame. - * res_pjsip: Fix known compact header issues + Change-Id: Ica0661235bf09497bf23d844ceb01f21b41a55b0 - ASTERISK-26684 #close +2017-11-06 14:23 +0000 [64bcb65a78] Corey Farrell - Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a + * stasis: Remove silly use of RAII_VAR in stasis_forward_all. -2016-12-30 06:59 +0000 [aad29b9bca] Martin Tomec + Change-Id: I46de4c968d40144d5b049966304ff66c1469fb65 - * res_calendar: delete old calendars after reload +2017-11-06 12:51 +0000 [b7e1034009] Corey Farrell - When "fetch_again_at_reload" is set in config, we create now - new object and thread for each reloaded calendar (with new - configuration). Old calendar should be then unlinked, so the - old thread can exit and free memory. + * CLI: Remove unused internal command. - ASTERISK-26683 + 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: Ic17fba9371c5a8b26a6bc54ea4957c13a32a343e + Change-Id: I682fe1e21a24a3bb5bd04146e639f1c5866bcfce -2016-12-30 09:10 +0000 [5a5953f98c] George Joseph +2017-11-03 18:08 +0000 [923424019b] Richard Mudgett - * res_pjsip_refer: Handle compact Refer-To header. + * stasis_bridges.c: Fix off-nominal json memory leaks. - refer_incoming_refer_request needed to look for the "r" header as well - as the "Refer-To" header. + Change-Id: Ib1181a36b317c86bff1ef2e44a17a0b1c73cfdc8 - ASTERISK-26655 #close - patches: - refer_compact_fix.diff submitted by JoshE (license 6075) +2017-11-03 17:43 +0000 [f81970d3fc] Richard Mudgett - Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f + * stasis_channels.c: Remove a very silly RAII_VAR(). -2016-12-23 12:11 +0000 [ac04e63ac2] Richard Mudgett + Change-Id: I28b458b3c1a442c4ef0be7b4986a95ea4149e14f - * bridge_native_rtp.c: Minor code cleanups. +2017-11-06 10:29 +0000 [36fedea8c1] Joshua Colp - In native_rtp_bridge_compatible_check() + * res_pjsip_pubsub: Ensure remote URI contains URI only. - * Made one variable declaration per line. + 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. - * Extracted if test assignment to make the test easier to see. + ASTERISK-27290 - * Made long if tests easier to see the combinatorial logic. + Change-Id: If1d0cd6630f0a264856d31d2a67933109187a017 - * Added bridge id to a couple debug messages. +2017-11-03 16:14 +0000 [9771f089f5] Richard Mudgett - Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad + * stasis/app.c: Optimize stasis_app_get_debug_by_name() -2016-12-23 12:10 +0000 [da6f40c9ff] Richard Mudgett + * Eliminate RAII_VAR() + * Short circuit application name lookup if global debug enabled. - * bridge_native_rtp.c: Fix native rtp bridge data race. + Change-Id: I5f78b7bd6ca7fd2c3b07cbbe036c6a93b4681123 - native_rtp_bridge_compatible() didn't lock the bridge channels before - checking the channels for native bridging ability. As a result, one of - the channel's native format capabilities structure got replaced out from - under the native bridge check. Use of a stale pointer to freed memory - causes bad things to happen. +2017-11-02 18:40 +0000 [ee08f10d06] Richard Mudgett - MALLOC_DEBUG, DO_CRASH, and the - tests/channels/pjsip/transfers/blind_transfer/caller_direct_media - testsuite test caught this. + * Fix ast_(v)asprintf() malloc failure usage conditions. - * Add missing channel locking in native_rtp_bridge_compatible(). + 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. - Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53 + * 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. -2016-12-21 16:28 +0000 [b576b58d74] Richard Mudgett + * stasis.c: Fixed memory leak in multi_object_blob_to_ami() allocated by + ast_asprintf(). - * res_rtp_asterisk.c: Fix uninitialized memory crash. + * 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. - ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to - ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' - parameter may not get initialized. Thus when the code tries to save the - 'us' parameter to the local address we could try to copy a ridiculous - sized memory buffer and segfault. + Change-Id: Ib5252fb8850ecf0f78ed0ee2ca0796bda7e91c23 - * Made pass an initialized 'us' parameter to ast_ouraddrfor(). +2017-11-06 08:05 +0000 [ca4e6b568f] Sean Bright - * Optimized out the 'us' struct variable. + * res_pjsip: Ignore empty TLS configuration - ASTERISK-26672 #close + When using realtime, fields that are not explicitly set by an + administrator are still presented to sorcery as empty strings. Handle + this case explicitly. - Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc + 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. -2016-12-21 16:25 +0000 [67cc8499a2] Richard Mudgett + ASTERISK-27032 #close + Reported by: seanchann.zhou - * acl.c: Improve ast_ouraddrfor() diagnostic messages. + Change-Id: Ie3b5fb421977ccdb33e415d4ec52c3fd192601b7 - * Made not generate strings unless they will actually be used. +2017-09-29 09:50 +0000 [04d3785a79] Sean Bright - ASTERISK-26672 + * dtls: Add support for ephemeral DTLS certificates. - Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3 + This mimics the behavior of Chrome and Firefox and creates an ephemeral + X.509 certificate for each DTLS session. -2016-12-21 17:54 +0000 [67b47191e9] Richard Mudgett + 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. - * chan_rtp.c: Fix uninitialized memory crash. + ASTERISK-27395 - unicast_rtp_request() could pass an uninitialized 'us' parameter to - ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' - parameter may not get initialized. Thus when the code tries to save the - 'us' parameter to the local address we could try to copy a ridiculous - sized memory buffer and segfault. + Change-Id: I5122e5f4b83c6320cc17407a187fcf491daf30b4 - * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort - the UnicastRTP channel request if it fails. +2017-11-06 03:21 +0000 [4013bfa52b] Corey Farrell - ASTERISK-26672 + * configure: Add autoconf check for libopusfile. - Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0 + 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. -2016-12-21 17:55 +0000 [2fc65173e5] Richard Mudgett + Change-Id: I62b9cd0c4fa8a77596ab0e042948a643a1152677 - * res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip(). +2017-11-06 03:18 +0000 [19332e6968] Alexander Traud - We access uninitialized memory when the 'ourip' parameter does not - have an initial guess to our IP address. + * tcptls: Print notice when TLS is enabled but not configured. - ASTERISK-26672 + 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. - Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15 + ASTERISK-27394 + Reported-by: mossley74 -2016-12-07 15:23 +0000 [8b7d252987] Richard Mudgett + Change-Id: Ib8b7539a5b2af8154c22e5f7a40fc68f95d95b93 - * res_rtp_asterisk.c: Fix off nominal memory leak. +2017-11-04 06:05 +0000 [2ebea5aa03] Alexander Traud - Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75 + * install_prereq: Checkout of libSRTP 2.x. -2016-12-14 02:21 +0000 [bab253ac9f] Tzafrir Cohen + Since Asterisk 13.17, libSRTP 2.x is supported. Therefore, its latest version + is installed again via the script install_prereq. - * Fixes to various issues reported by pyflakes + ASTERISK-27356 - Pyflake is a python (2) source checker. This patch fixes various - (mostly trivial) errors and warnings it reports. + Change-Id: I13125839a79052356469e41edacbebff0a937d39 - Change-Id: Ia35c5ac61751b927814cf693994c632c412386ea +2017-11-01 17:47 +0000 [79ddcdbc70] Richard Mudgett -2016-12-09 12:23 +0000 [f461f65dea] Martin Tomec + * Stasis/ARI: Fix off-nominal path json memory leaks. - * app_queue: Ensure member is removed from pending when hanging up. + Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb - In some cases member is added to pending_members, and the channel - is hung up before any extension state change. So the member would - stay in pending_members forever. So when we call do_hang, we - should also remove member from pending. +2017-11-02 11:38 +0000 [229790ea3d] Richard Mudgett - ASTERISK-26621 #close + * AOC: Fix AOC-S json memory leak. - Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54 + Change-Id: I3a1d40a41a8a7d00fa4a187de6a343a79155d3ef -2016-12-18 15:23 +0000 [d29eb3b99d] George Joseph +2017-11-01 18:04 +0000 [de4a4796d0] Richard Mudgett - * pjproject_bundled: Make build single threaded + * res_stasis_device_state.c: Optimize stasis_app_device_states_to_json() - There were just too many issues in various environments with - multi threaded building of pjproject. It doesn't really speed - things up anyway since asterisk is already being compiled in - parallel. + * Eliminate RAII_VAR() + * Replace looped alloca with a char[] since that is how it is used anyway. - Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1 + Change-Id: Ia27e64a884afa0f50b9ffdb1cf23da6bfa51ffdf -2016-12-08 20:00 +0000 [8fbb384ea2] Corey Farrell +2017-11-01 18:58 +0000 [103b05bb4b] Richard Mudgett - * chan_sip: Reorder unload_module to deal with stuck TCP threads. + * res_stasis_mailbox.c: Fix leak of mailbox container. - In some situations TCP threads may become frozen. This creates the - possibility that Asterisk could segfault if they become unfrozen after - chan_sip has been dlclose'd. This reorders the unload_module process to - allow abort if threads do not exit within 5 seconds. + Change-Id: I7d33c1635713047e7d1597c9d882f7dc006d94b4 - High level order as follows: - 1) Unregister from the core to stop new requests. - 2) Signal threads to stop - 3) Clear config based tables (but do not free the table itself). - 4) Verify that threads have shutdown, cancel unload if not. - 5) Clean all remaining resources. +2017-11-03 10:35 +0000 [290bad22c9] Corey Farrell - ASTERISK-26586 + * Build System: Fix build failure caused by recent CLI improvements. - Change-Id: Ie23692041d838fbd35ece61868f4c640960ff882 + 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. -2016-12-16 01:32 +0000 [147b8e636e] David M. Lee + ASTERISK-27378 - * configure: fix with-pjproject-bundled + Change-Id: Ib7fd496f1d7ed48141a2eadd5dd61cab2f2308be - The AC_ARG_WITH macro's shell variable is withval; not enableval. Purely - coincidentally, the option would work when --enable-dev-mode is given. +2017-11-01 11:12 +0000 [f8e0f9be22] Ben Ford - Also fixed a portability problem with bootstrap.sh, since -printf is not - a portable option for find. + * res_pjsip: Add to list of valid characters for from_user. - Change-Id: I0f0e5b1a934b5af5737713834361e9c95b96b376 + 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. -2016-12-15 13:25 +0000 [d27dee3cca] Richard Mudgett + ASTERISK-27387 - * autosupport: Add 'pjproject show buildopts' + Change-Id: Id80c10a644508365c87b3182e99ea49da11b0281 - Change-Id: I8aa55a7c3fb175235ddc7f85e9457d5102d06fa7 +2017-11-02 05:34 +0000 [8701479386] Joshua Colp -2016-12-14 14:21 +0000 [9404efa6f4] Richard Mudgett + * core: Don't attempt to write to a stream that does not exist. - * chan_dahdi.c: Fix bounds check regression. + 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. - Caused by ASTERISK-25494 + ASTERISK-27364 - Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb + Change-Id: Icf84ca982a67cdd6e9a71851eb7eb1bd0e865276 -2016-12-13 14:34 +0000 [45a5e2abc6] Richard Mudgett +2017-11-02 01:57 +0000 [606ae3484a] Corey Farrell - * res_pjsip: Add/update ERROR msg if invalid URI. + * Add missing menuselect dependencies. - ASTERISK-24499 + This adds menuselect dependencies for modules that use symbols of other + modules. - Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c + ASTERISK-27390 -2016-12-12 18:38 +0000 [44e72c9d44] Richard Mudgett + Change-Id: Ia2d2849f5b87a72af7324a82edc3f283eafb5385 - * MESSAGE: Flush Message/ast_msg_queue channel alert pipe. +2017-11-01 22:57 +0000 [b616b7e4a9] Corey Farrell - ASTERISK-25083 + * res/ari/resource_bridges.h: Update from 'make ari-stubs'. - Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2 + A comment was updated when I ran 'make ari-stubs'. -2016-12-13 14:06 +0000 [19328de2ab] George Joseph + Change-Id: Ib5154ae3ad72aff53374c28ead540fe349c42175 - * res_sorcery_memory_cache: Change an error to a debug message +2017-11-01 19:46 +0000 [79f111e1f3] Corey Farrell - When a sorcery user calls ast_sorcery_delete on an object that - may have already expired from the cache, res_sorcery_memory_cache - spits out an ERROR. Since this can happen frequently and validly when - an inbound registration expires after the cache entry expired, the - errors are unnecessary and misleading. Changed to a debug/1. + * Prevent unload of modules which implement an Optional API. - Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7 + 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. -2016-12-09 08:14 +0000 [31268e0a28] George Joseph + ASTERISK-27389 - * pjproject_bundled: Retry download if previously saved tarball is bad + Change-Id: Ia07786fe655681aec49cc8d3d96e06483b11f5e6 - If a tarball is corrupted during download, the makefile will attempt to - download it again. If the tarball somehow gets corrupted after it's - downloaded however, the makefile was just failing. We now - retry the download. +2017-10-30 17:30 +0000 [b9f457eac0] Corey Farrell - ASTERISK-26653 #close + * Modules: Additional improvements to CLI completion. - Change-Id: I1b24d454852d80186f60c5a65dc4624ea8a1c359 + 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. -2016-12-08 12:43 +0000 [4c6ba1dbba] Badalyan Vyacheslav + * '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. - * Fix typo in chan_sip + ASTERISK-27378 - The conditional expressions of the 'if' operators - situated alongside each other are identical. + Change-Id: Iea3e00054461484196c46f688f02635cc886bad1 - Change-Id: I652b6dcddb3be007e669a6aa8107edb31a1ddafb +2017-11-01 13:58 +0000 [1bfd1cf640] Sean Bright -2016-12-08 12:30 +0000 [934aa2c768] Badalyan Vyacheslav + * pjsip_message_filter: Only do interface lookup for wildcard addresses. - * res_pjsip: Fix 'A = B != C' kind. + Change-Id: Ie083987e69dc43b6861671c218cacacc11b2072f - Consider reviewing the expression of the 'A = B != C' kind. - The expression is calculated as following: 'A = (B != C)' +2017-10-31 15:08 +0000 [1e70011710] Kevin Harwell - Change-Id: Ibaa637dfda47d51a20e26069d3103e05ce80003d + * features: Bridge application's BRIDGERESULT not appropriately set -2016-12-08 12:54 +0000 [51118e7d70] Badalyan Vyacheslav + 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. - * chan_sip: Delete unneeded check + 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. - P is always true. We check it before + ASTERISK-27369 #close - Change-Id: Iee61cda002a9f61aee26b9f66c5f9b59e3389efb + Change-Id: I22588e7125a765edf35cff28c98ca143e9927554 -2016-12-08 12:58 +0000 [fe5be81821] Badalyan Vyacheslav +2017-10-31 13:18 +0000 [f2175c5a39] Corey Farrell - * Small code cleanup in chan_sip + * res_ari_channels: Fix reference leak in channel_state_invalid. - The conditional expressions of the 'if' operators situated - alongside each other are identical. + channel_state_invalid leaked a reference to the channel snapshot any + time it was aquired. - Change-Id: I2cf7c317b106ec14440c7f1b5dcfbf03639f748a + ASTERISK-27067 #close -2016-12-08 12:34 +0000 [149d8db96c] Badalyan Vyacheslav + Change-Id: I8c653f00416b39978513c5605c4be0f03b1df29a - * Fix IO conversion bug +2017-10-25 17:31 +0000 [4c535f5c30] Joshua Colp - Expression 'rlen < 0' is always false. - Unsigned type value is never < 0. + * core / pjsip: Add support for grouping streams together. - Change-Id: Id9f393ff25b009a6c4a6e40b95f561a9369e4585 + 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. -2016-11-30 09:31 +0000 [c796f00c35] Walter Doekes + 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. - * chan_sip: Do not allow non-SP/HTAB between header key and colon. + ASTERISK-27379 - RFC says SIP headers look like: + Change-Id: Id6299aa031efe46254edbdc7973c534d54d641ad - HCOLON = *( SP / HTAB ) ":" SWS - SWS = [LWS] ; sep whitespace - LWS = [*WSP CRLF] 1*WSP ; linear whitespace - WSP = SP / HTAB ; from rfc2234 +2017-10-30 09:20 +0000 [022de525be] Tzafrir Cohen - chan_sip implemented this: + * ast_coredumper: allow setting asterisk binary explicitly - HCOLON = *( LOWCTL / SP ) ":" SWS - LOWCTL = %x00-1F ; CTL without DEL + 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. - This discrepancy meant that SIP proxies in front of Asterisk with - chan_sip could pass on unknown headers with \x00-\x1F in them, which - would be treated by Asterisk as a different (known) header. For - example, the "To\x01:" header would gladly be forwarded by some proxies - as irrelevant, but chan_sip would treat it as the relevant "To:" header. + ASTERISK-27380 #close - Those relying on a SIP proxy to scrub certain headers could mistakenly - get unexpected and unvalidated data fed to Asterisk. + Change-Id: I25f5b91eb75059b0fb2f142e468c26b283b0a9f3 - This change fixes so chan_sip only considers SP/HTAB as valid tokens - before the colon, making it agree on the headers with other speakers of - SIP. +2017-10-25 01:10 +0000 [3052b56423] Florian Floimair - ASTERISK-26433 #close - AST-2016-009 + * alembic: Add bundle column in ps_endpoints table - Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b + The ps_endpoints table was missing the bundle column + introduced with the bundle feature in + commit 065c3005ad92. -2016-11-14 18:18 +0000 [5c89604a32] Joshua Colp + ASTERISK-27374 #close - * res_format_attr_opus: Fix crash when fmtp contains spaces. + Change-Id: Ic900f4f2c20f64b99ea898d50f5c0a7117472d46 - When an opus offer or answer was received that contained an - fmtp line with spaces between the attributes the module would - fail to properly parse it and crash due to recursion. +2017-10-30 00:32 +0000 [e82b921c35] Corey Farrell - This change makes the module handle the space properly and - also removes the recursion requirement. + * Modules: Fix issues with CLI completion. - ASTERISK-26579 + * 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. - Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3 + ASTERISK-27378 -2016-12-06 14:54 +0000 [79b09b5f18] George Joseph + Change-Id: Iaed8c1e4fcbeb242921dbac7929a0fe75ff4b239 - * res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command +2017-10-28 19:18 +0000 [9bad4c74cc] Igor Goncharovskiy - The PJSIPShowRegistrationsInbound AMI command was just dumping out - all AORs which was pretty useless and resource heavy since it had - to get all endpoints, then all aors for each endpoint, then all - contacts for each aor. + * app_agent_spool: Fix typo in dtmf features usage desctiption - PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail - events which meets the intended purpose of the other command and has - significantly less overhead. Also, some additional fields that were - added to Contact since the original creation of the ContactStatusDetail - event have been added to the end of the event. + Fix typo, that specify usage wrong option 'dtmf-features' for CHANNEL() function + instead of correct 'dtmf_features' - For compatibility purposes, PJSIPShowRegistrationsInbound is left - intact. + ASTERISK-27377 #close - ASTERISK-26644 #close + Change-Id: I15ecc829c1035b359584673e12cdb5c9291ac930 - Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a +2017-10-27 13:41 +0000 [0991874430] Corey Farrell -2016-12-07 14:22 +0000 [3b6e6cd01c] snuffy + * res_pjsip_pubsub: Resolve potential crash in allocate_subscription. - * tests_dns: Make DNS tests older nameser.h compatible + When allocate_subscription fails to initialize fields of the new sub it + calls destroy_subscription. - Fix the tests for DNS to use older style nameser.h as - in ASTERISK-26608. + Change-Id: I5b79c915ec216dc00c13c1e4172137864a4bec85 - Tested on: OpenBSD 6.0, Debian 8 +2017-10-26 12:18 +0000 [26607e4e3b] Richard Mudgett - ASTERISK-26647 #close + * app_voicemail.c: Fix compiler warning with IMAP build. - Change-Id: I285913c44202537c04b3ed09c015efa6e5f9052d + ASTERISK-27181 -2016-12-06 16:45 +0000 [76d52dc228] Richard Mudgett + Change-Id: Ic4468b49860bd7f67e922baf4c9e96828c184d17 - * Bundled pjproject: Fix finding SIP transactions. +2017-10-25 14:38 +0000 [2ca3dbb197] Richard Mudgett - Occasionally SIP message transactions are not found when they should be. - In the particular case an incoming INVITE transaction is CANCELed but the - INVITE transaction cannot be found so a 481 response is returned for the - CANCEL. The problematic calls have a '_' character in the Via branch - parameter. + * codec.c: Defensively check the returned samples. - The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code. - The problem with the "own tolower" code is that it does not calculate the - same hash value as when the pj_tolower() function is used. The "own - tolower" code will erroneously modify the ASCII characters '@', '[', '\\', - ']', '^', and '_'. Calls to pj_hash_calc_tolower() can use the - PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled. Calls to - pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call - find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm. As a - result you may not be able to find a hash tabled entry because the - calculated hash values would differ. + 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. - * Simply disable PJ_HASH_USE_OWN_TOLOWER. + * 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-26490 #close + ASTERISK-27194 - Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253 + Change-Id: Icf69350307ecbbc80a3d74de46af9bd80ea17819 -2016-12-01 16:49 +0000 [503006123a] Mark Michelson +2017-10-24 10:33 +0000 [9e1fbab382] Joshua Colp - * http: Send headers and body in one write. + * res_pjsip: Add 'ip' as a valid option to 'identify_by' on endpoint. - This is a semi-regression caused by the iostreams change. Prior to - iostreams, HTTP headers were written to a FILE handle using fprintf. - Then the body was written using a call to fwrite(). Because of internal - buffering, the result was that the HTTP headers and body would be sent - out in a single write to the socket. + 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. - With the change to iostreams, the HTTP headers are written using - ast_iostream_printf(), which under the hood calls write(). The HTTP body - calls ast_iostream_write(), which also calls write() under the hood. - This results in two separate writes to the socket. + ASTERISK-27206 - Most HTTP client libraries out there will handle this change just fine. - However, a few of our testsuite tests started failing because of the - change. As a result, in order to reduce frustration for users, this - change alters the HTTP code to write the headers and body in a single - write operation. + Change-Id: I2170b86a7f7e221b4f00bf14aa1ef1ac5b050bbd - ASTERISK-26629 #close - Reported by Joshua Colp +2017-10-25 12:26 +0000 [4aec70690d] George Joseph - Change-Id: Idc2d2fb3d9b3db14b8631a1e302244fa18b0e518 + * ast_coredumper: Add gzipping of binaries and display of signal info -2016-12-06 10:56 +0000 [bf6423a336] Mark Michelson + 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. - * Iostreams: Correct off-by-one error. + Added dumps of *_siginfo to the top of the txt files so you can + tell what signal was invoked. - ast_iostream_printf() attempts first to use a fixed-size buffer to - perform its printf-like operation. If the fixed-size buffer is too - small, then a heap allocation is used instead. The heap allocation in - this case was exactly the length of the string to print. The issue here - is that the ensuing call to vsnprintf() will print a NULL byte in the - final space of the string. This meant that the final character was being - chopped off the string and replaced with a NULL byte. For HTTP in - particular, this caused problems because HTTP publishes the expected - Contact-Length. This meant HTTP was publishing a length one character - larger than what was actually present in the message. + Change-Id: Ib9ee6d83592d4b1bc90cb3419a05376a88d1ded9 - This patch corrects the issue by adding one to the allocation length. +2017-10-25 09:23 +0000 [3821be1c68] Ben Ford - ASTERISK-26629 - Reported by Joshua Colp + * http.c: Fix http header send content. - Change-Id: Ib3c5f41e96833d0415cf000656ac368168add639 + 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. -2016-12-06 12:06 +0000 [fe9f070885] George Joseph + ASTERISK-27372 - * pjproject_bundled: Fix missing inclusion of symbols + Change-Id: I8816d2d8f80f4fefc6dcae4b5fdfc97f1e46496d - Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to - the CFLAGS. Not sure how they went missing. +2017-03-30 09:51 +0000 [5553adb8ba] Corey Farrell - Also fixed an uninstall problem where we weren't removing the - symlink from libasteriskpj.so.2 to libasteriskpj.so. While I was - there, I fixed it for libasteriskssl as well. + * Build System: Fix --disable-xmldoc option. - Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556 + 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'. -2016-11-30 18:25 +0000 [4b3d3fc741] Richard Mudgett + ASTERISK-26639 - * res_pjsip_outbound_registration.c: Filter redundant statsd reporting. + Change-Id: Ifac562340c09f80c83e0203de098fcac93bf8c44 - Increasing the testsuite shutdown timeout before forcibly killing - Asterisk allowed more events to be sent out. Some tests failed as - a result. The tests/channels/pjsip/statsd/registrations failed - because we now get the statsd events that a comment in the test - configuration stated couldn't be intercepted. Unfortunately, we - get a variable number of events because of internal status state - transition races generating redundant statsd events. +2017-10-23 00:55 +0000 [569e9a8391] Corey Farrell - We were reporting redundant statsd PJSIP.registrations.state changes - for internal state changes that equated to the same thing publicly. + * Single API for ast_store_lock_info and ast_remove_lock_info. - * Made update_client_state_status() filter out redundant statsd - updates. + 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. - ASTERISK-26527 + Change-Id: Ieced0e920928b735a39c3b5952b806c473d67453 - Change-Id: If851c7d514bb530d9226e4941ba97dcf52000646 +2017-10-24 09:43 +0000 [6474de5f72] Corey Farrell -2016-06-28 16:26 +0000 [26c8552fff] Tzafrir Cohen + * chan_sip: Fix SUBSCRIBE with missing "Expires" header. - * OpenSSL 1.1.0 support + 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. - OpenSSL 1.1.0 includes some major changes in the interface. See - https://wiki.openssl.org/index.php/1.1_API_Changes . + ASTERISK-18140 - Status: Right now there are still a few deprecation notes with OpenSSL - 1.1.0. But it's a start. + Change-Id: Ibf6dcd4fdd07a32c2bc38be1dd557981f08188b5 - Changes: - * CRYPTO_LOCK is no longer available. Replace it with its value for now. - I don't completely understand what it is used for there. - * Remove several functions from libasteriskssl that seem to no longer be - needed. - * Structures have become opaque and are accesses with accessors. - * ERR_remove_thread_state() no longer needed. - * SSLv2 code now could no longer be used in 1.1. +2017-10-24 07:24 +0000 [7126520b3e] Alexander Traud - ASTERISK-26109 #close + * lpc10: Avoid compiler warning when DONT_OPTIMIZE/COMPILE_DOUBLE. - Change-Id: I5e29d477d486ca29b6aae0dc2f5dff960c1cb82b + ASTERISK-23556 + Reported by: Marcello Ceschia -2016-11-22 11:20 +0000 [75230f4c01] Guido Falsi + Change-Id: Ic27e88e0336a0d83877dc857938659dc5560b93c - * res_rtp: Fix regression when IPv6 is not available. +2017-10-07 12:14 +0000 [841ac3ded6] Corey Farrell - The latest Release candidate fails to create RTP streams when IPv6 - is not available. Due to the changes made in September the ast_sockaddr - structure passed around to create these streams is always of AF_INET6 - type, causing failure when used for IPv4. This patch adds a utility - function to check for availability of IPv6 and applies such check - at startup to determine how to create the ast_sockaddr structures. + * hashtab: Use ast_free. - ASTERISK-26617 #close + 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: I627a4e91795e821111e1cda523f083a40d0e0c3e + Change-Id: I2ff089bad71640c03c3ce97f1b00fc962ef79427 -2016-11-23 18:27 +0000 [1dfa11b65c] Richard Mudgett +2017-10-23 01:02 +0000 [fb585cf185] Corey Farrell - * PJPROJECT logging: Made easier to get available logging levels. + * Bundled pjproject: Enable pj_assert when dev-mode is enabled. - Use of the new logging is as simple as issuing the new CLI command or - setting the new pjproject.conf option. + ASTERISK-27359 - Other options that can affect the logging are how you have the pjproject - log levels mapped to Asterisk log types in pjproject.conf and if you have - configured Asterisk to log the DEBUG type messages. Altering the - pjproject.conf level mapping shouldn't be necessary for most installations - as the default mapping is sensible. Configuring Asterisk to log the DEBUG - message type is standard practice for collecting debug information. + Change-Id: Ib01fb6c01f9bb87129374a51cb9318c474147517 - * Added CLI "pjproject set log level" command to dynamically adjust the - maximum pjproject log message level. +2017-10-23 13:44 +0000 [ee21076151] Corey Farrell - * Added CLI "pjproject show log level" command to see the currently set - maximum pjproject log message level. + * main/Makefile: Remove rule for non-existant testexpr2. - * Added pjproject.conf startup section "log_level" option to set the - initial maximum pjproject log message level so all messages could be - captured from initialization. + Change-Id: Ibb3e47f27a395d74d8c5263db015b05434f5969b - * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into - bundled pjproject. Pjproject will use the currently set run time log - level to determine if a log message is generated just like Asterisk - verbose and debug logging levels. +2017-10-23 12:42 +0000 [a9e9608982] Corey Farrell - * In log_forwarder(), made always log enabled and mapped pjproject log - messages. DEBUG mapped log messages are no longer gated by the current - Asterisk debug logging level. + * test_config: Fix failure and segfault when config_hook is run twice. - * Removed RAII_VAR() from res_pjproject.c:get_log_level(). + 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-26630 #close + ASTERISK-25960 - Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389 + Change-Id: Ifd679509a23ed163e5cc647490bf7df4ae3cd856 -2016-11-30 10:48 +0000 [621d886ca7] Mark Michelson +2017-10-23 12:23 +0000 [6f0431798e] George Joseph - * Frame deferral: Re-queue deferred frames one-at-a-time. + * res_pjsip_sdp_rtp: Fix setting of address type for rtp_ipv6 - The recent change that made frame deferral into an API had a behavior - change to it. When frame deferral was completed, we would take all of - the deferred frames and queue them all onto the channel in one call to - ast_queue_frame_head(). Before frame deferral was API-ized, places that - performed manual frame deferral would actually take each deferred frame - and queue them onto the channel. + 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. - This change in behavior caused the confbridge_recording test to start - failing consistently. Without going too crazily deep into the details, - a channel was getting "stuck" in an ast_safe_sleep(). An AMI redirect - was attempting to break it out of the sleep, but because there were more - frames in the channel read queue than expected, the channel ended up - being unable to break from its sleep loop. + * Removed the test for endpoint/media_address and now check all + addresses for ipv6. - By restoring the behavior of individual frame queuing after deferral, - the test starts passing again. + ASTERISK-27198 + Reported by: Martin Cisárik - Note, this points to a potential underlying issue pointing to an - "unbalance" that can occur when queuing multiple frames at once, - and so a follow-up issue is being created to investigate that - possibility. + Change-Id: I5214fc31b728117842243807e7927a319cf77592 - Change-Id: Ied5dacacda06d343dea751ed5814a03364fe5a7d +2017-10-23 07:53 +0000 [488f98310f] Richard Mudgett -2016-11-15 15:01 +0000 [e5e887be53] Alexei Gradinari + * app_agent_pool.c: Fix online documentation typo. - * chan_pjsip: fix switching sending codec when asymmetric_rtp_codec=no + Change-Id: Ib0bc95fd0ec288c78c313823254d7a84ebfc4429 - The sending codec is switched to the receiving codec and then - is switched back to the best native codec on EVERY receiving RTP packets. - This is because after call of ast_channel_set_rawwriteformat there is call - of ast_set_write_format which calls set_format which sets rawwriteformat - to the best native format. +2017-10-22 17:32 +0000 [252353e0a9] Joshua Colp - This patch adds a new function ast_set_write_format_path which set - specific write path on channel and uses this function to switch - the sending codec. + * res_xmpp: Ensure the connection filter is available. - ASTERISK-26603 #close + 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. - Change-Id: I5b7d098f8b254ce8f45546e6c36e5d324737f71d + 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. -2016-11-21 15:43 +0000 [ddc951060a] David Kerr + ASTERISK-27346 - * app_originate: Add option to execute gosub prior to dial + Change-Id: I4ac474afe220e833288ff574e32e2b9a23394886 - Issue/patch ASTERISK-26587 was inspired by issue ASTERISK-22992 - that requested ability to add callerid into app_originate. - Comments in that issue suggested that it was better solved by - adding an option to gosub prior to originating the call. The - attached patch implements this much like app_dial with two - options one to gosub on the originating channel and one to gosub - on the newly created channel and behaves just like app_dial. - I have tested this patch by adding callerid info to the new - channel and also SIPAddHeader (to e.g. add header to force auto - answer) and confirmed it works. Have also tested both 'exten' - and 'app' versions of app_originate. +2017-10-21 03:44 +0000 [840e08716b] Alexander Traud - Opened by: dkerr - Patch by: dkerr + * chan_sip: Crypto attribute not last but first on SDP media level. - Change-Id: I36abc39b58567ffcab4a636ea196ef48be234c57 + This matches the behavior of the other SIP channel driver, chan_pjsip. -2016-11-28 19:43 +0000 [0e214c4932] Eduardo S. Libardi + ASTERISK-27365 - * res_calendar_caldav: Add support reading gmail calendar + Change-Id: I8f23a51290a58b75816da2999ed1965441dfc5d6 - The response from gmail calendar includes the string name - "caldav:calendar-data". res_calendar_caldav implements - the example included in RFC 4791: string "C:calendar-data". - When reading the calendar, res_calendar_caldav compare the - string and if does not match just discards the event. - This commit compares the response to both strings, - successfully loading gmail calendar events. - Writing to gmail calendar is working prior to this fix. - - ASTERISK-26624 - Reported by: Eduardo S. Libardi +2017-10-17 10:53 +0000 [e41561fc2a] Richard Mudgett - Change-Id: Ia1eef10552ae616efb645d390f5ffe81260d7d4a + * res_pjproject.c: Upgrade bundled PJPROJECT to 2.7 -2016-11-28 15:12 +0000 [a3f48be0da] Matt Jordan + Update patches included in bundled PJPROJECT for the new version. - * res/res_pjsip: Fix documentation whitespace issues + ASTERISK-27355 - Tabs > Spaces. + Change-Id: I9ac5dbbffaadca25ad24fac8b9ab615e5ace6083 - Change-Id: If1e43a71822615a898e958e0f8b2e882606f0bd0 +2017-10-16 16:46 +0000 [4559cd0e28] Nir Simionovich -2016-11-22 10:27 +0000 [0e15760795] Matt Jordan + * This patch adds a beanstalk CDR backend. - * res_pjsip/chan_sip: Advertise 'ws' in the SIP URI transport parameter + 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 - Per RFC 7118 5.2, the SIP URI 'transport' parameter should advertise - 'ws' when WebSockets are to be used as the transport. This applies to - both secure and insecure WebSockets. + This module is based upon the beanstalk-client library, available + for download at: https://github.com/deepfryed/beanstalk-client - There were two bugs in Asterisk with respect to this: + Change-Id: I5fe4089a34ab3b39230786d9bbfddafa56715f48 - (1) The most egregious occurs in res_pjsip. There, we advertise 'ws' for - insecure websockets and 'wss' for secure websockets. While this - would seem to make sense - since 'WS' and 'WSS' are used for the Via - Transport parameter - this is not the case for the SIP URI. This - patch corrects that by registering the secure websockets with - pjproject using the shorthand 'WS', and by returning 'ws' when asked - for the transport parameter. Note that in pjproject, it is perfectly - valid to have multiple transports use the same shorthand. +2017-10-18 13:41 +0000 [4760b2445c] Corey Farrell - (2) In chan_sip, we return an upper-case version of the transport 'WS' - instead of 'ws'. Since we should be strict in what we send and - liberal in what we accept (within reason), this patch lower-cases - the transport before appending it to the parameter. + * res_pjsip_pubsub: Prevent unload except during shutdown. - ASTERISK-24330 #close - Reported by: cervajs, Inaki Baz Castillo + 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 + errors have been ruled out. - Change-Id: Iff77b645f8cc3b7cd35168a6676c26b147f22f42 + ASTERISK-24483 -2016-11-28 11:03 +0000 [8a68289766] George Joseph + Change-Id: Iee900f20bdd6ee1bfe23efdec0d87765eadce8a7 - * build_tools: Fix download_externals to handle certified branches +2017-10-18 13:37 +0000 [449ee66a11] Corey Farrell - download_externals wasn't handling the "certified/13.x" version - correctly. + * res_pjsip_refer: Prevent unload except during shutdown. - Change-Id: I124d195bb117ca36fd7bf1150c630f3b474a9d9a + Prevent unload of the module as certain pjsip initialization functions + cannot be reversed. -2016-11-28 07:36 +0000 [e3dae763ee] Joshua Colp + ASTERISK-24483 - * iostream: Move include of asterisk.h + Change-Id: I94597ec8b8491f5af9c57bf66dbc3b078fe2d49d - The asterisk.h header file needs to be included first or else - some things go awry, such as: +2017-10-18 12:04 +0000 [c9e19b31f5] Corey Farrell - implicit declaration of function 'vasprintf' + * chan_sip: Fix output of 'sip set debug off'. - Change-Id: I981dc2a77a1ba791888e4f1726644d4656c0407c + When sip.conf contains 'sipdebug=yes' it is impossible to disable it + using CLI 'sip set debug off'. This corrects the output of that CLI + command to instruct the user to turn sipdebug off in the configuration + file. -2016-11-26 10:57 +0000 [0b588778c0] Michael Kuron + ASTERISK-23462 #close - * chan_sip: Fix segfault during module unload + Change-Id: I1cceade9caa9578e1b060feb832e3495ef5ad318 - If a TCP/TLS connection was pending (not accepted and not timed out) during - unload of chan_sip, Asterisk would segfault when trying to send a signal to - a thread whose thread ID hadn't been recorded yet. This commit fixes that by - recording the thread ID before calling the blocking connect() syscall. - This was a regression introduced by 776a14386a55b5425c7e9617eff8af8b45427144. +2017-10-16 10:53 +0000 [955a891a84] Corey Farrell - The above wasn't enough to fix the segfault, which was now delayed to the - point where connect() timed out. Therefore, it was necessary to also remove - the SA_RESTART flag from the SIGURG sigaction so that pthread_kill() could be - used to interruput the connect() syscall. - This was a regression introduced by 5d313f51b982a18f7321adcf7c7a4e822d8b2714. + * app_macro deprecation. - ASTERISK-26586 #close + * Mark the module deprecated. + * Disable the module by default. + * Produce a warning the first time a macro is used. + * Note deprecation related options in app_dial and app_queue. - Change-Id: I76fd9d47d56e4264e2629bce8ec15fecba673e7b + ASTERISK-27350 -2016-11-23 14:52 +0000 [ead773f801] Dennis Guse + Change-Id: I560ea043bacdbc5534a17d97854273d52c2f1bdc - * pbx_lua: On configuration errors report module load failure instead of decline. +2017-10-18 03:30 +0000 [95b45d1c46] Alexander Traud - Switched from AST_MODULE_LOAD_DECLINE to AST_MODULE_LOAD_FAILURE. - Therefore, if pbx_lua fails to load and pbx_lua is marked as required, - Asterisk exits as expected. - If extensions.lua cannot be opened, AST_MODULE_LOAD_DECLINE is reported. + * res_srtp: Add support for libsrtp2 with AES-GCM. - Change-Id: I8e5a0037e69b41743db60c568541ebb2f52a7a8f + Beside allowing AES-GCM again, this adds AES-192 again. -2016-11-11 08:16 +0000 [d9b24cce0a] gestoip2 + ASTERISK-27356 - * res_rtp_asterisk: RTT miscalculation in RTCP + Change-Id: Ia97a435faf26300335d9552fa676b5d17e5f7233 - When retrieving RTCP stats for PJSIP channels, RTT values are unreliable. - RTT calculation is correct, but the data representation isn't. RTT is - represented by a 32-bit fixed-point number with the integer part in the - first 16 bits and the fractional part in the last 16 bits. In order to - get the RTT value, the fractional part is miscalculated, there is an - unnecessary 16 bit shift that causes overflow. Besides this there is - another mistake, when transforming the integer value to the fixed point - fractional part via bitwise operation, that loses precision. +2017-10-14 14:41 +0000 [5d8c517960] Joshua Colp - * RTT fractional part is no longer shifted, avoiding overflow. + * bridge_softmix: Reduce topology cloning and improve renegotiation. - * RTT fractional part is transformed to its fixed-point value more - precisely. + As channels join and leave an SFU the bridge_softmix module + needs to renegotiate to add and remove their streams from + the other participants. Previously this was done by constructing + the ideal stream topology every time but in the case of leave + this was incomplete. - * Fixed timeval2ntp() and ntp2timeval() second fraction conversions. + This change makes it so bridge_softmix keeps an ideal stream + topology for each channel and uses it when making changes. This + ensures that when we request a renegotiation we are always + certain that we are aiming for the best stream topology + possible. In the case of a channel leaving this ensures that + we try to have an existing participant fill their place if + a participant has a fixed limit on the maximum number of video + streams they allow. - * Fixed NTP timestamp report logging. The usec was inexplicably - multiplied by 4096. + ASTERISK-27354 - ASTERISK-26566 #close - Reported by Hector Royo Concepcion + Change-Id: I58070f421ddeadd2844a33b869b052630cf2e514 - Change-Id: Ie09bdabfee75afb3f1b8ddfd963e5219ada3b96f +2017-10-06 15:55 +0000 [73164d0d7f] Richard Mudgett -2016-11-15 13:44 +0000 [635b0a0a55] Michael Kuron + * cdr.c: Rename the Party A CDR container. - * tcptls: Use new certificate upon sip reload + * Rename the Party A CDR container from active_cdrs_by_channel to + active_cdrs_master. - Previously, a TLS server socket would only be restarted upon sip reload if the - bind address had changed. This commit adds checking for changes to TLS - parameters like certificate, ciphers, etc. so they get picked up without - requiring a reload of the entire chan_sip module. This does not affect open - connections in any way, but new connections will use the new TLS parameters. - The changes also apply to HTTP and Manager. + * Renamed the support functions associated with active_cdrs_master + appropriately. - ASTERISK-26604 #close + ASTERISK-27335 - Change-Id: I169e86cefc6dcd627c915134015a6a1ab1aadbe6 + Change-Id: I6104bb3edc3a0b7243ce502e45e8832b0cff14f7 -2016-11-21 09:49 +0000 [abae3dc36e] George Joseph +2017-10-02 17:42 +0000 [fe1120cf88] Richard Mudgett - * pjproject_bundled: Use $(LIB_RT) for link of libasteriskpj + * cdr.c: Add container to key off of Party B channel names. - libasteriskpj was hard coded to use -lrt but librt is linux specific - so we now use the LIB_RT variable which gets set by configure. + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is because of a n*m loop used when + processing Party B information. - Change-Id: I41148884517e3031f7675a413d524c86e8614694 + * Added a new CDR container that is keyed to Party B so we don't need such + a large loop when processing Party B information. -2016-11-19 16:19 +0000 [b546497fe0] snuffy + NOTE: To reduce the size of the patch I deferred to another patch the + renaming of the Party A active_cdrs_by_channel container to + active_cdrs_master and renaming the container's hash and cmp functions + appropriately. - * Add support for older name resolving version libraries like openBSD + ASTERISK-27335 - Fix support of OS's like openBSD that use an older nameser.h, - this change reverts the defines to the older style which on other - systems is found in nameser_compat.h + Change-Id: I0bf66e8868f8adaa4b5dcf9e682e34951c350249 - Tested on openBSD 6.0, Debian 8 +2017-10-11 06:04 +0000 [da24d425eb] Torrey Searle - ASTERISK-26608 #close + * contrib/script/sip_to_pjsip: implement 'all' for allow/disallow - Change-Id: Iffb36caab8c5aa9dece0ce2d009041f7b56cc86a + when 'all' is specified in an allow or disallow section, it should erase + all values from the inverse section in the default config. E.G. + allow=all should erase any deny values from default config & + vice-versa -2016-11-18 09:46 +0000 [7a8d6bc81b] Mark Michelson + ASTERISK-27333 #close - * Bump ARI version to 2.0.0 + Change-Id: I99219478fb98f08751d769daaee0b7795118a5a6 - In order to not have version number overlap between different versions - of Asterisk, each new major version of Asterisk will mean we also bump - the ARI major version number. +2017-10-14 04:11 +0000 [c4f40b778a] Guido Falsi - This particular change does NOT introduce any known breaking changes to - ARI. + * chan_dahdi: wrap include file which is not present on BSD systems in #ifdef - For discussion relating to this topice, see: - http://lists.digium.com/pipermail/asterisk-dev/2016-November/075964.html + The sys/sysmacros.h include file does not exist in BSD systems and + is not required to build this module there. + Since an "#if defined(__NetBSD__) || defined(__FreeBSD__)" section + already exist I moved that include line inside it's #else branch. - Change-Id: I712ee0df177a8fe1252da2bc029705268b97b665 + ASTERISK-27343 #close -2016-11-16 12:05 +0000 [d3f070c7a2] George Joseph + Change-Id: Ibfb64f4e9a0ce8b6eda7a7695cfe57916f175dc1 - * pjproject_bundled: Improve reliability of pjproject download +2017-10-13 09:43 +0000 [8f65d91dfd] Alexander Traud - The download process now has a timeout which will cause wget to retry - if it stops retrieving data for 5 seconds and fetch and curl to timeout - if the whole retrieval take smore than 30 seconds. + * res_pjsip_session: Rewrite o= with external_media_address. - If the tarball retrieval works, the MD5SUM file is retrieved from - the downloads site and the md5 checksum is verified. + PJSIP allows a domain name as external_media_address. This allows chan_pjsip to + be used behind a NAT with changing IP addresses. The IP address of that domain + is resolved to the c= line already. This change sets also the o= line to that + domain. - If either the tarball retrieval or MD5SUM retrieval fails, or the - checksums don't match, the entire process is retried once. If it - fails again, any incomplete tarball is deleted. + ASTERISK-27341 #close - .DELETE_ON_ERROR: was also added to the Makefile. Not only does - this delete the tarball on failure, it till also delete corrupted - library files from the pjproject source directory should they - fail to build correctly. + Change-Id: I690163b6e762042ec38b3995aa5c9bea909d8ec4 - Tested all the way back to FreeBSD 9, CentOS 6, Debian 6 and - Ubuntu 14. +2017-10-12 12:03 +0000 [7d51a79beb] Joshua Colp - Change-Id: Iea7d33b96a31622ab1b6e54baebaf271959514e1 + * bridge_simple: Improve renegotiation success rate. -2016-11-11 07:13 +0000 [e822a50f86] Mikheili Dautashvili + When making channels compatible the bridge_simple module + will renegotiate one to better match the other. Some + endpoints incorrectly terminate the call if this process + fails. - * main/app.c: Transmit Silence on ControlPlayback pause + To better handle this scenario the audio streams present + on the new requested topology will include any existing + negotiated formats that happen to exist on the first + valid audio stream. This ensures formats are persent that + are known to be acceptable to the remote endpoint. - ASTERISK-26562 #close + ASTERISK-27259 - Change-Id: Ie6cb0ffc2b8c775639ce7784fe96f4ea00cfa2f8 + Change-Id: I8fc0cc03e8bcfd0be8302f13b9f32d8268977f43 -2016-11-17 10:52 +0000 [d670ea6297] Mark Michelson +2017-10-13 08:51 +0000 [ee65d5ac7c] Corey Farrell - * manager: update minor version + * ast_bt_get_symbols: Prevent double-free. - Based on bridge video AMI event changes, bump the minor version of AMI. + It's possible for bfdobj to be created but syms not created. If syms + was not allocated in the current loop iteration but was allocated in the + previous iteration it would crash. - Change-Id: Idf84507354170400813cda780906c94c9f1b60b4 + ASTERISK-27340 -2016-11-17 08:25 +0000 [349e08cb48] Timo Teräs + Change-Id: I5b110c609f6dfe91339f782a99a431bca5837363 - * codec_dahdi: Fix poll.h include. +2017-10-13 08:12 +0000 [44d9446eb5] Alexander Traud - POSIX defines poll.h. sys/poll.h should not be used as it is c-library - internal header which may or may not exist. Notably in musl including - sys/poll.h generates warning of being incorrect. + * tcptls: NULL-check the parameter of ast_ssl_teardown before accessing it. - Change-Id: Ib318c1c7142a737bcf3caa4d8d72560bebe39252 + This avoids a crash on stopping a chan_sip which failed to start its TLS server. -2016-11-16 20:24 +0000 [935f5d003b] George Joseph + ASTERISK-27339 #close - * build: Various OpenBSD issues + Change-Id: I327fc70db68eaaca5b50a15c7fd687fde79263d5 - OpenBSD's 'find' doesn't take the -delete argument so you have to pipe - through 'xargs rm -rf'. +2017-09-29 14:26 +0000 [f369be21a8] Richard Mudgett - 'echo -e' doesn't like \t starting a line. It just prints 't' which - causes the libasteriskpj.exports file to be garbage. They were just - cosmetic so they were removed. + * cdr.c: Eliminated many calls to ao2_global_obj_ref(). - librt doesn't exist so the link of libasteriskpj.so fails. It's not - actually needed for linux anyway so -lrt was removed from the link. + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is we were getting the global config + to determine if we needed to log a debugging message. - res_rtp_asterisk was failing to load because of an undefined - DTLS_method. '|| defined(LIBRESSL_VERSION_NUMBER)' was added to the #if - so DTLSv1_method is used instead. + * Many calls to ao2_global_obj_ref() were just so we could determine if + debug mode is enabled. Made a global flag to check instead. - ASTERISK-26608 + * Eliminated many RAII_VAR() usages associated with the remaining + ao2_global_obj_ref() calls. - Change-Id: I926ec95b0b69633231e3ad1d6e803b977272c49c + * Added missing NULL checks for the returned ao2_global_obj_ref() value. -2016-11-16 15:42 +0000 [dc8f99ee27] Mark Michelson + ASTERISK-27335 - * res_format_attr_opus: Fix fmtp generation. + Change-Id: Iceaad93172862f610cad0188956634187bfcc7cd - res_format_attr_opus assumed that the string being passed into it was - empty. It tried to determine if the only thing it had written was +2017-10-06 13:45 +0000 [2eea087401] Richard Mudgett - a=fmtp: + * cdr.c: Defer getting ao2_global_obj_ref() until needed. - And if it had, it would reset the string. Its calculation was off when - working with chan_sip, though. chan_sip passes the entire built SDP - rather than an empty string. This resulted in always putting an empty - fmtp line in the SDP. + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is we were getting the global config + even if we didn't need it. - ASTERISK-26520 #close - Reported by scgm11 + * Most uses of the global config were only needed on off nominal code + paths so it makes sense to not get it until absolutely needed. - Change-Id: Ib2e8712d26a47067e5f36d5973577added01dbb5 + ASTERISK-27335 -2016-11-15 16:23 +0000 [ed9ced0531] Richard Mudgett + Change-Id: I00c63b7ec233e5bfffd5d976f05568613d3c2365 - * codec_opus: Fix warning when Opus negotiated but codec_opus not loaded. +2017-10-05 18:08 +0000 [7c7a917874] Richard Mudgett - When Opus is negotiated but not loaded, the log is spammed with messages - because the system does not know how to calculate the number of samples in - a frame. + * cdr.c: Set stringfields only if they are different. - * Suppress the warning by supplying a function that assumes 20ms of - samples in the frame. For pass through support it doesn't really seem to - matter what number of samples is returned anyway. + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is we were repeatedly setting string + fields to potentially the same string in base_process_party_a(). Setting + a string field involves allocating room for the new string out of a memory + pool which may have to allocate even more memory. - ASTERISK-26605 #close + * Check to see if the string field is already set to the desired string. - Change-Id: Icf2273692f040dc2c45b01e72a790d11092f9e0f + ASTERISK-27335 -2016-11-14 14:36 +0000 [0cd0e70c16] Richard Mudgett + Change-Id: I3ccb7e23f1488417e08cafe477755033eed65a7c - * res_pjsip_outbound_authenticator_digest.c: Fix memory pool leak. +2017-10-05 18:03 +0000 [c80c8f2ab9] Richard Mudgett - Responding to authentication challenges leaks PJSIP memory pools. + * cdr.c: Fix setting dnid, callingsubaddr, and calledsubaddr - The leak was introduced with a pjproject 2.5.5 API change. - https://trac.pjsip.org/repos/ticket/1929 changed the API usage of - pjsip_auth_clt_init() to require the new API pjsip_auth_clt_deinit() to - clean up cached authentication allocations that get allocated with - pjsip_auth_clt_reinit_req(). + The string comparisons for setting these CDR variables was inverted. We + were repeatedly setting these CDR variables only if the channel snapshots + had the same value. - ASTERISK-26516 #close + ASTERISK-27335 - Change-Id: I4473141b8c3961d0dc91c382beb3876b3efb45c8 + Change-Id: I9482073524411e7ea6c03805b16de200cb1669ea -2016-11-15 12:01 +0000 [3017f09f22] George Joseph +2017-08-25 08:19 +0000 [21c0283b78] Thomas Sevestre - * file.c/__ast_file_read_dirs: Fix issues on filesystems without d_type + * features, manager : Add CancelAtxfer AMI action - One of the code paths in __ast_file_read_dirs will only get executed if - the OS doesn't support dirent->d_type OR if the filesystem the - particular file is on doesn't support it. So, while standard Linux - systems support the field, some filesystems like XFS do not. In this - case, we need to call stat() to determine whether the directory entry - is a file or directory so we append the filename to the supplied - directory path and call stat. We forgot to truncate path back to just - the directory afterwards though so we were passing a complete file name - to the callback in the dir_name parameter instead of just the directory - name. + Add action to cancel feature attended transfer with AMI interface - The logic has been re-written to only create a full_path if we need to - call stat() or if we need to descend into another directory. + ASTERISK-27215 #close - Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba + Change-Id: Iab8a81362b5a1757e2608f70b014ef863200cb42 -2016-06-02 14:10 +0000 [070a51bf7c] Timo Teräs +2017-10-06 04:55 +0000 [6576e4320a] Daniel Tryba - * Implement internal abstraction for iostreams + * res_pjsip_session: Prevent user=phone being added to anonimized URIs. - fopencookie/funclose is a non-standard API and should not be used - in portable software. Additionally, the way FILE's fd is used in - non-blocking mode is undefined behaviour and cannot be relied on. + Move ast_sip_add_usereqphone to be called after anonymization of URIs, + to prevent the user_eq_phone adding "user=phone" to URIs containing a + username that is not a phonenumber (RFC3261 19.1.1). An extra call to + ast_sip_add_usereqphone on the saved version before anonymization is + added to add user=phone" to the PAI. - This introduces internal abstraction for io streams, that allows - implementing the desired virtualization of read/write operations - with necessary timeout handling. + ASTERISK-27047 #close - ASTERISK-24515 #close - ASTERISK-24517 #close + Change-Id: Ie5644bc66341b86dc08b1f7442210de2e6acdec6 - Change-Id: Id916aef418b665ced6a7489aef74908b6e376e85 +2017-10-06 05:14 +0000 [a56316423f] Daniel Tryba -2016-11-15 08:07 +0000 [d3b61a98f4] Joshua Colp + * res_pjsip: Prevent "user=phone" being added multiple times to header - * manager: Bump AMI version number. + ast_sip_add_usereqphone adds "user=phone" to the header every time is is + called without checking whether the param already exists. Preventing + this by searching to string representation of header for "user=phone". - During the development of Asterisk 14 the behavior of - the Command AMI action was altered such that the result - was returned on lines with a prefix of "Output: ". While - this was documented in the UPGRADE.txt file it is also - reasonable that this should bump the AMI version number. + ASTERISK-26988 #close - ASTERISK-26556 + Change-Id: Ib84383b07254de357dc6a98d91fc1d2c2c3719e6 - Change-Id: Idf1bf01608e53f7bfdf43ddb4d0683e53f74ee42 +2017-10-05 18:12 +0000 [e5b9eb0460] Richard Mudgett -2016-11-14 15:57 +0000 [edd7ae85e8] Matt Jordan + * cdr.c: Defer misc checks. - * pjproject: Use a much higher limit for PJ_ICE_MAX_CHECKS + Try to defer some checks until needed in case there is an early exit. - The PJ_ICE_MAX_CHECKS constant is used by pjproject to determine how - many pairs of local/remote candidates will be made. If for some reason - we reach this upper bound, ICE will generally fail and no media will - flow between the browser and Asterisk. + Change-Id: Ibc6b34c38a4f60ad4f9b67984b7d070a07257064 - This patch makes PJ_ICE_MAX_CHECKS set to the total possible number of - pairs of candidates we'd theoretically allow, which is - PJ_ICE_MAX_CAND^2. Prior to this patch, we simply multiplied - PJ_ICE_MAX_CAND by two; on systems with multiple interfaces (I blame - Docker), this is far too low to allow WebRTC calls to succeed. +2017-10-06 20:48 +0000 [e8bde6916a] Seán C McCord - Setting this to be PJ_ICE_MAX_CAND^2 allowed WebRTC calls to succeed - even when the system Asterisk was running on had quite a few virtual - interfaces. + * ari/bridge: Add mute, dtmf suppression controls - Change-Id: Icd4f17de0ac9d3a83dddfc8bf1cb7616bc107d55 + Add bridge_features structure to bridge creation. Specifically, this + implements mute and DTMF suppression, but others should be able to be + easily added to the same structure. -2016-11-14 15:32 +0000 [cc86329228] Matt Jordan + ASTERISK-27322 #close + Reported by: Darren Sessions + Sponsored by: AVOXI - * apps/app_echo: Only relay a single video source change frame + Change-Id: Id4002adfb65c9a8027ee9e1a5f477e0f01cf9d61 - In 9785e8d0, app_echo was updated to relay video source updates to the - channel for the purposes of displaying video in WebRTC tests. - Unfortunately, this can cause a Kafkaesque nightmare if two or more - Local channels are in a bridge together where their ends are in - app_echo. When this situation occurs, a video update sent into app_echo - will cause the video update to be relayed to the other Local channels, - causing another round of video updates, etc. In not much time at all, - the channel length queues will be overwhelmed, channel alert pipes will - fail, and all hell will break loose as Asterisk merrily continues to - throw more video update requests onto the channels. +2017-10-11 07:03 +0000 [ab4d36533c] George Joseph - This patch updates app_echo to *only* relay a single video update. Once - a video update has been made, all further video updates are dropped. - This meets the intended purpose of the original patch: if we get a video - update and we're in app_echo, go ahead and ask the sender to update - themselves. However, once we've got that video stream sync'd up, don't - keep spamming the world. + * chan_vpb: Fix a gcc 7 out-of-bounds complaint - Change-Id: I9210780b08d4c17ddb38599d1c64453adfc34f74 + chan_vpb was trying to use sizeof(*p->play_dtmf), where + p->play_dtmf is defined as char[16], to get the length of the array + but since p->play_dtmf is an actual array, sizeof(*p->play_dtmf) + returns the size of the first array element, which is 1. gcc7 + validly complains because the context in which it's used could + cause an out-of-bounds condition. -2016-11-08 10:11 +0000 [a72ef38113] Matt Jordan + Change-Id: If9c4bfdb6b02fa72d39e0c09bf88900663c000ba - * res/ari/resource_bridges: Add the ability to manipulate the video source +2017-10-06 02:39 +0000 [be7da57546] Nathan Bruning - In multi-party bridges, Asterisk currently supports two video modes: - * Follow the talker, in which the speaker with the most energy is shown - to all participants but the speaker, and the speaker sees the - previous video source - * Explicitly set video sources, in which all participants see a locked - video source + * app_queue.c: clear moh field in init_queue - Prior to this patch, ARI had no ability to manipulate the video source. - This isn't important for two-party bridges, in which Asterisk merely - relays the video between the participants. However, in a multi-party - bridge, it can be advantageous to allow an external application to - manipulate the video source. + ASTERISK-27301 #close - This patch provides two new routes to accomplish this: - (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId} - Sets a video source to an explicit channel - (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource - Removes any explicit video source, and sets the video mode to talk - detection + Change-Id: Ic31361f34e2de3b6470e68fc37205a7711082eba - ASTERISK-26595 #close +2017-10-09 21:00 +0000 [b8dadccbe1] Corey Farrell - Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621 + * sorcery: Use ao2_weakproxy to hold list of instances. -2016-11-14 14:03 +0000 [7263a17ca0] George Joseph + * Store weak proxy objects in instances container. + * Remove special unreference function and replace with macro that calls + ao2_cleanup. + * Add REF_DEBUG information to ast_sorcery_open. - * channel: Fix issues in hangup scenarios caused by frame deferral + Change-Id: I5a150a4e13cee319d46b5a4654f95a4623a978f8 - ASTERISK-26343 +2017-10-09 21:55 +0000 [7774623804] Corey Farrell - Change-Id: I06dbf7366e26028251964143454a77d017bb61c8 - (cherry picked from commit 0be46aaf6b8b9eb5b0160ec591cdc2c6e1802a6d) + * named_locks: Use ao2_weakproxy_find. -2016-11-14 13:55 +0000 [0dc4567133] George Joseph + Change-Id: I0ce8a1b7101b6caac6a19f83a89f00eaba1e9d9c - * Revert "Revert "channel: Use frame deferral API for safe sleep."" +2017-10-09 17:51 +0000 [b058f8673a] Corey Farrell - This reverts commit e5365dada5052b87275c048f6e29ac7d5e2b2415. + * astobj2: Add ao2_weakproxy_find function. - Change-Id: Icc40cf0c7687454760762912dd29e4ae79e8e9ee + This function finds a weak proxy in an ao2_container and returns the + real object associated with it. -2016-11-14 13:55 +0000 [6d61f7bfd1] George Joseph + Change-Id: I9da822049747275f5961b5c0a7f14e87157d65d8 - * Revert "Revert "autoservice: Use frame deferral API"" +2017-10-10 15:09 +0000 [fd3101e8ad] Corey Farrell - This reverts commit edca6911f392f47c1a5a25d1d3a357c72b04a78a. + * astobj2: Run weakproxy callbacks outside of lock. - Change-Id: I76030b87333a2c390cd05392b74b75678d78ddfa + Copy the list of weakproxy callbacks to temporary memory so they can be + run without holding the weakproxy lock. -2016-11-14 13:55 +0000 [f62c9c42fa] George Joseph + Change-Id: Ib167622a8a0f873fd73938f7611b2a5914308047 - * Revert "Revert "AGI: Only defer frames when in an interception routine."" +2017-10-10 12:01 +0000 [3ad7d2f36c] Sean Bright - This reverts commit 6bce938c2fcb60b7a77a0e997a6518860c0bfa39. + * app_originate: Set ORIGINATE_STATUS correctly on failure - Change-Id: Iadbf462bf2a52e8b2fa9ebc75b37b1f688ba51d9 + We were ignoring the return value from ast_pbx_outgoing_exten() and + ast_pbx_outgoing_app() which could fail before setting the reason code. + This resulted in failures being reported as success. -2016-11-14 13:54 +0000 [2966fa5ad7] George Joseph + ASTERISK-25266 #close + Reported by: Allen Ford - * Revert "Revert "Add API for channel frame deferral."" + Change-Id: Idf16237b7e41b527d2c69c865829128686beeb3b - This reverts commit fa749866c17f91860d3e9f89742eab3e6f03ecbc. +2017-10-03 15:16 +0000 [b1d9fc87bc] Torrey Searle - Change-Id: Idcd1b88fa0766b1326dcc87d8905dbc314c71bd7 + * contrib/thirdparty/sip_to_pjsip: add additional flag mappings -2016-11-11 10:45 +0000 [c6d755de11] Sebastien Duthil + add mappings for udptl redundancy, rtptimeout, and debug flags - * res_ari: Add support for channel variables in ARI events. + Change-Id: Ie73cf5c83c05dee01eb9624ede76c1a30225d73a - This works the same as for AMI manager variables. Set - "channelvars=foo,bar" in your ari.conf general section, and then the - channel variables "foo" and "bar" (along with their values), will - appear in every Stasis websocket channel event. +2017-10-02 16:46 +0000 [b0408d05c0] Richard Mudgett - ASTERISK-26492 #close - patches: - ari_vars.diff submitted by Mark Michelson + * cdr.c: Eliminated simple RAII_VAR usages. - Change-Id: I5609ba239259577c0948645df776d7f3bc864229 + Change-Id: I150505db307249a962987e7b941bdd369bb91f35 -2016-11-14 12:16 +0000 [72da2ef9ff] George Joseph +2017-10-10 09:49 +0000 [11cefdf621] Tzafrir Cohen - * cli: Fix ast_el_read_char to work with libedit >= 3.1 + * cdr_mysql: avoid releasing a config string - Libedit 3.1 is not build with unicode on as a default and so the - prototype for the el_gets callback changed from expecting a char buffer - to accepting a wchar buffer. If ast_el_read_char isn't changed, - the cli reads garbage from teh terminal. + Fixes a memory corruption issue after a reload of cdr_mysql. - Added a configure test for (*el_rfunc_t)(EditLine *, wchar_t *) and - updated ast_el_read_char to use the HAVE_ define to detemrine whether - to use char or wchar. + Issue was accidentally included in 747beb1ed159f89a3b58742e4257740b3d6d6bba . - ASTERISK-26592 #close + ASTERISK-27270 #close - Change-Id: I9099b46f68e06d0202ff80e53022a2b68b08871a + Change-Id: I90b6a9d18710c0f9009466370bd5f4bac5d5d12e -2016-11-12 12:15 +0000 [97a75e3829] Tzafrir Cohen +2017-10-10 07:42 +0000 [b228f5c5e6] Tzafrir Cohen - * Add support for building RADIUS with radcli + * declare optional openssl dependencies in moduleinfo - Radcli is yet another RADIUS client library, generally compatible with - freeradius and radiusclient-ng. + Declare optional openssl dependencies in: + * res_rtp_asterisk.c + * tcptls.c - This commit adds autoconf option for detecting it as well and changes - cdr_radius and cel_radius to use its header file in that case. + ASTERISK-27328 #close - ASTERISK-26540 #close + Change-Id: I2636f1c05b8104b4fe6f36cce0ebd9a98b9c78ab - Change-Id: I271f0715406334874865ffbce0b354b3a2ca148f +2017-10-09 22:51 +0000 [fae09c6676] Corey Farrell -2016-11-10 10:57 +0000 [1bd49040c4] Joshua Colp + * res_pjproject: Fix cleanup of buildopts vector. - * res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp. + ASTERISK-27306 - When optimistic SRTP was on it was possible for us to still - set up a call without an audio stream if an offer was received - with required SRTP. + Change-Id: I3bed0edf3f55b1d4adcbabb25ec14f11dc766c72 - This change makes it so this scenario will now fail with a 488 - response. +2017-10-03 16:09 +0000 [fdf9aacca3] Richard Mudgett - ASTERISK-26575 + * cdr.c: Replace redundant check with an ast_assert() - Change-Id: I7d14187037681f48879bd20319ac79d0877318f3 + The only caller of cdr_object_fn_table.process_party_b() explicitly does + the check before calling. -2016-11-11 02:41 +0000 [dfb951817f] Igor Goncharovskiy + Change-Id: Ib0c53cdf5048227842846e0df9d2c19117c45618 - * Fix closing rtp ports after call finished in chan_unistim. +2017-10-02 17:41 +0000 [2e4b5fadbd] Richard Mudgett - Fix ASTERISK-26565 by adding ast_rtp_instance_stop before - rtp instance destroy for chan_unistim. Also several fixes - for displayed text translation. + * cdr.c: Replace inlined code with ao2_t_replace() - Change-Id: If42a03eea09bd1633471406bdc829cf98bf6affc + Change-Id: I9f424f5282ca7d833592f958d95f1b2bafb549b0 -2016-11-11 00:29 +0000 [939dcf66b0] Timo Teräs +2017-09-29 12:07 +0000 [62980eedc3] Richard Mudgett - * addons/chan_mobile: do not use strerror_r + * cdr.c: Use current ao2 flag names - The two reasons why it might be used are that some systems do not - implement strerror in thread safe manner, and that strerror_r returns - the error code in the string in case there's no error message. + Change-Id: Ib59d7d2f2a4a822754628f2c48a308d6791a6e6e - However, all of asterisk elsewhere uses strerror() and assumes it - to be thread safe. And in chan_mobile the errno is also explicitly - printed so neither of the above reasons are valid. +2017-09-29 12:31 +0000 [e769846f11] Richard Mudgett - The reasoning to remove usage is that there are actually two versions - of strerror_r: XSI and GNU. They are incompatible in their return - value, and there's no easy way to figure out which one is being - used. glibc gives you the GNU version if _GNU_SOURCE is defined, - but the same feature test macro is needed for other symbols. On - all other systems you assumedly get XSI symbol, and compilation warnings - as well as non-working error printing. + * cdr.h: Fix doxygen comments. - Thus the easiest solution is to just remove strerror_r and use - strerror as rest of the code. Alternative is to introduce ast_strerror - in separate translation unit so it can request the XSI symbol in - glibc case, and replace all usage of strerror. + * Also some misc formatting in cdr.c. - Change-Id: I84d35225b5642d85d48bc35fdf399afbae28a91d + Change-Id: Ied89a28802a662c37c43326a1aafdce596e0df4a -2016-09-23 17:54 +0000 [338f35edcc] Richard Mudgett +2017-09-20 18:36 +0000 [fb19799b62] Richard Mudgett - * res_pjsip.c: Rework endpt_send_request() req_wrapper code. + * res_pjsip_registrar.c: Update remove_existing AOR contact handling. - * Don't hold the req_wrapper lock too long in endpt_send_request(). We - could block the PJSIP monitor thread if the timeout timer expires. - sip_get_tpselector_from_endpoint() does a sorcery access that could take - awhile accessing a database. pjsip_endpt_send_request() might take awhile - if selecting a transport. + When "rewrite_contact" is enabled, the "max_contacts" count option can + block re-registrations because the source port from the endpoint can be + random. When the re-registration is blocked, the endpoint may give up + re-registering and require manual intervention. - * Shorten the time that the req_wrapper lock is held in the callback - functions. + * 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. - * Simplify endpt_send_request() req_wrapper->timeout code. + ASTERISK-27192 - * Removed some redundant req_wrapper->timeout_timer->id assignments. + Change-Id: I64c107a10b70db1697d17136051ae6bf22b5314b - Change-Id: I3195e3a8e0207bb8e7f49060ad2742cf21a6e4c9 +2017-10-09 08:15 +0000 [ad38a55a2d] Sean Bright -2016-09-21 15:10 +0000 [bb196323f9] Richard Mudgett + * res_config_sqlite: Don't enable SQLite CDRs when running 'make samples' - * res_pjsip: Fix tdata leaks in off nominal paths. + Change-Id: I65a5190b2732b2246d67472db70dd37db64ddad4 - Change-Id: Ie83e06e88c2d60157775263b07e40b61718ac97b +2017-10-08 14:05 +0000 [a0a1f95abf] David Hajek -2016-10-24 12:41 +0000 [9df59d9ff4] Richard Mudgett + * res/res_ari.c Fix: Memory leaks in ARI when using Content-Type: application/json - * res_pjsip_registrar_expire.c: Remove extra linefeed in debug message. + ASTERISK-27305 + Reported by: David Hajek + Tested by: David Hajek - Change-Id: I1f9adb911f23376503396ec8867e8005b755eb94 + Change-Id: Ife3e289062e6cf7d0e7d342dbf79ed96feff441e -2016-11-10 13:38 +0000 [73524bde9c] C.J. Collier +2017-10-08 09:11 +0000 [feeb0974eb] Alexander Traud - * chan_sip: Fix typo and re-wrap surrounding docs + * tcptls: Do not re-bind to wildcard on client creation. - Correct typo of end-pints to end-points - Re-wrap session timer parameter docs to max 80 chars wide; this - eases reading on terminals with lower resolution, commonly the case - for those with visual impairments. + Since ASTERISK-26922, this issue affected only those chan_sip which were + * enabled for dual-stack (bindaddr=::), and + * enabled for TCP (tcpenable=yes) and/or TLS (tlsenable=yes), and + * tried to register and/or invite a IPv4-only service, + * via TCP and/or TLS. + Now, ast_tcptls_client_create does not re-bind to [::] anymore. - ASTERISK-26573 + ASTERISK-27324 #close - Change-Id: I22c94459f4bb6b8a2f6713cfd22e87c32f204e6b - Signed-off-by: C.J. Collier + Change-Id: I4b242837bdeb1ec7130dc82505c6180a946fd9b5 -2016-11-09 15:14 +0000 [bdb6d928c5] Joshua Colp +2017-10-07 15:47 +0000 [eb224fea5e] Corey Farrell - * res_pjsip: Perform resolution when explicit IPv6 transport is used. + * res_pjsip_session: Fix format_cap leak. - This change fixes the SIP resolver such that if an IPv6 transport - is explicitly used it will resolve NAPTR, SRV, and AAAA records. + ASTERISK-27306 - You can explicitly use one by specifying it on an endpoint. + Change-Id: I2c8d3fc148f9f53715c958314e1146f9611741f3 - ASTERISK-26571 +2017-10-06 10:51 +0000 [f4798faacc] Matt Jordan - Change-Id: I2ed3ce81b43a6a8a937c0ebc1b8ed2da5ac2ef36 + * res_corosync: Fix linking issue with Corosync 2.x -2016-11-10 08:33 +0000 [93a0de1f0e] Joshua Colp + At some point in time in the history of Corosync (certainly within the + 2.x branch), the corosync_cfg_state_track function was removed. + Unfortunately, the cfg library is only linked if this function is + present. Without the cfg library being linked to res_corosync, loading + of res_corosync will fail. - * app_queue: Add mention of 'ABANDON' variable to CHANGES. + This patch makes it so that detecting corosync's core libraries, + determined by the COROSYNC external library checks, links both the cpg + and cfg libraries with res_corosync. - ASTERISK-26558 + Change-Id: I674e9e1c8fea11c3bf81154aaa7c1fd43f945465 - Change-Id: I1127010181e79c8ac291f72f036cb8e430dc7f7e +2017-10-05 16:26 +0000 [a68a91f722] Corey Farrell -2016-11-10 07:34 +0000 [fa749866c1] George Joseph + * res_pjsip: Fix leak of persistent endpoint references. - * Revert "Add API for channel frame deferral." + Do not manually call sip_endpoint_apply_handler from load_all_endpoints. + This is not necessary and causes memory leaks. - This reverts commit f073f648b87d45e4729969fd2d83695c300757d1. - Multiple testsuite failures were detected after the fact. + Additionally reinitialize persistent->aors when we reuse a persistent + object with a new endpoint. - Change-Id: I968c380418bf65c7166f6ecff30fe8e247ea6682 + ASTERISK-27306 -2016-11-10 07:33 +0000 [6bce938c2f] George Joseph + Change-Id: I59bbfc8da8a14d5f4af8c5bb1e71f8592ae823eb - * Revert "AGI: Only defer frames when in an interception routine." +2017-10-05 17:59 +0000 [3bd00c4a7e] Corey Farrell - This reverts commit 28926d1c81540bbeb16802814d3f2e63c2347bd2. - Multiple testsuite failures were detected after the fact. + * vector: multiple evaluation of elem in AST_VECTOR_ADD_SORTED. - Change-Id: I8d4f5ccbb421a351d616254844ae7e5a31053edb + Use temporary variable to prevent multiple evaluations of elem argument. + This resolves a memory leak in res_pjproject startup. -2016-11-10 07:32 +0000 [edca6911f3] George Joseph + ASTERISK-27317 #close - * Revert "autoservice: Use frame deferral API" + Change-Id: Ib960d7f5576f9e1a3c478ecb48995582a574e06d - This reverts commit afef1b8e4a311d33b3e485b9bab3c6e7fd13fbc9. - Multiple testsuite failures were detected after the fact. +2017-10-05 15:54 +0000 [b35ac9e566] Corey Farrell - Change-Id: Ib4cb0c0a6475681ce817f71b4050be25640ab67f + * res_pjsip: Fix leak of fake_auth references. -2016-11-10 07:31 +0000 [e5365dada5] George Joseph + pjsip_distributor leaks references to fake_auth when the default realm + has not changed. - * Revert "channel: Use frame deferral API for safe sleep." + ASTERISK-27306 - This reverts commit 392202304d248147378f1e16f1f012285dc1221f. + Change-Id: I3fcf103b3680ad2d1d4610dcd6738eeaebf4d202 - Multiple testsuite issues were discovered after the fact. +2017-10-05 20:23 +0000 [0f3e725503] Corey Farrell - Change-Id: I848c4196dca2994b1a368087004326ea354cff95 + * main/strings: Fix uninitialized value. -2016-11-09 18:18 +0000 [edea41126b] George Joseph + ast_strings_match uses sscanf and checks for non-zero return to verify a + token was parsed. This is incorrect as sscanf returns EOF (-1) for errors. - * build: Fix default values for some SANITIZER options + ASTERISK-27318 #close - 2 of the sanitizers didn't have default values so in systems that - don't support sanitizers menuselect would spit out warnings. They - were harmless but confusing. They've now been set to "0". + Change-Id: Ifcece92605f58116eff24c5a0a3b0ee08b3c87b1 - Change-Id: I08dc495e3b83f1feac3160b421f538c375fc5d58 +2017-10-05 19:55 +0000 [0b6be1b2d4] Corey Farrell -2016-11-06 06:04 +0000 [4e8ab6cda9] Sebastian Gutierrez + * res_sdp_translator_pjmedia: Fix test unregistration. - * app_queue: new variable set when abandoned + ASTERISK-27306 - sets the variable ABANDONED to TRUE if the call was not answered. + Change-Id: Ib3ed47167cb697ab7bd0a56cab589893f491651b - ASTERISK-26558 +2017-10-02 07:48 +0000 [59b6e8467a] Daniel Tryba - Change-Id: I4729af9bff4eba436d8a776afd3374065d0036d3 + * res_pjsip_caller_id chan_sip: Comply to RFC 3323 values for privacy -2016-11-08 10:48 +0000 [e5860ce07d] Mark Michelson + Currently privacy requests are only granted if the Privacy header + value is exactly "id" (defined in RFC 3325). It ignores any other + possible value (or a combination there of). This patch reverses the + logic from testing for "id" to grant privacy, to testing for "none" and + granting privacy for any other value. "none" must not be used in + combination with any other value (RFC 3323 section 4.2). - * res_pjsip_session: Do not call session supplements when it's too late. + ASTERISK-27284 #close - res_pjsip_sesssion was hooking into transaction and invite state - changes. One of the reasons for doing so was due to the - PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the - message sending process, and so we should call session supplements to - alter the outgoing message. + Change-Id: If438a21f31a962da32d7a33ff33bdeb1e776fe56 - In reality, this event was meant to indicate that the message either - a) had already been sent, or - b) required a DNS lookup and would be sent when the DNS query - completed. +2017-10-04 10:59 +0000 [65399a5eda] Corey Farrell - In case (a), this meant we were altering an already-sent - request/response for no reason. In case (b), this potentially meant we - could be trying to alter a request/response at the same time that the - DNS resolution completed. In this case, it meant we might be stomping on - memory being used by the thread actually sending the message. This - caused potential crashes and memory corruption. + * res_pjsip: Add REF_DEBUG info to module references. - This patch removes the calls to session supplements from the case where - the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to - alter the message at this point is too late, and it can cause nothing - but harm to try to do it. Because there were no longer any calls to the - handle_outgoing() function, it has been removed. + This provides better information to REF_DEBUG log for troubleshooting + when the system is unable to unload res_pjsip.so during shutdown due to + module references. - Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92 + ASTERISK-27306 -2016-11-03 16:46 +0000 [392202304d] Mark Michelson + Change-Id: I63197ad33d1aebe60d12e0a6561718bdc54e4612 - * channel: Use frame deferral API for safe sleep. +2017-10-04 10:46 +0000 [7d04544986] Corey Farrell - This is another case where manual frame deferral can be replaced with - centralized routines instead. + * res_pjsip: Fix issues that prevented shutdown of modules. - Change-Id: I42cdf205f8f29a7977e599751a57efbaac07c30e - (cherry picked from commit d149c4b9e07eeb880d8428ad52c6fdb315cc15f5) + res_pjsip and res_pjsip_session had circular references, preventing both + modules from shutting down. + * Move session supplement registration to res_pjsip. + * Use create internal functions for use by pjsip_message_filter.c. -2016-11-03 16:46 +0000 [afef1b8e4a] Mark Michelson + ASTERISK-27306 - * autoservice: Use frame deferral API + Change-Id: Ifbd5c19ec848010111afeab2436f9699da06ba6b - Rather than use manual frame deferral, just let the channel API do it - for us. +2017-09-28 02:56 +0000 [2301447a20] Benoît Dereck-Tricot - ASTERISK-26343 + * res_calendar_icalendar: Filter out occurrences superceded by another VEVENT - Change-Id: I688386f36e765dbc07be863943a43f26bd5eac49 - (cherry picked from commit 8ba3e2fc27f9966b8c7ce75c1eca6208613a9315) + When we are loading the calendars, we call libical's + icalcomponent_foreach_recurrence method for each VEVENT component that + we have in our calendar. -2016-11-03 16:42 +0000 [28926d1c81] Mark Michelson + That method has no knowledge concerning the existence of the other + VEVENT components and will feed our callback with all ocurrences + matching the requested time span. - * AGI: Only defer frames when in an interception routine. + The occurrences generated by icalcomponent_foreach_recurrence while + expanding a recurring VEVENT's RRULE and RDATE properties can be + superceded by an other VEVENT sharing the same UID. - AGI recently was modified to defer important frames. This was because - when AGI was used in a connected line interception routine, the - resulting connected line frame would end up getting discarded by the - AGI. + I use an external iterator (in libical terminology) to avoid messing + with the internal ones from the calling function, and search for + VEVENTS which could supersede the current occurrence. - However, this caused bad behavior in other cases. Specifically, during a - transfer, if someone attempted to manually set the Caller ID on a - channel in an AGI, the deferred connected line frame would end up - overwriting what had been manually set in the AGI. + The event which can invalidate this occurence needs to have: - Since the initial issue was specific to interception routines, this - change removes the manual frame deferral from AGI and instead uses the - new frame deferral API in interception routines. + - the same UID as our recurrent component (comp) + - a RECURRENCE-ID property, which represents the start time of this + occurrence - ASTERISK-26343 #close - Reported by Morton Tryfoss + If one component is found, just clean and return. - Change-Id: Iab7d39436d0ee99bfe32ad55ef91e9bd88db4208 + ASTERISK-27296 #close + Reported by: Benoît Dereck-Tricot -2016-11-03 16:36 +0000 [f073f648b8] Mark Michelson + Change-Id: I8587ae3eaa765af7cb21eda3b6bf84e8a1c87af8 - * Add API for channel frame deferral. +2017-09-28 17:37 +0000 [b2dbfe23ef] Richard Mudgett - There are several places in Asterisk that have duplicated logic - for deferring important frames until later. + * app_queue.c: Fix announcements when announce-to-first-user not enabled. - This commit adds a couple of API calls to facilitate this automatically. + The previous patch for ASTERISK-27216 made it so you wouldn't get any + position or periodic announcements unless you had announce-to-first-user + enabled. The announce-to-first-user feature was added by ASTERISK_21782 + as a result of the patch which introduced the redundant announcements that + ASTERISK-27216 removes. - ast_channel_start_defer_frames(): Future reads of deferrable frames on - this channel will be deferred until later. + * By noting that the makeannouncement variable is used to suppresses the + first user announcement, we set its initial value to the + announce-to-first-user enable setting. - ast_channel_stop_defer_frames(): Any frames that have been deferred get - requeued onto the channel. + ASTERISK-27216 - ASTERISK-26343 + Change-Id: Ieaeb7dbea8ae7073086b775fbafe0625b000b10a - Change-Id: I3e1b87bc6796f222442fa6f7d1b6a4706fb33641 +2017-09-21 14:43 +0000 [80097676e7] Richard Mudgett -2016-11-02 10:52 +0000 [d30415bfa1] Joshua Colp + * heap.c: No need to calloc heap pointer array. - * res_stasis: Don't unsubscribe from a NULL bridge. + Change-Id: I5ae2f316229f336eb90d99c7af7ed07a33097e68 - A NULL bridge has special meaning in res_stasis for - unsubscribing. It means that a subscription to ALL - bridges should be removed. This should not be done - as part of the normal subscription management in - the res_stasis channel loop. +2017-09-27 13:45 +0000 [d1de7948fe] George Joseph - ASTERISK-26468 + * logger: Bring back ability to turn debug on by source file - Change-Id: I6d5bea8246dd13a22ef86b736aefbf2a39c15af0 + Somewhere along the way we lost the ability to debug individual + source files. For modules, this wasn't a big deal but all the + source files in ./main are in the one "core" module so debugging + individual core capabilities was almost impossible. -2016-11-03 07:42 +0000 [0a698cd932] Alexander Anikin + * Added a test to DEBUG_ATLEAST that also checks __FILE__ instead + of just module name. Any source file will work even if it's in + a module subdirectory. - * chan_ooh323: Fixes to work right with Cisco devices + Change-Id: Icc0af41837f3b1679dec7af21fa32cd1f7469f6e - Changed output packets queue processing algo to one read-one write - instead of all read-all send +2017-09-28 05:33 +0000 [f21408c866] Joshua Colp - Remove h.245 tunneling parameter from ReleaseComplete packet + * res_stasis: Add 'video_sfu' as a requested bridge type. - ASTERISK-24400 #close - Reported by: Dmitry Melekhov - Tested by: Dmitry Melekhov + This change adds 'video_sfu' as a requested bridge type when + creating a bridge. By specifying this a mixing type bridge is + created that exchanges video in an SFU fashion. - Change-Id: I0b31933b062a21011dbac9a82b8bcfe345f406f6 + Change-Id: I2ada47cf5f3fc176518b647c0b4aa39d55339606 -2016-11-03 13:10 +0000 [a1cdc3891a] Alexander Anikin +2017-09-27 11:16 +0000 [a6dc0527a2] Richard Mudgett - * chan_ooh323: reset rrq count on gk registration + * res_pjsip_outbound_publish.c: Fix misplaced parenthesis. - reset registration attempts count on success registration on gatekeeper + The pjsip_publishc_init() call was referenced with a misplaced + parentheses. As a result, outbound publication messages went out with an + expiration of 1 second. - Change-Id: I5f47351852e0ca76c9ac78421659600e0f106336 + ASTERISK-27298 -2016-11-06 05:40 +0000 [b2b5f9d897] frahaase + Change-Id: I93622eabc8ee83e7a22e98c107f921284c605a08 - * ast_format: Adds an identifier for interleaved audio formats to the ast_format +2017-09-26 11:01 +0000 [61ea872233] George Joseph - Adds an identifier (with a getter and setter) to detect channels with - interleaved audio. - This is needed by the binaural bridge_softmix patch (ASTERISK-26292) and - was already discussed here: - http://lists.digium.com/pipermail/asterisk-dev/2016-October/075900.html - The identifier can be set during fmtp parsing (to be seen in the - res_format_attr_opus.c change). + * pjsip_message_filter: Fix regression causing bad contact address - ASTERISK-26292 + The "res_pjsip: Filter out non SIP(S) requests" commit moved the + filtering of messages to pjproject's PJSIP_MOD_PRIORITY_TRANSPORT_LAYER + in order to filter out incoming bad uri schemes as early as possible. + Since the change affected outgoing messages as well and the TRANSPORT + layer is the last to be run on outgoing messages, we were overwriting + the setting of external_signaling_address (which is set earlier by + res_pjsip_nat) with an internal address. - Change-Id: I359801cc5f98c35671c48dabc81a7f4ee1183d63 + * pjsip_message_filter now registers itself as a pjproject module + twice. Once in the TSX layer for the outgoing messages (as it was + originally), then a second time in the TRANSPORT layer for the + incoming messages to catch the invalid uri schemes. -2016-11-06 03:46 +0000 [fbbbd0add9] Michael Kuron + ASTERISK-27295 + Reported by: Sean Bright - * automon: restore mixing of the both channels after recording stops + Change-Id: I2c90190c43370f8a9d1c4693a19fd65840689c8c - This is a regression over Asterisk 11, introduced by - 2dc8a060064f359a17f5ebcd515d85fe5203c019. Previously, recordings started via - the automon DTMF code would automatically be mixed together using sox because - app_monitor would be called with the m option. This commit restores this - behavior. +2017-09-13 21:31 +0000 [9d65057cdf] Richard Mudgett - Change-Id: Ibaf58684285c3f1b6ca3714524e6d638ae3b3759 + * res_rtp_asterisk.c: Fix bridge_p2p_rtp_write() reentrancy potential. -2016-11-04 15:42 +0000 [367d4903cc] Matt Jordan + The bridge_p2p_rtp_write() has potential reentrancy problems. - * res_http_websocket: Increase the buffer size for non-LOW_MEMORY systems + * Accessing the bridged RTP members must be done with the instance1 lock + held. The DTMF and asymmetric codec checks must be split to be done with + the correct RTP instance struct locked. i.e., They must be done when + working on the appropriate side of the point to point bridge. - Not surprisingly, using Respoke (and possibly other systems) it is - possible to blow past the 16k limit for a WebSocket packet size. This - patch bumps it up to 32k, which, at least for Respoke, is sufficient. - For now. + * Forcing the RTP mark bit was referencing the wrong side of the point to + point bridge. The set mark bit is used everywhere else to set the mark + bit when sending not receiving. - Because 32k is laughable on a LOW_MEMORY system (as is 16k, for that - matter), this patch adds a LOW_MEMORY directive that sets the buffer to - 8k for systems who have asked for their reduced memory availability to - be considered. + The patches for ASTERISK_26745 and ASTERISK_27158 did not take into + account that not everything carried by RTP uses a codec. The telephony + DTMF events are not exchanged with a codec. As a result when + RFC2833/RFC4733 sent digits you would crash if "core set debug 1" is + enabled, the DTMF digits would always get passed to the core even though + the local native RTP bridge is active, and the DTMF digits would go out + using the wrong SSRC id. - Change-Id: Id235902537091b58608196844dc4b045e383cd2e + * Add protection for non-format payload types like DTMF when updating the + lastrxformat and lasttxformat. Also protect against non-format payload + types when checking for asymmetric codecs. -2016-11-04 15:40 +0000 [7a449b6819] Matt Jordan + ASTERISK-27292 - * res_stasis: Set a video source mode on Stasis created bridges + Change-Id: I6344ab7de21e26f84503c4d1fca1a41579364186 - When a bridge is created via ARI (through res_stasis), no video source - mode is set by default. As a result, any endpoint sending video media - won't ever see any video reflected back to it. +2017-09-26 10:55 +0000 [c9e972a26a] Sean Bright - This patch defaults a bridge to a 'follow the talker' video mode. - Further work can be done to add routes that allow for the video mode to - be controlled through the /bridges resource. + * res_rtp_asterisk: Trim trailing byte off of SDES packet - Change-Id: I7e9d530a5d7a97a4524a9ee4e468e1a6b3443866 + This could have been fixed by subtracting 1 from the final value of + 'len' but the way the packet was being constructed was confusing so I + took the opportunity to (I think) make it more clear. -2016-11-04 15:37 +0000 [bbe943729a] Matt Jordan + We were sending 1 extra byte at the end of the SDES RTCP packet which + caused Chrome to complain (in its debug log): - * main/bridge_channel: Fix channel reference leak on video source + Too little data (1 byte) remaining in buffer to parse + RTCP header (4 bytes). - When a channel is made the video source, the bridge holds a reference to - it. Whenever the video source changes, that reference is released. - However, a ref leak does occur if the channel leaves the bridge (such as - being hung up) while it is the video source, as the bridge never - releases the ref in such a case. + We now send the correct number of bytes. - This patch adds a line to the bridge_channel_internal_join routine such - that, when a channel finishes its time in the bridge, it notifies the - bridge via ast_bridge_remove_video_src that if it is a video source its - reference should be released. + Change-Id: I9dcf087cdaf97da0374ae0acb7d379746a71e81b - ASTERISK-26555 #close +2017-09-25 13:00 +0000 [721947ebae] Sean Bright - Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a + * webrtc: Allow 'webrtc' to be set on endpoints without dtls_ca_file -2016-11-04 15:36 +0000 [a70d6dba8c] Matt Jordan + If using a legitimate certificate from a trusted certificate authority, + you don't need to provide CA file. - * main/bridge: Add some verbose logging for video source changes + Change-Id: I8623973b4209b44889243716d7880274caed8a6d - It's actually quite useful to see the source of a video stream change. - This doesn't happen terribly often, even with talk detection - but when - it does, it's nice to know which channel is now providing your video - stream. +2017-09-25 13:09 +0000 [0cbeaa5589] Sean Bright - As a verbose 5 level message, it shouldn't be terribly spammy or costly - to have, and is 'lower level' then most other verbose messages that the - bridge system emits. + * pjproject: Patch to correct STUN FINGERPRINT usage - ASTERISK-26555 + Change-Id: I0e453253dff1388b0186b36c754457c1d0d12db6 - Change-Id: Ia1c20ecafa9670171fd38bddcf3beccae47fb15c +2017-09-25 12:30 +0000 [b74cbadd05] Kevin Harwell -2016-11-04 15:33 +0000 [fb17b630a5] Matt Jordan + * res_pjsip_session: outgoing call did not offer all configured codecs - * bridges/bridge_softmix: Remove SSRC changes on join/leave; update video source + For some scenarios when an outgoing call was made only a subset of the + configured codecs were offered. If the codecs being offered happened to + not have a codec supported by the phone then the call would fail. - WebRTC clients really, really want to know the SSRC of the media they're - getting. Changing the SSRC is generally not a good thing. + For instance Alice and Bob both are configured in Asterisk for g722 and ulaw( + allow=!all,g722,ulaw). Alice's endpoint however only supports g722 while Bob's + only supports ulaw. When Alice calls Bob, Alice negotiates g722 fine with + Asterisk. But when Asterisk sends the outgoing offer to Bob it only contains + g722 and not both g722 and ulaw, so the call ends. - bridge_softmix, starting in Asterisk 12, started changing the SSRC of - parties as they joined or left the bridge. With most phones, this isn't - a problem: phones just play back the stream they're getting. With WebRTC - clients, however, the SSRC is tied to a media stream that may be - negotiated. When a new SSRC just shows up, the media can be dropped. + This patch makes it so all the audio codecs configured on the endpoint always + get sent, and not just a subset. However priority is given to those codecs that + are compatible with the "other side". - As it turns out, the SSRC change shouldn't even be necessary. From the - perspective of the client, it's still talking to Asterisk with the same - media stream: why indicate that the far party has suddenly changed to a - different source of media? + ASTERISK-27259 #close - This patch opts to just remove the SSRC changes. With this patch, video - clients that join/leave a softmix bridge actually get the video stream - instead of freaking out. + Change-Id: Iffabc373bd94cd1dc700925dcfe406e12918c696 - ASTERISK-26555 +2017-09-25 10:59 +0000 [08e67f814b] Richard Mudgett - Change-Id: I27fec098b32e7c8718b4b65f3fd5fa73527968bf + * channel.c: Fix invalid reference in conditionaled out code. -2016-10-28 15:11 +0000 [70d5f90e3d] Kevin Harwell + ASTERISK-27289 - * stasis_recording/stored: remove calls to deprecated readdir_r function. + Change-Id: I7a415948116493050614d9f4fa91ffbe0c21ec4c - The readdir_r function has been deprecated and should no longer be used. This - patch removes the readdir_r dependency (replaced it with readdir) and also moves - the directory search code to a more centralized spot (file.c) +2017-09-25 07:25 +0000 [4275ca16a1] George Joseph - Also removed a strict dependency on the dirent structure's d_type field as it - is not portable. The code now checks to see if the value is available. If so, - it tries to use it, but defaults back to using the stats function if necessary. + * build: A few gcc 7 error fixes - Lastly, for most implementations of readdir it *should* be thread-safe to make - concurrent calls to it as long as different directory streams are specified. - glibc falls into this category. However, since it is possible that there exist - some implementations that are not safe, locking has been added for those other - than glibc. + Change-Id: I7b5300fbf1af7d88d47129db13ad6dbdc9b553ec - ASTERISK-26412 - ASTERISK-26509 #close +2017-09-15 02:59 +0000 [c3c73b3511] Stefan Engström - Change-Id: Id8f54689b1e2873e82a09d0d0d2faf41964e80ba + * app_queue: Only do announcement logic between ringing cycles -2016-11-04 10:57 +0000 [bf01ff53f8] Kevin Harwell + This patch reverts the change by patch 2263 from old reviewboard. + Note that reverting that 2263-patch still preserves the behaviour that + the commit log of the 2263-patch claimed to add. The reason for this is: - * Revert "chan_sip: Fix lastrtprx always updated" + The function wait_for_answer is only called from try_calling which + in turn is only called from the main for loop in queue_exec, and + earlier in that loop we already check the things that's removed by + this patch. There's no need to check those things twice each loop + iteration, and I think the proper place to check it is before each + ringing cycle. By checking it in wait_for_answer, you allow the issue + explained in the jira - that the head caller hears announcements while + the agents' sip phones are actively ringing. - This reverts commit 93332cb1d0eea18021ea6538237297e627d6e2fc. + Reported-by: Stefan Engström + Tested-by: Stefan Engström + ASTERISK-27216 #close - Unfortunately, the aforementioned commit caused a regression (incoming calls - would eventually disconnect). Thus it is being removed. + Change-Id: Ic4290dc75256f9743900c6762ee1bb915f672db0 - ASTERISK-26523 #close - ASTERISK-25270 +2017-09-23 12:32 +0000 [0fad11f21c] Sean Bright - Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d + * app_stream_echo: Don't echo declined streams -2016-11-03 13:45 +0000 [1504194215] Alexander Anikin + Discovered while experimenting with Cyber Mega Phone 2K Ultimate Dynamic + Edition after accepting the audio request but declining the video one. - * chan_ooh323: Fix infinite loop on read second part of H.225 packet + Change-Id: Iaa86d41fccfbc1b559a30ccf740d78a3b5f8a98c - Fix logic on read second part of H.225 packet. There was infinite loop on - wrong connections due to read before poll. +2017-09-22 17:49 +0000 [601e0c563f] Joshua Colp - Change-Id: I42b4bf75c46e4a5c5df5c5ca1f0bd74b8944e7ff + * res_pjsip_session: Reduce (and improve) SDP renegotiation. -2016-11-03 11:55 +0000 [78dc6ceaf6] George Joseph + When pruning a request to change the topology of a channel be + more intelligent about the resulting topology that is actually + used for SDP renegotiation. - * pjproject_bundled: Fix issue with libasteriskpj needing libresample + In a case where a stream has not already been negotiated we + don't need to renegotiate and offer a declined stream. This can + occur if something in Asterisk (such as ConfBridge) requests + to add video to a PJSIP channel that has no video codecs configured. + In this case since the stream did not already exist we can safely + remove the stream from the requested topology, resulting in no + renegotiation occurring. - libresample is only needed by pjproject if we're building pjsua, which - we only do if TEST_FRAMEWORK is selected. It's required by pjsua to - process audio which is needed by some testsuite tests. Unfortunately, - pjproject relies on a newer version of libresample than the version - that ships by most distros so we need to compile the version that's - bundled with pjproject. Since we only need it for pjsua, we DON'T want - it's symbols exposed when we actually build asterisk. + In a case where a renegotiation is requested with a codec that is + not supported we can reuse the formats of the existing stream if + it exists to ensure that the stream continues to flow, instead of + removing it. - There was a problem however... TEST_FRAMEWORK is only known AFTER we've - already run ./configure on both asterisk and pjproject but pjproject's - ./configure needs to test it to know whether to set up to build - libresample or not. The previous way of figuring this out was to - always tell ./configure "yes" but not actually build the library. This - caused an issue where building libasteriskpj was being told to include - libresample but it wasn't actually there. + Change-Id: I636540798d55922377318fe619c510fb6ed125fb - The solution is to still do a default pjproject configure during an - asterisk ./configure but if makeopts or menuselect.makeopts changes - subsequently, we now reconfigure pjproject, taking into account the - current state of TEST_FRAMEWORK. Previously, if makeopts or - menuselect.makeopts changed, only a recompile of pjproject was done. +2017-09-22 15:29 +0000 [36690c26f8] Kevin Harwell - Change-Id: I9b5d84c61384a3ae07fe30e85c49698378cc4685 + * res_pjsip_session: Don't end session when receiving a 500 on a reinvite -2016-11-01 19:48 +0000 [0904c1f4cc] Sebastian Gutierrez + During a reinvite, if a remote endpoint error occurs and it returns a 500 the + session would end. This patch makes it so the session is not terminated, but + continues as it was. - * chan_sip: add missing account code + The reason for this is because some endpoints may send non session terminating + "server errors" like a failed codec negotiation. So in this case instead of + ending the call it can hopefully continue. In the case of a real server error + the session is already "doomed", will be known soon enough and appropriately + ended by Asterisk later. - Added missing account to AMI event of sip show peers + Change-Id: Ifeedae86b8cb44b92d52c79046522ec5f0aff1d5 - ASTERISK-26176 #close +2017-09-22 10:02 +0000 [ebd0a4bebf] Sean Bright - Change-Id: Ieb6c2c80a838a1b59c82103eba4c63ba238dc482 + * res_pjsip: Use ast_sip_is_content_type() where appropriate -2016-11-02 09:15 +0000 [4de5454ef1] Joshua Colp + Change-Id: If3ab0d73d79ac4623308bd48508af2bfd554937d - * app_dial: Fix incorrect device state when channel is picked up. +2017-09-21 09:47 +0000 [6c0e13da22] George Joseph - Given the scenario where multiple channels are dialed using Dial() - but the caller is picked up using PickupChan() all outgoing channels - except the channel specified to PickupChan() would be marked - as ringing until the call had been hung up. + * res_pjsip_session/BUNDLE: Handle no audio codecs on endpoint - When using the PickupChan application the channel executing the - application is swapped into place of another channel. As part - of this process the channel is answered. The Dial application - has explicit logic which checks if the channel is answered, - cancels all other outgoing channels, and bridges. This logic is - different than the normal logic that is executed when an outgoing - channel is answered. This different logic failed to publish dial - events stating that the other outgoing channels had been canceled. - As a result references to the outgoing channels were held onto by - the dial masquerade process until the call had been ended and - the channels had gone away. This would result in the channels - appearing in the "core show channels" list despite not being present - anymore and would also result in incorrect device state. + When an INVITE came in with both audio and video streams but there + were no audio codecs defined for the endpoint, we weren't declining + the audio stream. Since it's usually the first/transport stream, + when the video stream was processed and tried to use the transport, + it was empty and caused a crash. We now decline the the stream if + there are no matching codecs so when the video stream is processed, + it's now the first/transport stream and processes normally. - This change makes it so that this logic also publishes - dial events stating that the other outgoing channels have been - canceled. + Change-Id: Ic854eda54c95031e66b076ecfae3041d34daa692 - ASTERISK-26549 +2017-09-19 14:28 +0000 [7c93982e9d] Richard Mudgett - Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f + * res_rtp_asterisk.c: Fix bundled SSRC handling. -2016-09-13 04:08 +0000 [9ac53877f6] Alexander Traud + Assertions in the v15+ AST-2017-008 patches found that we were not + handling the case if the incoming SDP did not specify the required SSRC + attributes for bundled to work. - * rtp_engine: Allow more than 32 dynamic payload types. + * Be strict on matching SSRC for bundled instances including the parent + instance. If the SSRC doesn't match then discard the packet. Bundled has + to tell us in the SDP signaling what SSRC to expect. Otherwise, we will + not know how to find the bundled instance structure. - Since adding all remaining rates of Signed Linear (ASTERISK-24274), SILK - (Gerrit 3136) and Codec 2 (ASTERISK-26217), no RTP Payload Type is left in the - dynamic range (96-127). RFC 3551 section 3 allows to reassign other ranges. - Consequently, when the dynamic range is exhausted, this change utilizes payload - types in the range between 35 and 63 giving room for another 29 payload types. + Change-Id: I152830bbff71c662408909042068fada39e617f9 - ASTERISK-26311 #close +2017-09-16 09:19 +0000 [f2985e3106] Joshua Colp - Change-Id: I7bc96ab764bc30098a178b841cbf7146f9d64964 + * bridge: Change participant SFU streams when source streams change. -2016-11-02 05:05 +0000 [6a99f007d6] Tzafrir Cohen + Some endpoints do not like a stream being reused for a new + media stream. The frame/jitterbuffer can rely on underlying + attributes of the media stream in order to order the packets. + When a new stream takes its place without any notice the + buffer can get confused and the media ends up getting dropped. - * autoconf: more variants for OSARCH linux-gnu + This change uses the SSRC change to determine that a new source + is reusing an existing stream and then bridge_softmix renegotiates + each participant such that they see a new media stream. This + causes the frame/jitterbuffer to start fresh and work as expected. - There are quite a few odd GNU/Linux platforms. Just call all of them - linux-gnu. + ASTERISK-27277 - Specifically this fixes building the Debian platforms mips64el and x32. - And maybe also others. + Change-Id: I30ccbdba16ca073d7f31e0e59ab778c153afae07 - ASTERISK-26546 #close +2017-09-20 10:45 +0000 [971548405b] George Joseph - Change-Id: I06ec4bd7f0ee1c84b6b24d81538223b07c4174b1 + * res_pjsip_session: Change some asserts to warning/debug messages -2016-11-01 13:13 +0000 [f29b8d62bb] Richard Mudgett + There was an issue reported where an SDP received on a 183 Session + Progress message caused a crash because the pending streams had + already been processed when the OK was received. In that case the + pending topology was legitimately NULL. There was an assert for an + incorrect number of streams in the topology but not one for + topology being NULL. In any case, if you're not in dev-mode the + asserts don't do anything and since the scenario is legit, the + asserts weren't appropriate anyway. - * bundled pjproject: Fix DNS write to freed memory. + * Changed several asserts to warning or debug messages and return + codes as appropriate. - PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS - patch. + ASTERISK-27264 + Reported by: Daniel Heckl - The patch below fixes a write to freed memory under cartain DNS lookup - conditions. + Change-Id: I58daaa9d2938fa980857ab3ec41925ab5ff9c848 - 0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch +2017-09-19 05:22 +0000 [cad68137a7] Rodrigo Ramírez Norambuena - ASTERISK-26516 - Reported by: Richard Mudgett + * res_config_pgsql: Fix removed support to previous for versions PostgreSQL 9.1 - Change-Id: Ifdfae9ecf1e41b53080f33aab44ce1a220f349c5 + In PostgreSQL 9.1 the backslash are string literals and not the escape + of characters. -2016-11-01 06:56 +0000 [6233e146c6] Joshua Colp + In previous issue ASTERISK_26057 was fixed the use of escape LIKE but the + support for old version of Postgresql than 9.1 was dropped. The sentence + before make was "ESCAPE '\'" but in version before than 9.1 need it to be + as follow "ESCAPE '\\'". - * res_pjsip_sdp_rtp: Limit number of formats to defined maximum. + ASTERISK-27283 - The res_pjsip_sdp_rtp module did not restrict the number of - formats added to a media stream in the SDP to the defined - limit. If allow=all was used with additional loaded codecs this - could result in the next media stream being overwritten some. + Change-Id: I96d9ee1ed7693ab17503cb36a9cd72847165f949 - This change restricts the module to limit it to the defined - maximum and also increases the maximum in our bundled pjproject. +2017-09-15 09:43 +0000 [e666051d79] Ben Ford - ASTERISK-26541 #close + * res_pjsip_session: Check for removed stream state. - Change-Id: I0dc5f59d3891246cafa2f3df5ec406f088559ee8 + When a sip session is refreshed, the stream topology is looped + through, checking each stream for compatible formats. This would + cause a crash if the stream state was AST_STREAM_STATE_REMOVED, + since the formats would never be set for this stream, causing + a NULL value to be returned from ast_stream_get_formats. This + commit adds a check for streams with removed states. -2016-10-31 17:35 +0000 [8060cd1ec1] Kevin Harwell + Also removed a stray semicolon. - * codecs.conf.sample: Add sample and option descriptions for codec_opus + Change-Id: Ic86f8b65a4a26a60885b28b8b1a0b22e1b471d42 - codecs.conf.sample was missing codec opus's configuration options, descriptions, - and examples. This patch adds the configuration options and examples to - codecs.conf.sample that can be used with codec_opus. +2017-09-19 05:44 +0000 [b6aa728a58] George Joseph - ASTERISK-26538 #close + * chan_pjsip: Ignore AST_CONTROL_STREAM_TOPOLOGY_CHANGED for now - Change-Id: I1d89bb5e01d3e3b5bd78951b8dd0ff077a83dc8b + chan_pjsip_indicate was missing a case for the recently added + AST_CONTROL_STREAM_TOPOLOGY_CHANGED condition and was returning an + error and causing the call to be hung up instead of just ignoring + it. -2016-10-20 07:27 +0000 [c30d677333] Matt Jordan + ASTERISK-27260 + Reported by: Daniel Heckl - * res/stasis: Add CLI commands for displaying/debugging ARI apps + Change-Id: I4fecbb00a0b8a853da85155065c1a6bddf235e80 - This patch adds three new CLI commands: - - ari show apps: list the registered ARI applications - - ari show app: show detailed information about an ARI application - - ari set debug: dump events being sent to an ARI application +2017-09-07 04:41 +0000 [6b7d5671d1] Jean Aunis - Note that while these CLI commands live in the res_stasis module, we use - the 'ari' family for these commands. This was done as most users of - Asterisk aren't aware of the semantic differences between ARI and - res_stasis, and some 'ari' CLI commands already exist. + * bridge : Fix one-way direct-media when early bridging with native_rtp - ASTERISK-26488 #close + When two channels were early bridged in a native_rtp bridge, the RTP description + on one side was not updated when the other side answered. + This patch forbids non-answered channels to enter a native_rtp bridge, and + triggers a bridge reconfiguration when an ANSWER frame is received. - Change-Id: I51ad6ff0cabee0d69db06858c13f18b1c513c9f5 + ASTERISK-27257 -2016-11-01 08:32 +0000 [2526dff94d] Grachev Sergey + Change-Id: If1aaee1b4ed9658a1aa91ab715ee0a6413b878df - * chan_sip: Incorrect display option Outbound reg. retry 403 +2017-09-18 09:51 +0000 [1e4c1cec7f] Alexander Traud - If in sip.conf (general section) set option register_retry_403=no, - the command "sip show settings" return value: - Outbound reg. retry 403:0 - If in sip.conf (general section) set option register_retry_403=yes, - the command "sip show settings" return value: - Outbound reg. retry 403:-1 + * res_srtp: lower log level of auth failures - * In static char "sip show settings" for "Outbound.reg. retry 403" - option use AST_CLI_YESNO + Previously, sRTP authentication failures were reported on log level WARNING. + When such failures happen, each RT(C)P packet is affected, spamming the log. + Now, those failures are reported at log level VERBOSE 2. Furthermore, the + amount is further reduced (previously all two seconds, now all three seconds). + Additionally, the new log entry informs whether media (RTP) or statistics (RTCP) + are affected. - ASTERISK-26476 #close + ASTERISK-16898 #close - Change-Id: I3c14272f05f1067bd2aeaa8b3ef9cf8fcb12dcf9 + Change-Id: I6c98d46b711f56e08655abeb01c951ab8e8d7fa0 -2016-11-01 04:18 +0000 [ed08811e64] Tzafrir Cohen +2017-09-19 10:38 +0000 [b748038230] George Joseph - * netsock.c: fix includes for HURD + * res_pjsip_pubsub: Check for Content-Type header in rx_notify_request - ASTERISK-25070 + pubsub_on_rx_notify_request wasn't checking for a null + Content-Type header before checking that it was + application/simple-message-summary. - Change-Id: I43bf94d2d36d3d8a8d0df40cd6c027d65a462814 + ASTERISK-27279 + Reported by: Ross Beer -2016-11-01 04:00 +0000 [69fed26deb] Tzafrir Cohen + Change-Id: Iec2a6c4d2e74af37ff779ecc9fd35644c5c4ea52 - * define PATH_MAX for HURD +2017-09-19 09:34 +0000 [a5f1d58fe1] David J. Pryke - PATH_MAX is not guaranteed to be defined. In parctice, all but the HURD - define it to a constant. It is indeed not safe to assume there won't be - longer paths and Asterisk generally does err safely on such cases. + * chan_sip: Expose read-only access to the full SIP INVITE Request-URI - So even for HURD we'll just pretend PATH_MAX is 4096. + Provide a way to get the contents of the the Request URI from the initial SIP + INVITE in dial plan function call. (In this case "${CHANNEL(ruri)}") - ASTERISK-25070 #close + ASTERISK-27278 + Reported by: David J. Pryke + Tested by: David J. Pryke - Change-Id: I53d10ba18c34c132bcb640a5fd8e0da1d9b22db3 + Change-Id: I1dd4d6988eed1b6c98a9701e0e833a15ef0dac3e -2016-10-31 16:12 +0000 [f27f837a9f] George Joseph +2017-09-19 07:53 +0000 [6fd3db51e8] Joshua Colp - * pjproject_bundled: Fix compile of pjsua so it handles audio + * app_confbridge: Only create a channel that records audio. - In order for pjsua and its python binding to actually negotiate - audio for the testsuite tests, it needs g711 and resample. The - pj* libraries themselves do not. Unfortunately, pjproject relies - on a brand new libresample that most distros don't ship so we need - to use the libresample already bundled with pjproject. Only the pjsua - executable and the _pjsua.so python library are linked with it so it - shouldn't interfere with asterisk itself. + This change makes it so that the conference recorder channel + that is created only contains audio formats and an audio stream. + This is because the underlying application used by ConfBridge to + record, MixMonitor, only allows recording audio. - Also it was pointed out that apply_patches couldn't handle multiple - patches that depended on each other during the dry-run, so the - dry-run was removed. + Having additional streams (and in particular a video stream) can + result in clients needlessly renegotiating to add a video stream + that will never receive video. - Change-Id: I24f397462b486dcdde0dcafe40e6c55a6593f098 + Change-Id: I89d38aedc9205eca7741d5435e73e73bb9de97a0 -2016-10-31 13:46 +0000 [1648ca06c3] Etienne Lessard +2017-09-19 06:34 +0000 [56f0d5fc0f] Rodrigo Ramírez Norambuena - * manager: Add documentation for NewConnectedLine event. + * res_config_pgsql: Add missing \n in debug log and update copyright year - The NewConnectedLine event has been added by commit fe7671f, but the - documentation was missing. + Change-Id: I4ba338ecbdecc6a814a902eddc4121c8ef3cda58 - ASTERISK-26537 #close +2017-09-13 14:14 +0000 [55567ee1d8] Sean Bright - Change-Id: I7fc331f18caa28492da9303e576f70884ca8c9e6 + * res_calendar: Plug memory leak and micro-optimization -2016-10-30 13:33 +0000 [273debd261] Corey Farrell + ast_variables_destroy is NULL safe, so there is no need to check its + argument before passing it. - * vector: Prevent NULL argument to memcpy. + ASTERISK-25524 #close + Reported by: Jesper - Headers declare that memcpy does not accept NULL argument for the first - two parameters. Add a conditional block to prevent memcpy and ast_free - from running on vectors with NULL element array. + Change-Id: Ib0f8057642e9d471960f1a79fd42e5a3ce587d3b - ASTERISK-26526 #close +2017-09-13 03:46 +0000 [1199927fc0] alex - Change-Id: I988a476bb5fcfcbd3f6d6c6b3e7769e4f9629b71 + * cdr_mysql.c: Apply cdrzone to start and answer -2016-10-29 10:19 +0000 [ad60927a40] Corey Farrell + Change-Id: I7de0a5adc89824a5f2b696fc22c80fc22dff36b0 - * astobj2: Declare private variable data_size for AO2_DEBUG only. +2017-08-25 17:01 +0000 [087f667ab1] Richard Mudgett - Every ao2 object contains storage for a private variable data_size, - though the value is never read if AO2_DEBUG is disabled. This change - makes the variable conditional, reducing memory usage. + * AST-2017-008: Improve RTP and RTCP packet processing. - ASTERISK-26524 #close + Validate RTCP packets before processing them. - Change-Id: If859929e507676ebc58b0f84247a4231e11da07f + * Validate that the received packet is of a minimum length and apply the + RFC3550 RTCP packet validation checks. -2016-10-28 14:55 +0000 [6feee22e09] Richard Mudgett + * Fixed potentially reading garbage beyond the received RTCP record data. - * bundled pjproject: Crashes while resolving DNS names. + * Fixed rtp->themssrc only being set once when the remote could change + the SSRC. We would effectively stop handling the RTCP statistic records. - PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS - patch. + * Fixed rtp->themssrc to not treat a zero value as special by adding + rtp->themssrc_valid to indicate if rtp->themssrc is available. - The patches below fix the DNS lookup race condition crash caused by - attempting to send the same message twice for the single DNS lookup. + ASTERISK-27274 - 0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch - 0006-r5473-svn-backport-Fix-pending-query.patch + Make strict RTP learning more flexible. - The patch below removes a cached DNS response from the hash table when - another thread is referencing the old entry. The table still contained - the entry when it was destroyed which can result in inexplicable crashes. + Direct media can cause strict RTP to attempt to learn a remote address + again before it has had a chance to learn the remote address the first + time. Because of the rapid relearn requests, strict RTP could latch onto + the first remote address and fail to latch onto the direct media remote + address. As a result, you have one way audio until the call is placed on + and off hold. - 0006-r5475-svn-backport-Remove-DNS-cache-entry.patch + The new algorithm learns remote addresses for a set time (1.5 seconds) + before locking the remote address. In addition, we must see a configured + number of remote packets from the same address in a row before switching. - ASTERISK-26344 #close - Reported by: Ian Gilmour + * Fixed strict RTP learning from always accepting the first new address + packet as the new stream. - ASTERISK-26387 #close - Reported by: Harley Peters + * Fixed strict RTP to initialize the expected sequence number with the + last received sequence number instead of the last transmitted sequence + number. - Change-Id: I17fde80359e66f65a91341ceca58d914d0f61cc4 + * Fixed the predicted next sequence number calculation in + rtp_learning_rtp_seq_update() to handle overflow. -2016-10-28 16:59 +0000 [12bdde6a6c] George Joseph + ASTERISK-27252 - * pjproject_bundled: Fix issue where "/version.mak" wasn't found + Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c - main/Makefile includes third-party/pjproject/build.mak but - doesn't set PJDIR beforehand so "include $(PJDIR)/version.mak" - evaluates to "/version.mak". Fix is to set PJDIR in main/Makefile - before the include. +2017-09-13 16:23 +0000 [d178f497d2] George Joseph - Change-Id: I0f7c67d60209049056fe9c4b041bf0463aa95604 + * res_pjsip: Filter out non SIP(S) requests -2016-10-28 13:30 +0000 [9d8b9b6ca5] Matt Krokosz + Incoming requests with non sip(s) URIs in the Request, To, From + or Contact URIs are now rejected with + PJSIP_SC_UNSUPPORTED_URI_SCHEME (416). This is performed in + pjsip_message_filter (formerly pjsip_message_ip_updater) and is + done at pjproject's "TRANSPORT" layer before a request can even + reach the distributor. - * res_pjsip_outbound_publish: Fix crash when publishing device state. + URIs read by res_pjsip_outbound_publish from pjsip.conf are now + also checked for both length and sip(s) scheme. Those URIs read + by outbound registration and aor were already being checked for + scheme but their error messages needed to be updated to include + scheme failure as well as length failure. - While publishing device state between multiple instances of Asterisk, - a crash will sporadically occur under high CPS which looks to be a - race condition operating on the publisher queue. + Change-Id: Ibb2f9f1d2dc7549da562af4cbd9156c44ffdd460 - ASTERISK-26506 +2017-09-14 07:54 +0000 [01f2220bec] Joshua Colp - Change-Id: I28da25d346deb358eff1d563485cabc433ce1ed6 + * tcptls: Change error message to debug. -2016-10-27 21:49 +0000 [d6ad867897] Corey Farrell + The Websocket implementation will steal the underlying stream of + TCP/TLS sessions. This results in an error message being output + about a stream not being present when in reality this is actually + fine. - * Fix shutdown crash caused by modules being left open. + This change moves it to a debug message instead. - It is only safe to run ast_register_cleanup callbacks when all modules - have been unloaded. Previously these callbacks were run during graceful - shutdown, making it possible to crash during shutdown. + Change-Id: I66cc639080b4b4599beadb4faa7d313f2721d094 - ASTERISK-26513 #close +2017-09-13 14:08 +0000 [d8112cd98b] Sean Bright - Change-Id: Ibfa635bb688d1227ec54aa211d90d6bd45052e21 + * res_calendar: Various fixes -2016-10-28 09:50 +0000 [badd38f031] Rusty Newton + * The way that we were looking at XML elements for CalDAV was extremely + fragile, so use SAX2 for increased robustness. - * SAC documentation: don't specify transports for endpoints and registrations + * Don't complain about a 'channel' not be specified if autoreminder is + not set. Assume that if 'channel' is not set, we don't want to be + notified. - Removing explicit transport definition for endpoints and registrations. It - isn't necessary and isn't generally advised. + * Fix some truncated CLI output in 'calendar show calendar' and make the + 'Autoreminder' description a bit more clear - ASTERISK-26514 #close + ASTERISK-24588 #close + Reported by: Stefan Gofferje - Change-Id: Ifdec5e631962438a4683600968dfa4bfd15909fb + ASTERISK-25523 #close + Reported by: Jesper -2016-10-18 09:06 +0000 [0646b48ece] Tzafrir Cohen + Change-Id: I200d11afca6a47e7d97888f286977e2e69874b2c - * chan_dahdi: remove by_name support +2017-09-13 09:38 +0000 [eec0396395] Sean Bright - Support for referring to DAHDI channels by logical names was added in - (FIXME: when? Asterisk 11? 1.8?) and was intended to be part of support - of refering to channels by name. + * chan_rtp: Use μ-law by default instead of signed linear - While technically usable, it has never been properly supported in - dahdi-tools, as using it would require many changes at the Asterisk - level. Instead logical mapping was added at the kernel level. + Multicast/Unicast RTP do not use SDP so we need to use a format that + cleanly maps to one of the static RTP payload types. Without this + change, an Originate to a Multicast or Unicast channel without a format + specified would produce no audio on the receiving device. - Thus it seems that refering to DAHDI channels by name is not really used - by anyone, and therefore should probably be removed. + ASTERISK-21399 #close + Reported by: Tzafrir Cohen - Change-Id: I7d50bbfd9d957586f5cd06570244ef87bd54b485 + Change-Id: I97e332b566e85da04b0004b9b0daae746cfca0e3 -2016-10-26 18:48 +0000 [4f45d62653] George Joseph +2017-09-11 05:46 +0000 [446d48fd49] George Joseph - * pjproject_bundled: Remove usage of tar's --strip-components option + * res_pjsip: Add handling for incoming unsolicited MWI NOTIFY - Older versions of tar don't support the --strip-components option so - instead of doing 'tar --strip-components=1 -C source', we now just - untar to the tarball's root directory (pjproject-) and - rename that directory to 'source'. + 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. - Also fixed an issue where the pjproject source directory is a hard - coded absolute pathname. + res_pjsip_pubsub has a new handler "pubsub_on_rx_mwi_notify_request" + that parses a simple-message-summary body and, if + endpoint->incoming_mwi_account is set, calls ast_publish_mwi_state + with the voice-message counts from the message. - ASTERISK-26510 #close - ASTERISK-22480 #close + Change-Id: I08bae3d16e77af48fcccc2c936acce8fc0ef0f3c - Change-Id: I9ec92952507a91ff4e4d01e0149e09fd8e8f32b0 +2017-09-08 21:41 +0000 [4889574ff5] Richard Mudgett -2016-10-26 21:40 +0000 [a6e5bae3ef] Corey Farrell + * res_rtp_asterisk.c: Add doxygen to RTCP payload types. - * Remove ASTERISK_REGISTER_FILE. + Change-Id: I3f20ce428777cc4ce9c13b2f808d29ff8c873998 - ASTERISK_REGISTER_FILE no longer has any purpose so this commit removes - all traces of it. +2017-09-11 05:52 +0000 [f9bad3bd61] George Joseph - Previously exported symbols removed: - * __ast_register_file - * __ast_unregister_file - * ast_complete_source_filename + * alembic: Fix typo in add_auto_info_to_endpoint_dtmf_mode - This also removes the mtx_prof static variable that was declared when - MTX_PROFILE was enabled. This variable was only used in lock.c so it - is now initialized in that file only. + The downgrade function was missing "_v2" at the end of the + alter column type. - ASTERISK-26480 #close + Change-Id: Iaa9bcef48d6f3590ce07a61342d8e66f00263d8e - Change-Id: I1074af07d71f9e159c48ef36631aa432c86f9966 +2017-09-10 06:17 +0000 [680aba21ec] Walter Doekes -2016-10-27 08:07 +0000 [6993f3c9c3] Joshua Colp + * res/res_pjsip: Fix localnet checks in pjsip, part 2. - * res_pjsip_caller_id: Fix crash on session timers UPDATE on inbound calls. + In 45744fc53, I mistakenly broke SDP media address rewriting by + misinterpreting which address was checked in the localnet comparison. - The res_pjsip_caller_id module wrongly assumed that a - saved From header would always exist on sessions. This - is true until an inbound call is received and a session - timer causes an UPDATE to be sent. In this case there will - be no saved From header and a crash will occur. This change - makes it fall back to the From header of the outgoing request - if no saved From header is present. + Instead of checking the remote peer address to decide whether we need + media address rewriting, we check our local media address: if it's + local, then we rewrite. This feels awkward, but works and even made + directmedia work properly if you set local_net. (For the record: for + local peers, the SDP media rewrite code is not called, so the + comparison does no harm there.) - ASTERISK-26307 #close + ASTERISK-27248 #close - Change-Id: Iccc3bc8d243b5ede9b81abf960292930c908d4fa + Change-Id: I566be1c33f4d0a689567d451ed46bab9c3861d4f -2016-10-26 07:51 +0000 [95062fe220] Joshua Colp +2017-09-08 21:19 +0000 [c8d53a1638] Rodrigo Ramírez Norambuena - * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS. + * cdr_pgsql: Refactor magic number by definition for version - When executing the MailboxExists dialplan application and - MAILBOX_EXISTS dialplan function the passed in temporary voice - mailbox was not cleared, causing it to try to free garbage. + Change-Id: I43f25976aa3069793ddbe0086833965a6fb0a518 - ASTERISK-26503 #close +2017-09-05 11:13 +0000 [e9a81157ac] Florian Floimair - Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3 + * alembic: Add support for MS-SQL -2016-10-23 07:38 +0000 [aed6c219a3] Joshua Colp + MS-SQL has no native Enum-type support and therefore + needs to work with constraints. + Since these constraints need unique names the suggested approach + referenced in the following alembic documentation has been applied: + http://bit.ly/2x9r8pb - * pjsip: Fix a few media bugs with reinvites and asymmetric payloads. + ASTERISK-27255 #close - When channel format changes occurred as a result of an RTP - re-negotiation the bridge was not informed this had happened. - As a result the bridge technology was not re-evaluated and the - channel may have been in a bridge technology that was incompatible - with its formats. The bridge is now unbridged and the technology - re-evaluated when this occurs. + Change-Id: I8b579750dae0c549f1103ee50172644afb9b2f95 - The chan_pjsip module also allowed asymmetric codecs for sending - and receiving. This did not work with all devices and caused one - way audio problems. The default has been changed to NOT do this - but to match the sending codec to the receiving codec. For users - who want asymmetric codecs an option has been added, asymmetric_rtp_codec, - which will return chan_pjsip to the previous behavior. +2017-09-05 07:31 +0000 [525f84bb35] Jacek Konieczny - The codecs returned by the chan_pjsip module when queried by - the bridge_native_rtp module were also not reflective of the - actual negotiated codecs. The nativeformats are now returned as - they reflect the actual negotiated codecs. + * func_cdr: honour 'u' flag on dummy channel - ASTERISK-26423 #close + Fixes ${CDR(...,u)} when used in cdr_custom.conf - Change-Id: I6ec88c6e3912f52c334f1a26983ccb8f267020dc + ASTERISK-27165 #close -2016-10-26 06:32 +0000 [7925f60cd9] Joshua Colp + Change-Id: Ia4e0b6ba93e03d27886354c279737790e2cd6a83 - * res_pjsip_sdp_rtp: Fix address family of explicit media_address. +2017-09-06 10:50 +0000 [2b3f903e6f] Sean Bright - When an explicit media_address is provided the address family - in the SDP needs to be set to reflect it. + * app_waitforsilence: Cleanup & don't treat missing frames as 'noise' - ASTERISK-26309 + * WaitForSilence completes successfully if it receives no media in the + specified timeout, but when acting as WaitForNoise that logic needs + to be reversed. - Change-Id: Ib9350cc91c120eb2f96f0623d3907d12af67eb79 + * Use standard argument parsing macros and add some error checking for + invalid values. -2016-10-25 11:20 +0000 [802bbf8752] George Joseph + * The documentation indicated that the first argument to both + WaitForSilence and WaitForNoise was required when it was not. Update + the documentation to reflect that. - * test_astobj2_thrash: Fix multithreaded issues + * Wrap up some behavior in structs to avoid boolean checks all over the + place. - The test uses 4 threads to grow, count, lookup and shrink 15K objects - in a container. If there's only 1 execution engine available, the test - will complete in <50ms. If each threads gets its own execution engine, - the test may timeout after 60 seconds because the count thread does a - locked ao2_callback on the whole container in a tight loop with only - a sched_yield to give up time. The lock contention makes the test - execution times wildly variable and mostly timeout. 2 execution - engines are OK, 3 results in about 33% failure rate and >=4 causes - a 80% failure rate. + ASTERISK-24066 #close + Reported by: M vd S - To fix, the sched_yield was changed to a usleep(500). + Change-Id: I01d40adc5b63342bb5018a1bea2081a0aa191ef9 - Also, the number of buckets specified for the container was an even - number so that was changed to the next prime number greater than - (MAX_HASH_ENTRIES / 100). That's 151 currently. +2017-09-06 16:05 +0000 [5553644284] Scott Griepentrog - Change-Id: I50cd2344161ea61bfe4b96d2a29a6ccf88385c77 + * chan_sip: when getting sip pvt return failure if not found -2016-10-18 09:04 +0000 [2b9ad3a5f7] Alexei Gradinari + In handle_request_invite, when processing a pickup, a call + is made to get_sip_pvt_from_replaces to locate the pvt for + the subscription. The pvt is assumed to be valid when zero + is returned indicating no error, and is dereferenced which + can cause a crash if it was not found. - * chan_pjsip: segfault on already disconnected session + This change checks the not found case and returns -1 which + allows the calling code to fail appropriately. - On heavy loaded system the TCP/TLS incoming calls could be - disconnected by pjproject while these calls are being - processed by asterisk. + ASTERISK-27217 #close + Reported-by: Bryan Walters - This patch uses functions pjsip_inv_add_ref/pjsip_inv_dec_ref - to inform pjproject that an INVITE session is in use. + Change-Id: I6bee92b8b8b85fcac3fd66f8c00ab18bc1765612 - ASTERISK-26482 #close +2017-09-06 13:38 +0000 [23571f31ac] Richard Mudgett - Change-Id: Ia2e3e2f75358cdb530252a9ce158af3d5d9fdf33 + * stasis/control.c: Fix set_interval_hook() ref leak. -2016-10-10 11:49 +0000 [01d1d3763f] Badalyan Vyacheslav + Change-Id: Ia0edb7dc0dbbb879c079ff7000f1b722d86ce7dc - * cdr_radius,cel_radius: Fix old memleak in unload +2017-09-01 05:17 +0000 [94091c7b96] George Joseph - - Call "rc_openlog" optional. If you do not call, - you will simply NULL instead of a name. + * stasis/control: Fix possible deadlock with swap channel - - On the one PID can be only one syslog channel. - And it can already be run in logger.c + If an error occurs during a bridge impart it's possible that + the "bridge_after" callback might try to run before + control_swap_channel_in_bridge has been signalled to continue. + Since control_swap_channel_in_bridge is holding the control lock + and the callback needs it, a deadlock will occur. - - Calling rc_openlog we assigns a new name for - the channel syslog. This unexpected behavior for logger.c. + * control_swap_channel_in_bridge now only holds the control + lock while it's actually modifying the control structure and + releases it while the bridge impart is running. + * bridge_after_cb is now tolerant of impart failures. - Most lesser evil, is to agree on a NULL name syslog - if the channel was not launched in logger.c. + Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3 - It also solves the problem of memory leaks. +2017-09-06 05:23 +0000 [67a2ca31f5] Vitezslav Novy - ASTERISK-26455 #close + * chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE - Change-Id: Ic17c38de67583e971d78fe18807d1a9faf8f0afd + If directmedia=yes is configured, when call is answered, Asterisk sends reINVITE + to both parties to set up media path directly between the endpoints. + In this reINVITE msg SDP origin line (o=) contains IP address of endpoint + instead of IP of asterisk. This behavior violates RFC3264, sec 8: + "When issuing an offer that modifies the session, + the "o=" line of the new SDP MUST be identical to that in the + previous SDP, except that the version in the origin field MUST + increment by one from the previous SDP." + This patch assures IP address of Asterisk is always sent in + SDP origin line. -2016-10-24 10:55 +0000 [16c23b57c7] George Joseph + ASTERISK-17540 + Reported by: saghul - * pjproject_bundled: Fixed various build issues + Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e - * CFLAGS is now properly set when using older gcc. - * All third-party pjproject targets have been removed. This fixes - an issue with older libsrtp in some distros. - * Manually removing the source directory now causes a rebuild. - * EXTERNALS_CACHE_DIR is now properly checked. - * Whitespace fixes. +2017-09-06 07:54 +0000 [0cbb17ce8f] George Joseph - Change-Id: I98fec6847efc5602a9f41cb95096fd660a49fa60 + * alembic: Fix enum creation for dtls_fingerprint -2016-10-24 14:13 +0000 [1d277e7cb6] Pascal Cadotte Michaud + Change-Id: Ic061c5066a146616a68376881c7e4cf6d6e7e7db - * typo: s/paranthesis/parenthesis/ in a comment +2017-09-05 11:08 +0000 [a133c5cc53] Florian Floimair - Change-Id: I7c1f4eb051177ee22cbe97e063d4a3effe29be30 + * alembic: fix erroneous commit for add_prune_on_boot -2016-09-19 06:13 +0000 [403c4f5833] Joshua Colp + Added include for postgresql ENUM type and + redefined values in the same way as in the + other migration scripts. - * pjsip: Support dual stack automatically. + ASTERISK-27254 #close - This change adds support for dual stack automatically. No - configuration is required and the IP address and version - in the SIP messages and SDP will be automatically changed - based on the transport over which the message is being - sent. RTP usage has also been changed to listen on both - IPv4 and IPv6 simultaneously to allow media to flow, and - to allow ICE support on both simultaneously. This also - allows failover between IPv6 and IPv4 to work as expected. + Change-Id: Id667304cdf3891b1c2f7d35fab3e2a84026159fa - ASTERISK-26309 #close +2017-09-06 03:02 +0000 [2d395793b7] Alexander Traud - Change-Id: I235a421d8f9a326606d861b449fa6fe3a030572d + * res_srtp: Add support for libsrtp2.1. -2016-10-19 12:05 +0000 [3bd76dd679] Mark Michelson + Asterisk is able to use libSRTP 2.0.x. However since libSRTP 2.1.x, the macro + SRTP_AES_ICM got renamed to SRTP_AES_ICM_128. Beside to still compile with + previous versions of libSRTP, this change allows libSRTP 2.1.x as well. - * ARI: Add duplicate channel ID checking for channel creation. + ASTERISK-27253 #close - This is similar to what is done for origination, but for the 14 and up - channel creation method. When attempting to create a channel, if a - channel ID is specified and a channel already exists with that ID, then - a 409 is returned. + Change-Id: I2e6eb3c3bc844fee8a624060a2eb6f182dc70315 - Change-Id: I77f9253278c6947939c418073b6b31065489187c +2017-09-05 09:35 +0000 [bfc29de3ea] Ben Ford -2016-10-17 14:18 +0000 [e459b8dadf] Mark Michelson + * chan_pjsip: Suppress frame warnings. - * ARI: Detect duplicate channel IDs + When rtp_keepalive is on for a PJSIP endpoint dialing to another + Asterisk instance also using PJSIP, Asterisk will continue to print + warning messages about not being able to send frames of a certain + type. This suppresses that warning message. - ARI and AMI allow for an explicit channel ID to be specified - when originating channels. Unfortunately, there is nothing in - place to prevent someone from using the same ID for multiple - channels. Further complicating things, adding ID validation to channel - allocation makes it impossible for ARI to discern why channel allocation - failed, resulting in a vague error code being returned. + Change-Id: I0332a05519d7bda9cacfa26d433909ff1909be67 - The fix for this is to institute a new method for channel errors to be - discerned. The method mirrors errno, in that when an error occurs, the - caller can consult the channel errno value to determine what the error - was. This initial iteration of the feature only introduces "unknown" and - "channel ID exists" errors. However, it's possible to add more errors as - needed. +2017-09-05 10:05 +0000 [c3a6c8fd2d] Sean Bright - ARI uses this feature to determine why channel allocation failed and can - return a 409 error during origination to show that a channel with the - given ID already exists. + * formats: Restore previous fread() behavior - ASTERISK-26421 + Some formats are able to handle short reads while others are not, so + restore the previous behavior for the format modules so that we don't + have spurious errors when playing back files. - Change-Id: Ibba7ae68842dab6df0c2e9c45559208bc89d3d06 + ASTERISK-27232 #close + Reported by: Jens T. -2016-10-19 17:53 +0000 [e03364c40a] snuffy + Change-Id: Iab7f52b25a394f277566c8a2a4b15a692280a300 - * Fix issue with CLI not returning to prompt after running "features show" +2017-09-05 09:16 +0000 [f856d9b42b] Walter Doekes - ASTERISK-26444 #close + * res/res_pjsip: Standardize/fix localnet checks across pjsip. - Change-Id: I91d645b7e6e5dba35f8c410df2be77a8c0e3acb8 + In 2dee95cc (ASTERISK-27024) and 776ffd77 (ASTERISK-26879) there was + confusion about whether the transport_state->localnet ACL has ALLOW or + DENY semantics. -2016-10-04 18:24 +0000 [3e96d491d0] Michael Walton + For the record: the localnet has DENY semantics, meaning that "not in + the list" means ALLOW, and the local nets are in the list. - * res_rtp_asterisk: Add ice_blacklist option + Therefore, checks like this look wrong, but are right: - Introduces ice_blacklist configuration in rtp.conf. Subnets listed in the - form ice_blacklist = , e.g. ice_blacklist = - 192.168.1.0/255.255.255.0, are excluded from ICE host, srflx and relay - discovery. This is useful for optimizing the ICE process where a system - has multiple host address ranges and/or physical interfaces and certain - of them are not expected to be used for RTP. Multiple ice_blacklist - configuration lines may be used. If left unconfigured, all discovered - host addresses are used, as per previous behavior. + /* See if where we are sending this request is local or not, and if + not that we can get a Contact URI to modify */ + if (ast_apply_ha(transport_state->localnet, &addr) != AST_SENSE_ALLOW) { + ast_debug(5, "Request is being sent to local address, " + "skipping NAT manipulation\n"); - Documention in rtp.conf.sample. + (In the list == localnet == DENY == skip NAT manipulation.) - ASTERISK-26418 #close + And conversely, other checks that looked right, were wrong. - Change-Id: Ibee88f80d7693874fda1cceaef94a03bd86012c9 + This change adds two macro's to reduce the confusion and uses those + instead: -2016-10-18 16:30 +0000 [f14ef51ead] Mark Michelson + ast_sip_transport_is_nonlocal(transport_state, addr) + ast_sip_transport_is_local(transport_state, addr) - * CDR: Alter destruction pattern for CDR chains. + ASTERISK-27248 #close - CDRs form chains. When the root of the chain is destroyed, it then - unreferences the next CDR in the chain. That CDR is destroyed, and it - then unreferences the next CDR in the chain. This repeats until the end - of the chain is reached. While this typically does not cause any sort of - problems, it is possible in strange scenarios for the CDR chain to grow - way longer than expected. In such a scenario, the destruction pattern - can result in a stack overflow. + Change-Id: Ie7767519eb5a822c4848e531a53c0fd054fae934 - This patch fixes the problem by switching from a recursive pattern to an - iterative pattern for destruction. When the root CDR is destroyed, it is - responsible for iterating over the rest of the CDRs and unreferencing - each one. Other CDRs in the chain, since they are not the root, will - simply destroy themselves and be done. This causes the stack depth not - to increase. +2017-09-05 08:39 +0000 [68bcfccd52] Joshua Colp - ASTERISK-26421 #close - Reported by Andrew Nagy + * res_pjsip_session: Preserve stream name during renegotiation. - Change-Id: I3ca90c2b8051f3b7ead2e0e43f60d2c18fb204b8 + Stream names within Asterisk can have meaning so when an externally + initiated renegotiation occurs we need to preserve the name of + the stream if it already exists. -2016-10-18 11:51 +0000 [f31772ec20] Joshua Colp + Change-Id: I29f50d0cc7f3238287d6d647777e76e1bdf8c596 - * ari: Update model validator based on addition of asterisk_id. +2017-09-05 07:50 +0000 [0ec95515f3] George Joseph - ASTERISK-26470 + * res_calendar*, res_smdi: Move to "extended" support - Change-Id: I9c386f7a1c7d969161b28f189eb6298bbc5b7541 + Change-Id: I31eee8be30c6b0fc3dadb31111dd47742da8892d -2016-09-11 10:13 +0000 [18a6f250e2] Tzafrir Cohen +2017-09-05 05:23 +0000 [9b3f6d26bd] George Joseph - * menuselect: invalid test for GTK2 + * res_pjsip_t38: Make t38_reinvite_response_cb tolerant of NULL channel - configuire.ac was only checking for the existence of pkg-config - and not the gtk2 package itself. Now it calls AST_PKG_CONFIG_CHECK - for gtk+-2.0. + t38_reinvite_response_cb can get called by res_pjsip_session's + session_inv_on_tsx_state_changed in situations where session->channel + is NULL. If it is, the ast_log warning segfaults because it tries + to get the channel name from a NULL channel. - ASTERISK-26356 #close + * Check session->channel and print "unknown channel" when it's NULL. - Change-Id: I93e9d0166341f0e7f84b52955bb6f81da42f2ef6 + ASTERISK-27236 + Reported by: Ross Beer -2016-10-18 03:01 +0000 [a43ee21211] Alexander Traud + Change-Id: I4326e288d36327f6c79ab52226d54905cdc87dc7 - * cli: Auto-complete File not Module for core set debug. +2017-09-01 16:17 +0000 [60b44d1e38] Sean Bright - Since Asterisk 1.8, the command "core set debug" on the command-line interface - asks not for a file (.c) but a module name. This change shows modules (.so) on - the auto-completion via a tabulator or the question mark. Now, when you - partially type a module name, TAB or ?, you get the correct candidiates. + * rtp_engine: Prevent possible double free with DTLS config - ASTERISK-26480 + ASTERISK-27225 #close + Reported by: Richard Kenner - Change-Id: I1213f1dd409bd4ff8de08ad80cb0c73cafb1bae0 + Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89 -2016-08-12 11:22 +0000 [dce31f90ba] frahaase +2017-09-01 13:15 +0000 [ef8eb9d11b] Sean Bright - * Binaural synthesis (confbridge): On/off setting for binaural synthesis. + * chan_ooh323: Fix confusing indentation warning - Adds setting to confbridge.conf (binaural_active) that determines if binaural - synthesis can be available in bridge_softmix. + ASTERISK-27177 #close + Reported by: Tzafrir Cohen - ASTERISK-26292 + Change-Id: I40311c404edb2302a7543ad5ca7a06b2a38f2d97 - Change-Id: I59dfcb8e55fe1df4ef32045882fea5bb58fc71db +2017-09-01 09:51 +0000 [1bdbefbe76] Sean Bright -2016-10-17 11:39 +0000 [2a808b2fa6] George Joseph + * app_directory: Handle a NULL mailbox without crashing - * pjproject_bundled: Add patch to address SSL crash + ASTERISK-27241 #close + Reported by: David Moore - Addresses crashes when an attempt is made to operate on an SSL socket - after the socket has been closed. + Change-Id: Ibbbca85517b04c315406ebfe3b6f7e0763daedc6 - ASTERISK-26477 #close +2017-07-24 10:48 +0000 [f78f5278ff] George Joseph - Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002 + * pjsip_message_ip_updater: Fix issue handling "tel" URIs -2016-10-13 14:09 +0000 [973e57d5ce] Leandro Dardini + sanitize_tdata was assuming all URIs were SIP URIs so when a non + SIP uri was in the From, To or Contact headers, the unconditional + cast of a non-pjsip_sip_uri structure to pjsip_sip_uri caused + a segfault when trying to access uri->other_param. - * app_queue: Added initialization for "context" parameter + * Added PJSIP_URI_SCHEME_IS_SIP(uri) || PJSIP_URI_SCHEME_IS_SIPS(uri) + checks before attempting to cast or use the returned uri. - When using Asterisk Realtime Architecture, empty fields are skipped and the - default values are used. If the "context" parameter in queue was set and then - cleared from the database, the old value remains in memory and it continues - to be used. This change initialize the "context" parameter with an empty value, - allowing clearing the parameter. + ASTERISK-27152 + Reported-by: Ross Beer - ASTERISK-26462 #close + Change-Id: Id380df790e6622c8058a96035f8b8f4aa0b8551f - Change-Id: I64be73d5044ce38dd02408bd0e53de965ef65905 +2017-07-01 19:24 +0000 [1bf3dfffd7] Corey Farrell -2016-10-15 20:05 +0000 [dd5129d84a] Matt Jordan + * AST-2017-006: Fix app_minivm application MinivmNotify command injection - * res/ari: Add the Asterisk EID field to outgoing events + An admin can configure app_minivm with an externnotify program to be run + when a voicemail is received. The app_minivm application MinivmNotify + uses ast_safe_system() for this purpose which is vulnerable to command + injection since the Caller-ID name and number values given to externnotify + can come from an external untrusted source. - This patch adds the Asterisk EID field to all outgoing ARI events. - Because this field should be added to all events as they are - transmitted, it is appended to the JSON message just prior to it being - handed off to the application message handler. This makes it somewhat - resilient to both new events being added to ARI, as well as other - potential event transport mechanisms. + * Add ast_safe_execvp() function. This gives modules the ability to run + external commands with greater safety compared to ast_safe_system(). + Specifically when some parameters are filled by untrusted sources the new + function does not allow malicious input to break argument encoding. This + may be of particular concern where CALLERID(name) or CALLERID(num) may be + used as a parameter to a script run by ast_safe_system() which could + potentially allow arbitrary command execution. - ASTERISK-26470 #close + * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp() + instead of ast_safe_system() to avoid command injection. - Change-Id: Ieff0ecc24464e83f3f44e9c3e7bd9a5d70b87a1d + * Document code injection potential from untrusted data sources for other + shell commands that are under user control. -2016-10-13 02:06 +0000 [2b03017022] Moises Silva + ASTERISK-27103 - * chan_rtp: Set a sane default rtp engine for unicast. + Change-Id: I7552472247a84cde24e1358aaf64af160107aef1 - ASTERISK-26439 +2017-05-22 10:36 +0000 [7f2a60fb38] Joshua Colp - Change-Id: I7f5ee2eeba8906e9ecb3293dbe3a747770bb5011 + * res_rtp_asterisk: Only learn a new source in learn state. -2016-10-16 17:25 +0000 [6651c66e68] George Joseph + This change moves the logic which learns a new source address + for RTP so it only occurs in the learning state. The learning + state is entered on initial allocation of RTP or if we are + told that the remote address for the media has changed. While + in the learning state if we continue to receive media from + the original source we restart the learning process. It is + only once we receive a sufficient number of RTP packets from + the new source that we will switch to it. Once this is done + the closed state is entered where all packets that do not + originate from the expected source are dropped. - * utils.c: Fix ast_set_default_eid for multiple platforms + The learning process has also been improved to take into + account the time between received packets so a flood of them + while in the learning state does not cause media to be switched. - ast_set_default_eid was searching for ethX, emX, enoX, ensX and even - pciD#U interface names. While this was a good attempt, it wasn't - inclusive enough to capture interfaces like enp6s0 or ens6d1, etc. + Finally RTCP now drops packets which are not for the learned + SSRC if strict RTP is enabled. - Rather than relying on interface names, we now simply find the first - interface returned by the OS that has a hardware address and that - address isn't all 0x00 or all 0xff. The code IS different for BSD, - Solaris and Linux based on what method is available for enumerating - interfaces. + ASTERISK-27013 - Tested on: - FreeBSD9 - CentOS6 - Ubuntu14 - Fedora24 + Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c - I was unable to test on Solaris at this time but the code for Solaris - is used elsewhere at Digium. +2017-08-30 07:28 +0000 [5ba82cedc6] Joshua Colp - Change-Id: Iaa6db87ca78a9a375e47d70e043ae08c1448cb72 + * res_rtp_asterisk: Allow remote SSRC to change on an RTP instance. -2016-10-15 04:58 +0000 [e9315791b3] Michael Kuron + When SDP renegotiation occurs it is possible for an RTP + instance to be reused for a new stream, resulting in the remote + SSRC changing if it is part of a bundle group. This change + allows this and updates its mapping in the current bundle + group. - * chan_sip: Only send video on outgoing channel if incoming channel supports it + ASTERISK-27231 - Previously, the settings videosupport=always and videosupport=yes behaved - identically and unconditionally caused a video offer to be sent in the SDP on - an outgoing call. This was a regression introduced with commit - 5a1d90e1fbfc4b48927aad55311f3b38efbf1f54 in Asterisk 1.6.1. + Change-Id: I6e3703974f236bc024c5dbe9bd43adae0c6fb490 - This commit restores correct behavior: videosupport=always causes a video offer - to be sent unconditionally, while videosupport=yes will only offer video on an - outbound channel if the incoming channel it is bridged to also supports video. - That way, the device receiving the outgoing call can display the correct user - interface elements for audio or video and will not unnecessarily show a blank - video window on an audio-only call. +2017-08-25 21:06 +0000 [71be8d5bbe] Andre Nazario - ASTERISK-17470 #close + * chan_pjsip: Add tag info in CHANNEL function - Change-Id: I782f4409d436114dbc97061c3570c0cd24f7c3ae + Create local_tag and remote_tag in CHANNEL info to get tag from From and + To headers of a SIP dialog. -2016-10-14 00:18 +0000 [aa39a87697] Corey Farrell + ASTERISK-27220 - * Fix issues with bundled pjproject cached download. + Change-Id: I59b16c4b928896fcbde02ad88f0e98922b15d524 - Previously when testing I had a preexisting makeopts in ASTTOPDIR. The - ordering of configure.ac causes --with-externals-cache to be processed - after third-party configure. In cases where the Asterisk clone is - cleaned it would cause pjproject to be downloaded to /tmp. This - moves processing of the externals cache and sounds cache to happen - before third-party configure. +2017-08-29 14:22 +0000 [4650fc477a] Richard Mudgett - This also addresses a possible issue with the third-party Makefile. If - TMPDIR is set by the environment it would override the path given to - --with-externals-cache. + * bridge_native_rtp.c: Fixup native_rtp_framehook() - ASTERISK-26416 + * Fix framehook to test frame type for control frame. + * Made framehook exit early if frame type is not a control frame. + * Eliminated RAII_VAR in framehook. + * Use switch instead of else-if ladder for control frame handling. - Change-Id: Ifab7f35bfcd5a31a31a3a4353cc26a68c8c6592d + Change-Id: Ia555fc3600bd85470e3c0141147dbe3ad07c1d18 -2016-10-12 16:24 +0000 [9c49b96374] Richard Mudgett +2017-08-29 09:26 +0000 [06cc5ae9ff] Sean Bright - * Audit ast_json_pack() calls for needed UTF-8 checks. + * confbridge: Handle user hangup during name recording - Added needed UTF-8 checks before constructing json objects in various - files for strings obtained outside the system. In this case string values - from a channel driver's peer and not from the user setting channel - variables. + This prevents orphaned CBAnn channels from getting stuck in the bridge. - * aoc.c: Fixed type mismatch in s_to_json() for time and granularity json - object construction. + ASTERISK-26994 #close + Reported by: James Terhune - ASTERISK-26466 - Reported by: Richard Mudgett + Change-Id: I5e43e832a9507ec3f2c59752cd900b41dab80457 - Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096 +2017-08-24 11:45 +0000 [9a9589e8e1] Joshua Colp -2016-10-12 16:20 +0000 [774d5f7ef7] Richard Mudgett + * core: Reduce video update queueing. - * json: Check party id name, number, subaddresses for UTF-8. + A video update frame is used to indicate that a channel + with video negotiated should provide a full frame so the + decoder decoding the stream is able to do so. In situations + where a queue is used to store frames it makes no sense + for the queue to contain multiple video update frames. One + is sufficient to have a full frame be sent. - * Updated unit test as ast_json_name_number() is now NULL tolerant. + ASTERISK-27222 - ASTERISK-26466 #close - Reported by: Richard Mudgett + Change-Id: Id3f40a6f51b740ae4704003a1800185c0c658ee7 - Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6 +2017-08-25 13:44 +0000 [da13cdb9e7] Sean Bright -2016-10-11 18:14 +0000 [1c4c6c082d] Richard Mudgett + * voicemail: Fix various abuses of mkstemp - * json: Add UTF-8 check call. + mkstemp() returns a unique filename, but appending an extension to that + filename does not guarantee uniqueness. Instead, use mkdtemp() and we + can put whatever extension we want on the files that we create inside + the directory. - Since the json library does not make the check function public we - recreate/copy the function in our interface module. + In the case of app_minivm, we also now properly clean up any temporary + files that we create. - ASTERISK-26466 - Reported by: Richard Mudgett + ASTERISK-20858 #close + Reported by: Walter Doekes - Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99 + Change-Id: I30ad04f0e115f0b11693ff678ba5184d8b938e43 -2016-10-12 17:42 +0000 [6fe5202c2c] Richard Mudgett +2017-08-25 12:20 +0000 [43670e471f] Sean Bright - * aoc.c: Whitespace cleanup + * app_record: Resolve some absolute vs. relative filename bugs - * In s_to_json() removed unnecessary ast_json_ref() to ast_json_null() - when creating the type json object. The ref is a noop. + If the Record() application is called with a relative filename that + includes directories, we were not properly creating the intermediate + directories and Record() would fail. - Change-Id: I2be8b836876fc2e34a27c161f8b1c53b58a3889a + Secondarily, updated the documentation for RECORDED_FILE to mention + that it does not include a filename extension. -2016-10-12 16:22 +0000 [c3bf1632cd] Richard Mudgett + Finally, rewrote the '%d' functionality to be a bit more straight + forward and less noisy. - * app_minivm.c: Fix malformed ast_json_pack() call. + ASTERISK-16777 #close + Reported by: klaus3000 - Change-Id: I082b239022fac462666e52a14a44304748908dc0 + Change-Id: Ibc2640cba3a8c7f17d97b02f76b7608b1e7ffde2 -2016-10-12 17:27 +0000 [9c54964dc5] Richard Mudgett +2017-08-23 10:01 +0000 [2ee644aacf] Florian Floimair - * app_queue.c: Fix clearing of pause reason string. + * alembic: Add dtls_fingerprint column in ps_endpoints table - The pause reason is not always cleared when it should be cleared. + The ps_endpoints table was missing the dtls_fingerprint column + introduced with commit adba2a8d7fd. - * Made set_queue_member_pause() always clear pause reason if not pausing - with a reason string. + ASTERISK-27168 #close - Change-Id: I993dad19626ec017478a230e980989438b778c53 + Change-Id: I9cb5006f7f50718b5239919562773adabb334cfd -2016-10-12 16:30 +0000 [3b3d06884c] George Joseph +2017-08-21 04:28 +0000 [33a648d4c6] Torrey Searle - * res_config_mysql: Fix several issues related to recent table changes + * res/res_pjsip_session: allow SDP answer to be regenerated - Unlike any of the other database drivers, res_config_mysql checks that - the table definition matches the requirements for every insert and - update statement. Since all requirements are forced to 'char', any - column that isn't a char, like ps_contacts' expiration_time, - qualify_timeout, etc., will throw a warning. It's kinda harmless but - very misleading. Since no other driver does those checks on insert - or update, they've been removed from res_config_mysql. Also, all - the logic that actually attempted to ALTER the table to fix the issue - has been removed. With the move to alembic, the auto-alter - functionality is not only unnecessary, it's also dangerous. + If an SDP answer hasn't been sent yet, it's legal to change it. + This is required for PJSIP_DTMF_MODE to work correctly, and can + also have use in the future for updating codecs too. - The other issue is that res_config_mysql calls the mysql_insert_id - function inside store_mysql. Presumably the intention was to return - the number of rows inserted DESPITE A NOTE IN THE CODE THAT THE VALUE - IS NON_PORTABLE AND MAY CHANGE. That value is then returned to - config realtime as the number of rows inserted. Guess what? The value - changed. It now only returns the number of rows inserted if there's an - auto increment column on the table, which ps_contacts doesn't have. - Otherwise it returns 0. So now, the insert worked but we tell config - realtime and sorcery that no rows were inserted. That call to - mysql_insert_id was removed and we now always return 1 if the insert - succeeded. We're only inserting 1 row at a time anyway. If the insert - fails, we still return -1. + ASTERISK-27209 #close - ASTERISK-26362 #close - Reported-by: Carlos Chavez + Change-Id: Idbbfb7cb3f72fbd96c94d10d93540f69bd51e7a1 - Change-Id: I83ce633efdb477b03c8399946994ee16fefceaf4 +2017-08-24 09:42 +0000 [02f95d290f] Sean Bright -2016-08-12 11:22 +0000 [dd6fc1bb7d] frahaase + * app_queue: Evaluate realtime queues when running dialplan functions - * Binaural synthesis (confbridge): Adds libfftw3 as dependency. + ASTERISK-19103 #close + Reported by: Jim Van Meggelen - Adds libfftw3 to the build chain that is is going to be used for binaural - synthesis by bridge_softmix. + Change-Id: I4bd32a9d1fcebb8ac56bff0e084d4f53e31b692b - ASTERISK-26292 +2017-08-23 09:19 +0000 [b1097be134] Eelco Brolman (License 6442) - Change-Id: Iedc2f174e4ccb39ae5d9e698e339c6a17155867b + * app_voicemail: Honor escape digits in "greeting only" mode -2016-09-29 13:08 +0000 [20c3dba39e] Torrey Searle + ASTERISK-21241 #close + Reported by: Eelco Brolman + Patches: + Patch uploaded by Eelco Brolman (License 6442) - * res_fax: Fix a tight race condition causing fax to crash in audio fallback + Change-Id: Icbe39b5c82a49b46cf1d168dc17766f3d84f54fe - When T.38 gets rejected and G711 failback occurs there is a period of - time where neither AST_FAX_TECH_T38 nor AST_FAX_TECH_AUDIO is set, - leading to a crash. +2017-08-24 08:35 +0000 [7937d5b8b3] Sean Bright - Change-Id: Icc3f457b2292d48a9d7843dac0028347420cc982 + * res_smdi: Clean up memory leak -2016-10-06 09:58 +0000 [86e8716952] George Joseph + Change-Id: I1e33290929e1aa7c5b9cb513f8254f2884974de8 - * app_dial: Add the "Q" option to set the cause on unanswered channels +2017-08-18 17:37 +0000 [f2c14f00b8] Richard Mudgett - The "Q" option will set the cause on the unanswered channels when - another channel answers. It overrides the default of - ANSWERED_ELSEWHERE. + * res_pjsip_session.c: Fix crash when declining an active stream. - NOTE: chan_sip does not support setting the cause on a CANCEL to - anything other than ANSWERED_ELSEWHERE. + If a previously active stream is declined we could crash because the + channel's thread is still using the stream while we are updating the + topology in the serializer thread. - ASTERISK-26446 #close + * Defer removing any declined stream's handler until we have blocked the + channel's thread with the channel lock. - Change-Id: I71742e0919aaa16784c30a2b2e73fbeed7672e47 + ASTERISK-27212 -2016-10-11 06:55 +0000 [4f7f8a7e95] Alexander Traud + Change-Id: I50e1d3ef26f8e41948f4c411ee329aa3b960a420 - * chan_sip: Support nat=auto_comedia or nat=force_rport,auto_comedia. +2017-08-16 17:50 +0000 [17976d1b4e] Richard Mudgett - In the SIP channel driver chan_sip, auto_comedia was expected to be used in - tandem with auto_force_rport. Or stated differently: Only when auto_force_rport - was chosen (the default), auto_comedia worked. This change allows auto_comedia - to be set independently of the state of (auto_)force_rport. For example, - nat=force_rport,auto_comedia is useful for IPv4/IPv6 Dual Stack deployments - when IPv6 clients are behind a Firewall. + * bridge_channel.c: Fix FRACK when mapping frames to the bridge. - ASTERISK-26457 #close + * Add protection checks when mapping streams to the bridge. The channel + and bridge may be in the process of updating the stream mapping when a + media frame comes in so we may not be able to map the frame at the time. - Change-Id: Ib29d66c6dbb61648e371e01fc36c6978ddae5bc2 + * We need to map the streams to the bridge's stream numbers right before + they are written into the bridge. That way we don't have to keep + locking/unlocking the bridge and we won't have any synchronization + problems before the frames actually go into the bridge. -2016-10-10 16:59 +0000 [17031f12fe] Badalyan Vyacheslav + * Protect the deferred queue with the bridge_channel lock. - * vector: After remove element recheck index + ASTERISK-27212 - Small fix. It is necessary to double-check - the index that we just removed because there - is a new element. + Change-Id: Id6860dd61b594b90c8395f6e2c0150219094c21a - ASTERISK-26453 #close +2017-08-11 16:31 +0000 [9c70c88369] Richard Mudgett - Change-Id: Ib947fa94dc91dcd9341f357f1084782c64434eb7 + * channel: Fix topology API locking. -2016-09-29 12:52 +0000 [cc269766b8] Torrey Searle + * ast_channel_request_stream_topology_change() must not be called with any + channel locks held. - * res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridge + * ast_channel_stream_topology_changed() must be called with only the + passed channel lock held. - If a bridge switched to P2P when a DTMF was in progress it - was possible for the DTMF to continue being sent indefinitely. + ASTERISK-27212 - Change-Id: I7e2a3efe0d59d4b214ed50cd0b5d0317e2d92e29 + Change-Id: I843de7956d9f1cc7cc02025aea3463d8fe19c691 -2016-10-09 21:28 +0000 [fafdde322c] Corey Farrell +2017-08-16 15:22 +0000 [6ad8249233] Richard Mudgett - * logger: Prevent output of verbose messages initiated from rasterisk. + * bridge: Fix softmix bridge deadlock. - Remote asterisk consoles should only display verbose log messages - created by the daemon. The first patch for ASTERISK-26410 caused - a couple verbose messages to be printed when the rasterisk process - ended. + * Fix deadlock in + bridge_softmix.c:softmix_bridge_stream_topology_changed() between + bridge_channel and channel locks. - ASTERISK-26410 + * The new bridge technology topology change callbacks must be called with + the bridge locked. The callback references the bridge channel list, the + bridge technology could change, and the bridge stream mapping is updated. - Change-Id: Ie2a1bb3753ad2724c0349ec1a336f52f7117b52a + ASTERISK-27212 -2016-10-04 20:46 +0000 [7af7490e42] Michael Walton + Change-Id: Ide4360ab853607e738ad471721af3f561ddd83be - * audiohooks: Remove redundant codec translations when using audiohooks +2017-08-14 12:20 +0000 [850a3fd017] Richard Mudgett - The main frame read and write handlers in main/channel.c don't use the - optimum placement in the processing flow for calling audiohooks - callbacks, as far as codec translation is concerned. This change places - the audiohooks callback code: - * After the channel read translation if the frame is not linear before - the translation, thereby increasing the chance that the frame is linear - as required by audiohooks - * Before the channel write translation if the frame is linear at this - point - This prevents the audiohooks code from instantiating additional - translation paths to/from linear where a linear frame format is already - available, saving valuable CPU cycles + * chan_pjsip.c: Fix topology refresh response code accuracy. - ASTERISK-26419 + There are other 1xx and 2xx codes than 100 and 200 respectively. - Change-Id: I6edd5771f0740e758e7eb42558b953f046c01f8f + Change-Id: I680db0997343256add1478714f5bf5b5569aee17 -2016-10-10 10:59 +0000 [3ab7fae96b] Badalyan Vyacheslav +2017-08-11 17:06 +0000 [87c7a1c79c] Richard Mudgett - * res_pjsip_config_wizard: Memory leak in module_unload + * bridge_softmix.c: Restored softmix_bridge_leave() shortcut exit. - Fixed a memory leak. It removes only the first element. - Added a useful feature in vector.h to remove all items - under the CMP through a callback function / macro. + Change-Id: I13026cd90954e0265eab94a0faf635a3e11f0e35 - ASTERISK-26453 #close +2017-08-17 17:07 +0000 [5bbf7b2aad] Richard Mudgett - Change-Id: I84508353463456d2495678f125738e20052da950 + * app_confbridge: Document sfu video_mode value. -2016-09-29 12:45 +0000 [9f62feca60] Ludovic Gasc (GMLudo) + Change-Id: I26e17df2c93f3933b23f78070603adbcc84ba204 - * res_calendar: Add support for fetching calendars when reloading +2017-08-17 17:06 +0000 [f96536b1ea] Richard Mudgett - We use a lot res_calendar, we are very happy with that, especially - because you use libical, the almost alone opensource library that - supports really ical format with all types of recurrency. + * confbridge.h: Fix doxygen comments. - Nevertheless, some features are missed for our business use cases. + Change-Id: I16133166a85fdb557c66ffcbfe8128d0b4725b0e - This first patch adds a new option in calendar.conf: - fetch_again_at_reload. Be my guest for a better name. +2017-08-11 11:40 +0000 [946ef2d711] Richard Mudgett - If it's true, when you'll launch "module reload res_calendar.so", - Asterisk will download again the calendar. + * bridge_softmix.c: Remove always true test. - The business use case is that we have a WebUI with a scheduler planner, - we know when the calendars are modified. + Change-Id: I26238df2ff0d0f6dfe95c3aa35da588f1ee71727 - For now, we need to define 1 minute of timeout to have a chance that - our user doesn't wait too long between the modification and the real - test. But it generates a lot of useless HTTP traffic. +2017-08-17 16:46 +0000 [22af5e3784] Sungtae Kim + * app_queue: Fix initial hold time queue statistic - ASTERISK-26422 #close + Fixed to use correct initial value and fixed to use the + correct queue info to check the first value. - Change-Id: I384b02ebfa42b142bbbd5b7221458c7f4dee7077 + ASTERISK-27204 -2016-10-09 21:53 +0000 [ca2f3e5b99] Badalyan Vyacheslav + Change-Id: Ia9e36c828e566e1cc25c66f73307566e4acb8e73 - * cel_odbc: Fix memory leak on module unload +2017-08-20 08:15 +0000 [83b81d1f8d] Michael Kuron - Change-Id: Ic7a1236eba2408090fdabb5f717b5fa455ead715 + * res_xmpp: fix inverted return code check in OAuth -2016-10-03 11:30 +0000 [5fb848eebd] George Joseph + fetch_access_token calls func_curl via ast_func_read. The latter returns 0 upon + success and -1 if the function is not available. + This commit inverts the return code check so that an error is printed if the + module is not loaded and not if it is loaded. - * bundled_pjproject: Add tests for programs used by the Makefile, et al. + ASTERISK-27207 #close - Added tests for bzip2, tar, patch, sed and nm to configure.ac. + Change-Id: I9ef903f80702d1218e8701f65a4e5e918e6548fb - Set DOWNLOAD_TO_STDOUT to a working command line regardless of - whether the download program is wget, curl or fetch. +2017-08-17 12:00 +0000 [667986d875] Sean Bright - Added a 'configure.m4' file to the third-party directory which takes - care of calling any third-party project setup. Had to move some - pjproject_bundled stuff up in configure.ac so it was called before - the third-party configure macro. + * res_calendar_icalendar: Properly handle recurring events - The pjproject tarball is now downloaded to the externals_cache_dir if - it was specified on the ./configure command line + When looking for recurring events, use the correct end time based on the + configured 'timeframe.' - Removed regeneration of the pjproject aconfigure file. It was only - needed for an old patch that no longer applies. + ASTERISK-27174 #close + Reported by: Mark Thompson - Converted the tests for symbols to explicit tests since we know that - they're now available in the bundled version. Saves a little time - during configure. + Change-Id: Id90c3cfc79d561a5521d79be176683e225f2edef - ASTERISK-26416 #close - Reported-by: Corey Farrell +2017-08-16 15:43 +0000 [0e777258be] George Joseph - Change-Id: Id1d94251c0155f8dd41b7de7067f35cfbaafbb9b - (cherry picked from commit e6b0053d7561032b7adbf6f3afaecf30f5046605) - (cherry picked from commit a0d02f38322c2c4d7743504003fd376d32a133db) + * Fix downloader not working with curl -2016-10-09 18:54 +0000 [73f75c246b] Joshua Colp + The codec/dpma downloader wasn't handling curl correctly. The logic + that transforms makeopts into a bash-sourceable file wasn't + handling the make 'or' command in DOWNLOAD_TIMEOUT so bash was + looking for an 'or' command. - * Revert "Packet-Loss Concealment (PLC) for supporting codecs." + That logic has been eliminated. Instead of trying to transform + and source makeopts, the downloader now calls a make scriptlet + to print the value of a specific variable. This way, make handles + the ors (or any other make construct that happens to creep into + that file). - This change introduced some fax test failures - that have not yet been addressed. So this is - not forgotten I'm submitting a change which - reverts it. + ASTERISK-27202 + Reported by: Sean McCord - This reverts: - d56fc3b36b7bb59b5506129b9895b6c3341350c9. + Change-Id: Iadfb6693528e4d4da7b8bb201fa66da2c71c7f99 - ASTERISK-25629 +2017-08-15 13:12 +0000 [e4e2e53c8a] Kevin Harwell - Change-Id: Ibc2f23c38643f5a2c89cf8915ae2d805b81bc3d5 + * manager: hook event is not being raised -2016-10-05 14:53 +0000 [c5e8f50169] George Joseph + When the iostream code went in it introduced a conditional that made it so the + hook event was not being raised even if a hook is present. This patch adds a + check to see if a hook is present in astman_append. If so then call into the + send_string function, which in turn raises the even for specified hook. - * pjproject_bundled: Add MALLOC_DEBUG capability + Also updated the ami hooks unit test, so the test could be automated. - pjproject_bundled will now use the asterisk memory debugging APIs - if MALLOC_DEBUG is turned on in menuselect. + ASTERISK-27200 #close - Because this required stubs for the executable programs and the python - bindings, some Makefile reorganization was needed to properly handle - the dependencies. As a result, the makefile now individually makes - each of the pjproject libraries separately instead of making them all - in 1 shot. The only visible change is that there are separate status - lines printed for each library instead oif 1 for all libs. Also, the - making of the pjproject dependency files was eliminated. They're not - needed for building unless you're actively modifying pjproject source - files and it makes the build process faster. Finally, any issues with - parallel builds should be resolved again making the build faster. + Change-Id: Iff37f02f9708195d8f23e68f959d6eab720e1e36 - Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0 +2017-08-15 15:15 +0000 [c049d1c3b2] Richard Mudgett -2016-10-04 16:59 +0000 [442b597929] George Joseph + * configure: Check cache for valid pjproject tarball before downloading. - * alembic: Allow cdr, config and voicemail to exist in the same schema + On a fresh Asterisk source directory, the bundled pjproject tarball is + unconditionally downloaded even if the tarball is already in a specified + cache directory. - cdr, config and voicemail are all separate alembic trees. Because - alembic's default is to use a table named 'alembic_version' to store - the current tree revision, the 3 trees can't exist in the same schema - without stepping on each other. + * Made check if the pjproject tarball is valid in the cache directory + before downloading the tarball on a fresh source directory. - Now each tree uses 'alembic_version_' as the version table. - Each tree's env.py script now first checks for 'alembic_version'. If - it finds it AND its revision is in the tree's history, the script - renames it to 'alembic_version_'. Regardless, the script - then continues with the migration using 'alembic_version_' - and creates that table if it's not found. The result is that if an - existing 'alembic_version' table was found but it didn't belong to this - tree, it's left alone and 'alembic_version_' is used or - created. + Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5 - WARNING: If multiple trees are using the same schema, they MUST NOT - CRU or D any objects with names that might exist in the other trees. - An example would be 'yesno_values' type. If two trees perform - operations on it, one tree could pull it out from under the other. - Thankfully we currently don't share any names among cdr, config and - voicemail. +2017-08-15 11:14 +0000 [9e2b2a9837] Richard Mudgett - NOTE: Since the env.py scripts in each tree were identical, a common - env.py has been placed in the ast-db-manage directory and a symlink - to it has been placed in each tree directory. + * res_pjsip: Fix prune_on_boot to remove only contacts for the host. - ASTERISK-24311 #close - Reported-by: Dafi Ni + * Check that the contact's reg_server matches the host's name before + deleting any prune_on_boot contacts. We don't want to delete reliable + transport contacts made with other servers if the ps_contacts database + table is shared with other servers. - Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898 + Thanks to Ross Beer for pointing out that the original prune logic would + delete reliable transport contacts from other servers. -2016-10-05 04:25 +0000 [c4268ec734] Alexander Traud + ASTERISK-27147 - * chan_sip: Honor support of Symmetric Response (rport) for SIP requests. + Change-Id: I8e439d0d1c266ffdfd7b73d1e5e466180a689bd0 - In the SIP channel driver chan_sip, the default is "auto_force_rport". When no - NAT was detected, for example in case of IPv6, Asterisk uses the IP address - from the headers within the SIP-REGISTER for subsequent SIP signaling. When - the remote party specifies support for Symmetric Response (RFC 3581) via the - parameter "rport", Asterisk should not extract the port from the SIP headers - but reuse the port of the transport. This did not happen because of a typo. +2017-08-04 09:25 +0000 [15fbcc74d8] Andrey Egorov - ASTERISK-26438 #close + * res_xmpp: Google OAuth 2.0 protocol support for XMPP / Motif - Change-Id: If6e7891848aaf96666dee5305695f7c6667cd5a6 + Add ability to use tokens instead of passwords according to Google OAuth 2.0 + protocol. -2016-08-12 11:22 +0000 [c455823657] frahaase + ASTERISK-27169 + Reported by: Andrey Egorov + Tested by: Andrey Egorov - * Binaural synthesis (confbridge): interleaved two-channel audio. + Change-Id: I07f7052a502457ab55010a4d3686653b60f4c8db - Asterisk only supports mono audio at the moment. - This patch adds interleaved two-channel audio to Asterisk's channels. +2017-08-10 14:18 +0000 [bd28a9bbd8] Richard Mudgett - ASTERISK-26292 + * STUN/netsock2: Fix some valgrind uninitialized memory findings. - Change-Id: I7a547cea0fd3c6d1e502709d9e7e39605035757a + * netsock2.c: Test the addr->len member first as it may be the only member + initialized in the struct. -2016-09-16 18:54 +0000 [2a03575c30] Corey Farrell + * stun.c:ast_stun_handle_packet(): The combinded[] local array could get + used uninitialized by ast_stun_request(). The uninitialized string gets + copied to another location and could overflow the destination memory + buffer. - * astobj2: Add backtrace to log_bad_ao2. + These valgrind findings were found for ASTERISK_27150 but are not + necessarily a fix for the issue. - * Compile __ast_assert_failed unconditionally. - * Use __ast_assert_failed to log messages from log_bad_ao2 - * Remove calls to ast_assert(0) that happen after log_bad_ao2 was run. + Change-Id: I55f8687ba4ffc0f69578fd850af006a56cbc9a57 - Change-Id: I48f1af44b2718ad74a421ff75cb6397b924a9751 +2017-08-02 18:44 +0000 [1bec781cce] Richard Mudgett -2016-09-30 16:29 +0000 [79532bca75] Rodrigo Ramírez Norambuena + * res_pjsip_outbound_registration.c: Re-REGISTER on transport shutdown. - * Add text of cdr directory into README.md for ast-db-manage + The fix for the issue is broken up into three parts. - Change-Id: I68321c4bea50730c39fdb486e5f23aeadd1ad636 + This is part three which handles the client side of REGISTER requests. + The registered contact may no longer be valid on the server when the + transport used is reliable and the connection is broken. -2016-09-09 12:38 +0000 [806d08b675] Etienne Lessard + * Re-REGISTER our contact if the reliable transport is broken after + registration completes. We attempt to re-REGISTER immediately to minimize + the time we are unreachable. Time may have already passed between the + connection being broken and the loss being detected. - * app_queue: Update dynamic members ringinuse on reload. + * Reorder sip_outbound_registration_state_alloc() so the STATSD_GUAGE's + are still correct if an allocation failure happens. - Previously, when reloading the members of a queue, the members added statically - (i.e. defined in queues.conf) would see their "ringinuse" value updated but not - the members added dynamically. + ASTERISK-27147 - This change makes dynamic members ringuse value to be updated on reload. + Change-Id: I3668405b1ee75dfefb07c0d637826176f741ce83 - Note that it's impossible to add a dynamic member with a specific ringinuse - value. For both static and dynamic members, the ringinuse value can always be - changed later on with command like "queue set ringinuse" or with the AMI action - "QueueMemberRingInUse". So it's possible this commit could break a user workflow - if he was changing the ringinuse value of dynamic members via such commands and - was also relying on the fact that a queue reload would not update the dynamic - members ringinuse value. +2017-07-31 14:21 +0000 [82f4ade959] Richard Mudgett - ASTERISK-26330 + * res_pjsip: Remove ephemeral registered contacts on transport shutdown. - Change-Id: I3745cc9a06ba7e02c399636f1ee9e58c04081f3f + The fix for the issue is broken up into three parts. -2016-09-29 14:02 +0000 [d31ffb421c] Kevin Harwell + This is part two which handles the server side of REGISTER requests when + rewrite_contact is enabled. Any registered reliable transport contact + becomes invalid when the transport connection becomes disconnected. - * Remove "format_ogg_opus: New format" + * Monitor the rewrite_contact's reliable transport REGISTER contact for + shutdown. If it is shutdown then the contact must be removed because it + is no longer valid. Otherwise, when the client attempts to re-REGISTER it + may be blocked because the invalid contact is there. Also if we try to + send a call to the endpoint using the invalid contact then the endpoint is + not likely to see the request. The endpoint either won't be listening on + that port for new connections or a NAT/firewall will block it. - This reverts commit 40aa28131bc30b4516da2b20eb1a1e043920169c. + * Prune any rewrite_contact's registered reliable transport contacts on + boot. The reliable transport no longer exists so the contact is invalid. - ASTERISK-26426 #close + * Websockets always rewrite the REGISTER contact address and the transport + needs to be monitored for shutdown. - Change-Id: I81e55c3c512f1dd6f49896f0c6b97a07d74fd8f5 + * Made the websocket transport set a unique name since that is what we use + as the ao2 container key. Otherwise, we would not know which transport we + find when one of them shuts down. The names are also used for PJPROJECT + debug logging. -2016-09-19 04:46 +0000 [8c5c95ad89] Corey Farrell + * Made the websocket transport post the PJSIP_TP_STATE_CONNECTED state + event. Now the global keep_alive_interval option, initially idle shutdown + timer, and the server REGISTER contact monitor can work on wetsocket + transports. - * core: Remove ABI effects of LOW_MEMORY. + * Made the websocket transport set the PJSIP_TP_DIR_INCOMING direction. + Now initially idle websockets will automatically shutdown. - This allows asterisk to compiled with LOW_MEMORY to load modules built - without LOW_MEMORY. + ASTERISK-27147 - ASTERISK-26398 #close + Change-Id: I397a5e7d18476830f7ffe1726adf9ee6c15964f4 - Change-Id: I24b78ac9493ab933b11087a8b6794f3c96d4872d +2017-07-28 18:26 +0000 [1dcb92bba8] Richard Mudgett -2016-09-27 16:10 +0000 [a77ebb2017] George Joseph + * res_pjsip: PJSIP Transport state monitor refactor. - * download_externals: Fix issue with re-install + The fix for the issue is broken up into three parts. - Needed to ignore an xmlstarlet return code for optional element. + This is part one which refactors the transport state monitor code to allow + more modules to be able to monitor transports. - Change-Id: I6a96f709b4b38c9a3f3dda4e8b07903787e16873 - Reported-by: Dan Jenkins + * Pull the management of PJPROJECT's transport state callback code from + res_pjsip_transport_management.c into res_pjsip. Now other modules can + dynamically add and remove themselves from transport monitoring without + worrying about breaking PJPROJECT's callback chain. -2016-09-27 15:35 +0000 [2d2a8944be] Corey Farrell + * Add the ability for other modules to get a callback whenever a specific + transport is shutdown. - * logger: Output early verbose messages to console. + ASTERISK-27147 - Verbose messages should be printed to the console if the sublevel is - less than option_verbose. This fix ensures the welcome message with - copyright and license are printed at daemon and interactive rasterisk - startup. + Change-Id: I7d9a31371eb1487c9b7050cf82a9af5180a57912 - ASTERISK-26410 #close +2017-07-27 15:36 +0000 [ee5edfb050] Richard Mudgett - Change-Id: Ia44235e30ec328aba92ea2c8a837b094e65c9a03 + * res_pjsip_transport_management.c: Rename some variables. -2016-09-22 09:49 +0000 [c7ef1e0af3] George Joseph + * Use monitored instead of the misleading keepalive name. - * codec_opus: Add download ability to menuselect + Change-Id: I9e5bcbb4ab2b82d49bcd0f06dfe85d15e0b552b6 - Updated codecs/codecs.xml to add codec_opus to the external - download list. +2017-08-09 15:24 +0000 [ecd1f87edf] Richard Mudgett - ASTERISK-26409 + * UPGRADE notes: Prepare for the eventual 16 branch. - Change-Id: Ia07b36539f30e852125fb2b94147dc9774df31a4 - (cherry picked from commit 2cdab0e36eec4997ca3bd85aa09efc477038e31c) - (cherry picked from commit e9684f3acd0e8def0df582c1505dd39dd3fd1610) + Change-Id: I4ca2f07ed62d77f1fdd10c3b216f6a28dd75720c -2016-07-23 14:50 +0000 [5cc3c6679f] George Joseph +2017-08-10 09:09 +0000 [4ed2733dde] Scott Griepentrog - * codec_opus: Replace res_format_attr_opus with the one from codec_opus + * res_pjsip_messaging: IPv6 receive address needs brackets - Preparation + When handling an incoming SIP MESSAGE, PJSIP + attaches the IP address that the message was + received from to the message in the variable + PJSIP_RECVADDR. When the IP address is IPv6 + the :PORT appended results in an unparseable + mess. By using an additional bit flag on the + pj_sockaddr_print call, the conventional use + of brackets around the address is achieved. - ASTERISK-26409 + ASTERISK-27193 #close - Change-Id: I9f20e7cce00c32464d9a180e81283d49d199d0a3 - (cherry picked from commit 59f7662a93bf9c07204fb50e1020a0f5bfbbd5c9) + Change-Id: I12342521f2ce87a5b6e4883d480a3fd957aa9fd9 -2016-07-23 15:56 +0000 [40aa28131b] George Joseph +2017-07-26 09:17 +0000 [d430f718f5] Torrey Searle - * format_ogg_opus: New format + * res_rtp_asterisk: enable rtcp & QOS stats on native bridge - Add Ogg/Opus playback support. + Asterisk wasn't generating or forwarding RTCP packets when native + bridge was activated. Also the stats weren't available via + CHANNEL(qos). Now the RTCP stats are always calculated. - This uses libopusfile in order to be able to read .opus files and play - them back. + ASTERISK-27158 #close - Writing/recording support is not present at this time. + Change-Id: I46fb8f61c95e836b9d2dda6054b0cf205c16037b - ASTERISK-26409 +2017-07-28 07:53 +0000 [a2dde59154] Torrey Searle - Change-Id: I8815d23345108d8ca7c0bd640f6a1ce6b4f56955 - (cherry picked from commit daee8bbd5209b4158bc1785eede845a26e6cbeaa) + * res_rtp_asterisk: Make P2P bridge Asymmetric codec aware -2016-09-24 19:05 +0000 [43901e9418] George Joseph + Introduce a new property to rtp-engine to make it aware of + the desire for assymetric codecs or not. If asymmetric codecs + is not allowed, the bridge will compare read/write formats + and shut down the p2p bridge if needed - * build_tools: Add ability to download variants to download_externals + ASTERISK-26745 #close - Some external packages have multiple variants that apply to different - builds of asterisk. The DPMA for instance has a "bundled" variant that - needs to be downloaded if asterisk was configured with - --with-pjproject-bundled. + Change-Id: I0d9c83e5356df81661e58d40a8db565833501a6f - There are 2 ways to specify variants: +2017-08-08 13:33 +0000 [305bd0d99f] George Joseph - If you need the user to make the decision about which variant to - download, simply create multiple menuselect "member" entries like so... + * Make --with-pjproject-bundled the default for Asterisk 15 - - external - xmlstarlet - bash - no - + '--with-pjproject-bundled' is now the default when running + ./configure. It can be disabled with '--without-pjproject-bundled'. - - external - xmlstarlet - bash - no - + To make building without an internet connection easier, a new + ./configure option '--with-download-cache' was added that sets + the cache for externals (like pjproject, the codecs and the DPMA), + AND the sounds files. It can also be specified as an environment + variable named "AST_DOWNLOAD_CACHE". The existing + '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and + '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable + remain and if specified, will override '--with-downloads-cache'. - Note that the second entry has "-" appended to the name. - You can then use the existing menuselect facilities to restrict which - members to enable or disable. Youy probably don't want the user to - enable multiple at the same time. + ASTERISK-27189 - If you want to hide the details of the variants, the better way to - do it is to create 1 member with "variant" elements. + Change-Id: Ifa9783fddf44aafadb060c9feba713dfa81d38ce - - external - xmlstarlet - bash - no - - - - - - - - +2017-08-05 06:36 +0000 [62092bc114] Joshua Colp - The condition must be a bash expression suitable for use with an "if" - statement. Any environment variable can be used plus those available - in makeopts. + * res_pjsip_session: Release media resources on session end quicker. - In this case, if asterisk was configured with --with-pjproject-bundled - the bundled variant will be automatically downloaded. Otherwise the - normal version will be downloaded. + A change was made long ago where the session was kept around + until the underlying INVITE session had been destroyed. This + had the side effect of also keeping the underlying media resources + around for this time as well. - Change-Id: I4de23e06d4492b0a65e105c8369966547d0faa3e + This change ensures that when we are told to terminate the + session we immediately release any media sessions associated + with it. -2016-09-23 09:54 +0000 [5dd99465d3] Alexander Traud + ASTERISK-27110 - * chan_sip: Resolve externhost not to IPv6; instead go for IPv4. + Change-Id: I643e431d5c3bf05cda220c1d39e824a505a29b82 - For the channel driver chan_sip, you specify externhost=example.com in sip.conf - when your Asterisk is behind a NAT and your IP address is assigned dynamically. - Or stated differently: You do not have a static IP address to use "externaddr" - directly. This NAT support is quite handy but just about IPv4. Previously, - Asterisk resolved "externhost" to any IP version. When the first DNS answer - resolved to an IPv6, Asterisk sent an IPv6 in SIP/SDP for origin (o=) and - connection (c=). This happened in outgoing SIP-REGISTER and while answering - SIP-INVITE. If the remote peer is IPv4-only, it might not handle o=/c= with an - IPv6. This change makes sure, no IPv6 is resolved anymore for "externhost". +2017-07-29 20:03 +0000 [4b58609c33] Kirill Katsnelson - ASTERISK-18232 #close - Reported by: Jacek Kowalski - Tested by: Alexander Traud - patches: - changes.patch submitted by Alessandro Crespi + * chan_sip: Access incoming REFER headers in dialplan - Change-Id: If68eedbeff65bd1c1d8a9ed921c02ba464b32dac + This adds a way to access information passed along with SIP headers in + a REFER message that initiates a transfer. Headers matching a dialplan + variable GET_TRANSFERRER_DATA in the transferrer channel are added to + a HASH object TRANSFER_DATA to be accessed with functions HASHKEY and HASH. -2016-09-20 09:42 +0000 [d425971009] George Joseph + The variable GET_TRANSFERRER_DATA is interpreted to be a prefix for + headers that should be put into the hash. If not set, no headers are + included. If set to a string (perhaps 'X-' in a typical case), all headers + starting this string are added. Empty string matches all headers. - * chan_sip: Address runaway when realtime peers subscribe to mailboxes + If there are multiple of the same header, only the latest occurrence in + the REFER message is available in the hash. - Users upgrading from asterisk 13.5 to a later version and who use - realtime with peers that have mailboxes were experiencing runaway - situations that manifested as a continuous stream of taskprocessor - congestion errors, memory leaks and an unresponsive chan_sip. + Obviously, the variable GET_TRANSFERRER_DATA must be inherited by the + referrer channel, and should be set with the '_' or '__' prefix. - A related issue was that setting rtcachefriends=no NEVER worked in - asterisk 13 (since the move to stasis). In 13.5 and earlier, when a - peer tried to register, all of the stasis threads would block and - chan_sip would again become unresponsive. After 13.5, the runaway - would happen. + I avoided a specific reference to SIP or REFER, as in my mind the mechanism + can be generalized to other channel techs. - There were a number of causes... - * mwi_event_cb was (indirectly) calling build_peer even though calls to - mwi_event_cb are often caused by build_peer. - * In an effort to prevent chan_sip from being unloaded while messages - were still in flight, destroy_mailboxes was calling - stasis_unsubscribe_and_join but in some cases waited forever for the - final message. - * add_peer_mailboxes wasn't properly marking the existing mailboxes - on a peer as "keep" so build_peer would always delete them all. - * add_peer_mwi_subs was unsubscribing existing mailbox subscriptions - then just creating them again. + ASTERISK-27162 - All of this was causing a flood of subscribes and unsubscribes on - multiple threads all for the same peer and mailbox. + Change-Id: I73d7a1e95981693bc59aa0d5093c074b555f708e - Fixes... - * add_peer_mailboxes now marks mailboxes correctly and build_peer only - deletes the ones that really are no longer needed by the peer. - * add_peer_mwi_subs now only adds subscriptions marked as "new" instead - of unsubscribing and resubscribing everything. It also adds the peer - object's address to the mailbox instead of its name to the subscription - userdata so mwi_event_cb doesn't have to call build_peer. +2017-08-06 11:15 +0000 [88c65f7cb6] Joshua Colp - With these changes, with rtcachefriends=yes (the most common setting), - there are no leaks, locks, loops or crashes at shutdown. + * bridge: Fix stream topology/participant locking and video misrouting. - rtcachefriends=no still causes leaks but at least it doesn't lock, loop - or crash. Since making rtcachefriends=no work wasnt in scope for this - issue, further work will have to be deferred to a separate patch. + This change fixes a few locking issues and some video misrouting. - Side fixes... - * The ast_lock_track structure had a member named "thread" which gdb - doesn't like since it conflicts with it's "thread" command. That - member was renamed to "thread_id". + 1. When accessing the stream topology of a channel the channel lock + must be held to guarantee the topology remains valid. - ASTERISK-25468 #close + 2. When a channel was joined to a bridge the bridge specific + implementation for stream mapping was not invoked, causing video + to be misrouted for a brief period of time. - Change-Id: I07519ef7f092629e1e844f855abd279d6475cdd0 + ASTERISK-27182 -2016-09-22 01:40 +0000 [18a8ca06eb] Aaron An + Change-Id: I5d2f779248b84d41c5bb3896bf22ba324b336b03 - * channels/chan_pjsip: fix HANGUPCAUSE function bug. +2017-08-05 14:43 +0000 [16cfc3a954] Corey Farrell - HANGUPCAUSE not return 'SIP 200 Ok' when dialed channel answered. - This patch change the call order of ast_queue_control_data - and ast_queue_control in chan_pjsip_incoming_response. + * channel: Fix leak on successful call to chan->tech->requester. - ASTERISK-26396 #close - Reported by: AaronAn - Tested by: AaronAn + joint_cap needs to be released unconditionally as chan->tech->requester + does not steal the reference even on success. - Change-Id: Ide2d31723d8d425961e985de7de625694580be61 + ASTERISK-27180 #close -2016-09-21 14:24 +0000 [a805d779e8] Joshua Colp + Change-Id: I647728992559bdb0a9c7357c20be1b36400d68b6 - * core: Ensure presencestate subtype and message are NULL. +2017-08-04 16:47 +0000 [104a8047a5] Kevin Harwell - When retrieving presence state information there is no - guarantee that the subtype and message passed in are - set to NULL. This change ensures they are. + * res_pjsip_session/_sdp_rtp: Handling of 'msid' is incorrect - ASTERISK-26397 #close + Currently, the handling of the msid attribute is not quite right. According to + the spec the msid's between the offer/answer are not dependent upon one another. + Meaning the same msid's given in an offer do not have to be returned in the + answer for a given stream. And they probably shouldn't be (copied/reused) since + this can potentially cause some browser side confusion. - Change-Id: If38cd730e409e9a9b6eb9adef6591d15a9e61f86 + This patch generates new msids when both an offer and answer are sent from + Asterisk. However, Asterisk does reuse the original msid it sent out for a + reinvite. Also audio+video streams are paired together by sharing the same + stream id, but a different track id. -2016-09-21 10:48 +0000 [077caf566e] Joshua Colp + ASTERISK-27179 #close - * res_odbc: Make pooling option deprecation notice more useful. + Change-Id: Ifaec06dc7e65ad841633a24ebec8c8a9302d6643 - This changes the notice for the deprecation of the old - pooling options to point to the new option for doing - pooling. This gives a clearer direction as to what to - look into. +2017-08-03 20:58 +0000 [7f8f3ca4dd] Corey Farrell - ASTERISK-26389 #close + * Correct some leaks in unit tests. - Change-Id: I2ca9cdfdcd75aec170a7db9d5ff69a4cd25b7c10 + * chan_sip: channel in test_sip_rtpqos_1. + * test_config: config hook, config info and global config holder. + * test_core_format: format in format_attribute_set_without_interface. + * test_stream: unneeded frame duplication. + * test_taskprocessor: task_data. -2016-09-21 08:46 +0000 [78b6190a11] Joshua Colp + Change-Id: I94d364d195cf3b3b5de2bf3ad565343275c7ad31 - * odbc: Remove options that are no longer applicable. +2017-07-26 17:49 +0000 [842e1414d0] Richard Mudgett - The pooling, shared_connection, limit, and idlecheck options - are no longer used in res_odbc. + * res_pjsip_transport_websocket.c: Fix serializer ref leak. - ASTERISK-26389 + Change-Id: Ib5a19bfd597f63d9021baeb645fc11153b3afa57 - Change-Id: I2fde7b467d01f9d1c82cc0a339bb4f7e1dd6bbe6 +2017-08-02 18:41 +0000 [615b6a200a] Richard Mudgett -2016-08-16 15:21 +0000 [923edf2596] Corey Farrell + * res_pjsip_outbound_registration.c: Misc fixes. - * logger: Simplify ast_callid handling code. + * Remove unnecessary CMP_STOP. - Routines responsible for managing ast_callid's are overly complicated. - This is left-over code from when ast_callid was an AO2 object. Now that - it is an integer the code can be reduced. + * In handle_client_registration() use DEBUG_ATLEAST() to only do work + needed for the debug log message when the debug log message is needed. - ast_callid handler code no longer prints it's own error message upon failure - to allocate threadstorage as ast_calloc would have already printed a - message. Debug messages that were printed when TEST_FRAMEWORK was - enabled have been also been removed. + * In sip_outbound_registration_state_destroy() check state->registration + for NULL. - Change-Id: I65a768a78dc6cf3cfa071e97f33ce3dce280258e + Change-Id: I656d0fa11dda0b00048103efb1558e67a426fd80 -2016-09-20 15:17 +0000 [5cb905a227] Corey Farrell +2017-07-31 20:20 +0000 [564927c5ed] Richard Mudgett - * core: Fix LOW_MEMORY missing symbol ast_pbx_uuid_get. + * res_pjsip_nat.c: Remove unnecessary CMP_STOP. - Move the function outside the conditional block that excludes - LOW_MEMORY. + Change-Id: I6279b0d723bc3b75b8d65e81e02da9ea9bc0c3da - ASTERISK-26273 #close +2017-07-31 14:20 +0000 [5655cded78] Richard Mudgett - Change-Id: Ic290fa128222c410c3531107e30efacabc8493b4 + * res_pjsip_registrar.c: Remove unnecessary CMP_STOP. -2016-09-20 09:22 +0000 [00f1d05d34] Corey Farrell + Most uses of CMP_STOP are superfluous and are only respected when + OBJ_MULTIPLE is used to search the container. - * logger: Always enable verbose for console channel. + Change-Id: I20571a202ec0aa1098bb2749eeba18de7ca110b8 - Previous versions of Asterisk did not require verbose to be specified in - logger.conf for the console channel, if it was requested by command line - or asterisk.conf it just worked. This change causes Asterisk to always - enable verbose in the console channel level mask. Verbose is displayed - on consoles if requested by command line, option_verbose or 'core set - verbose'. +2017-08-03 13:13 +0000 [123c93a77c] Tzafrir Cohen - This also delays initialization of the logger until after threadstorage - is initialized. Initializing too early can cause messages to be printed - multiple times to the console (stdout). + * Support GMIME 3.0 - ASTERISK-26391 #close + Support building the Asterisk httpd with version 3.0 of gmime as + well as earlier versions of that library. - Change-Id: I52187d67c2fcb3efd5561bf04b3e5e23e5ee8a04 + ASTERISK-27173 -2016-09-20 10:16 +0000 [74f562a8e2] Corey Farrell + Change-Id: I7e13dd05a3083ccb0df2dabf83110223f6a9fa8f - * logger: Fix default console settings. +2017-08-02 09:43 +0000 [521b6fed12] Kevin Harwell - When logger.conf is missing or invalid we should be printing notices, - warnings and errors to the console. The logmask was incorrectly - calculated. + * alembic/res_pjsip: Add "webrtc" configuration option - Change-Id: Ibaa9465a8682854bc1a5e9ba07079bea1bfb6bb3 + When the "webrtc" option was added in res_pjsip it was not added to the alembic + scripts. This patch adds the option for alembic. -2016-09-19 14:21 +0000 [0bc9912739] Walter Doekes + Also, changed the sorcery configuration type to an OPT_YESNO_T value instead of + an OPT_BOOL_T so if this field is ever written to a database it will write out + the correct value. - * asterisk.c: Non-root users also get the astcanary after core restart. + ASTERISK-27119 #close - Without this change, a 'core restart' would kill the astcanary forever - if you're not running as root. Both with and without this patch, the - scheduling priority was still SCHED_RR after restart. + Change-Id: I3e199f060aea25e193c439fc5cf96be4d3ed1c7b - Additionally, the astcanary is now spawned if you start with high - priority and Asterisk doesn't get a chance to lower it. For example - through: `chrt -r 10 sudo -u asterisk asterisk -c` +2017-07-30 01:17 +0000 [4c0798e91d] Kirill Katsnelson - Also reap killed astcanary processes on core restart. + * chan_sip: Add dialplan function SIP_HEADERS - ASTERISK-26352 #close + Syntax: SIP_HEADERS([prefix]) - Change-Id: Iacb49f26491a0717084ad46ed96b0bea5f627a55 + If the argument is specified, only the headers matching the given prefix + are returned. -2016-09-19 09:40 +0000 [bffaf46690] Walter Doekes + The function returns a comma-separated list of SIP header names from an + incoming INVITE message. Multiple headers with the same name are included + in the list only once. The returned list can be iterated over using the + functions POP() and SIP_HEADER(). - * asterisk.c: When astcanary dies on linux, reset priority on all threads. + For example, '${SIP_HEADERS(Co)}' might return the string + 'Contact,Content-Length,Content-Type'. - Previously only the canary checking thread itself had its priority set - to SCHED_OTHER. Now all threads are traversed and adjusted. + Practical use is rather '${SIP_HEADERS(X-)}' to enumerate optional + extended headers sent by a peer. - ASTERISK-19867 #close - Reported by: Xavier Hienne + ASTERISK-27163 - Change-Id: Ie0dd02a3ec42f66a78303e9c1aac28f7ed9aae39 + Change-Id: I2076d3893d03a2f82429f393b5b46db6cf68a267 -2016-09-12 18:00 +0000 [2820b13393] Richard Mudgett +2017-08-02 14:16 +0000 [4b03eb5c38] Corey Farrell - * res_config_odbc.c: Fix buffer size limitation creating invalid SQL. + * Fix compile error for old versions of GCC. - Creating ODBC SQL queries resulted in queries too large to fit into the - supplied buffer. The resulting truncated buffer contained an invalid SQL - query. + Use -Wno-format-truncation only if supported by compiler. - * Made SQL query generation code use a thread storage buffer that can - increase in size as needed. + ASTERISK-27171 #close - * Fixed bad multi-line warning messages. + Change-Id: Iac0aed7a5bcaa16c21b7d62c4e4678d244c4ccb6 - ASTERISK-26263 #close - Reported by: Jeppe Ryskov Larsen +2017-08-02 16:08 +0000 [148cf2e0f7] Corey Farrell - Change-Id: I23f3cdd43c2dac80bed3ded4dd77d18cb17f21ae + * app_privacy: remove unused header asterisk/image.h -2016-09-14 06:53 +0000 [0376af9519] Joshua Colp + Change-Id: I56ed530633a642633b18383821069e806c92ae82 - * rtp: Only accept the first payload for a format in SDP. +2017-07-26 08:48 +0000 [2be8d91c0f] snuffy (license 5024) - When receiving an SDP offer with multiple payloads for - the same format we would generate an answer with the first - payload, but during the payload crossover operation - (to set the payloads for receiving) we would remove all - payloads but the last. This would result in incoming - traffic being matched against the wrong format and outgoing - traffic being sent using the wrong payload. + * res_pjsip_pidf_eyebeam_body_supplement: Correct status presentation - This change makes it so that once a format has a payload - number put into the mapping all subsequent ones are ignored. - This ensures there is only ever one payload in the mapping - and that it is the payload placed into the answer SDP. + This change fixes PIDF content generation when the underlying device + state is considered in use. Previously it was incorrectly marked + as closed meaning they were offline/unavailable. The code now + correctly marks them as open. - ASTERISK-26365 #close + Additionally: - Change-Id: I1e8150860a3518cab36d00b1fab50f9352b64e60 + * Generate an XML element for our activity instead of a using a text + node. -2016-09-14 08:42 +0000 [9d894ee0a1] Joshua Colp + * Consider every extension state other than "unavailable" to be 'open' + status. - * res_pjsip_multihomed: Change Contact port to listening port. + * Update the XML namespaces and structure to reflect those + documented in RFC 4480 - The res_pjsip_multihomed module determines what interface and transport - a request is going out on and updates the SIP message accordingly with - the address information. This currently incorrectly updates the Contact - header for connectionful protocols to the ephemeral connection port, - instead of the bound address for the listening socket which can actually - accept the connection back. If the remote side attempts to connect back on - the epehemeral port it will fail. + * Use 'on-the-phone' (defined in RFC 4880) instead of 'busy' as the + "in use" activity. This change results in eyeBeam using the + appropriate icon for the watched user. - This change makes it so the port is updated to the bound port on - connectionful protocols and is maintained on UDP (as there can be - multiple of those). + This was tested on eyeBeam 1.5.20.2 build 59030 on Windows. - ASTERISK-26374 #close + ASTERISK-26659 #close + Reported by: Abraham Liebsch + patches: + ASTERISK-26659.diff submitted by snuffy (license 5024) - Change-Id: I50f8dab65b9f75117d73ba5f6bbcf6c9871854ab + Change-Id: I6e5ad450f91106029fb30517b8c0ea0c2058c810 -2016-09-07 14:48 +0000 [47c527df0a] George Joseph +2017-07-23 18:34 +0000 [2a4283f3e7] Joshua Colp - * pjproject_bundled: Prevent SERVFAIL from marking name server bad + * res_pjsip: Add support for dnsmgr to external_media_address. - A name server that returns "Server Failure" is indicating only that - the server couldn't process that particular request. We should NOT - assume that the name server is incapable of serving other requests. + The "external_media_address" option on transports is now + resolved using dnsmgr. This allows it to be automatically + refreshed regularly if refreshes are enabled in dnsmgr. + If the system is using a dynamic IP address a dynamic DNS + hostname can be provided to keep the IP address up to + date. - Here's the scenario we've been encountering... + Change-Id: Ia54771720dff0105bde55d5bbb81a3ba437e05b2 - * 2 local name servers configured in resolv.conf. - * An OPTIONS request causes a request for A and AAAA records to go out - to both nameservers. - * The A responses both come back successfully resolved. - * Because of an issue at some upstream nameserver, the AAAA responses - for that particular query come back as "SERVFAIL" from both local - name servers. - * Both local servers are marked as bad and no further queries can be - sent until the 60 second ttl expires. Only previously cached results - can be used. - * In this case, 60 seconds is just enough time for another OPTIONS - request to go out to the same host so the cycle repeats. +2017-07-27 20:58 +0000 [58d032112b] Corey Farrell - We could set the bad ttl really low but that also affects REFUSED and - NOTAUTH which probably DO signal a real server issue. Besides, even - a really low bad ttl would be an issue on a pbx. + * Fix compiler warnings on Fedora 26 / GCC 7. - Although we use our own resolver in 14 and master and don't have this - issue there, Teluu has merged this patch upstream so it's appropriate - to cherry-pick to 14 and master to keep pjproject consistent. + GCC 7 has added capability to produce warnings, this fixes most of those + warnings. The specific warnings are disabled in a few places: + * app_voicemail.c: truncation of paths more than 4096 chars in many places. + * chan_mgcp.c: callid truncated to 80 chars. + * cdr.c: two userfields are combined to cdr copy, fix would break ABI. + * tcptls.c: ignore use of deprecated method SSLv3_client_method(). - Change-Id: Ie03ba902288e274aff23f9b9bb2786e1e8be09e0 + ASTERISK-27156 #close -2016-09-12 07:37 +0000 [d3ddf4b0fd] Tzafrir Cohen + Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88 - * cdr_mysql: fix UTC support +2017-07-26 09:27 +0000 [3f98488279] Sean Bright - * Make 'cdrzone=UTC' work properly. - * Fix the documentation of cdr_mysql.conf: it's cdrzone and not timezone + * app_queue: Add announce-position-only-up option - ASTERISK-26359 #close + Setting this option will cause the Queue application to only announce + the caller's position if it has improved since the last time that we + announced it. - Change-Id: I2a6f67b71bbbe77cac31a34d0bbfb1d67c933778 + Change-Id: I173a124121422209485b043e2bf784f54242fce6 -2016-06-27 14:26 +0000 [07b95f7c65] Tzafrir Cohen +2017-07-27 06:35 +0000 [ac6d98b28d] Ian Gilmour (license 6889) - * sd_notify (systemd status notifications) support + * bundled_pjproject: Improve SSL/TLS error handling - sd_notify() is used to notify systemd of changes to the status of the - process. This allows the systemd daemon to know when the process - finished loading (and thus only start another program after Asterisk has - finished loading). + OpenSSL has 2 levels or error processing. It's possible for the + top layer to return SSL_ERROR_SYSCALL but the lower layer return + no error, in which case processing should continue. Only the top + layer was being examined though so connections were being torn + down when they didn't need to be. This patch adds the examination + of the lower level codes, and if they return no errors, allows + processing to continue. - To use this, use a systemd unit with 'Type=notify' for Asterisk. + ASTERISK-27001 + Reported-by: Ian Gilmour + patches: + pjproject-2.6.patch submitted by Ian Gilmour (license 6889) - This commit also adds the function ast_sd_notify(), a wrapper around - sd_notify that does nothing if not built with systemd support. + Updated-by: George Joseph and Sauw Ming (Teluu) - Also adds support for libsystemd detection in the configure script. + Merged to upstream pjproject on 7/27/2017 (commit 5631) - Change-Id: Ied6a59dafd5ef331c5c7ae8f3ccd2dfc94be7811 + Change-Id: I23844ca0c68ef1ee550f14d46f6dae57d33b7bd2 -2016-09-09 06:35 +0000 [bc81765bb4] Timo Teräs +2017-06-26 07:52 +0000 [65c560894d] Torrey Searle - * Fix showing of swap details when sysinfo() is available + * chan_pjsip: add a new function PJSIP_DTMF_MODE - If sysinfo() is available, but not sysctl() or swapctl() the - printing code for swap buffer sizes is incorrectly omitted. - The above condition happens with musl c-library. + This function is a replica of SIPDtmfMode, allowing the DTMF mode of a + PJSIP call to be modified on a per-call basis - Fix #if rule to consider defined(HAVE_SYSINFO). And also - remove the redundant || defined(HAVE_SYSCTL) which was - incorrectly there to start with. Now swap information is - displayed only if an actual libc function to get it is - available. + ASTERISK-27085 #close - This also fixes warnings previously seen with musl libc: + Change-Id: I20eef5da3e5d1d3e58b304416bc79683f87e7612 - [CC] asterisk.c -> asterisk.o - asterisk.c: In function 'handle_show_sysinfo': - asterisk.c:773:6: warning: variable 'totalswap' set but not used - [-Wunused-but-set-variable] - int totalswap = 0; - ^~~~~~~~~ - asterisk.c:770:11: warning: variable 'freeswap' set but not used - [-Wunused-but-set-variable] - uint64_t freeswap = 0; - ^~~~~~~~ +2017-07-25 15:17 +0000 [b3914df10b] Sean Bright - Change-Id: I1fb21dad8f27e416c60f138c6f2bff03fb626eca + * res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours -2016-09-14 07:59 +0000 [89764f7ae9] Joshua Colp + Change-Id: Ia578ede1a55b21014581793992a429441903278b - * rtp: Preserve timestamps on video frames. +2017-07-20 08:08 +0000 [4f4936fd72] Sergej Kasumovic - Currently when receiving video over RTP we store only - a calculated samples on the frame. When starting the video - it can take some time for this calculation to actually yield - a value as it requires constant changing timestamps. As well - if a video frame passes over multiple RTP packets this calculation - will fail as the timestamp is the same as the previous RTP - packet and the number of samples calculated will be 0. + * res_stasis_device_state: Unsubscribe should remove old subscriptions - This change preserves the timestamp on the frame and allows - it to pass through the core. When sending the video this timestamp - is used instead of a new one being calculated. + Case scenario with Applications ARI: - ASTERISK-26367 #close + * Once you subscribe to deviceState with Applications REST API, it will be + added into subscription pool. - Change-Id: Iba8179fb5c14c9443aee4baf670d2185da3ecfbd + * When you unsubscribe it will remove from the device_state_subscription + hash table but not from the subscription pool. -2016-09-14 09:51 +0000 [5f54ac3a80] Joshua Colp + * When you subscribe again, it will add it to pool again. - * res_pjsip_transport_management: Convert time in log message to seconds. + * Now you will have two subscriptions and you will receive same event + twice. - ASTERISK-26375 #close + This fix should now remove deviceState subscription from pool and it + should fix unsubscribe on deviceState. - Change-Id: I46496af5cae41413e76d44d2068a7431279f09dc + ASTERISK-27130 #close -2016-09-13 05:34 +0000 [6ba68b486e] Steve Davies + Change-Id: I718b70d770a086e39b4ddba4f69a3c616d4476c4 - * chan_sip: Fix session timeout on retransmit of non-UDP packets +2017-07-24 13:30 +0000 [a6eb9ee7d2] Joshua Colp - Change-Id I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 Enable Session-Timers for - SIP over TCP (and TLS) also disables SIP retransmits in chan_sip for non-UDP - connections, allowing the TCP layer to handle the retransmits. Unfortunately, - this caused sessions to be terminated with a retransmit timeout becasue it - stopped at the point of the first retrans call. + * core: Add VP9 passthrough support. - This patch waits for the 64*T1 timer to expire instead. + This change adds VP9 as a known codec and creates a cached + "vp9" media format for use. - ASTERISK-19968 + Change-Id: I025a93ed05cf96153d66f36db1839109cc24c5cc - Change-Id: I844f26801aada10bc94e9bebe6e151f0a8443204 +2017-07-19 18:11 +0000 [922930753c] Richard Mudgett -2016-09-13 06:08 +0000 [e3487b9360] Joshua Colp + * app_voicemail.c: Allow mailbox entry on authentication retry prompt. - * res_pjsip: Don't assume a request will have any addresses. + The following testsuite voicemail tests were failing to re-enter the + mailbox after the first login attempt. - When performing DNS resolution the failover code present in - res_pjsip currently assumes that a request will always have - at least one viable address. In practice this is not true. - A domain may be used that has no records. + tests/apps/voicemail/authenticate_invalid_mailbox + tests/apps/voicemail/authenticate_invalid_password - The code now checks that at least one address exists on the - request which prevents looping. + The tests were noting the start of the vm-incorrect-mailbox prompt and + immediately sending the mailbox for the next login attempt. Since the + invalid message playback had to complete before the digits were + recognized, the test passed for the wrong reason and added approximately + 20 seconds to the test times. - ASTERISK-26364 #close + * Allow the vm-incorrect-mailbox prompt to get interrupted by the mailbox + digits like the initial vm-login prompt so the tests are able to enter the + intended mailbox. - Change-Id: Ic0761b0264864acd85915c94d878a81624940f4c + Change-Id: I1dc53fe917bfe03a4587b2c4cd24c94696a69df8 -2016-09-12 12:25 +0000 [7d7b23f04f] Richard Mudgett +2017-07-21 15:57 +0000 [2697e45157] Matthew Fredrickson - * app_queue: Fix CLI "queue show" and AMI Queues action output truncation. + * format.h: Fix a few minor errors in comments. - The output of CLI "queue show" and AMI Queues action is truncated and - "failed to extend from 240 to 327" messages are generated if the queue - member and interface names are lengthy. + A few minor problems were found in comments in format.h. This patch fixes them. - * Increase the string buffer size from 240 to 512 in order to accommodate - for more information fields added to the output since v1.8. + Change-Id: I07f0bdb47b93359b361c4c3d8ecc87cd3199dd94 - ASTERISK-26360 #close - Reported by: Richard Mudgett +2017-07-14 13:47 +0000 [19b080b547] Rusty Newton - Change-Id: Id99c03cf5362453b80491a4b3b0434cb67aa966d + * say.c: Fix file locations for second, seconds, minute, minutes files -2016-09-12 03:28 +0000 [740292e6ae] Walter Doekes + The seconds and minutes files have always existed in the base language + directory of the Core package. So say.c has always been calling the wrong + location (under digits/) for those two files and in the case of second and + minute they didn't exist in the Core packages at all. - * chan_sip: Allow target refresh (Contact update) on re-INVITE. + The 1.6 sounds release moves the second and minute files into Core from + Extra for the languages that already had them. A future release will include + the second and minute files for languages that didn't already have them. - Previously, the Contact was stored only on initial INVITE and on any - 18X and 200. That meant that after re-INVITEs from *us* the Contact - could get updated, but after re-INVITEs from the *peer*, it did not. + This patch just changes all the target locations for second, seconds, + minute, and minutes that were under the digits subdir to be under the root of + sounds instead. Which is where the sounds will be for some languages after 1.6 + sounds and for all languages after a future release. - This changeset fixes this inconsistency, properly allowing target - refreshes through re-INVITES (RFC3261, 12.2). + ASTERISK-25810 #close - If your strictrtp setting allows it, this change allows you to switch - the source IP of a connected/calling device mid-call with a simple - re-INVITE from the new IP. + Change-Id: I05d9d4bee6a7237030530a46e7eb3df15f13f702 + Reported-by: Nicolas Riendeau - ASTERISK-26358 #close +2017-07-21 14:20 +0000 [a2f6028a51] Rusty Newton - Change-Id: Ibb8512054ab27c8c3d2514022568fde943bf2435 + * Sounds: Update Makefile for Extra sounds 1.5.1 release -2016-08-31 15:22 +0000 [82ec58aa91] Richard Mudgett + Incrementing version for the Extra sounds release. 1.5.1 Extra sounds + removes two prompts that were moved into the Core packages in the 1.6 Core + sounds release. - * sip_to_pjsip.py: Map legacy_useroption_parsing. + ASTERISK-27142 #close - Map the sip.conf general section legacy_useroption_parsing to the - new pjsip.conf global ignore_uri_user_options. + Change-Id: I82f017812b0ea9599e19dd4635afd55611f13ee7 - ASTERISK-26316 - Reported by: Kevin Harwell +2017-07-21 11:17 +0000 [063c9a935f] George Joseph - Change-Id: I78108a31995db19d41f4e1a07b3324692c5363fc + * Update make_ari_stubs in master to make the version 16 -2016-08-29 18:08 +0000 [ba362822f3] Richard Mudgett + Ready for next major version - * res_pjsip: Add ignore_uri_user_options option. + Change-Id: If9dc99b3b78768529e69a297d8f87e23582ca6d0 - This implements the chan_sip legacy_useroption_parsing option but with a - better name. +2017-07-21 11:24 +0000 [ba52a36ff2] George Joseph - * Made the caller-id number and redirecting number strings obtained from - incoming SIP URI user fields always truncated at the first semicolon. - People don't care about anything after the semicolon showing up on their - displays even though the RFC allows the semicolon. + * Restore the incorrectly deleted spandspflow2pcap.log - ASTERISK-26316 #close - Reported by: Kevin Harwell + Change-Id: Iafe78cf0fb1e7064223d4dea279eeb776c8fa8e5 - Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62 +2017-07-20 10:52 +0000 [3e8d628c0e] George Joseph -2016-09-09 06:26 +0000 [56caf5402c] Walter Doekes + * Update AMI and ARI versions for master/15 and update UPDATE.txt - * contrib: Let safe_asterisk script continue without /dev/tty9. + AMI goes from 3.2.0 to 4.0.0 + ARI goes from 2.0.0 to 3.0.0 - If you use the safe_asterisk script, it uses hardcoded defaults before - running configurable values from /etc/asterisk/startup.d. The hardcoded - default has TTY=9. Some containerized environments don't have such a - TTY, and safe_asterisk would stop. + Copied UPGRADE.txt -> UPGRADE-15.txt + Created new UPGRADE.txt + Removed a log file that was accidentally checked in a while ago - The custom configuration from /etc/asterisk/startup.d/* isn't read until - after it stopped, so changing TTY in a custom config did not help. + Change-Id: I1c794f910038459b13e16f9c3a12c44e56f142f7 - This changeset changes safe_asterisk to continue if the TTY setting was - untouched and /dev/tty9 and /dev/vc/9 aren't found. +2017-07-20 09:57 +0000 [25c9464325] Sean Bright - Change-Id: I2c7cdba549b77f418a0af4cb1227e8e6fe4148fc + * corosync: Fix corosync library name in configure.ac -2016-09-09 05:39 +0000 [901e612739] Joshua Colp + Also add new corosync packages to install_prereq. - * res_pjsip: Only invoke unidentified endpoint logic when unidentified. + Reported by Travis Ryan in #asterisk-dev - The code was incorrectly invoking the unidentified logic when - an endpoint had actually been identified, causing log messages - to be output. + Change-Id: Ib861c95ba630fed62dc54e56784ad8446ed9d2db - ASTERISK-26349 #close +2017-07-17 11:01 +0000 [680c491a62] Joshua Colp - Change-Id: Id8104fc9e3d138d5e8b6f6977ecc08765fd17d4f + * bridge_softmix / res_rtp_asterisk: Fix packet loss and renegotiation issues. -2016-08-29 22:26 +0000 [2a50c29101] Aaron An + This change does a few things to improve packet loss and renegotiation: - * res/res_pjsip: Add preferred_codec_only config to pjsip endpoint. + 1. On outgoing RTP streams we will now properly reflect out of order + packets and packet loss in the sequence number. This allows the + remote jitterbuffer to better reorder things. - This patch add config to pjsip by endpoint. - ;preferred_codec_only=yes - ; Respond 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. + 2. Video updates can now be discarded for a period of time + after one has been sent to prevent flooding of clients. - ASTERISK-26317 #close - Reported by: AaronAn - Tested by: AaronAn + 3. For declined and removed streams we will now release any + media session resources associated with them. This was not + previously done and caused an issue where old state was being + used for a new stream. - Change-Id: Iad04dc55055403bbf5ec050997aee2dadc4f0762 + 4. RTP bundling was not actually removing bundled RTP instances + from the parent. This has been resolved by removing based on + the RTP instance itself and not the SSRC. -2016-08-16 15:34 +0000 [28b2aeba0b] Mark Michelson + 5. The code did not properly handle explicitly unbundling an + RTP instance from its parent. This now works as expected. - * res_pjsip: Do not crash on ACKs from unknown endpoints. + ASTERISK-27143 - The endpoint identification PJSIP module is intended to identify which - endpoint an incoming request is from. If an endpoint is not identified, - then an artificial endpoint is used in its place when proceeding. + Change-Id: Ibd91362f0e4990b6129638e712bc8adf0899fd45 - The problem is that the ACK request type is an exception to the rule. - The artificial endpoint is not used when processing an ACK. This results - in the possibility of having a NULL endpoint being used further on. +2017-07-18 15:04 +0000 [e7d9e42616] Benjamin Keith Ford - The reason ACK is an exception is an attempt not to spam security logs - with unidentified requests. Presumably, you've already logged the - unidentified request on the preceeding INVITE. + * pjsip: Increase maximum packet size. - Up until Asterisk 13.10, retrieving a NULL endpoint in this fashion - didn't cause an issue. A new change in 13.10 added endpoint ACL checking - shortly after endpoint identification. Because we are accessing a NULL - endpoint, this ACL check resulted in a crash. + The maximum packet size for PJSIP has been increased to handle the + multiple streams being added for WebRTC. - The fix here is to be sure to retrieve the artificial endpoint for all - request types. ACKs still do not generate unidentified request security - events. + Change-Id: I9ea1e8d02668c544acadcb1c6200e1cc1bd588b3 - ASTERISK-26264 #close - Reported by nappsoft +2017-07-17 07:19 +0000 [bcd3f65174] Joshua Colp - AST-2016-006 + * bridge_softmix: Don't reorder streams on participant leaving. - Change-Id: Ie0c795ae2d72273decb972dd74b6a1489fb6b703 + When a participant leaves a bridge while operating in SFU mode + their respective stream on every other participant needs to be + removed. Leaving the stream out of the new topology results in + every stream after it being moved and reordered. This causes + problems with clients. Instead simply mark the stream as removed + which leaves it in place in the SDP and doesn't reorder or touch + any other streams. -2016-08-23 06:35 +0000 [82a3d659dc] Joshua Colp + ASTERISK-27136 - * chan_sip: Don't allocate new RTP instances on top of old ones. + Change-Id: I4b3f840adcdf69b83842b0d8a737665ba0ef9cb1 - In some scenarios dialog_initialize_rtp can be called multiple times on - the same dialog. This can cause RTP instances to be leaked along with - multiple file descriptors for each instance. +2017-07-16 12:31 +0000 [f48695ce5b] Joshua Colp - This change makes it so the existing RTP instances are destroyed and - not overwritten, stopping the memory leak. + * bridge_softmix: Use removed stream spots when renegotiating. - ASTERISK-26272 #close - patches: - ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909) + Streams are never truly removed in SDP, they still occupy + a location within the SDP. This location can be reused by + another stream if it so chooses. - Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73 + This change takes advantage of this such that if a new stream + is needing to be added for a new participant any removed streams + are instead replaced first. This reduces the size of the SDP + and the number of streams. -2016-09-06 11:46 +0000 [f369dbb705] Richard Mudgett + ASTERISK-27134 - * res_pjsip_messaging.c: Misc cleanups and fixes. + Change-Id: I95cdcfd55cf47e02ea52abb5d94008db3fb68b1d - * Eliminated RAII_VAR in get_outbound_endpoint(). +2017-07-16 12:18 +0000 [942ee54b53] Joshua Colp - * Simplify update_to() coding. However, this function can only be a NoOp - because the To string can only be a URI and not a name-address formatted - string. + * res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use. - * Simplify update_from() coding. Also fixed a code path modifying the - from string when the caller could still want to use the original string. + This change makes it so that if an RTCP packet is being sent + the RTP ICE component is used for sending if RTCP-MUX is in use. - * Fixed msg_data_create() incompletely removing the "pjsip:" to then add - back the "sip:" string if needed. The code didn't handle the "pjsip:sip:" - case because it left the colon after pjsip in the string. + ASTERISK-27133 - Change-Id: I68a09a665f6d4daa9eaa59069045ab69122e28db + Change-Id: I6200f611ede709602ee9b89501720c29545ed68b -2016-09-07 16:00 +0000 [2e5da0c715] Joshua Colp +2017-07-14 01:25 +0000 [26f149ab0a] Sergej Kasumovic - * res_pjsip: Allow global headers to be overridden. + * app_confbridge: Make sure name recordings are always removed from the filesystem - Currently when you add global headers from the dialplan both - the header in the dialplan and the globally configured header - are added to the resulting SIP INVITE. This change makes it - so the headers in the dialplan take precedence and are the - only ones added. + This commit fixes two possible scenarios: - Change-Id: I36f864298f38db3632ad503edc11267cb8ffb3ad + * When recording name and if during recording you hangup, file is never + removed. This is due to the fact file location is nulled. + * When recording name and if you hangup during thank-you prompt, file + is never removed. -2016-08-10 15:14 +0000 [ac02bbd9a0] Mark Michelson + ASTERISK-27123 #close - * ConfBridge: Make some announcements asynchronous. + Change-Id: I39b7271408b4b54ce880c5111a886aa8f28c2625 - Confbridge announcements tend to block a channel while they are being - played. In some circumstances, this is warranted since you want that - particular channel not to hear the announcement (Example: "John Doe has - entered the conference"). For others it makes less sense. +2017-07-14 01:11 +0000 [d3f5b265c7] Sergej Kasumovic - This change first introduces methods for playing sounds asynchronously - into the conference. This is very similar to how synchronous sounds are - played, except the channel initiating the playback does not wait for the - sound to complete before moving on. + * chan_iax2: On reload make sure to check for existing MWI subscription - Asynchronous announcements are used for two circumstances: - * Sounds played for a user after they have left the bridge - * Sounds that play first to a single user and then the rest of the - conference (if the channel and conference use the same language) + On every reload of chan_iax2 module, MWI subscription was added, which + results in additional taskprocessors being accumulated over time. - ASTERISK-26289 #close - Reported by Mark Michelson + This commit fixes it by making sure we check for existing subscription + first. - Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a + This was verified with 'core show taskprocessors' CLI command. -2016-07-19 09:41 +0000 [7a12355dbd] Alexander Traud + ASTERISK-27122 #close - * chan_sip: Allow Preferred sRTP. + Change-Id: Ie2ef528fd5ca01b933eeb88188cc10967899cfb9 - Following the Encrypt-all-the-things paradigm: +2017-07-10 18:17 +0000 [7da6ddda30] Kevin Harwell - The user enters his SIP-URI and password. Thanks to DNS-NAPTR, the phone - determines SIP-over-TLS as preferred transport. In SIP/SDP, the phone starts - the call with a crypto attribute, but not as RTP/sAVP but the RTP/AVP profile - (sRTP is preferred aka optional; not mandatory). If the VoIP server does not - support sRTP and TLS, the phone shows an open padlock icon. + * res_pjsip: Add "webrtc" configuration option - This paradigm is supported by several VoIP/SIP clients on default. Some - implementations even cannot be changed to RTP/sAVP. Therefore here, this - change allows Preferred sRTP for ingress. For egress, please, create a dial - plan which starts with RTP/SAVP, and when rejected tries again with RTP/AVP. + This patch creates a new configuration option called "webrtc". When enabled it + defaults and enables the following options that are needed in order for webrtc + to work in Asterisk: - ASTERISK-20234 #close - Reported by: tootai - Tested by: tootai, Alexander Traud - patches: - srtp_patches.diff submitted by Matt Jordan + rtcp-mux, use_avpf, ice_support, and use_received_transport=enabled + media_encryption=dtls + dtls_verify=fingerprint + dtls_setup=actpass - Change-Id: I42cb779df3a9c7b3dd03a629fb3a296aa4ceb0fd + When "webrtc" is enabled, this patch also parses the "msid" media level + attribute from an SDP. It will also appropriately add it onto the outgoing + session when applicable. -2016-09-07 05:59 +0000 [baa7dba180] Joshua Colp + Lastly, when "webrtc" is enabled h264 RTCP FIR feedback frames are now sent. - * res_resolver_unbound: Fix config documentation. + ASTERISK-27119 #close - The code was referencing the config section as 'globals' - instead of 'general'. This change swaps it over to 'general'. + Change-Id: I5ec02e07c5d5b9ad86a34fdf31bf2f9da9aac6fd - Change-Id: I9dfe7788f41c4a6754c77e103880dc1a747de7fe +2017-07-13 15:43 +0000 [3fbb4a0a08] Rusty Newton -2016-09-06 15:25 +0000 [e769c19a31] Matt Jordan + * Sounds: Update for core sounds 1.6 release - * res/res_stasis_playback: Cancel the entire playlist when a stop occurs + Added necessary lines to make the en_NZ language set selectable and to get + core sounds 1.6 pulled down. - Prior to this patch, a stop issued by a delete of a Playback resource - (indicated by the control frame AST_CONTROL_STREAM_STOP) would only stop - the current media URI playing. Subsequent URIs specified by a playback - operation would then proceed on, even though we had just indicated to - the User that the Playback was finished *and* after they had just - 'deleted' the resource. Whoops. + ASTERISK-26807 #close + ASTERISK-25816 #close + ASTERISK-26274 #close - This patch corrects it by bailing out of the sequence of URIs to play if - one of them is terminated with an AST_CONTROL_STREAM_STOP indication. + Change-Id: I84e4dd4696568cc1ba318d12ac4b075461d6eed4 - ASTERISK-26341 #close +2017-07-10 14:04 +0000 [78a50b0343] Corey Farrell - Change-Id: I2da9ec43545ba46cdfffe287c7e4907eae7fca42 + * core: Add PARSE_TIMELEN support to ast_parse_arg and ACO. -2016-08-01 20:55 +0000 [6caf6bcdad] George Joseph + This adds support for parsing timelen values from config files. This + includes support for all flags which apply to PARSE_INT32. Support for + this parser is added to ACO via the OPT_TIMELEN_T option type. - * build: Add download capability for external packages + Fixes an issue where extra characters provided to ast_app_parse_timelen + were ignored, they now cause an error. - The DPMA and g729a, silk, siren7 and siren14 codecs hosted at - http://downloads.digium.com/pub/telephony/ are now listed in the - "External" sections of the "Resource Modules" and "Codec Translators" - pages in menuselect. Any that are selected will automatically be - downloaded and installed when "make install" is run. Their LICENSE and - README (if avaialble) files will be installed to - ASTVARLIBDIR/documentation/thirdparty/. + Testing is included. - Example use with codecs: + ASTERISK-27117 #close - The codecs/codecs.xml file is a menuselect style xml file that lists - the codecs to be included. Their support levels are 'external', which - triggers the download and install, and defaultenabled is no. Also - because codec_g729a is actually in a directory named codec_g729 on the - download server, the newly added 'member_data' element is used to - override the default of the directory name being the package name. You - can use the 'directory_name' attribute to keep default base URL - (http://downloads.digium.com/pub/telephony/) but use the new directory, - or you use the 'remote_url' attribute to specify a full URL to the - download directory. In this case, you must still follow the same - subdirectory naming conventions as that used for the packages located - at 'http://downloads.digium.com/pub/telephony'. + Change-Id: I6b333feca7e3f83b4ef5bf2636fc0fd613742554 - A new configure option '--with-externals-cache' was added and like - '--with-sounds-cache' it allows the installer to cache tarballs so - they're not downloaded every time. +2017-06-30 13:55 +0000 [065c3005ad] Joshua Colp - To assist with the download and install process, each external package - now has a manifest.xml file that, among other things, contains a package - version and checksums for each file in the tarball. The manifest is - saved to both the cache directory and ASTMODDIR and together with the - manifest.xml on the downloads site, tells the install scripts whether - a download and/or update is needed. + * res_rtp_asterisk / res_pjsip: Add support for BUNDLE. - bash and xmlstarlet are required for downloader operation. If they're - not installed, the external items in menuselect will be unavailable. + BUNDLE is a specification used in WebRTC to allow multiple + streams to use the same underlying transport. This reduces + the number of ICE and DTLS negotiations that has to occur + to 1 normally. - Change-Id: Id3dcf1289ffd3cb0bbd7dfab3cafbb87be60323a + This change implements this by adding support for it to + the RTP SDP module in PJSIP. BUNDLE can be turned on using + the "bundle" option and on an offer we will offer to + bundle streams together. On an answer we will accept any + bundle groups provided. Once accepted each stream is bundled + to another RTP instance for transport. -2016-08-18 14:45 +0000 [7bb7f7b9d5] Alexei Gradinari + For the res_rtp_asterisk changes the ability to bundle + an RTP instance to another based on the SSRC received + from the remote side has been added. For outgoing traffic + if an RTP instance is bundled to another we will use the + other RTP instance for any transport related things. For + incoming traffic received from the transport instance we + look up the correct instance based on the SSRC and use it + for any non-transport related data. - * res_pjsip_session: segfault on already disconnected session + ASTERISK-27118 - On heavy loaded system the TCP/TLS incoming calls could be - disconnected by pjproject while these calls are being - processed by asterisk which could use the session's memory pools. - If the session in the disconnected state then the session memory - pools were already freed, so we get segfault. + Change-Id: I96c0920b9f9aca7382256484765a239017973c11 - This patch adds a lifetime control on an INVITE session to pjproject. - The lifetime of the session is manipulated by calling - pjsip_inv_add_ref/pjsip_inv_dec_ref. - This patch uses these functions to inform pjproject that the - session is in use. +2017-07-11 09:55 +0000 [8b535a406b] Torrey Searle - This patch adds check if the session state is not disconnected - and also checks if the memory pool is not NULL. + * res/res_stasis_snoop: generate silence when audiohook returns null - This patch also places tasks 'session_end' and 'session_end_completion' - into session's serializer to avoid race condition. + Currently when rtp is paused, no packets are written to the + recorded audio file, causing the silence to be skipped and recording + not properly time aligned. The read handler as been adapted to + return a silence frame of the correct size. - ASTERISK-26291 #close + ASTERISK-27128 #close - Change-Id: I4d28b1fb3b91f0492a911d110049d670fdc3c8d7 + Change-Id: I2d7f60650457860b9c70907b14426756b058a844 -2016-09-06 02:41 +0000 [d80b28560c] Walter Doekes +2017-06-22 07:47 +0000 [d42a9cc9dc] Torrey Searle - * chan_sip: Don't refuse calls with "optional crypto"; fall back to RTP. + * res/res_pjsip_t38 ensure t38 requests get rejected quickly - Certain SNOM phones send so-called "optional crypto" in their SDP body. - Regular SRTP setup looks like this: + arm the t38 webhook always, so we can correctly reject a + T38 negotiation request when t38 is disabled on a channel - m=audio 64620 RTP/SAVP 8 0 9 99 3 18 4 101 - a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... + Change-Id: Ib1ffe35aee145d4e0fe61dd012580be11aae079d - SNOM-style "optional crypto" looks like this: +2017-07-12 13:24 +0000 [6b138046e7] Corey Farrell - m=audio 61438 RTP/AVP 8 0 9 99 3 18 4 101 - a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... + * core: Add digit filtering to ast_waitfordigit_full - A crypto line is supplied, but the m-line does not have SAVP. + This adds a parameter to ast_waitfordigit_full which can be used to only + stop waiting when certain expected digits are received. Any unexpected + DTMF digits are simply ignored. - When res_srtp.so is *not* loaded, then chan_sip.so treats the optional - crypto as regular RTP, but when res_srtp.so *is* loaded, it refuses the - incoming call with the following message: + This also creates a new dialplan application WaitDigit. - WARNING: process_sdp: Failed to receive SDP offer/answer with - required SRTP crypto attributes for audio + ASTERISK-27129 #close - For platforms that want to start providing SRTP this presents a - compatibility problem. + Change-Id: Id233935ea3d13e71c75a0861834c5936c3700ef9 - This changeset lets chan_sip handle the SDP as if no crypto-line was - supplied: i.e. accept the call as regular RTP, just like it did before - res_srtp was loaded. +2017-07-11 04:48 +0000 [b54eb167b4] Holger Hans Peter Freyther - Now you'll get this informative warning instead: + * app_playback.c: Use the timezonename parameter - WARNING: Ignoring crypto attribute in SDP because RTP transport is - insecure + In say_date_generic the timezonename parameter is passed but never + used. Fix it by passing it to the ast_localtime function. - ASTERISK-23989 #close - Reported by: Olle Johansson + ASTERISK-27124 - Change-Id: I91a15ae05a0296e398d6b65f53bb11afde1d80e2 + Change-Id: I63106b8db10426d417d7275f22554a616e92fae4 -2016-09-03 16:04 +0000 [730cb3b0b7] Matt Jordan +2017-07-12 15:07 +0000 [e83b9d141a] Sean Bright - * apps/app_dial: Fix crash on non-connect call paths for Privacy/Screening option + * basic-pbx: Remove res_pjsip_multihomed from sample config - In any scenario in which the callee is not connected to the caller, the - current code in app_dial will crash due to raising a Dial End Stasis - Message after the callee channel has been hung up. This patch corrects - the error by simply moving the explicit hangup of the callee (peer) - channel until after the dial end message. + ASTERISK-27127 #close + Reported by: HZMI8gkCvPpom0tM - ASTERISK-25691 #close + Change-Id: I2b0c54570d58156e37166ac536728af3b6c01789 - Change-Id: I816a414014424d0d8c80e2a3cbef13ef8c63798d +2017-07-11 14:33 +0000 [7f09fd2c2f] Joshua Colp -2016-09-03 16:02 +0000 [6e1a3b924e] Matt Jordan + * bridge/core_unreal: Fix SFU bugs with forwarding frames. - * apps/app_dial: Set the DIALSTATUS to NOANSWER on privacy option 5 + This change fixes a few things uncovered during SFU testing. - If the callee selects option '5' using the Dial application's privacy - (P) option, the DIALSTATUS is erroneously set to ANSWER. This option - reflects the callee sending the caller to VoiceMail one time; the call - is definitely *not* ANSWERed in such a scenario. With this patch, the - DIALSTATUS is instead set to NOANSWER, which is the same DIALSTATUS that - is set when the 'send to VoiceMail every time' option is set. + 1. Unreal channels incorrectly forwarded video frames when + no video stream was present on them. This caused a crash when + they were read as the core requires a stream to exist for the + underlying media type. The Unreal channel will now ensure a + stream exists for the media type before forwarding the frame + and if no stream exists then the frame is dropped. - ASTERISK-25691 + 2. Mapping of frames during bridging from the stream number of + the underlying channel to the stream number of the bridge was + done in the wrong location. This resulted in the frame getting + dropped. This mapping now occurs on reading of the frame from + the channel. - Change-Id: Iaf0c9f0fa00545e7366443875e2bb7d9a89a1358 + 3. Bridging was using the wrong ast_read function resulting in + it living in a non-multistream world. -2016-08-30 16:40 +0000 [68c7694abb] Richard Mudgett + 4. In bridge_softmix when adding new streams to existing channels + the wrong stream topology was copied resulting in no streams + being added. - * res_pjsip_registrar.c: Reduce stack usage in find_aor_name(). + Change-Id: Ib7445722c3219951d6740802a0feddf2908c18c8 - Change-Id: I8aebad1fdcf303bd115b59a4b57fbbd5b2267f09 +2017-07-11 07:26 +0000 [b7a875778a] George Joseph -2016-08-29 18:06 +0000 [35ce4d25c7] Richard Mudgett + * res_musiconhold: Add kill_escalation_delay, kill_method to class - * pjsip_configuration.c: Ignore repeated identify by methods. + 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. - Change-Id: Ied0c06043d1dfef8fdc9c9a808cf89b118119838 + * 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. -2016-08-30 17:26 +0000 [c1e438fdf7] Richard Mudgett + * 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. - * config_global.c: Comments and a default expression adjustment. + Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b - Change-Id: Ia6a58f8c73a30da6874b3f94364dce162d6f1ad3 +2017-07-05 12:44 +0000 [5d86da61a6] Benjamin Keith Ford -2016-08-31 15:14 +0000 [edcf09e47c] Richard Mudgett + * manager: Remove AMI "Queues" action. - * sip_to_pjsip.py: Map canreinvite as directmedia alias. + When performing the "Queues" action via AMI, it outputs the same + text that the Asterisk CLI outputs when running a "queue show" + command, which does not conform with the AMI spec. "QueueStatus" + already does what the "Queues" action should do, so instead of + correcting the output, the "Queues" action will be removed and + "QueueStatus" should be used instead. - Change-Id: I48b8e150f96a3d2a24d8fc25fbe4f5aff9f4a6b2 + ASTERISK-27073 #close + Reported by: Brian -2016-08-31 15:37 +0000 [47336a0bdd] Richard Mudgett + Change-Id: Id11743859758255b69cc3a557750d7a56c6d16f8 - * sip_to_pjsip.py: Fix typo converting outboundproxy registration. +2017-07-03 07:30 +0000 [d58ef31acd] Tzafrir Cohen - Change-Id: I6f30e5f9fcf8469ba0079fbf884047d54c2c0b15 + * Avoid setting maxfiles for a remote asterisk -2016-08-31 15:13 +0000 [dba02575fc] Richard Mudgett + Setting maxfiles (maximum number of open files) has no practical + effect on a remote asterisk (rasterisk, rasterisk -x). - * sip_to_pjsip.py: Fix comment typo and tabs. + It has an ill effect of printing an extra message, which + may be annoying in case of -x. - Change-Id: If35174614545727817d329c60ba4456c028941b5 + ASTERISK-27105 #close -2016-08-31 15:56 +0000 [4aaa27e532] Richard Mudgett + Change-Id: Iaf9eb344e4b4b517df91b736b27ec55f6a6921a2 - * Sample configs: Eliminate false multiline comment block starts. +2017-07-05 15:31 +0000 [303f935a50] George Joseph - Change-Id: Ie627def9604ae30abd80754f9e6f09874825aec6 + * http.c: Reduce log spam -2016-09-02 11:36 +0000 [c3b965a2c0] Richard Mudgett + Messages like "fwrite() failed: Connection reset by peer" are no + help whatsoever, especially since they can be caused simply by a + client disconnecting. - * format_cap.c: Fix CLI "core show channeltype Surrogate" crash. + * Make those WARNINGs DEBUGs. + * Check the return from ast_iostream_printf of headers. - * Make ast_format_cap_get_names() NULL tolerant. + Change-Id: I17bd5f3621514152a7b2b263c801324c5e96568b - ASTERISK-26331 #close - Reported by: CGI.NET +2017-07-07 11:19 +0000 [8f72128e66] Benjamin Keith Ford - Change-Id: Id67e93936dc8ec2a33a9d33655843d43b59285a3 + * res_pjsip: Fix crash with from_user containing invalid characters. -2016-08-26 17:22 +0000 [e875e1c12a] Corey Farrell + If the from_user field contains certain characters (like @, {, ^, etc.), + PJSIP will return a null value for the URI when attempting to parse it. + This causes a crash when trying to dial out through a trunk that contains + these invalid characters in its from_user field. - * sorcery: Create function ast_sorcery_lockable_alloc. + This change checks the configuration and ensures that an endpoint will + not be created if the from_user contains an invalid character. It also + adds a null check to the PJSIP URI parsing as a backup. - Create an alternative to ast_sorcery_generic_alloc which uses astobj2 - shared locking. Use this new method for the 'struct ast_sip_aor' allocator. + ASTERISK-27036 #close + Reported by: Maxim Vasilev - Change-Id: I3f62f2ada64b622571950278fbb6ad57395b5d6f + Change-Id: I0396fdb5080604e0bdf1277464d5c8a85db913d0 -2016-08-18 13:28 +0000 [131baf70d6] Corey Farrell +2017-06-27 19:27 +0000 [03ae8b0105] Richard Mudgett - * named_locks: Use ao2_weakproxy to deal with cleanup from container. + * json.c: Add backtrace log to find 'Invalid UTF-8 string' errors - This allows standard ao2 functions to be used to release references to - an ast_named_lock. This change can cause less frequent locking of the - global named_locks container. The container is no longer locked when a - named_lock reference is being release except when this causes the - named_lock to be destroyed. + Change-Id: I9020ff9f2b3749904317c0c173f47a1bbed6f929 - Change-Id: I644e39c6d83a153d71b3fae77ec05599d725e7e6 +2017-07-05 13:39 +0000 [9cd8a1df79] Michael Walton (modified) -2016-08-26 13:18 +0000 [0c5b6e9ff5] Corey Farrell + * res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock. - * astobj2: Support using a separate object for locking. + When a message is received on the TURN socket, the code processing the + message needs to call into the ICE/STUN session for further processing. + This code path locks the TURN group lock then the ICE/STUN group lock. In + another thread an ICE/STUN timer can fire off to send a keep alive message + over the TURN socket. In this code path, the ICE/STUN group lock is + obtained then the TURN group lock is obtained to send the packet. A + classic deadlock case if the group locks are not the same. - Create ao2_alloc_with_lockobj function to support shared locking. + * Made TURN get created using the ICE/STUN session's group lock. - Change-Id: Iba687eb9843922be7e481e23a32c0700ecf88a80 + NOTE: I was originally concerned that the ICE/STUN session can get + recreated by ice_reset_session() for an event like RTCP multiplexing + causing a change during SDP negotiation. In this case the TURN group lock + would become different. However, TURN is also recreated as part of the + ICE/STUN recreation in ice_create() when all known ICE candidates are + added to the new ICE session. While the ICE/STUN and TURN sessions are + being recreated there is a period where the group locks could be + different. -2016-08-31 12:23 +0000 [48fd4c815c] Michael Kuron + ASTERISK-27023 #close + Patches: + res_rtp_asterisk-turn-deadlock-fix.patch (license #6502) + patch uploaded by Michael Walton (modified) - * app_mp3: Use correct buffer size and the same sample rate as the channel + Change-Id: Ic870edb99ce4988a8c8eb6e678ca7f19da1432b9 - Previously, the buffer used for MP3 streamed from HTTP servers had a size of - 1 MB. For 8 kHz mono audio at 16 bit resolution, such a buffer covers about 1 - minute. Only when the buffer is full does audio start to play. - For MP3 files streamed from a server, that is usually not a big deal as long as - the connection to the server is fast enough to supply that much data within a - second or two. For MP3 live streams however, it takes 1 minute to download 1 - minute of audio, so without this change, app_mp3 wasn't really usable for MP3 - live streams. - This commit changes the buffer size so that it covers 6 seconds of an MP3 file - streamed from a server and 0.5 seconds of an MP3 live stream. The latter is - identified by the use of a .m3u file extension. +2017-07-06 05:55 +0000 [7a4f577eb7] George Joseph - app_mp3 so far only supported 8 kHz audio. - Now it always runs at the sample rate of the channel. + * Fix alembic branches - ASTERISK-26085 #close + Change-Id: I04f607f084bda9b1b7f626e8e9735c37dc751187 - Change-Id: Id1ee274733cd804a0edecf7450329b72f1235af0 +2017-06-23 11:17 +0000 [1028f64be4] Richard Mudgett -2016-08-31 05:33 +0000 [91993ebaa5] Jean Aunis + * bridge_native_rtp.c: Fix direct media video RTP instance ACL check. - * resource_channels.c: add hangup reason "answered_elsewhere". + The video stream was using the audio stream RTP instance addresses to + check if the video RTP gets directed to an allowed direct media Access + Control List (ACL) address. There is no guarantee that the video RTP + instance uses the same addresses as the audio RTP instance. - In ARI, the channels API allows to hangup a channel with a hangup reason. - This commit adds a new reason "answered_elsewhere". - When using a SIP channel, this will eventually allow Asterisk to add a proper - "Reason" header to a CANCEL message. + This looks like it has been a bug since v11 when direct media ACL was + first added to chan_sip and then faithfully reproduced through a couple + code refactorings into the new bridging architecture. - ASTERISK-26321 + Change-Id: I8ddd56320e0eea769f3ceed3fa5b6bdfb51d681a - Change-Id: Ia97675bd4acd6a7f58eb467953dfb94559f6583d +2017-07-05 10:29 +0000 [325eeced6a] Sean Bright -2016-08-26 10:39 +0000 [faf9bdebb7] Alexei Gradinari + * core: Remove 'Data Retrieval API' - * res_pjsip: qualify/unqualify added/deleted realtime endpoints + This API was not actively maintained, was not added to new modules + (such as res_pjsip), and there exist better alternatives to acquire the + same information, such as the ARI. - If the PJSIP endpoint's AOR with the permanent contact - was deleted from the realtime storage the res_pjsip module - continues trying to qualify this contact. - The error 'Unable to find an endpoint to qualify contact' - appeares every 'qualify_frequency' seconds. - This patch deletes this contact in this case. + Change-Id: I4b2185a83aeb74798b4ad43ff8f89f971096aa83 - The PJSIP endpoint's AOR with the permanent contact - is never qualified if it is added to realtime storage - after asterisk started. - This patch adds qualifying for the AOR's permanent contacts - on the first handling of this AOR. +2017-06-19 11:22 +0000 [d556c67f9f] Rodrigo Ramírez Norambuena - ASTERISK-26319 #close + * app_queue: Add change priority of call - Change-Id: Ib93dded9121edb113076903d1aa95402f799f8fe + This patch include a feature to change the priority a caller in a + queue by CLI and AMI. -2016-08-22 17:08 +0000 [c98a047ee6] Mark Michelson + Change-Id: I55d520d71cc1cefe9a9b81fefaefc14679e96133 - * res_pjsip: Default endpoints to the "offline" status. +2017-07-03 10:59 +0000 [910c05455d] Alexander Traud - A recent change attempted to optimize startup by not updating contact - status. Instead, code responsible for qualifying contacts updates the - status as it becomes known. The code even accounts for contacts/AORs - that are not set to be qualified. + * chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support). - The problem, though, is when there are no contacts associated with an - endpoint. A common case is when an endpoint is set to register its - contacts but has not done so yet. In this case, prior to registration, - the endpoint's device state will appear to be "not in use" and hints - associated with that device will appear to be "idle". In actuality, the - device state and hint should both appear as "unavailable". The reason - for the failure is that the optimization change made all persistent - endpoint states set to "unknown". + When sip.conf contained tcpenable=yes and autodomain=yes, the TCP domain was + added in any case, because of a local Boolean-negation error of the return value + of ast_sockaddr_cmp. After fixing this error for TCP and TLS, the TLS domain was + still always added with tlsenable=yes, because the domains were not compared + just on the address but also on the port – and TLS is always on a different port + than UDP/TCP. - The fix here is to change the hard-coded "unknown" to be "offline" - instead. The default state will be offline until the qualifying code - determines that the contact is actually online. This way, if there are - no contacts at all, then the state stays as offline, and device state - and hints appear correctly. - - ASTERISK-26269 #close - Reported by nappsoft + ASTERISK-27106 - Change-Id: Ie99b84169393983453076f5e9c0d35ff313a456a + Change-Id: I14fe9e319e238320b094016980445ef3a5b3337c -2016-08-29 07:07 +0000 [5e0758575c] Etienne Lessard +2017-07-03 10:38 +0000 [4398aa8fa4] Alexander Traud - * pbx.c: Prevent infinite recursion in manager_show_dialplan_helper. + * chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support). - Previously, if context A was including context B and context B was including - context A, i.e. if there was a circular dependency between contexts, then - calling manager_show_dialplan_helper could lead to an infinite recursion, - resulting in a crash. + Because of a copy-and-paste error when the struct ast_sockaddr changed, + tlsbindaddr was not added, when sip.conf contained autodomain=yes; see + "show sip domains" on the command-line interface (CLI) of Asterisk. - This commit applies the same solution as the one implemented in the - show_dialplan_helper function. The manager_show_dialplan_helper and - show_dialplan_helper functions contain lots of code in common, but the former - was missing the "infinite recursion avoidance" code. + ASTERISK-27106 - ASTERISK-26226 #close + Change-Id: I3d0957150017c223136968ef1266f275d0d6695e - Change-Id: I1aea85133c21787226f4f8442253a93000aa0897 +2017-06-29 13:58 +0000 [950b39a4f5] Sean Bright -2016-08-25 07:06 +0000 [c21e6764f1] Joshua Colp + * app_voicemail: Cleanup ODBC connection handling - * app_queue: Ensure member is removed from pending when hanging up. + The primary focus of this patch is adding a missing call to + ast_odbc_release_obj(), but is also a general cleanup of the ODBC + related code in app_voicemail. - When dialing channels it is possible that they may not ever - leave the not in use state (Local channels in particular) by - the time we cancel them. If this occurs but we know they were - dialed we explicitly remove them from the pending members - container so that subsequent call attempts occur. + ASTERISK-27093 #close - ASTERISK-26299 #close + Change-Id: I8e285142eaeb3146b4287a928276b70db76c902b - Change-Id: I6ad0d17c36480c92cebf840626228ce3f7e4bd65 +2017-06-30 23:57 +0000 [50ddb56dad] Corey Farrell -2016-08-26 14:34 +0000 [a7487e9261] George Joseph + * channel: Clear channel flag in error branch. - * pjproject_bundled: Disable srtp use by pjmedia + Clear channel flag AST_FLAG_END_DTMF_ONLY in ast_waitfordigit_full when + ast_read returns NULL. - The reason for the disable is that while Asterisk works fine with older - libsrtp versions, newer versions of pjproject won't compile with them. - Debian 6 for instance, has libsrtp 1.4.4 which is older than what - pjproject is expecting. + ASTERISK-27100 #close - We don't use most of pjmedia but we DO use it for SDP negotiation. - Luckily disabling srtp in pjmedia doesn't interfere with it's ability - to negitiate a secure channel. The proper crypto attributes are - negotiated in both directions. + Change-Id: Id3039e9a4e74e0cb359f636c9fd0c9740ebf7d9d - ASTERISK-26279 #close +2017-06-29 18:27 +0000 [b485f6c59c] Richard Mudgett - Change-Id: Id25a92cdf3df97a26c53cffae65b6b82de33c8e2 + * pjsip_distributor.c: Fix deadlock with TCP type transports. -2016-08-26 08:41 +0000 [858fa5eb2c] Alexander Traud + When a SIP message comes in on a transport, pjproject obtains the lock on + the transport and pulls the data out of the socket. Unlike UDP, the TCP + transport does not allow concurrent access. Without concurrency the + transport lock is not released when the transport's message complete + callback is called. The processing continues and eventually Asterisk + starts processing the SIP message. The first thing Asterisk tries to do + is determine the associated dialog of the message to determine the + associated serializer. To get the associated serializer safely requires + us to get the dialog lock. - * channel: No hung-up on failing security requirements. + To send a request or response message for a dialog, pjproject obtains the + dialog lock and then obtains the transport lock. Deadlock can result + because of the opposite order the locks are obtained. - In your Diaplan, if you specify - same => n,Set(CHANNEL(secure_bridge_media)=1) - same => n,Set(CHANNEL(secure_bridge_signaling)=1) - only the SIP channel driver chan_sip supports this. All other channels drivers - like res_pjsip fail. In case of failure, the original sRTP source code released - the whole channel, even if not hung-up, yet. This change does not release the - channel but instead hangs-up the channel. + * Fix the deadlock by obtaining the serializer associated with the dialog + another way that doesn't involve obtaining the dialog lock. In this case, + we use an ao2 container to hold the associated endpoint and serializer. + The new locks are held a brief time and won't overlap other existing lock + times. - ASTERISK-26306 + ASTERISK-27090 #close - Change-Id: I0489f0cb660fab6673b0db8af027d116e70a66db + Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd -2016-08-20 09:04 +0000 [f35501b8c9] Alexander Traud +2017-06-29 18:22 +0000 [65a5ac0168] Richard Mudgett - * sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations. + * pjsip_distributor.c: Fix unidentified_requests hash functions. - When using the migration script sip_to_pjsip.py, and your sip.conf is - configured with bindaddr=::, two transports are written to pjsip.conf, one for - 0.0.0.0 (IPv4) and one for [::] (IPv6). That way, PJProject listens on the IPv4 - and IPv6 wildcards; a IPv4/IPv6 Dual Stack configuration on a single interface - like in chan_sip. + The OBJ_SEARCH_xxx defines should not be used as if they were individual + bits. They represent a multi-bit enumeration value field. - Furthermore, the script internal functions "build_host" and "split_hostport" - did not parse Literal IPv6 addresses as expected (like [::1]:5060). This change - makes sure, even such addresses are parsed correctly. + Change-Id: I32abc9a475396dab02402a7014357dd94284e17b - ASTERISK-26309 +2017-06-29 15:06 +0000 [e7d41050e0] Kevin Harwell - Change-Id: Ia4799a0f80fc30c0550fc373efc207c3330aeb48 + * app_stream_echo: misc bug fixes -2016-08-04 20:11 +0000 [ea929d766d] Richard Mudgett + Fixed the following bugs: - * res_pjsip: Cache global config options. + * calls to stream_echo_write had the last two parameters swapped + * ast_read should have been ast_read_stream + * added a null check on the frame's subclass format - We may check a global config option hundreds of times a second or more. - Asking sorcery for the global configuration from the config files backend - involves several allocations and container traversals. Using realtime - without a memory cache is a lot worse because you have to lookup in the - realtime database each time to reconstitute the sorcery object. With a - memory cache for realtime, there is about the same amount of overhead as - for config files. Either way, it is still fairly expensive to access the - sorcery object that much. + This also resets the update_sent flag upon receiving SRRCHANGE control frame. + This will then force a video update. - * Cache the global config options so we can access them faster. You must - now always perform a res_pjsip reload to change the global options. + ASTERISK-26997 - Change-Id: Ice16c7a4cbca4614da344aaea21a072b86263ef7 + Change-Id: I6ad7c8253559b800800433c52339e7f5aa583566 -2016-08-23 11:02 +0000 [5eb6cb969f] Richard Mudgett +2017-06-29 14:56 +0000 [7df7b8a90c] Kevin Harwell - * res_fax: Fix deadlock in ast_channel_get_t38_state(). + * res_rtp_asterisk: trigger source change control frame when dtls is established - ast_channel_get_t38_state() calls ast_channel_queryoption() with - AST_OPTION_T38_STATE. If the passed in channel is a local channel then a - deadlock can happen if a channel lock is held when called. + There needed to be a way to notify handlers upstream that DTLS had been + established. This patch makes it so once DTLS has been estalished a source + change control frame is put into the read queue. Any handlers can then watch + for that frame and trigger off of it. - * Made ast_channel_get_t38_state() callers not hold a channel lock before - calling. + ASTERISK-27096 #close - * Update ast_channel_get_t38_state() doxygen to note that no channel locks - can be held when calling the function. + Change-Id: I27ff344f5a8c691a1890dfe3254a4b1a49e7f4a0 - ASTERISK-26203 #close - Reported by: Etienne Lessard +2017-06-30 08:31 +0000 [f573e599c0] George Joseph - ASTERISK-24822 #close - Reported by: David Brillert + * pjproject_bundled: Allow passing configure options to bundled - ASTERISK-22732 #close - Reported by: Richard Mudgett + There wasn't any good way to pass options like --host or --build + down to the pjproject configure which makes cross-compiling difficult. - Change-Id: I49fd76fa9af628b4198009b5c0b82c8b03681214 + * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which + can be used to pass arbitrary options to pjproject configure. + * Automatically set the pjproject configure --host and --build + options to match those supplied for the asterisk configure. -2016-08-23 10:39 +0000 [277a2d667a] Richard Mudgett + ASTERISK-27097 #close + Reported-by: Kinsey Moore - * res_fax: Fix deadlock setting FAXMODE channel variable. + Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e - ASTERISK-25980 added the FAXMODE channel variable to res_fax.c. - Unfortunately, it also introduced a deadlock potential because - set_channel_variables() which sets FAXMODE can be called during a - masquerade. The ast_channel_get_t38_state() which gets the value used to - set FAXMODE cannot be called with the channel locked. As a result, local - channels can deadlock because of how they must acquire the locks necessary - to operate. +2017-06-29 14:50 +0000 [c0c99c7618] George Joseph - The intent of FAXMODE is for dialplan to know how a fax was transferred - after the fax completes. However, the previous patch sets FAXMODE to the - channel's current T.38 state AFTER the fax has completed and where T.38 - may have already disconnected. + * chan_pjsip: Fix ability to send UPDATE on COLP - * Set FAXMODE based upon T.38 negotiations exchanged either with the fax - applications or the fax framehooks. + When connected_line_method is "invite", we're supposed to determine + if the client can support UPDATE and if it can, send UPDATE instead + of INVITE to avoid the SDP renegotiation. Not only was pjproject + not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing + that invite_tsx wasn't NULL which isn't always the case. - ASTERISK-26203 - Reported by: Etienne Lessard + * Updated chan_pjsip/update_connected_line_information to drop the + requirement that invite_tsx isn't NULL. + * Submitted patch to pjproject sip_inv.c that sets the + PJSIP_INV_SUPPORT_UPDATE flag correctly. + * Updated pjsip.conf.sample to clarify what happens when "invite" + is specified. - ASTERISK-24822 - Reported by: David Brillert + ASTERISK-27095 - ASTERISK-22732 - Reported by: Richard Mudgett + Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560 - Change-Id: Id525747254b64c1efe8b1b5973d52ff9719c2ae1 +2017-06-15 03:12 +0000 [fb7247c57c] Torrey Searle -2016-08-22 12:31 +0000 [edca14c8a5] Richard Mudgett + * res_pjsip: Add DTMF INFO Failback mode - * res_fax.c: Fix deadlock in fax_gateway_indicate_t38(). + The existing auto dtmf mode reverts to inband if 4733 fails to be + negotiated. This patch adds a new mode auto_info which will + switch to INFO instead of inband if 4733 is not available. - fax_gateway_indicate_t38() calls ast_indicate_data() which cannot be - called with any channel locks already held. A deadlock can happen if the - function is operating on a local channel. + ASTERISK-27066 #close - * Made fax_gateway_indicate_t38() unlock the channel before calling - ast_indicate_data() since fax_gateway_indicate_t38() is always called with - the channel locked. + Change-Id: Id185b11e84afd9191a2f269e8443019047765e91 - * Made fax_gateway_indicate_t38() return void since nothing cared about - its return value. +2017-06-29 03:47 +0000 [ab7d99e62d] Niklas Larsson - ASTERISK-26203 - Reported by: Etienne Lessard + * app_queue: Add priority to AMI QueueStatus - ASTERISK-24822 - Reported by: David Brillert + Add priority to callers in AMI QueueStatus response - ASTERISK-22732 - Reported by: Richard Mudgett + ASTERISK-27092 #close - Change-Id: I701ff2d26c5fc23e0d5a48a3fd98759a9fd09407 + Change-Id: I8d1f737a72c7c38f4cfe1a4ee3ecc0a4f85bd199 -2016-08-23 11:16 +0000 [141cd42880] Richard Mudgett +2017-05-30 09:12 +0000 [45df25a579] Mark Michelson - * res_fax.c: Add chan locked precondition comments. + * chan_pjsip: Add support for multiple streams of the same type. - Change-Id: Ic10ae434536bbf7fb7055d6ab36cc50b8748a4e7 + The stream topology (list of streams and order) is now stored with the + configured PJSIP endpoints and used during the negotiation process. -2016-08-23 10:42 +0000 [b86771d1bf] Richard Mudgett + Media negotiation state information has been changed to be stored + in a separate object. Two of these objects exist at any one time + on a session. The active media state information is what was previously + negotiated and the pending media state information is what the + media state will become if negotiation succeeds. Streams and other + state information is stored in this object using the index (or + position) of each individual stream for easy lookup. - * ast_framehook_detach() must be called with the channel locked. + The ability for a media type handler to specify a callback for + writing has been added as well as the ability to add file + descriptors with a callback which is invoked when data is available + to be read on them. This allows media logic to live outside of + the chan_pjsip module. - The framehook container could become corrupted if the channel lock is not - held before calling. + Direct media has been changed so that only the first audio and + video stream are directly connected. In the future once the RTP + engine glue API has been updated to know about streams each individual + stream can be directly connected as appropriate. - Change-Id: If0a1c7ba0484ed3a191106a7516526b905952584 + Media negotiation itself will currently answer all the provided streams + on an offer within configured limits and on an offer will use the + topology created as a result of the disallow/allow codec lines. -2016-08-22 15:01 +0000 [5744f434f0] Richard Mudgett + If a stream has been removed or declined we will now mark it as such + within the resulting SDP. - * ast_framehook_attach() must be called with the channel locked. + Applications can now also request that the stream topology change. + If we are told to do so we will limit any provided formats to the ones + configured on the endpoint and send a re-invite with the new topology. - The framehook container could become corrupted if the channel lock is not - held before calling. + Two new configuration options have also been added to PJSIP endpoints: - Change-Id: I1a6b957a1f7b899eb29a186915f8cccab886a438 + max_audio_streams: determines the maximum number of audio streams to + offer/accept from an endpoint. Defaults to 1. -2016-08-17 02:51 +0000 [93b7533d74] chris de rock + max_video_streams: determines the maximum number of video streams to + offer/accept from an endpoint. Defaults to 1. - * app_macro: Consider '~~s~~' as a macro start extension. + ASTERISK-27076 - As described in issue ASTERISK-26282 the AEL parser creates macros with - extension '~~s~~'. app_macro searches only for extension 's' so the - created extension cannot be found. with this patch app_macro searches for - both extensions and performs the right extension. + Change-Id: I8afd8dd2eb538806a39b887af0abd046266e14c7 - ASTERISK-26282 #close +2017-06-28 09:03 +0000 [642f8356ab] Joshua Colp - Change-Id: I939aa2a694148cc1054dd75ec0c47c47f47c90fb + * res_rtp_asterisk: Fix issues with ICE renegotiation. -2016-08-24 04:44 +0000 [d2e03c252d] Eugene + When re-inviting to add more streams it is possible for + the role of existing ICE sessions to be changed to the + incorrect value. This results in subsequent refreshes + within the sessions getting a role conflict and the ICE + session breaking down. This change only sets the role to + be the new value if an ICE renegotiation is actually + going to happen, otherwise the existing role is preserved. - * chan_iax2: Set plaintext auth to deprecated as per ASTERISK-22820 + As well if we encounter a situation where a unidirectional + ICE negotiation happens and the other side does not send us + candidates we will not store any information for sending + traffic, even though we know where they are reachable. This + change fixes this by using the source of the ICE traffic + itself as the target if no candidates are known and we + receive some ICE traffic. - Starting from draft 2 of RFC 5456 (October 23, 2006) plaintext auth - is not supported in IAX2 protocol. Please refer to section 8.6.13 of - RFC 5456. + ASTERISK-27088 - But plaintext auth is still supported by Asterisk implementation of IAX2. - This support should be dropped. + Change-Id: I71228181e358917fcefc3100fad21b2fc02a59a9 - Patch, based on asterisk-dev discussion, adds deprecation warning on - startup if 'auth' is set to 'plaintext', changes default values of - 'auth' from 'md5, plaintext' to 'md5'. +2017-06-27 10:46 +0000 [a48d3e4d31] Torrey Searle - Patch is safe in terms of backwards compatibility, will work even if - remote peers have auth=plaintext and we have defaults. + * res/res_pjsip_t38: fix incorrect increment of media_count - auth=plaintext setting will remain deprecated in Asterisk 14 and 15, - and IAX2 plaintext support will be removed in Asterisk 16. + The T38 sdp callback incorrectly has a side effect of incrementing + the media_count. This can lead to core dumps. - ASTERISK-22820 #close + Change-Id: I7bb2f4987de4046ec52cfc34e5ea0662dae32af8 - Change-Id: I5d2f3830cb57645604818f87518916e8a5c317bf +2017-06-08 22:50 +0000 [80e11bd79b] George Joseph -2016-08-24 14:42 +0000 [e40aa40aca] George Joseph + * bridge_native_rtp: Keep rtp instance refs on bridge_channel - * res_rtp_multicast: Fix SEGV in ast_multicast_rtp_create_options + There have been reports of deadlocks caused by an attempt to send a frame + to a channel's rtp instance after the channel has left the native bridge + and been destroyed. This patch effectively causes the bridge channel to + keep a reference to the glue and both the audio and video rtp instances + so what gets started will get stopped. - ast_multicast_rtp_create_options now checks for NULL or empty options + ASTERISK-26978 #close + Reported-by: Ross Beer - Change-Id: Ib845eae46a67a9787e89a87ebd1027344e5e0362 + Change-Id: I9e1ac49fa4af68d64826ccccd152593cf8cdb21a -2016-07-19 13:14 +0000 [2e79f52d71] Alexander Traud +2017-06-27 04:37 +0000 [7827755570] Ivan Poddubny - * codecs: Add Codec 2 mode 2400. + * app_queue: Fix returning to dialplan when a queue is empty - ASTERISK-26217 #close + The fix for ASTERISK-25665 introduced a regression. + The return value of queue_exec used to be 0 in case of leavewhenempty + but it was changed to -1 (returned from wait_our_turn and passed + transparently by queue_exec), thus leading to hangup instead of returning + back to dialplan. - Change-Id: I1e45d8084683fab5f2b272bf35f4a149cea8b8d6 + This commit resets the value back to 0 in this case, restoring + original behavior. -2016-08-10 15:14 +0000 [ded22c712a] Mark Michelson + ASTERISK-27065 #close + Reported by: Marek Cervenka - * ConfBridge: Rework announcer channel methodology + Change-Id: Id9c83b75aeda463250155e88c5004be52bbca5ac - NOTE: This patch was submitted earlier and reverted because of a failing - test. The test has been patched so that it adjusts for the changes here, - so this is being resubmitted for review. +2017-06-19 17:21 +0000 [0cef7b9d4e] Alexei Gradinari - One feature that confbridge has is the ability to play sounds to all - participants in the conference. Prior to this commit, the algorithm for - this was as follows: + * app_voicemail: IMAP connection control - * Grab the playback lock - * Push the conference announcer channel into the bridge - * Play back the sound - * Pull the conference announcer channel from the bridge - * Release the playback lock + A new global option "imap_poll_logout" was added to specify whether need to + disconnect from the IMAP server after polling of mailboxes. - The issue here is that the act of adding the playback channel to the - bridge and removing it for each announcement is expensive. Amongst the - expenses: + ASTERISK-27068 #close - * The announcer channel is imparted into the bridge, meaning a new - thread is spun up for each playback. - * When the announcer is added or removed from the bridge, it results - in the BRIDGEPEER channel variable being set on all channels in the - bridge. This requires keeping the bridge locked and locking each - individual channel in order to set it. - * There's also just the general overhead of adding the channel and - removing it from the bridge. The bridge potentially has to reconfigure - every single time + Closing IMAP connection after loading mailbox from voicemail.conf - With this commit, the paradigm for playing back announcements has - shifted. + ASTERISK-24052 #close - * The announcer channel is now added to the bridge when the conference - is allocated, and it is hung up when the conference is destroyed. - * A taskprocessor is used to queue playbacks onto the announcer channel. - This keeps the behavior from before where playbacks do not overlap. - * The announcer channel is no longer placed into the bridge as - departable. Since we are not constantly removing the channel from - the bridge, it is safe to add the channel using an independent thread - and simply hang the channel up when it is time for the conference to - be destroyed. + Change-Id: Ib7558ba04516240a32b65f42e9be64372a0ae12a - The use of the taskprocessor for playbacks opens up the interesting - possibility of having asynchronous announcements played. In this commit, - however, the behavior is still exactly the same as it previously was. +2017-06-21 17:57 +0000 [975e271b01] Richard Mudgett - ASTERISK-26289 - Reported by Mark Michelson + * res_pjsip_mwi.c: Eliminate RAII_VAR in contact delete observer - Change-Id: Ica9fa4907c2f3728cdd1cf0bc564ef4eb40754a0 + Change-Id: I0bc97c6608de1d1a4228826b3b3be43f162f05f3 -2016-08-23 05:54 +0000 [065d810d3f] Joshua Colp +2017-06-16 18:08 +0000 [34db4c3993] Alexei Gradinari - * Revert "ConfBridge: Rework announcer channel methodology" + * res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact - This reverts commit 5aa877305223faab5a1119276a934893ab9dc138. + Do not need to unsubscribe/subscribe on creating the ednpoint's contact. + The modified function create_mwi_subscriptions_for_endpoint adds + the subscription only if it does not exist. - Change-Id: I9ab45776e54a54ecf1bac9ae62d976dec30ef491 + The subscriptions aren't added for active contacts + which are retrieved on startup from realtime + if mwi_disable_initial_unsolicited=yes. + Because the mwi_contact_added is not called. + So the subscriptions also should be created on updating contact. -2016-08-19 10:21 +0000 [41ee14bfae] Alexei Gradinari + ASTERISK-26230 #close - * compilation failed with -Werror=maybe-uninitialized + Change-Id: I47e265af9296ca09aa42a316fdacac104148cee4 - The compilation failed for devmode - --enable DONT_OPTIMIZE - --enable BETTER_BACKTRACES - --enable DO_CRASH - --enable TEST_FRAMEWORK +2017-06-20 16:05 +0000 [27dae55fb6] Kevin Harwell - res_pjsip/pjsip_configuration.c: In function dtls_handler: - res_pjsip/pjsip_configuration.c:974:20: error: - back may be used uninitialized in this function [-Werror=maybe-uninitialized] - int size = strlen(front); - ^ - cc1: all warnings being treated as errors + * core_local: local channel data not being properly unref'ed and unlocked - Change-Id: I7f082ead0312792a577ec7c73015ba64dabca580 + In an earlier version of Asterisk a local channel [un]lock all functions were + added in order to keep a crash from occurring when a channel hung up too early + during an attended transfer. Unfortunately, when a transfer failure occurs and + depending on the timing, the local channels sometime do not get properly + unlocked and deref'ed after being locked and ref'ed. This happens because the + underlying local channel structure gets NULLed out before unlocking. -2016-08-20 14:51 +0000 [eb0c9c476f] David M. Lee + This patch reworks those [un]lock functions and makes sure the values that get + locked and ref'ed later get unlocked and deref'ed. - * res_odbc_transaction: add dep on generic_odbc + ASTERISK-27074 #close - When res_odbc_transaction depended on res_odbc, it got the generic_odbc - headers and libs implicitly. Now that it no longer depends on res_odbc, - its dependency on generic_odbc must be explicit. + Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09 - Change-Id: I9db88f7af7388437f49903d3008ba8d4890d5911 +2017-06-20 16:01 +0000 [45a1f4e2ae] Kevin Harwell -2016-08-20 11:18 +0000 [12752c64cc] Alexander Traud + * bridge: stuck channel(s) after failed attended transfer - * pjproject_bundled: Allow IPv4/IPv6 (Dual Stack) configurations. + If an attended transfer failed it was possible for some of the channels + involved to get "stuck" because Asterisk was not hanging up the transfer target. - PJProject supports a lot of platforms even Windows, some with different defaults - when it comes to IPv6. In many Linux platforms like Ubuntu 16.04 LTS, - "/proc/sys/net/ipv6/bindv6only" is set to 0 (false). Different than in Windows. + This patch ensures Asterisk hangs up the transfer target when an attended + transfer failure occurs. - Because of this, if configured with just an IPv6 address/transport, PJProject - listens to both IPv4 and IPv6. However, this is not supported by the PJProject - team. As consequence, you end-up with IPv4-mapped IPv6 addresses in SDP, - incompatible with IPv4-only clients. Technically, you end-up with an IPv6-only - server which accepts incoming connections on IPv4. + ASTERISK-27075 #close - If you try to configure two transports, one with IPv4 and one with IPv6 on the - same interface, as expected by the PJProject team, the IPv4 transport is not - able to bind because the IPv6 transport listens to both already. + Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9 - One solution would be to change "/proc/sys/net/ipv6/bindv6only" system-wide. - Then, you are able to configure two transports, one for each IP version on the - same interface. That way, you get a server which works with IPv4 clients and - IPv6 clients at the same time over the same interface. +2017-05-19 23:28 +0000 [d2fbbdd692] Richard Mudgett - Here, this change sets this parameter directly within PJProject to match the - expectations of the PJProject team in any case. This allows IPv4/IPv6 Dual Stack - servers out of the box like in chan_sip. This change was accepted by the - PJProject team as and is expected - to arrive in the next version, PJProject 2.6.0. Until then, this change is - incorporated in the bundled PJProject of Asterisk. + * SDP: Create declined m= SDP lines using remote SDP if applicable. - ASTERISK-26309 + * Update SDP unit tests to test negotiating with declined streams. + Generation of declined m= lines created and responded tested. - Change-Id: I3335d8718f79f4b2feae91b5b005a3ce684a63ae + Change-Id: I5cb99f5010994ab0c7d9cf2d395eca23fab37b98 -2016-08-19 18:19 +0000 [55ccdf93c3] Corey Farrell +2017-05-02 18:51 +0000 [3a18a09030] Richard Mudgett - * Fix checks for allocation debugging. + * SDP: Rework SDP offer/answer model and update capabilities merges. - MALLOC_DEBUG should not be used to check if debugging is actually - enabled, __AST_DEBUG_MALLOC should be used instead. MALLOC_DEBUG only - indicates that debugging is requested, __AST_DEBUG_MALLOC indicates it - is active. + The SDP offer/answer model requires an answer to an offer before a new SDP + can be processed. This allows our local SDP creation to be deferred until + we know that we need to create an offer or an answer SDP. Once the local + SDP is created it won't change until the SDP negotiation is restarted. - Change-Id: I3ce9cdb6ec91b74ee1302941328462231be1ea53 - -2016-08-19 14:09 +0000 [8061d9f66f] Corey Farrell + An offer SDP in an initial SIP INVITE can receive more than one answer + SDP. In this case, we need to merge each answer SDP with our original + offer capabilities to get the currently negotiated capabilities. To + satisfy this requirement means that we cannot update our proposed + capabilities until the negotiations are restarted. - * Fix naming mismatch of allocator functions. + Local topology updates from ast_sdp_state_update_local_topology() are + merged together until the next offer SDP is created. These accumulated + updates are then merged with the current negotiated capabilities to create + the new proposed capabilities that the offer SDP is built. - Allocator functions that take file/line/func parameters are prefixed - with single-underscore when MALLOC_DEBUG is not defined, - double-underscore when it is defined. This change updates all - allocators that accept file/line/func to have the same prototype in - either ABI mode. The parameter order of __ast_vasprintf and - __ast_asprintf in utils.h have been changed to match that of astmm.h. + Local topology updates are merged in several passes to attempt to be smart + about how streams from the system are matched with the previously + negotiated stream slots. To allow for T.38 support when merging, type + matching considers audio and image types to be equivalent. First streams + are matched by stream name and type. Then streams are matched by stream + type only. Any remaining unmatched existing streams are declined. Any + new active streams are either backfilled into pre-merge declined slots or + appended onto the end of the merged topology. Any excess new streams + above the maximum supported number of streams are simply discarded. - End-use allocator macro's have been removed from astmm.h and moved to an - unconditional part of utils.h. + Remote topology negotiation merges depend if the topology is an offer or + answer. An offer remote topology negotiation dictates the stream slot + ordering and new streams can be added. A remote offer can do anything to + the previously negotiated streams except reduce the number of stream + slots. An answer remote topology negotiation is limited to what our offer + requested. The answer can only decline streams, pick codecs from the + offered list, or indicate the remote's stream hold state. - Change-Id: I823bb6ce2b5675b3a4735948f10a3b420e9a023a + I had originally kept the RTP instance if the remote offer SDP changed a + stream type between audio and video since they both use RTP. However, I + later removed this support in favor of simply creating a new RTP instance + since the stream's purpose has to be changing anyway. Any RTP packets + from the old stream type might cause mischief for the bridged peer. -2016-08-17 08:10 +0000 [c1b6a79686] Torrey Searle + * Added ast_sdp_state_restart_negotiations() to restart the SDP + offer/answer negotiations. We will thus know to create a new local SDP + when it is time to create an offer or answer. - * res_ari: Add http prefix to generated docs + * Removed ast_sdp_state_reset(). Save the current topology before + starting T.38. To recover from T.38 simply update the local topology to + the saved topology and restart the SDP negotiations to get the offer SDP + renegotiating the previous configuration. - updated the uri handler to include the url prefix of the http server - this enables res_ari to add it to the uris when generating docs + * Allow initial topology for ast_sdp_state_alloc() to be NULL so an + initial remote offer SDP can dictate the streams we start with. We can + always update the local topology later if it turns out we need to offer + SDP first because the remote chose to defer sending us a SDP. - Change-Id: I279335a2625261a8492206c37219698f42591c2e - (cherry picked from commit 6f448f32fe9b7379e2630fab7b06205f901f2ded) + * Made the ast_sdp_state_alloc() initial topology limit to max_streams, + limit to configured codecs, handle declined streams, and discard + unsupported types. -2016-08-19 03:59 +0000 [02a82f758e] Alexander Traud + * Convert struct ast_sdp to ao2 object. Needed to easily save off a + remote SDP to refer to later for various reasons such as generating + declined m= lines in the local SDP. - * sip_to_pjsip: Add cert_file. + * Improve converting remote SDP streams to a topology including stream + state. A stream state of AST_STREAM_STATE_REMOVED indicates the stream is + declined/dead. - When using the migration script sip_to_pjsip.py, cert_file was not migrated to - pjsip.conf. A previous change regarding this contained a copy/paste error. + * Improve merging streams to take into account the stream state. - ASTERISK-22374 + * Added query for remote hold state. - Change-Id: I0fa72e9412117d53b4284fc6b83fa5b2b95ba03b + * Added maximum streams allowed SDP config option. -2016-08-18 09:21 +0000 [1a9555f036] Alexander Traud + * Added ability to create new streams as needed. New streams are created + with configured default audio, video, or image codecs depending on stream + type. - * sip.conf: tlsclientmethod is using sslv23 as default. + * Added global locally_held state along with a per stream local hold + state. Historically, Asterisk only has a global locally held state + because when the we put the remote on hold we do it for all active + streams. - When 'tlsclientmethod' is not specified in sip.conf, chan_sip uses the OpenSSL - SSLv23_method. This was documented incorrectly in the file sip.conf.sample. + * Added queries for a rejected offer and current SDP negotiation role. + The rejected query allows the using module to know how to respond to a + failed remote SDP set. Should the using module respond with a 488 Not + Acceptable Here or 500 Internal Error to the offer SDP? - SSLv23_method got its name in the 90s. Today, with OpenSSL 1.0.2, this method - enables (just) the secure TLSv1.0 and TLSv1.2. Or stated differently, that - function should have been called 'secure_method' or 'automatic_method' back in - the 90s. + * Moved sdp_state_capabilities.connection_address to ast_sdp_state. There + seems no reason to keep it in the sdp_state_capabilities struct since it + was only used by the ast_sdp_state.proposed_capabilities instance. - Consequently please, specify 'tlsclientmethod=tlsv1' in your sip.conf only if - you face a server which has problems like not falling back to TLSv1.0 - automatically. + * Callbacks are now available to allow the using module some customization + of negotiated streams and to complete setting up streams for use. See the + typedef doxygen for each callback for what is allowable and when they are + called. + * Added topology answerer modify callback. + * Added topology pre and post apply callbacks. + * Added topology offerer modify callback. + * Added topology offerer configure callback. - ASTERISK-24425 + * Had to rework the unit tests because I changed how SDP topologies are + merged. Replaced several unit tests with new negotiation tests. - Change-Id: I502ce6146b4504cadfd3973af8d6ec3994f54fa3 + Change-Id: If07fe6d79fbdce33968a9401d41d908385043a06 -2016-08-16 15:57 +0000 [53a2f7dc88] Kevin Harwell +2017-06-18 19:24 +0000 [70d2ccb9da] Corey Farrell - * res_format_attr_g729: Add annexb=no format parameter to SDPs + * Core: Add support for systemd socket activation. - Historically, Asterisk has always specified annexb=no for the g729 format. - However, when using res_pjsip no format attribute was specified. This patch - makes it so the SDP now contains a format attribute line with annexb=no. + This change adds support for socket activation of certain SOCK_STREAM + listeners in Asterisk: + * AMI / AMI over TLS + * CLI + * HTTP / HTTPS - Note, that this means only g729a is negotiated. Even for pass through support. - According to rfc7261 the type of annex used (a or b) is dependent upon the - answerer. However, Asterisk being a back to back user agent makes this tricky - to support at this time, thus we only allow annex 'a' for now. + Example systemd units are provided. This support extends to any socket + which is initialized using ast_tcptls_server_start, so any unknown + modules using this function will support socket activation. - ASTERISK-26228 #close - patches: - res_format_attr_g729.c submitted by Jason Parker (license 4993) + Asterisk continues to function as normal if socket activation is not + enabled or if systemd development headers are not available during + build. - Change-Id: I76bc20cc0a01af01536e9915afef319c269c22d0 + ASTERISK-27063 #close -2016-08-18 17:02 +0000 [7ea133f2ab] Kevin Harwell + Change-Id: Id814ee6a892f4b80d018365c8ad8d89063474f4d - * rest-api: Swagger scripts were not replacing format variable in file brief +2017-06-19 11:28 +0000 [a7488f8a70] Rodrigo Ramírez Norambuena - Given resource paths did not have 'json' substituted in for the '{format}'. For - some auto generated documentation/comment strings it resulted in something like - the following: + * cdr: fix mistake spelling of a word for Unanswered. - "... REST handler for /api-docs/sounds.{format}" + Change-Id: I7a610bef369924523a445c7e849ee88cc45dc5df - This patch makes sure the resource api's path is properly substituted. +2017-06-12 16:17 +0000 [d7b6e06abb] Alexei Gradinari - ASTERISK-25472 #close + * res_pjsip_mwi: unsubscribe unsolicited MWI on deleting endpoint last contact - Change-Id: Ie3e950a35db4043e284019d6c9061f3b03922e23 + If the endpoint's last contact is deleted unsolicited MWI has to be + unsubscribed. -2016-08-18 15:15 +0000 [c7ffd6111d] George Joseph + ASTERISK-27051 #close - * res_odbc: Correct the dependency relationship with res_odbc_transaction + Change-Id: I33e174e0b9dba0998927d16d6d100fda5c7254e0 - The MODULEINFO dependencies between these 2 modules was reversed. - res_odbc should depend on res_odbc_transaction, not the other way - around. +2017-06-16 09:31 +0000 [854a6de819] George Joseph - ASTERISK-25984 #close + * res_stasis: Plug reference leak on stolen channels - Change-Id: Ifcfbb49c0b51cf6640a5446d47cd6c48caf1331f + When a stasis channel is stolen by another app, the control + structure is unreffed but never unlinked from the app_controls + container. This causes the channel reference to leak. -2016-08-18 12:04 +0000 [966527249e] Kevin Harwell + Added OBJ_UNLINK to the callback in channel_stolen_cb. - * sip_to_pjsip: Set correct tls transport method + Also added some additional channel lifecycle debug messages to + channel.c. - A recent update had a copy/paste error where the unused variable 'val' was - being passed to the set_value function instead of the 'method' value itself. + ASTERISK-27059 #close + Repoorted-by: George Joseph - This patch passes in the right variable. + Change-Id: Ib820936cd49453f20156971785e7f4f182c56e14 - ASTERISK-22374 +2017-06-16 14:56 +0000 [e33bd96638] Matthew Fredrickson - Change-Id: I895b7b3779ce4442bc58b8ec40d59dd29bb43f06 + * formats/format_g729: Fix typo in comment -2016-08-10 15:14 +0000 [5aa8773052] Mark Michelson + There was a typo in a comment. This commit is to fix the typo. - * ConfBridge: Rework announcer channel methodology + ASTERISK-27060 #close - One feature that confbridge has is the ability to play sounds to all - participants in the conference. Prior to this commit, the algorithm for - this was as follows: + Change-Id: Ic2699f8dbeaacd58ccb6ec3203e853e1babe3235 - * Grab the playback lock - * Push the conference announcer channel into the bridge - * Play back the sound - * Pull the conference announcer channel from the bridge - * Release the playback lock +2017-06-08 12:28 +0000 [0ad95bc8a0] Frederic LE FOLL - The issue here is that the act of adding the playback channel to the - bridge and removing it for each announcement is expensive. Amongst the - expenses: + * Core/PBX: Deadlock between dialplan execution and application unregistration. - * The announcer channel is imparted into the bridge, meaning a new - thread is spun up for each playback. - * When the announcer is added or removed from the bridge, it results - in the BRIDGEPEER channel variable being set on all channels in the - bridge. This requires keeping the bridge locked and locking each - individual channel in order to set it. - * There's also just the general overhead of adding the channel and - removing it from the bridge. The bridge potentially has to reconfigure - every single time + Not easy to reproduce, but we have noticed deadlocks when unloading a module + while dialplan is handling a request. - With this commit, the paradigm for playing back announcements has - shifted. + The deadlock is between : + 1) Dialplan execution: pbx_extension_helper() first taking conlock, + then pbx_findapp() [when called] asking for lock on apps list. + 2) Application unregistration: ast_unregister_application() first taking lock + on apps list, then unreference_cached_app() [when called] asking for conlock. - * The announcer channel is now added to the bridge when the conference - is allocated, and it is hung up when the conference is destroyed. - * A taskprocessor is used to queue playbacks onto the announcer channel. - This keeps the behavior from before where playbacks do not overlap. - * The announcer channel is no longer placed into the bridge as - departable. Since we are not constantly removing the channel from - the bridge, it is safe to add the channel using an independent thread - and simply hang the channel up when it is time for the conference to - be destroyed. + As a protection, I suggest to modify ast_unregister_application(), so that it + anticipates the need of conlock, before taking the lock on apps list. + The side effect is a longer unavailability of conlock when unregistering an + application. - The use of the taskprocessor for playbacks opens up the interesting - possibility of having asynchronous announcements played. In this commit, - however, the behavior is still exactly the same as it previously was. + ASTERISK-27041 - ASTERISK-26289 - Reported by Mark Michelson + Change-Id: I0db0f1eb320da6a5758cce3a47d765be1face8e2 - Change-Id: Ic5cd2c4b98a1eaa1715eb7a5b35d62f1a76d78a5 +2017-06-12 09:23 +0000 [7a46309d3d] Alexei Gradinari -2016-08-18 08:19 +0000 [e55d1e47aa] Alexander Traud + * res_pjsip: New endpoint option "notify_early_inuse_ringing" - * sip_to_pjsip: Map the TLS method correctly. + This option was added to control whether to notify dialog-info state + 'early' or 'confirmed' on Ringing when already INUSE. + The value "yes" is useful for some SIP phones (Cisco SPA) + to be able to indicate and pick up ringing devices. - When using the migration script sip_to_pjsip.py and tlsclientmethod is not set - in sip.conf, the default value of chan_sip (sslv23) is copied to pjsip.conf, to - overwrite the default of the PJProject (tlsv1). This makes sure, res_pjsip is - offering/using not just TLSv1.0 but TLSv1.2 as well. + ASTERISK-26919 #close - ASTERISK-22374 + Change-Id: Ie050bc30023543c7dfb4365c5be3ce58c738c711 - Change-Id: Ie530a3dae9926ae14f3920a21be1e2edb15bda4f +2017-06-15 13:48 +0000 [53b7df82f4] Alexei Gradinari -2016-08-18 08:17 +0000 [da14c439a3] Alexander Traud + * app_voicemail: IMAP logout on reload/unload - * sip_to_pjsip: Add compactheaders, timerb, timert1, and useragent. + Closing IMAP connection on module reload or unload. - When using the migration script sip_to_pjsip.py, no section of type=system or - type=general were created. Therefore the keys compactheaders, timerb, timert1, - and useragent were not migrated to pjsip.conf. + ASTERISK-24052 #close - ASTERISK-22374 + Change-Id: I2a40182aa9ef249fa6865d33570430e9ada68525 - Change-Id: I318a453843227ea36bf130d392d4abd7bd26b5a1 +2017-03-30 09:33 +0000 [9aeab4aced] Jan Friesse -2016-08-18 08:16 +0000 [675721a7ab] Alexander Traud + * res_corosync: Change thread stack size - * sip_to_pjsip: Map (session-)timers correctly. + In Corosync 2.x libraries were changed to use LibQB IPC. + Sadly LibQB IPC doesn't support copy-free access to received buffer, so + Corosync libraries were rewritten to use stack as buffer. Mostly the + needed stack size is quite small, but for all *_dispatch functions, 1MiB + is needed. - When using the migration script sip_to_pjsip.py, session-timers=accept and - session-timers=refuse were mapped to wrong values. + Asterisk function ast_pthread_create_background set stack size for new + thread to much smaller AST_BACKGROUND_STACKSIZE (~500KiB). - ASTERISK-22374 + This results in Asterisk crash when running with Corosync 2.x. - Change-Id: Ie4e90d5f6a29aff07837b7fe5bc8aea5fb6fc092 + Patch solves this issue by creating it's own version of + ast_pthread_create_background which sets stack size to much higher value + (actually it's AST_BACKGROUND_STACKSIZE + 3MiB). -2016-08-18 08:15 +0000 [acc5237e91] Alexander Traud + Another problem may appear when "corosync show members" netconsole + command is executed. It is also executed in thread and also has only + 500KiB stack size. Sadly it calls corosync_cfg_get_node_addrs which + again needs at least 1MiB stack. - * sip_to_pjsip: Write username even without authname. + Solution is to use HAVE_COROSYNC_CFG_STATE_TRACK as a discriminator + between Corosync 1.x and 2.x. If 1.x is found, nothing changes. If 2.x + is found, NodeID is displayed instead of IP address. - When using the migration script sip_to_pjsip.py, now the (mandatory) username is - written to pjsip.conf, even if there was no (optional) authname in the register - string in sip.conf. + ASTERISK-25370 #close + Reported by: mdu113 - ASTERISK-22374 + Change-Id: Id95b0d21ab6e708e7d74ad8786c587211676fa08 - Change-Id: Ie53e1997104cd2674821688b8a8247249f5e156f +2017-06-13 11:33 +0000 [1ac0096512] George Joseph -2016-08-18 08:14 +0000 [3eb02235f5] Alexander Traud + * res_ari: Add "module loaded" check to ari stubs - * sip_to_pjsip: Parse register even with transport. + The recent change to make the use of LOAD_DECLINE more consistent + caused res_ari to unload itself before declining if the ari.conf + file wasn't found. The ari stubs though still tried to use the + configuration resulting in segfaults. - When using the migration script sip_to_pjsip.py and the register string - started with a transport in sip.conf - like tls://... - register was not parsed - correctly and therefore not migrated correctly to pjsip.conf. + This patch creates a new CHECK_ARI_MODULE_LOADED macro which tests + to see if res_ari is actually loaded and causes the stubs to also + decline if it isn't. The macro was then added to the mustache + template's "load_module" function. - ASTERISK-22374 + ASTERISK-27026 #close + Reported-by: Ronald Raikes - Change-Id: I44c12104eea2bd8558ada6d25d77edfecd92edd2 + Change-Id: I263d56efa628ee3c411bdcd16d49af6260c6c91d -2016-08-18 08:13 +0000 [9907e2b1c1] Alexander Traud +2017-06-15 12:33 +0000 [11ec2945c7] Richard Mudgett - * sip_to_pjsip: Write local_net, contact_acl, contact_deny, and contact_permit. + * chan_pjsip: Fix PJSIP_MEDIA_OFFER dialplan function read. - When using the migration script sip_to_pjsip.py, those keys got missing. These - keys might appear several times and the function "merge_value" tried to collect - those. However, because these keys have different names in sip.conf and - pjsip.conf, "merge_value" was not able to find the new key name in sip.conf. - This change lets "merge_value" search with the old key name in sip.conf and - write with the new key name in pjsip.conf. + The construction of the returned string assumed incorrectly that the + supplied buffer would always be initialized as an empty string. If it is + not an empty string we could overrun the supplied buffer by the length of + the non-empty buffer string plus one. It is also theoreticaly possible + for the supplied buffer to be overrun by a string terminator during a read + operation even if the supplied buffer is an empty string. - ASTERISK-22374 + * Fix the assumption that the supplied buffer would already be an empty + string. The buffer is not guaranteed to contain an empty string by all + possible callers. - Change-Id: Ie53c5278ae6f1cb8fa7e96c5289877d46981d9d2 + * Fix string terminator buffer overrun potential. -2016-08-18 08:11 +0000 [c0e0075718] Alexander Traud + Change-Id: If6a0806806527678c8554b1dcb34fd7808aa95c9 - * sip_to_pjsip: Map externhost/ip to Transports. +2017-06-08 11:38 +0000 [e563a1920e] Richard Mudgett - When using the migration script sip_to_pjsip.py, the externhost or externip of - sip.conf were erroneously written to Endpoints instead to Transports. + * SDP: Add get/set option calls for RTP sched context per type. - ASTERISK-22374 + Change-Id: I82dc75c63c48904e9e5a49e2205dcc06e88487e4 - Change-Id: I2c5873386cfc388899fa9cf2368639dd12f1b8e4 +2017-05-11 18:49 +0000 [716abaf33d] Richard Mudgett -2016-08-18 08:04 +0000 [a937c2ccb1] Alexander Traud + * SDP: Search for the ice-lite attribute in the right place. - * sip_to_pjsip: Add defaultexpiry, maxexpiry, and minexpiry. + * Pulled finding the rtcp-mux attribute flag out of the ICE candidate for + loop. Also ordered the RTCP ICE candidate skip test to fail earlier. - When using the migration script sip_to_pjsip.py, defaultexpiry, maxexpiry, and - minexpiry were not migrated to pjsip.conf. + Change-Id: I8905d9c68563027a46cd3ae14dbcc27e9c814809 - ASTERISK-22374 +2017-05-11 18:46 +0000 [a95584d079] Richard Mudgett - Change-Id: I007fbf543dcadc96fc3ed71c54da502bcb209b7b + * SDP: Set the remote c= line in RTP instance. -2016-08-18 08:03 +0000 [163cc2d68f] Alexander Traud + Change-Id: I23b646392082deab65bedeb19b12dcbcb9216d0c - * sip_to_pjsip: Write media_encryption. +2017-06-09 19:03 +0000 [06265b8c8a] Richard Mudgett - When using the migration script sip_to_pjsip.py, encryption=yes got missing and - media_encryption=sdes was not written to pjsip.conf, because of a typo. + * stream: Add ast_stream_topology_del_stream() and unit test. - ASTERISK-22374 + Change-Id: If07e3c716a2e3ff85ae905c17572ea6ec3cdc1f9 - Change-Id: I0fc3e55dc512a57603ae0fef41baacccf2a35c05 +2017-05-11 14:09 +0000 [0fdb99c268] Richard Mudgett -2016-08-18 08:02 +0000 [d8b5970749] Alexander Traud + * SDP: Add t= line in sdp_create_from_state() - * sip_to_pjsip: Write cos and tos. + Change-Id: I4060391328a893101ed87d0d9bacbbab4fd8b141 - When using the migration script sip_to_pjsip.py, both tos_sip and cos_sip got - missed, because of a typo. Therefore, cos and tos were not written to - pjsip.conf. Furthermore, that revealed a misuse of an internal function, caused - by a copy-and-paste error. +2017-06-14 13:07 +0000 [4797a8bb81] Richard Mudgett - ASTERISK-22374 + * stream: Ignore declined streams for some topology calls. - Change-Id: Id245ebadf70ab9776eb280c026288540af3af5c2 + * Made ast_format_cap_from_stream_topology() not include any formats from + declined streams. -2016-08-18 07:55 +0000 [38491401b5] Alexander Traud + * Made ast_stream_topology_get_first_stream_by_type() ignore declined + streams to return the first active stream of the type. - * sip_to_pjsip: Add cert_file and ca_list_path. + * Updated unit tests to check these changes have the expected effect. - When using the migration script sip_to_pjsip.py, cert_file and ca_list_path were - not migrated to pjsip.conf. + Change-Id: Iabbc6a3e8edf263a25fd3056c3c614407c7897df - ASTERISK-22374 +2017-06-15 07:32 +0000 [bd16c3c524] Joshua Colp - Change-Id: I4612877d190b7f86a48698cefbf5c4db6c265825 + * channel: Fix reference counting in ast_channel_suppress. -2016-08-16 15:36 +0000 [534063fd67] George Joseph + The ast_channel_suppress function wrongly decremented the + reference count of the underlying structure used to keep + track of what should be suppressed on a channel if the + function was called multiple times on the same channel. - * res_pjsip: Add contact_user to endpoint + This change cleans up the reference counting a bit so + this no longer occurs. - contact_user, when specified on an endpoint, will override the user - portion of the Contact header on outgoing requests. + ASTERISK-27016 - Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4 + Change-Id: I2eed4077cb4916e6626f9f120b63b963acc5c136 -2016-08-17 14:13 +0000 [0b4fa65532] Richard Mudgett +2017-06-14 12:34 +0000 [b8b0b61a24] Richard Mudgett - * res_pjsip_session.c: Fix unbound srv failover tests. + * app_voicemail.c: Fix compile error when IMAP enabled. - Commit 1b666549f33d69dc080b212bf92126f3bc3a18b2 broke the srv failover - functionality if a TCP connection gets disconnected. Under these - conditions, session_inv_on_state_changed() gets a - PJSIP_EVENT_TRANSPORT_ERROR and restarts the INVITE transaction on a new - transport. Unfortunately, session_inv_on_tsx_state_changed() also gets - the same PJSIP_EVENT_TRANSPORT_ERROR event and unconditionally terminates - the session. + Change-Id: I2703f15b4099b4210c68eccf293105d1975c1fc1 - * Made session_inv_on_tsx_state_changed() complete terminating the session - on PJSIP_EVENT_TRANSPORT_ERROR only if the session state is still - PJSIP_INV_STATE_DISCONNECTED. +2017-06-12 17:55 +0000 [023eede265] Alexei Gradinari - ASTERISK-26305 #close - Reported by: Richard Mudgett + * app_voicemail: IMAP logout on MWI unsubscribe - Change-Id: If736e766b5c55b970fa38ca6c8a885caf27b897d + Closing IMAP connection on MWI unsubscribe. -2016-08-11 12:10 +0000 [046069011b] Tzafrir Cohen + ASTERISK-24052 #close - * followme: initialize all config items on reload + Change-Id: I4ff964026002b2817b48c20fb4239f0a880228fd - Some configuration directives were not initialized on reload, and hence - were not reset to default if they were removed from followme.conf. +2017-06-14 11:12 +0000 [65ed2ea311] George Joseph - ASTERISK-26288 #close + * res_pjsip_pubsub: Fix reference to released endpoint - Change-Id: Ief829e16374ad1e0ecfd63e6ee4923b5a1d1c150 + destroy_subscription was attempting to get the id of the + subscription tree's endpoint after we'd already called ao2_cleanup + on it causing a segfault. -2016-08-17 06:12 +0000 [57f4e4428a] Alexander Traud + Moved the cleanup until after the debug statement and since + endpoint could also be NULL at this point, check for that as well. - * BuildSystem: Detect ca_list_path capabilities in external PJProject. + ASTERISK-27057 #close + Reported-by: Ryan Smith - Since Asterisk 13.8, pj_ssl_cert_load_from_files2 got detected only in the - bundled PJProject but not in an external PJProject. Therefore, ca_list_path - could not be used in pjsip.conf. With this change, pj_ssl_cert_load_from_files2 - is detected again to enable ca_list_path again. + Change-Id: Ice0a7727f560cf204d870a774c6df71e159b1678 - ASTERISK-26303 #close +2017-06-14 08:29 +0000 [ea3f8c6889] Florian Floimair (license 6892) - Change-Id: I4a4a0cdc5cdff33730911fb4cfc0498c069043d0 + * res_pjsip_session: Correct inverted test in session_outgoing_nat_hook -2016-08-16 12:24 +0000 [a5c0cf4922] George Joseph + There was a typo introduced in commit 776ffd77 which was preventing + the transport's external media address from being used. - * ari: Add documentation that path parameters are case-sensitive + ASTERISK-27024 #close + Reported-by: Christopher van de Sande + patches: + patch.diff submitted by Florian Floimair (license 6892) - Added to api.wiki.mustache so that the generated object pages - have the notation in the table header as well as under each method - that has path parameters. + Change-Id: I7ec617171eaa2d86d2680b00cf37d5088adafc27 - ASTERISK-25492 #close +2017-06-14 08:54 +0000 [88f18faf2a] George Joseph - Change-Id: I36c46c6dc0c9ac350470394a999a1b19ef3fcdaf + * res_rtp_asterisk: Fix ssrc change for rtcp srtp -2016-08-15 15:29 +0000 [824a4e84d1] Corey Farrell + It looks like there was a copy/paste error in ast_rtp_change_source + where if there was a rtcp srtp instance, instead of updating its + ssrc we were updating the srtp instance ssrc twice. - * Refactor usage pattern of xmldoc info tag. + ASTERISK-27022 #close + Reported-by: Michael Walton - This updates func_channel.c and main/message.c to use a generic xpointer - include instead of including info from each channel driver. Now the - name attribute of info is CHANNEL or CHANNEL_EXAMPLES to be included in - documentation for func_channel. Setting the name attribute of info to - MessageToInfo or MessageFromInfo causes it to be included in the - MessageSend application and AMI action. + Change-Id: Ic88f3aee7227b401c58745ac265ff92c19620095 - Change-Id: I89fd8276a3250824241a618009714267d3a8d1ea +2017-06-08 14:38 +0000 [d6386a8f0c] Joshua Colp -2016-06-15 17:10 +0000 [957df73301] Evgeniy Tsybra + * bridge: Add a deferred queue. - * chan_sip: Fix lastrtprx always updated + This change adds a deferred queue to bridging. If a bridge + technology determines that a frame can not be written and + should be deferred it can indicate back to bridging to do so. + Bridging will then requeue any deferred frames upon a new + channel joining the bridge. - Packets are read regulary, when there is no data in buffer fr->frametype - is AST_FRAME_NULL. There was no check of frametype and lastrtprx always - updated and, therefore, rtptimeout did not work at all. + This change has been leveraged for T.38 request negotiate + control frames. Without the deferred queue there is a race + condition between the bridge receiving the T.38 request + negotiate and the second channel joining and being in the + bridge. If the channel is not yet in the bridge then the T.38 + negotiation fails. - ASTERISK-25270 #close + A unit test has also been added that confirms that a T.38 + request negotiate control frame is deferred when no other + channel is in the bridge and that it is requeued when a new + channel joins the bridge. - Change-Id: If3b5ca0dbb822582a86eb7d01dcae4e83448c41d + ASTERISK-26923 -2016-08-10 14:41 +0000 [e85adbd947] Alexei Gradinari + Change-Id: Ie05b08523f399eae579130f4a5f562a344d2e415 - * core: Entity ID is not set or invalid +2017-06-13 14:17 +0000 [9e53c30610] Kevin Harwell - The Exchanging Device and Mailbox States could not working - if the Entity ID (EID) is not set manually and can't be obtained - from ethernet interface. + * res_pjsip_refer/session: Calls dropped during transfer - This patch replaces debug message to warning - and addes missing description about option 'entityid' to - asterisk.conf.sample. + When doing an attended transfer it's possible for the transferer, after + receiving an accepted response from Asterisk, to send a BYE to Asterisk, + which can then be processed before Asterisk has time to start and/or + complete the transfer process. This of course causes the transfer to not + complete successfully, thus dropping the call. - With this patch the asterisk also: - (1) decline loading the modules which won't work without EID: - res_corosync and res_pjsip_publish_asterisk. - (2) warn if EID is empty on loading next modules: - pbx_dundi, res_xmpp + This patch makes it so any BYEs received from the transferer, after the REFER, + that initiate a session end are deferred until the transfer is complete. This + allows the channel that would have otherwise been hung up by Asterisk to + remain available throughout the transfer process. - Starting with v197 systemd/udev will automatically assign "predictable" - names for all local Ethernet interfaces. - This patch also addes some new ethernet prefixes "eno" and "ens". + ASTERISK-27053 #close - ASTERISK-26164 #close + Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a - Change-Id: I72d712f1ad5b6f64571bb179c5cb12461e7c58c6 +2017-06-13 10:47 +0000 [b2fd7e5069] George Joseph -2016-08-04 20:00 +0000 [13450c80ce] Richard Mudgett + * pjproject_bundled: Use the asterisk github mirror for download - * res_sorcery_config.c: Cleanup ao2 container usage idioms. + We now mirror the pjproject tarball and md5 at + https://github.com/asterisk/third-party/tree/master/pjproject - Change-Id: Iad24b335fb121a2bc7f1d048ab7420569edcba5a + To improve download reliability, we now get the tarball from + our mirror instead of from pjsip.org. -2016-08-04 15:57 +0000 [d526aa5cbe] Richard Mudgett + ASTERISK-27052 #close + Reported-by: 'alex' - * sorcery.c: Minor optimizations. + Change-Id: I60236587a8935bfa71fcc391f4e2ecb31918c08a - * Remove some unused parameters from internal functions: - sorcery_wizard_create() - sorcery_wizard_update() - sorcery_wizard_delete() +2017-06-12 09:57 +0000 [42f738e052] Alexei Gradinari - * Created the struct sorcery_observer_invocation ao2 object without a lock - since it is not needed in sorcery_observer_invocation_alloc(). + * res_pjsip_mwi: don't create mwi subscriptions if initial unsolicited disabled - * Cleanup generic ao2 container sorcery object id hash, sort, and cmp - functions. + If sending unsolicited mwi to all endpoints on startup is disabled + (mwi_disable_initial_unsolicited=yes) do not need to create subscriptions. + If there are many (thousands) realtime endpoints configured with unsolicited mwi + and Vociemail Storage configured as ODBC or IMAP there will be huge number of + DB/IMAP requests on startup. - Change-Id: Iff71d75f52bc1b8cee955456838c149faaa4f92e + ASTERISK-26230 #close -2016-08-01 11:04 +0000 [45e143576f] Richard Mudgett + Change-Id: I50ae909639e3ee298b931a54def4b2b9e0fb86c5 - * sorcery.c: Tweak some container declaration formatting. +2017-06-11 12:06 +0000 [847087a4ff] Sean Bright - * Tweak sorcery_object_type_alloc() formatting. - * Tweak ast_sorcery_init() formatting. + * codecs.conf.sample: Fix max_bandwidth speling error - Change-Id: Ib02430023f15268cd7a2ea53f2c331213e4d3944 + Reported by Sylvain Boily via asterisk-dev mailing list. -2016-08-11 23:30 +0000 [eca3d2698a] Corey Farrell + Change-Id: Idc7623f335aea3e144dd369ba383b9a757480a9d - * pbx.c: Additional fixes to ast_context_remove_extension_callerid2. +2017-06-08 17:31 +0000 [8d1f54b92e] Jørgen H - Do not check registrar of the first extension head. We should only check - the registrar when we match the priority. + * res_pjsip_transport_websocket: Add NULL check in get_write_timeout - Additionally fix a couple calls to strcmp which used the input callerid - instead of the clean version ex.cidmatch. + Added check for NULL return value when calling + ast_sorcery_retrieve_by_id in function get_write_timeout - ASTERISK-26233 + ASTERISK-27046 - Change-Id: I17ea6881a18f40840ae9c1f5394aab1fbb3769f1 + Change-Id: I9357717278da631c3a1cb502c412693929b0cb41 -2016-08-13 22:02 +0000 [9202ca34a8] Matt Jordan +2017-06-08 10:54 +0000 [d27168d36f] Guido Falsi - * app_dial: Improve documentation + * BuildSystem: Add patches to allow building with recent LibreSSL - * Add some helpful and other embedded paragraph tags + Add some #if defined checks which allow building against LibreSSL. + These patchess come from OpenBSD ports: + https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/telephony/asterisk/patches/ - * Document some of the lesser known channel variables set by Dial + ASTERISK-27043 #close + Reported by: OpenBSD ports - * Add examples for some common Dial uses, along with some more - challenging but useful options + Change-Id: I2f6c08a5840b85ad4d2b75370b947ddde7a9a572 - Change-Id: Ib2fb9301e8e044d14fbb2815ec64161f19bbfbc1 +2017-06-06 14:54 +0000 [fcb1a0d7e8] David M. Lee -2016-08-13 20:16 +0000 [e9fe08ea37] Matt Jordan + * CFLAGS for BIND8 support - * manager: Add tags to relate interrelated events/actions together + Some systems (like macOS) require BIND_8_COMPAT to be defined so that + the nameser libraries are, well, BIND8 compatible. - Change-Id: Idbac539205aa732bf786c4f765577d8e9ff28ba4 + Change-Id: If79fc27a64f90de1835b5aa3aadfa9be22bd16b0 -2016-08-13 20:15 +0000 [a93cd39ac1] Matt Jordan +2017-06-08 10:36 +0000 [7b668297f3] Guido Falsi - * manager: Add tags to relate Bridge related events,actions, and apps + * BuildSystem: Fix build on FreeBSD due to missing crypt.h - Change-Id: I67e6b79fa3102e494b5fe6cc7510472249080e85 + FreeBSD does not include a crypt.h include file. Definitions for + crypt() and crypt_r() are in unistd.h -2016-08-13 20:14 +0000 [d8a7594ffd] Matt Jordan + ASTERISK-27042 #close - * manager: Add tags to relate AoC events and actions + Change-Id: Ib307ee5e384870c6af50efa89fb73722dd0c3a7e - Change-Id: Iea89a36222712148c1775c05ed0ad1049d67a70e +2017-06-07 15:19 +0000 [5b80496b42] Joshua Colp -2016-08-13 20:13 +0000 [243f0cf99a] Matt Jordan + * chan_pjsip: Update device state when in early media. - * manager: Add tags to relate UserEvent actions/apps/events + The chan_pjsip module uses a calculation approach for + determining device state. This means that in situations + where we would expect device state to change we need to + tell the core to query. A scenario that was missed is + when early media was signaled. - Change-Id: I80f8a981f62f50e74609c69c49edcaca6c95efa4 + This change adds the notification for the core to + query device state when we are told that early media + is being provided. -2016-08-12 15:53 +0000 [3269cf4c17] Matt Jordan + ASTERISK-27039 - * res_agi: Improve documentation + Change-Id: Iafebfd152894966344ff2e950a3cee9f59a3eb6f - * Groups of AGI commands that have similar functionality now reference - each other, and all reference the AGI application for ease of wiki - reference. +2017-06-07 14:32 +0000 [e497a76d24] Sean Bright - * The documentation for the AGI application has been improved, in - particular noting the various AGI types and how they are invoked. + * eventfd: Disable during cross compilation - * A warning message has been added to DeadAGI, noting that it is - deprecated. + Reported by Lonnie Abelbeck via private e-mail. - Change-Id: I479ccdee8a7393f01b18692c3d4ab7e6bdd1875d + Change-Id: Icc80f12b8d8d591e14a8e0ed9f1c02cbd193a89b -2016-08-12 13:53 +0000 [a19f4affe8] Matt Jordan +2017-06-07 11:21 +0000 [19da99df2f] Alexei Gradinari - * manager: Add links between related events + * CHANGES: correct version for a new option 'refer_blind_progress' - This patch adds some see-also references between related AMI events. It - focuses primarily on those events that are guaranteed to come in pairs, - such as DTMFBegin/DTMFEnd, as well as those that occur during the life - cycle of an Asterisk channel, such as Newchannel/Hangup. + Change-Id: If4817d26a8974610827624fb8a4e56d681d6bf97 - Change-Id: Iaab600477052018d0f8c03d0c624c0856e9ff1f3 +2017-06-06 07:04 +0000 [d3e951edf5] Joshua Colp -2016-08-12 11:15 +0000 [ddab42e296] Matt Jordan + * pjsip: Extend 'asymmetric_rtp_codec' option to include us changing. - * func_channel: Reorganize documentation + PJSIP support in Asterisk differs from chan_sip in that it + allows media to be sent as-is without transcoding provided + the codecs were negotiated in the SDP. This is allowed + according to the RFC. Support for this differs quite a lot + though and some endpoints do not handle it well. - * Following the example of the PJSIP channel driver, the channel - technology specific documentation has been moved to the respective - channel drivers that provide that functionality. This has the benefit - of locating the documentation of items with those modules that provide - it. + This change extends the 'asymmetric_rtp_codec' option to + also cover this case. When set to no (the default) the code + behaves as chan_sip does - the best codec is selected and + we will only ever send that, unless we change what we are + sending if the remote side changes. When set to yes we + will send media as-is without transcoding if the codec + has been negotiated in the SDP. - * Examples of using the CHANNEL function for both standard items as well - as for PJSIP have been added. + ASTERISK-26996 - * The 'max_forwards' standard item has been documented. + Change-Id: Ib1647f6902a0843e8c435946f831c2159e8d1d51 - Change-Id: Ifaa79a232c8ac99cf8da6ef6cc7815d398b1b79b +2017-06-06 10:04 +0000 [b3ca24d216] Sean Bright -2016-08-15 07:17 +0000 [922b74169f] Joshua Colp + * res_rtp_multicast: Use consistent timestamps when possible - * manager: Clarify that dialplan manipulation actions are under system class. + When a frame destined for a MulticastRTP channel does not have timing + information (such as when an 'originate' is done), we generate the RTP + timestamps ourselves without regard to the number of samples we are + about to send. - ASTERISK-26246 #close + Instead, use the same method as res_rtp_asterisk and 'predict' a + timestamp given the number of samples. If the difference between the + timestamp that we generate and the one we predict is within a specific + threshold, use the predicted timestamp so that we end up with timestamps + that are consistent with the number of samples we are actually sending. - Change-Id: Id673b9786389f9d2a87f638ce1a25161f5f31657 + Change-Id: I2bf0db3541b1573043330421cbb114ff0f22ec1f -2016-08-11 22:12 +0000 [9debe1ca26] Corey Farrell +2017-05-31 10:41 +0000 [861984eac0] Joshua Colp - * Run mandatory cleanup when startup fails. + * res_pjsip: Add support for returning only reachable contacts and use it. - Errors during startup result in an exit. These error branches should be - calling ast_run_atexit(0) to ensure mandatory cleanup is run. + This introduces the ability for PJSIP code to specify filtering flags + when retrieving PJSIP contacts. The first flag for use causes the + query code to only retrieve contacts that are not unreachable. This + change has been leveraged by both the Dial() process and the + PJSIP_DIAL_CONTACTS dialplan function so they will now only attempt + calls to contacts which are not unreachable. - ASTERISK-26267 #close + ASTERISK-26281 - Change-Id: If226f2326ae2df7add20040696132214cf2bb680 + Change-Id: I8233b4faa21ba3db114f5a42e946e4b191446f6c -2016-08-11 11:24 +0000 [d7534e016b] George Joseph +2017-06-05 11:27 +0000 [d8802a6a0f] Kevin Harwell - * res_pjsip_caller_id: Copy header name to short header name + * channel: ast_write frame wrongly freed after call to audiohooks - When compact_headers was set, we were sending a zero-length header name - for PAI and RPID because we always forced the short header name length - to 0. We did this because we cloned the header from "From" and wanted - to clear "f" from the sname. By cloning however, we bypass pjproject's - automatic logic that sets sname to name if there's no compact form of - the header, which there isn't for PAI and RPID. So now we force sname - to be the same as name right after we set name. + ASTERISK-26419 introduced a bug when calling ast_audiohook_write_list in + ast_write. It would free the frame given to ast_write if the frame returned + by ast_audiohook_write_list was different than the given one. The frame give + to ast_write should never be freed within that function. It is the caller's + resposibility to free the frame after writing (or when it its done with it). + By freeing it within ast_write this of course led to some memory corruption + problems. - res_pjsip_diversion needed the same treatment for the Diversion header. + This patch makes it so the frame given to ast_write is no longer freed within + the function. The frame returned by ast_audiohook_write_list is now subsequently + used in ast_write and is freed later. It is freed either after translate if the + frame returned by translate is different, or near the end of ast_write prior to + function exit. - ASTERISK-26241 #close + ASTERISK-26973 #close - Change-Id: I633ec139630cd83809aae00336cee4a10077e467 + Change-Id: Ic9085ba5f555eeed12f6e565a638c3649695988b -2016-08-11 11:13 +0000 [225fd1003f] Matt Jordan +2017-05-31 11:45 +0000 [001f4ddda4] Sean Bright - * app_queue: Prevent crash when a call is forwarded to an invalid location + * pbx_builtin: Properly handle hangup during Background - When a call forward attempt is made from a Queue member, the current - code will hang up the forwarding channel in an off-nominal condition - prior to raising the Stasis events informing the rest of Asterisk that - the call was forwarded. This will result in a slew of dreaded FRACKs, - most likely leading to a crash. + Before this patch, when a user hung up during a Background, we would + stuff 0xff into a char and attempt a dialplan lookup of it. This caused + problems for some realtime engines which interpreted the value as the + beginning of an invalid UTF-8 sequence. - This patch modifies the code such that we don't hang up the forwarding - channel even in an off-nominal condition until we've safely raised the - Stasis messages. + ASTERISK-19291 #close + Reported by: Andrew Nowrot - ASTERISK-25797 #close + Change-Id: I8ca6da93252d61c76ebdb46a4aa65e73ca985358 - Change-Id: Ife5abed351691fd79105321636eaa8ea8dcdba38 +2017-05-31 04:25 +0000 [f6eeaaafd5] Joshua Colp -2016-08-11 12:18 +0000 [aeb859dba9] George Joseph + * channel / app_meetme: Fix parentheses. - * res_pjsip: Fail global load if debug or default_from_user are empty + ASTERISK-27025 - If debug was specified in the global configuration but left blank, - the logger would treat it as a wildcard and log all hosts. If - default_from_user was empty, a crash would result. + Change-Id: Id736b0aa4ec6b6b0f04663d64fa8d151f81fdbed - The global apply handler now checks for empty strings. +2017-05-30 16:07 +0000 [9dce4a947b] Sean Bright - ASTERISK-26239 #close - ASTERISK-26238 #close + * stasis_recording: Correct ast_asprintf error checking - Change-Id: Ie75727f5cd5808845d92cc81f5713842fb203336 + ASTERISK-27021 #close + Reported by: Tim Morgan -2016-08-01 15:07 +0000 [2275494e80] Richard Mudgett + Change-Id: I0ac061f040093e806c3b1f4e2340864f3ce4dd75 - * res_pjsip res_pjsip_mwi: Misc fixes and cleanups. +2017-05-28 15:43 +0000 [5c27fe2187] Sean Bright - * Eliminated RAII_VAR() usage in - ast_sip_persistent_endpoint_update_state(). + * format: Reintroduce smoother flags - * Added a missing allocation failure check to - persistent_endpoint_find_or_create(). + In review 4843 (ASTERISK-24858), we added a hack that forced a smoother + creation when sending signed linear so that the byte order was adjusted + during transmission. This was needed because smoother flags were lost + during the new format work that was done in Asterisk 13. - * Made persistent_endpoint_find_or_create() create the new object without - a lock as it isn't needed. + Rather than rolling that same hack into res_rtp_multicast, re-introduce + smoother flags so that formats can dictate their own options. - * Cleaned up some ao2 container allocation idioms. + Change-Id: I77b835fba0e539c6ce50014a984766f63cab2c16 - * Reordered res_pjsip_mwi.c load_module() and unload_module() +2017-05-24 10:09 +0000 [39d14834f8] Mark Michelson - Change-Id: If8ce88fbd82a0c72a37a2388f74f77237a6a36a8 + * Confbridge: Add "sfu" video mode to bridge profile options. -2016-08-04 18:03 +0000 [d4ffbccef6] Richard Mudgett + A previous commit added plumbing to bridge_softmix to allow for an SFU + experience with Asterisk. This commit adds an option to app_confbridge + that allows for a confbridge to actually make use of the SFU video mode. - * location.c: Misc fixes and cleanups. + SFU mode is implemented in a "set it and forget it" kind of way. That + is, when the bridge is created, if SFU mode is enabled, then the video + mode gets set to SFU and cannot be changed. Future improvements may + allow for a hybrid experience (e.g. forward multiple video streams, + specifically those of the most recent talkers), but for this addition, + no such capability is present. - * Eliminated most RAII_VAR() usage. + Change-Id: I87bbcb63dec6dbbb42488f894871b86f112b2020 - * Added several missing allocation failure checks. +2017-05-05 11:56 +0000 [2da869408a] Mark Michelson - * Made ast_sip_for_each_contact() allocate the wrapper ao2 object without - a lock as it is not needed. + * Add primitive SFU support to bridge_softmix. - Change-Id: Ie20913365156c95dd79e5d471cfd25e99ae880bc + This sets up the "plumbing" in bridge_softmix to + be able to accommodate Asterisk asking as an SFU + (selective forwarding unit) for conferences. -2016-08-11 12:01 +0000 [36b2a40533] George Joseph + The way this works is that whenever a channel enters or leaves a + conference, all participants in the bridge get sent a stream topology + change request. The topologies consist of the channels' original + topology, along with video destination streams corresponding to each + participants' source video streams. So for instance, if Alice, Bob, and + Carol are in the conference, and each supplies one video stream, then + the topologies for each would look like so: - * autohints: Update CHANGES and extensions.conf.sample + Alice: + Audio, + Source video(Alice), + Destination Video(Bob), + Destination video (Carol) - Make it clear that we're talking about device state hints and add - an entry to the sample config. + Bob: + Audio, + Source video(Bob) + Destination Video(Alice), + Destination video (Carol) - Change-Id: Iaef58ffb960191a21b713e8e0b51ce1fcd47e433 + Carol: + Audio, + Source video(Carol) + Destination Video(Alice), + Destination video (Bob) -2016-08-02 13:53 +0000 [4a5da6c9b4] Richard Mudgett + This way, video that arrives from a source video stream can then be + copied out to the destination video streams on the other participants' + channels. - * taskprocessor.c: Tweak high water checks. + Once the bridge gets told that a topology on a channel has changed, the + bridge constructs a map in order to get the video frames routed to the + proper destination streams. This is done using the bridge channel's + stream_map. - * The high water check in ast_taskprocessor_alert_set_levels() would - trigger immediately if the new high water level is zero and the queue was - empty. + This change is bare-bones with regards to SFU support. Some key features + are missing at this point: - * The high water check in taskprocessor_push() was off by one. + * Stream limits. This commit makes no effort to limit the number of + streams on a specific channel. This means that if there were 50 video + callers in a conference, bridge_softmix will happily send out topology + change requests to every channel in the bridge, requesting 50+ + streams. - Change-Id: I687729fb4efa6a0ba38ec9c1c133c4d407bc3d5d + * Configuration. The plumbing has been added to bridge_softmix, but + there has been nothing added as of yet to app_confbridge to enable SFU + video mode. -2016-08-03 16:24 +0000 [5ba6357be2] Richard Mudgett + * Testing. Some functions included here have unit tests. + However, the functionality as a whole has only been verified by + hand-tracing the code. - * res_pjsip: Make aor named lock a mutex. + * Selectivenss. For a "selective" forwarding unit, this does not + currently have any means of being selective. - The named aor lock was always being locked for writes so a rwlock adds no - benefit and may be slower because rwlocks are biased toward read locking. + * Features. Presumably, someone might wish to only receive video from + specific sources. There are no external-facing functions at the moment + that allow for users to select who they receive video from. - Change-Id: I8c5c2c780eb30ce5441832257beeb3506fd12b28 + * Efficiency. The current scheme treats all video streams as being + unidirectional. We could be re-using a source video stream as a + desetnation, too. But to simplify things on this first round, I did it + this way. -2016-07-29 17:41 +0000 [b6e03a5ff3] Richard Mudgett + Change-Id: I7c44a829cc63acf8b596a337b2dc3c13898a6c4d - * pjsip_distributor.c: Add missing allocation failure check. +2017-05-30 09:34 +0000 [045d7b8cb7] Sean Bright - Change-Id: I932ab2cea845e534d9ff318035b6de39972d3b28 + * format_mp3: Re-work menuselect/build issues -2016-08-11 10:50 +0000 [ac0454f9fa] David M. Lee + Rather than removing format_mp3 from ALL_C_MODS (which caused format_mp3 + to not show up in menuselect), use .PHONY targets when the necessary + source files are not present. - * Fixed compile flags for non-module libs + ASTERISK-23951 + Reported by: Tzafrir Cohen - The non-module libs libasteriskssl.dylib and libasteriskpj.dylib have - long been missing the AST_NOT_MODULE compile flag. This was mostly - okay, until a recent fix to improve compiler warnings when the - AST_MODULE_SELF_SYM is missing broke the build on OS X/macOS/whatever - they are calling it these days. + Change-Id: I0a7512c51acc9e86043671795020b0de725bd9e8 - Change-Id: I2cb51c890824f001280a5114f2e775f97c163516 +2017-05-30 09:43 +0000 [80206cdc65] George Joseph -2016-08-11 10:50 +0000 [b3c2f1164b] Kevin Harwell + * test_json: Fix test names with reserved words - * alembic: add auth_username to endpoint's identify_by enum + Some of the test names were actually reserved words (true, false, + int, null, string, bool). When the jenkins test results analyzer + does its thing it tries to create a map using the test names as + keys and fails because they're reserved words. - A new identify_by option was added recently, auth_username. However, this - setting was not added as an allowable choice in the database enumeration - value. + Added "type_" to those test names. - This patch updates the current enumeration, adding in the new setting. + Change-Id: I90d809f46969c78a1c605b736ff0635196a2cf1b - ASTERISK-26268 #close +2017-05-26 11:41 +0000 [9c4f63263c] Joshua Colp - Change-Id: Ib4788e8485e4cd40172ec0abbf5810a147ab8bf8 + * manager: Clear the flag on the other channel. -2016-08-08 14:50 +0000 [41aba83ff6] Richard Mudgett + During the channel flag audit an incorrect change was + done. The flag should be cleared on the second channel. - * res_srtp: Move SDP SRTP code from the core to res_srtp. + ASTERISK-26469 - A patch made to the master branch (Now the 14 branch) inadvertently made - libsrtp a required dependency in order to compile Asterisk. Rather than - create dummy defines to substitute for the defines supplied by libsrtp - when libsrtp is not available, most of the code in sdp_srtp.c is moved - into res_srtp.c. This gets more code out of Asterisk's core that isn't - used when SRTP is not available. This also makes another inadvertent - required dependency on libsrtp by Asterisk's core unlikely. + Change-Id: I770c5a389550a2fb5a6ade942fccbb2e1d9199c8 - ASTERISK-26253 #close - Reported by: Ben Merrills +2017-05-26 11:15 +0000 [1f136fe885] Sean Bright - Change-Id: I0a46cde81501c0405399c2588633ae32706d1ee7 + * res_srtp: Add support for libsrtp2 -2016-08-06 10:57 +0000 [820879415f] Alexei Gradinari + ASTERISK-25294 #close + Reported by: Tzafrir Cohen - * pjsip: Fix deadlock with suspend taskprocessor on masquerade + ASTERISK-26976 #close + Reported by: Alex - If both channels which should be masqueraded - are in the same serializer: - 1st channel will be locked waiting condition 'complete' - 2nd channel will be locked waiting condition 'suspended' + Change-Id: I789b1c3d1ed31365bbd9339fa58ef36f48833c40 - On heavy load system a chance that both channels will be in - the same serializer 'pjsip/distibutor' is very high. +2017-05-25 11:10 +0000 [59348aa182] Sean Bright - To reproduce compile res_pjsip/pjsip_distributor.c with - DISTRIBUTOR_POOL_SIZE=1 + * format_mp3: Don't try to build format_mp3 if we don't have sources - Steps to reproduce: - 1. Party A calls Party B (bridged call 'AB') - 2. Party B places Party A on hold - 3. Party B calls Voicemail app (non-bridged call 'BV') - 4. Party B attended transfers Party A to voicemail using REFER. - 5. When asterisk masquerades calls 'AB' and 'BV', - a deadlock is happened. + ASTERISK-23951 #close + Reported by: Tzafrir Cohen - This patch adds a suspension indicator to the taskprocessor. - When a session suspends/unsuspends the serializer - it sets the indicator to the appropriate state. - The session checks the suspension indicator before - suspend the serializer. + Change-Id: Iebf181d44bb735787fde4b5be863c4d7e2478a30 - ASTERISK-26145 #close +2017-05-23 11:07 +0000 [44c5a144ce] Martin Tomec - Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b + * Sqlite3: make busy_timeout configurable. -2016-08-09 12:07 +0000 [d4170df40a] Kevin Harwell + Enables runtime configuration of busy_timeout for sqlite databases. + Default timeout remains 1000ms. - * alembic/sqlalchemy: auto increment only allowed on a single column + ASTERISK-27014 #close - The extensions table defined two columns (id and priority) as primary key - autoincrement columns. However only one is allowed when defining the primary - key. + Change-Id: I8921a3aac3c335843be4cb17d2dd0a5c157a36da - This patch removes the autoincrement attribute from the priority column since - it does not need to be as such and really should not have been on there in the - first place. +2017-05-24 15:50 +0000 [08edd54c1b] George Joseph - This patch also removes 'context', 'exten', and 'priority' from the primary key - index and creates a new combined unique contraint index on them. + * unittests: Add a unit test that causes a SEGV and... - ASTERISK-26183 #close + ...that can only be run by explicitly calling it with + 'test execute category /DO_NOT_RUN/ name RAISE_SEGV' - Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b + This allows us to more easily test CI and debugging tools that + should do certain things when asterisk coredumps. -2016-08-10 11:47 +0000 [8d42ff784d] George Joseph + To allow this a new member was added to the ast_test_info + structure named 'explicit_only'. If set by a test, the test + will be skipped during a 'test execute all' or + 'test execute category ...'. - * res_resolver_unbound: Allow compilation with libunbound version < 1.5 + Change-Id: Ia3a11856aae4887df9a02b6b081cc777b36eb6ed - libunbound at version 1.4.20 (which CentOS still uses) declared all - of their string function parameters as as 'char *'. 1.4.21 changed - them all to 'const char *'. Thankfully 1.4.21 also introduced the - UNBOUND_VERSION_MAJOR define so configure now checks for that and - sets HAVE_UNBOUND_CONST_PARAMS. res_resolver_unbound then checks - that and casts away the 'const' if it's not set. +2017-05-23 15:42 +0000 [d847fe6585] Sean Bright - Tested compile and testsuite on CentOS6 (1.4.20), Ubuntu14 (1.4.22) and - Fedora24 (1.5.4). There are a few failing tests to be addressed though. + * res_agi: Allow configuration of audio format of EAGI pipe - ASTERISK-26283 #close + This change allows the format of the EAGI audio pipe to be changed by + setting the dialplan variable 'EAGI_AUDIO_FORMAT' to the name of one of + the loaded formats. - Change-Id: Ib708b19b706c5d0ba7b7d5473e6df339d9ae4148 + ASTERISK-26124 #close -2016-08-07 09:58 +0000 [c315460abb] Matt Jordan + Change-Id: I7a10fad401ad2a21c68c2e7246fa357d5cee5bbd - * channels/chan_pjsip: Add PJSIP_SEND_SESSION_REFRESH +2017-05-23 13:33 +0000 [e2e6baa8d8] Sean Bright - This patch adds a new PJSIP specific dialplan function, - PJSIP_SEND_SESSION_REFRESH. When invoked on a PJSIP channel, the media - session will be refreshed via either an UPDATE or re-INVITE request. - When used in conjunction with the PJSIP_MEDIA_OFFER dialplan function, - the formats in use on a PJSIP channel can be re-negotiated and changed - dynamically after call setup. + * res_agi: Clarify 'RECORD FILE' documentation - ASTERISK-26277 #close + Documented the 'beep' option in both the parameters list and the command + description. - Change-Id: Ib98fe09ba889aafe26d58d32f0fd1323f8fd9b1b - (cherry picked from commit eec60dd77394f0519895fc6abce3a6f90f6470f1) + ASTERISK-23839 #close -2016-08-09 16:19 +0000 [8fe9f1f7f1] Mark Michelson + Change-Id: I4970395c922dbdce3f7cf0f56d5b065ec9aa53ea - * res_rtp_asterisk: Cache local RTCP address. +2017-05-23 13:06 +0000 [3dcb3c88aa] Sean Bright - When an RTCP packet is sent or received, res_rtp_asterisk generates a - Stasis event that contains the RTCP report as well as the local and - remote addresses that the report pertains to. + * res_agi: Prevent crash when SET VARIABLE called without arguments - The addresses are determined using ast_find_ourip(). For the local - address, this will typically result in a lookup of the hostname of the - server, and then a DNS lookup of that hostname. If you do not have the - host in /etc/hosts, then this results in a full DNS lookup, which can - potentially block for some time. + Explicitly check that the appropriate number of arguments were passed to + SET VARIABLE before attempting to reference them. Also initialize the + arguments array to zeroes before populating it. - This is especially problematic when performing RTCP reads, since those - are done on the same thread responsible for reading and writing media. + ASTERISK-22432 #close - This patch addresses the issue by performing a lookup of the local - address when RTCP is allocated. We then use this cached local address - for the Stasis events when necessary. + Change-Id: I5143607d80a2724f749c1674f3126b04ed32ea97 - ASTERISK-26280 #close - Reported by Mark Michelson +2017-05-23 12:35 +0000 [e490aa3176] Sean Bright - Change-Id: I3dd61882c2e57036f09f0c390cf38f7c87e9b556 + * res_agi: Fix malformed AGI usage response -2016-08-08 19:14 +0000 [827457dca0] Corey Farrell + If the generated XML documentation for a command does not end with a \n, + the postamble of the usage message does not appear on its own line. - * Produce friendly error when AST_MODULE_SELF_SYM is not defined. + ASTERISK-25662 #close - Modules must define AST_MODULE_SELF_SYM to be used as the name of a - generated function. This produces a friendly error when it's not - defined. + Change-Id: If190f1e9e37fe215fed95897d78d4a6e142b0020 - ASTERISK-26278 #close +2017-05-23 10:06 +0000 [8ae0227cf3] Sean Bright - Change-Id: Ib9d35a08104529c516d636771365e02c6e77a45b + * res_format_attr_h26x: Trim blanks in fmtp attributes -2016-08-08 12:53 +0000 [403b63571c] Alexei Gradinari + Some devices separate format attributes with a semicolon followed by a + space, so trim blanks before trying to match them. - * res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack + ASTERISK-27008 #close - The PJSIP taskprocessors could be overflowed on startup - if there are many (thousands) realtime endpoints - configured with unsolicited mwi. - The PJSIP stack could be totally unresponsive for a few minutes - after boot completed. + Change-Id: Ia44cb2e4fef5c73dc541a29da79cb0e19c22d9cc - This patch creates a separate PJSIP serializers pool for mwi - and makes unsolicited mwi use serializers from this pool. - This patch also adds 2 new global options to tune taskprocessor - alert levels: 'mwi_tps_queue_high' and 'mwi_tps_queue_low'. +2017-05-15 15:03 +0000 [faab058014] Joshua Colp - This patch also adds new global option 'mwi_disable_initial_unsolicited' - to disable sending unsolicited mwi to all endpoints on startup. - If disabled then unsolicited mwi will start processing - on next endpoint's contact update. + * app_queue: Fix members showing as being in call when not. - ASTERISK-26230 #close + A change was done which added an 'in_call' flag to queue + members that was set to true while talking to an agent. + Unfortunately in practice this does not accurately reflect + whether they are talking to an agent or not. If a Local + channel is involved and a transfer is performed then the + app_queue application would incorrectly think the agent + was still in a call with the caller. This was done to + fix a race condition between an agent becoming available + by device state and the checking of the last call information + for the wrapup time. There was a small window where the + last call information would be the previous value instead + of the new one. - Change-Id: I4c8ecb82c249eb887930980a800c9f87f28f861a + This change goes about fixing the original issue in a + different way by considering the call completed if device + state is received which would make the agent available + and if they are currently in a call. If this occurs the + last call information is updated before the agent becomes + available ensuring that old information is not present + when checking if the member should be called. This also + improves the transfer situation by actually updating + and enforcing the wrapup time. -2016-08-06 01:37 +0000 [0749f6e6f3] Rodrigo Ramírez Norambuena + ASTERISK-26399 + ASTERISK-26400 + ASTERISK-26715 + ASTERISK-26975 - * res_odbc: Show only when there a fail attempt of connection in CLI + Change-Id: Ife1cb686e3173b3a6d368601adef9aff69d4beea - When is executed CLI command "odbc show all" every time is show - information about variable last_negative_connect. If not there a fail - attempt of connection will show date like "1969-12-31 21:00:00". +2017-05-23 05:45 +0000 [36e90952ec] Robert Mordec - This patch fix there situation for to show only this information when - exists a fail attempt before. + * app_confbridge: Race between removing and playing name recording while leaving - Change-Id: I7c058b0be6f7642e922de75ee6b82c7276c9f113 + When user leaves a conference, its channel calls async_play_sound_file() + in order to play the name announcement and then unlinks the sound file. + The async_play_sound_file() function adds a task to conference playback queue, + which then runs playback_common() function in a different thread. -2016-08-05 22:06 +0000 [b156a291af] Rodrigo Ramírez Norambuena + It leads to a race condition when, in some cases, channel thread may unlink + the sound file before playback_common() had a chance to open it. - * cdr_adaptive_odbc: Fix DNSs mixed config quote quoted_identifiers + This patch creates a file deletion task, that is queued after playback. - When haved more than once DNSs config and one of their dont set - quoted_identifiers and before this is with configurated with - quoted_identifiers resulting a truncate statement for a reference null - for quote character identifier. + ASTERISK-27012 #close - This patch initializes quoted flag before build SQL Query + Change-Id: I412f7922d412004b80917d4e892546c15bd70dd3 - Example config for this bugfix case in cdr_adaptive_odbc.conf file +2017-05-22 13:51 +0000 [440ff38c08] Kevin Harwell - [first] - connection=asterisk-server1 - table=cdr - quoted_identifiers=" + * res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm - [second] - connection=asterisk-server2 - table=cdr + When using rtcp mux if an rtcp payload came in it would still use the srtp + unprotect algorithm instead of the srtp unprotect rtcp method. Since rtcp + data was being passed to the rtp unprotect method this would result in an + error. - [third] - connection=asterisk-server3 - table=cdr - quoted_identifiers=` + This patch ensures that the correct unprotect method is chosen by making + sure the passed in rtcp flag is appropriately set when rtcp mux is enabled + and an rtcp payload is received. - Change-Id: Ibd95667b468e10d4a19a2b9d88b9934ec7207e1d + ASTERISK-26979 #close -2016-08-05 15:34 +0000 [9042ad40f2] Alexei Gradinari + Change-Id: Ic5409f9d1a267f1d4785fc5aed867daaecca6241 - * app_voicemail: Add taskprocessor alert level options. +2017-05-19 10:05 +0000 [0f487978a9] Sean Bright - On heavy loaded system with IMAP or DB storage, - 'app_voicemail' taskprocessor queue could reach 500 scheduled tasks. - It could happen when the IMAP or DB server dies or is unreachable. - It could happen on startup when there are many (thousands) - realtime endpoints configured with unsolicited mwi. - If the taskprocessor queue reaches the high water level - then the alert is triggered and pjsip stops processing new requests - until the queue reaches the low water level to clear the alert. + * chan_sip: Better ICE handling for RTCP-MUX - This patch adds 2 new 'general' configuration options - to tune taskprocessor alert levels: - 'tps_queue_high' - Taskprocessor high water alert trigger level. - 'tps_queue_low' - Taskprocessor low water clear alert level + If we are offered or are offering RTCP-MUX, don't consider RTCP ICE + candidates. This confuses certain browsers (current Firefox for + example) and causes intial audio setup delays. - ASTERISK-26229 #close + ASTERISK-26982 #close - Change-Id: I766294fbffedf64053c0d9ac0bedd3109f043ee8 + Change-Id: Ifeaf47e83972fe8dbe58b7fb3d6d1823400cfb91 -2016-08-04 10:16 +0000 [54869e4823] Joshua Colp +2017-05-12 10:38 +0000 [be4beff3e4] Steve Davies - * res_pjsip_outbound_publish: Use a serializer shutdown group for unload. + * app_queue: Add QUEUE_RAISE_PENALTY feature - This change replaces the custom unload process for the outbound - publish module with the common serializer shutdown group. + Additional variable to work alongside QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY, + including an extra parameter in queuerules.conf. This value causes lower + Agent penalty values to "raise up" so that they can join higher penalty agents + and be treated equally after a period of time. - ASTERISK-25217 #close + ASTERISK-26995 #close - Change-Id: I280a0384d860c486202d87d2d674394cca77ffb6 + Change-Id: If1c6421a983667a5ac4c359f6dac25b212b4c459 -2016-08-04 10:27 +0000 [e711e57106] Kevin Harwell +2017-04-13 17:17 +0000 [7c0466092c] Mark Michelson - * resource_channels: Sync with ARI stubs + * AST-2017-003: Handle zero-length body parts correctly. - This file was out of sync with the current ARI definitions. + ASTERISK-26939 #close - Change-Id: Ie7cb7d6d3c2eeb9cc9d683ca87b43b117e713d0a + Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd -2016-08-03 15:41 +0000 [29b0f733a0] Corey Farrell +2017-04-13 11:14 +0000 [949e9147bf] George Joseph - * Add missing checks during startup. + * AST-2017-004: chan_skinny: Add EOF check in skinny_session - This ensures startup is canceled due to allocation failures from the - following initializations. - * channel.c: ast_channels_init - * config_options.c: aco_init + The while(1) loop in skinny_session wasn't checking for EOF so + a packet that was longer than a header but still truncated + would spin the while loop infinitely. Not only does this + permanently tie up a thread and drive a core to 100% utilization, + the call of ast_log() in such a tight loop eats all available + process memory. - ASTERISK-26265 #close + Added poll with timeout to top of read loop - Change-Id: I911ed08fa2a3be35de55903e0225957bcdbe9611 + ASTERISK-26940 #close + Reported-by: Sandro Gauci -2016-08-03 09:47 +0000 [90b30b21ac] Joshua Colp + Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898 - * astconfigparser: Really handle case where line is simply a comment. +2017-04-13 17:16 +0000 [2bb98d8fac] Mark Michelson - The regular expression would match causing the code that handled - the line if it was merely a comment to never get executed. + * AST-2017-002: Ensure transaction key buffer is large enough. - Change-Id: I3e4022481037ebcba9905587fe8c764b4ce21819 + ASTERISK-26938 #close -2016-08-01 11:08 +0000 [73bce50ef8] Joshua Colp + Change-Id: I266490792fd8896a23be7cb92f316b7e69356413 - * sorcery: Use more compatible regex for local expressions. +2017-05-18 16:35 +0000 [4141748e85] Sean Bright - This changes the use of an empty regex for both res_sorcery_config - and res_sorcery_memory to "." instead. This is a more compatible - regular expression which also works on FreeBSD. + * res_hep_rtcp: Add support level to module info - ASTERISK-26206 #close + Change-Id: I5661478f9cf12d431f730e42be79323b62831e92 - Change-Id: Ia9166dd176f1597555ba22b6931180d0626c1388 +2017-05-15 13:26 +0000 [a60d1f3974] Kevin Harwell -2016-08-02 03:08 +0000 [3ff964c6b6] Alexander Traud + * app_stream_echo: Added a multi-stream echo application - * res_pjsip: SIP/SDP origin (o=) contained square brackets on IP6 transports. + If the channel does not have multi-stream support then this application acts + just like app_echo. If it does have multi-stream support then each stream is + echoed back to itself (one-to-one). - ASTERISK-26256 #close + If a "num" is specified, then a new topology is made that contains clones (from + the channel's topology) of all media types that are not equal to the given + "type". If the media type differs then the first stream matching the "type" is + cloned into the new topology and then up to "num" - 1 of the same stream are + also cloned into it. Any additional streams from the original topology matching + the "type" are subsequently ignored (i.e. not added to the new topology). - Change-Id: I3fd68df561f81fdb8c6c497d465b50c12422f058 + For this same case when a frame is read from a stream that frame is still + echoed back like before, but now that frame is also echoed out to the + additional streams that matched on the specified "type". -2016-08-01 16:13 +0000 [f6276441b1] George Joseph + ASTERISK-26997 #close - * menuselect: Add an opaque "member_data" string to the acceptable xml + Change-Id: I254144486734178e196c7f590a26ffc13543ff2c - Change-Id: Id5ac43b95c8d7395f3be37f983632169db3d1afe +2017-05-15 13:25 +0000 [51375686f7] Kevin Harwell -2016-07-29 13:13 +0000 [1cd79d6ee5] Mark Michelson + * core/conversions: Added string to unsigned integer and long conversions - * Remove SILK payload mappings from Asterisk core. + Added functions that convert a string to an unsigned integer or unsigned long. + A couple of unit test were also created to test the routines. The reasons for + adding these conversion utilities (and hopefully eventually more) are as + follows: - SILK is a bit of a hog when it comes to using up our limited number of - dynamic payload types in the RTP engine. By freeing up four slots, it - allows for other codecs to potentially take the place. + * Conversion routines are functionally contained with consistent and + better error checking + * The function names offer a better description of what is happening + * It encourages code reuse for easier bug fixing at a single source + * It's simpler to use + * It's unit testable - Now, codec_silk.so will dynamically use the payload slots in the RTP - engine when it loads. + For instance, currently in a lot of places when converting to an integer or + similar the "sscanf" function is used. When using "sscanf" it may not be + immediately clear what's happening as it lacks semantic naming. Limited error + checking is usually done as well. For example, most of the time a check is done + to make sure the value converted, but does not check for overflows or negative + valued conversions when converting unsigned numbers. - A better fix would be make RTP dynamic payload types actually - dynamic. However, at this stage of Asterisk 14 development, this is a - risky move that would be imprudent. + Why use/wrap "strtoul" and not "sscanf" then? Primarily, it lacks some of the + built in error handling that "strtoul" has. For instance "strtoul" contains + overflow checks. Less so, but can still factor as reasons, "sscanf" is slightly + more complex in its use. And maybe a bit controversial, but it may be ("big if") + potentially slower than "strtoul" in some cases. - Change-Id: I5774e09408f9a203db189529eabdc0d3f4c1e612 + Change-Id: If7eaca4a48f8c7b89cc8b5a1f4bed2852fca82bb -2016-07-29 04:48 +0000 [a7ae48441f] Joshua Colp +2017-05-13 11:40 +0000 [5a7af00e80] Joshua Colp - * astconfigparser: Handle case where line is simply a comment. + * asterisk: Audit locking of channel when manipulating flags. - Change-Id: I2dea5815363f4d787d709228a04f33baee383ef5 + When manipulating flags on a channel the channel has to be + locked to guarantee that nothing else is also manipulating + the flags. This change introduces locking where necessary to + guarantee this. It also adds helper functions that manipulate + channel flags and lock to reduce repeated code. -2016-07-28 14:10 +0000 [89a0a1eb45] Corey Farrell + ASTERISK-26789 - * pbx.c: Fix handling of '-' in extension name and callerid + Change-Id: I489280662dba0f4c50981bfc5b5a7073fef2db10 - This adds a two strings to ast_exten. name to go with exten and - cidmatch_display to go with cidmatch. The new fields contain input used - to add the extension in the first place. The existing fields now - contain stripped input that excludes insignificant spaces and dashes. - These stripped fields should always be used for comparisons. The - unstripped fields should normally be used for display, but displaying - stripped values will not cause runtime errors. +2017-05-12 21:04 +0000 [30fbed65f1] Richard Mudgett - Note the actual string is only stored twice if it contains dashes. If - no dashes are found then both 'char *' fields point to the same memory. - So this change has a minimum effect on memory usage. + * res_pjsip_session.c: Process initial INVITE sooner. (key exists) - The existing functions ast_get_extension_name and - ast_get_extension_cidmatch return unstripped values as they did before - this change. Other similar bugs likely still exist where unstripped - extensions are saved outside pbx.c then passed back in. + Retransmissions of an initial INVITE could be queued in the serializer + before we have processed the first INVITE message. If the first INVITE + message doesn't get completely processed before the retransmissions are + seen then we could try to setup the same call from the retransmissions. A + symptom of this is seeing a (key exists) message associated with an + INVITE. An earlier change attempted to address this kind of problem by + calculating a distributor serializer to use for unassociated messages. + Part of that change also made incoming calls keep using that distributor + serializer. (ASTERISK-26088) However, some leftover code was still + deferring the INVITE processing to the session's serializer even though we + were already in that serializer. This not only is unnecessary but would + cause the same call resetup problem. - ASTERISK-26233 #close + * Removed the code to defer processing the initial INVITE to the session's + serializer because we are already running in that serializer. - Change-Id: I6cd61ce57acc1570ca6cc14960c4c3b0a9eb837f + ASTERISK-26998 #close -2016-07-27 17:17 +0000 [68ebf86e2f] Richard Mudgett + Change-Id: I1e822d82dcc650e508bc2d40d545d5de4f3421f6 - * pbx.c: Allow dangerous functions when adding a hint to dialplan. +2017-05-14 00:37 +0000 [6e7b78414f] Rodrigo Ramírez Norambuena - We can allow dangerous functions when adding a hint since altering - dialplan is itself a privileged activity. Otherwise, we could never - execute dangerous functions. + * Fix spelling queues.conf.sample file - ASTERISK-25996 #close - Reported by: Andrew Nagy + Change-Id: Ie1c2d83af66f27a449da09a68d987e0992627fee - Change-Id: I4929ff100ad1200a0198262d069a34f2296e77ba +2017-05-08 13:40 +0000 [93b7f84c1a] Vitezslav Novy -2016-07-21 10:36 +0000 [b5bc2fdda8] Alexei Gradinari + * chan_sip: Change sip_get_codec() to return correct codec list - * pjproject: fixed a few bugs + Return cahnnel nativeformats to fix bridge technology selection process. + Same approach as in pjsip module. - This patch fixes the issue in pjsip_tx_data_dec_ref() - when tx_data_destroy can be called more than once, - and checks if invalid value (e.g. NULL) is passed to. + ASTERISK-26143 + Reported-by: Henning Holtschneider - This patch updates array limit checks and docs - in pjsip_evsub_register_pkg() and pjsip_endpt_add_capability(). + Change-Id: I64e863753954d6ad67a9e722df2ebc328705ad48 - Change-Id: I4c7a132b9664afaecbd6bf5ea4c951e43e273e40 +2017-05-08 15:56 +0000 [808f299808] Alexei Gradinari -2016-07-17 18:28 +0000 [b4f1c6380e] George Joseph + * res_pjsip: New endpoint option "refer_blind_progress" - * pjproject_bundled: Update for pjproject 2.5.5 + This option 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". - Add more --disable-* switches to Makefile.rules including - --disable-opus which was causing bundled pjproject to fail with - "undefined reference" errors in libasteriskpj. + Some SIP phones like Mitel/Aastra or Snom keep the line busy until + receive "200 OK". - Changed PJ_ENABLE_EXTRA_CHECK to 1. + ASTERISK-26333 #close - Removed 2 obsolete patches and added a new one. - The new one was merged by Teluu on 6/27/2016. + Change-Id: Id606fbff2e02e967c02138457badc399144720f2 - ASTERISK-26148 #close +2017-05-11 00:25 +0000 [045dbcc2d6] Ivan Poddubny - Change-Id: Ib8af6c6a9d31f7238ce65b336134c2efdc855063 + * app_queue: Fix duplicate queue_log entries for EXITEMPTY and ABANDON -2016-07-27 10:33 +0000 [feb1a43412] David M. Lee + There are 2 places in app_queue.c that log EXITEMPTY event: one in + wait_our_turn, and another one in queue_exec in the loop trying to + call an agent after wait_our_turn. - * Portably sscanf tv_usec + In most cases it leads to logging EXITEMPTY twice. - In a timeval, tv_usec is defined as a suseconds_t, which could be - different underlying types on different platforms. Instead of trying to - scanf directly into the timeval, scanf into a long int, then copy that - into the timeval. + ABANDON is also logged on two places, and in the rare case when an agent + and caller hang up simultaneously it's also possible to get duplicates + in queue_log. - Change-Id: I29f22d049d3f7746b6c0cc23fbf4293bdaa5eb95 + This commit changes wait_our_turn to return -1 ("the caller should exit + the queue") instead of 0 ("the caller's turn has arrived") in case of + leaving when empty, so queue_exec skips the agent calling loop. -2016-07-27 12:36 +0000 [1d364ac54f] Kevin Harwell + Also, leave_queue is now executed only once in this case, because 2nd + time is just a noop when the queue entry has already been removed. - * rtp_engine: Failed assertion and wrong name given for codec + Also, it sets qe->handled to -1 to indicate that the call was not + answered by an agent, but the necessary handling has already been done + in order to avoid logging an extra ABANDON entry. - Fixed an assert check that would trigger when the passed in value was negative. - The negative value was being cast to an unsigned value. This resulted in the - check failing. + ASTERISK-25665 #close + Reported by: Ove Aursand - Also fixed another problem when loading formats in the engine. When setting the - mime type the format's name was being passed in instead of the codec's name. + Change-Id: I4578dd383bf2ac41589cf167865e8aaebcd4c11e - Change-Id: I1a201cd419ba4d8e9a40d337e36b6fbe1737192c +2017-04-27 19:37 +0000 [b8659be9b0] Richard Mudgett -2016-07-27 09:56 +0000 [8802e55c26] David M. Lee + * SDP: Make process possible multiple fmtp attributes per rtpmap. - * Replace strdupa with more portable ast_strdupa + Change-Id: Ie7511008d82b59590e0eb520a21b5e1da4bd7349 - The strdupa function is a GNU extension, and not widely portable. We - have an ast_strdupa function used within Asterisk which is preferred. - I pulled the definition up from menuselect.c into the menuselect.h - header file so it can be shared across menuselect. +2017-04-28 11:53 +0000 [c2906dfa05] Richard Mudgett - Change-Id: I9593c97f78386b47dc1e83201e80cb2f62b36c2e + * SDP: Remove sdp_state.remote_capabilities -2016-07-21 22:44 +0000 [737471f131] Richard Mudgett + The sdp_state.remote_capabilities was only used inside merge_sdps() and + subsequent calls to merge_sdps() by re-INVITE's would leak them. - * dsp.c: Add fax and DTMF detection unit tests. + Change-Id: I0ceb7838ea044cc913e8ad4a255c39c9740ae0ce - * Add fax amplitude and frequency sweep tests. - * Add DTMF amplitude and twist unit tests. +2017-05-05 14:30 +0000 [16785c0908] Richard Mudgett - Change-Id: I8d77c9a1eec89e440d715f998c928687e870c3f7 + * SDP: Add interface_address to specify our address to use. -2016-07-21 11:56 +0000 [a8cd5d255a] Richard Mudgett + When we optionally set the interface_address we are forcing the media to + go out a specific interface address. This allows us to optionally have + the media go out the interface that SIP signalling came in on or if we are + configured to have the media always go out a specific address. - * dsp.c: Added descriptive comments to Goertzel calculations. + Change-Id: I160d9fac322a075bd2557b430632544178196189 - * Added doxygen to describe some struct members and what is going on in - the code. +2017-05-05 14:49 +0000 [367042bd3e] Richard Mudgett - Change-Id: I2ec706a33b52aee42b16dcc356c2bd916a45190d + * SDP: Explicitly stop a RTP instance before destoying it. -2016-07-13 13:48 +0000 [6dfb34cf13] Richard Mudgett + * Made sdp_add_m_from_rtp_stream() and sdp_add_m_from_udptl_stream() + handle generating disabled/declined streams. - * dsp.c: Fix incorrect format reference typo. + * Added /main/sdp/sdp_merge_asymmetric unit test. It currently does not + check the offerer side negotiated SDP because that isn't the purpose of + this patch and there is much to be done to handle declined/dummy streams. - Change-Id: Ia131da3ec29acf385cb43a586a29ecc975eb3896 + * Added T.38 image streams to the /main/sdp/sdp_merge_symmetric and + /main/sdp/sdp_merge_crisscross unit tests. -2016-07-25 21:18 +0000 [327136088e] Richard Mudgett + Change-Id: Ib4dcb3ca4f9a9133b376f4e3302f9a1f963f2b31 - * dsp.c: Correct DTMF twist dsp.conf documentation. +2017-04-28 19:48 +0000 [be5809fac8] Richard Mudgett - Change-Id: Idf97e3a72f1edc5fca58f2fa7b20785922be0cae + * SDP: Rework merge_capabilities(). -2016-07-22 04:43 +0000 [1e7168aee0] Joshua Colp + * Tried to give better variable names. + * Made our SDP answer use the offer's RTP payload types as the SDP RFC + says we SHOULD. + * Updating the local topology now takes the stream format caps. We are + likely preparing to send an offer. - * astconfigparser.py: Update with realtime fixes. + Change-Id: I34d3be8e3036402a8575ffcae3eebc5ce348d7c0 - When configuring SIP URIs in the pjsip.conf file it is - necessary to escape the semicolon so the parser does not - treat it as a comment. This change allows this to work in - the astconfigparser implementation. +2017-04-28 12:30 +0000 [ae7689f093] Richard Mudgett - A secondary bug where some data was lost if a configuration - option included a "=" in its value was also fixed. + * SDP: Update ast_get_topology_from_sdp() to keep RTP map. - A bug where sections would be considered equal despite - being different has also been fixed. + * Add failure exits to ast_get_topology_from_sdp(). - Change-Id: If229f656ef22050b50e7b34e90c4bffe796431f8 + Change-Id: I4cc85c1ede8d712766ed20f544dbcef04c8c1049 -2016-07-21 22:28 +0000 [49461f37b7] Richard Mudgett +2017-05-09 10:34 +0000 [cbbd119c21] Joshua Colp - * dsp.c: Fix erroneous fax tone detection. + * tcptls: Improve error messages for TLS connections. - The Goertzel calculations get less accurate the lower the signal level - being worked with becomes because there is less resolution remaining. - If it is too low we can erroneously detect a tone where none really - exists. The searched for fax frequencies not only need to be so much - stronger than the background noise they must also be a minimum strength. + This change uses the functions provided by OpenSSL to query + and better construct error messages for situations where + the connection encounters a problem. - * Add needed minimum threshold test to tone_detect(). + ASTERISK-26606 - * Set TONE_THRESHOLD to allow low volume frequency spread detection. + Change-Id: I7ae40ce88c0dc4e185c4df1ceb3a6ccc198f075b - ASTERISK-26237 #close - Reported by: Richard Mudgett +2017-05-04 17:28 +0000 [10a4439ac9] Joshua Elson - Change-Id: I84dbba7f7628fa13720add6a88eae3b129e066fc + * Prevent Undefined Capath Crash -2016-07-24 18:27 +0000 [b4c5dcad01] George Joseph + It is possible to initialize a valid config without a capath + or cafile definition. This will cause a crash on a reload. - * menuselect: Various menuselect enhancements + This fix ensures capath is always allocated. - * Add 'external' as a support level. - * Add ability for module directories to add entries to the menu - by adding members to the /.xml file. - * Expand the description field to 3 lines in the ncurses implementation. - * Allow the description field to wrap in the newt implementation. - * Add description field to the gtk implementation. + ASTERISK-26983 #close - Change-Id: I7f9600a1984a42ce0696db574c1051bc9ad7c808 + Change-Id: I63ff715d9d9023427543a5b8a4ba7b0d82533c12 -2016-07-24 16:51 +0000 [9db420c69d] Joshua Colp +2017-05-05 11:33 +0000 [1a1c86239d] George Joseph - * ari: Update version. + * cel_odbc: Fix timestamp processing for microseconds - New functionality has been added so the version has been - bumped to one over the 13 version. + When a column is of type timestamp, the fraction part of the event + field's seconds was frequently parsed incorrectly especially if + there were leading zeros. For instance "2017-05-23 23:55:03.023" + would be parsed into an int as "23" then when the timestamp was + formatted again to be inserted into the database column it'd be + "2017-05-23 23:55:03.23" which is now 230 milliseconds instead of + 23 milliseconds. "03.000001" would be transformed to "03.1", etc. - Change-Id: I5d30077f62640c0ac83599b4e9a9b657bf184f69 + * If the event field is 'eventtime' and the db column is timestamp, + then existing processing has already correctly formatted the + timestamp so now we simply use it rather than parsing it and + re-printing it. This is the most common use case anyway. -2016-07-23 08:51 +0000 [8852a4c3db] George Joseph + * If the event field is other than 'eventtime' and the db column + is timestamp, we now parse the seconds, including the fractional + part into a double rather than 2 ints. This preserves the + magnitude and precision of the fractional part. When we print + it, we now print it as a "%09.6lf" which correctly represents the + input. - * asterisk.c: Add auto generation and persistence of UUID + To be honest, why we parse the string timestamp into components, + test the components, then print the components back into a string + timestamp is beyond me. We should use parse it, test it, then if + it passes, use the original string representation in the database + call. Maybe someone thought that some implementations wouldn't + take a partial timestamp string like "2017-05-06" and decided to + always produce a full timestamp string even if an abbreviated one + was supplied. Anyway, I'm leaving it as it is. - Upcoming features will require the generation and persistence - of a UUID. + ASTERISK-25032 #close + Reported-by: Etienne Lessard - Change-Id: I3ec0062427e133217db6ef496a4216f427c3b92d + Change-Id: Id407e6221f79a5c1120e1a70bc7e893bbcaf1938 -2016-07-22 14:44 +0000 [76781a0964] Mark Michelson +2017-05-09 05:25 +0000 [3c36c29c81] Joshua Colp - * Fix sqlalchemy error regarding identifier length. + * res_hep_rtcp: Provide chan_sip Call-ID for RTCP messages. - sqlalchemy was complaining: + This change adds the required logic to allow the SIP + Call-ID to be placed into the HEP RTCP traffic if the + chan_sip module is used. In cases where the option is + enabled but the channel is not either SIP or PJSIP then + the code will fallback to the channel name as done + previously. - sqlalchemy.exc.IdentifierError: Identifier - 'ps_contacts_qualifyfreq_exptime' exceeds maximum length of 30 - characters + Based on the change on Nir's branch at: + team/nirs/hep-chan-sip-support - This fixes the problem by changing the index name to be - "ps_contacts_qualifyfreq_exp" instead. + ASTERISK-26427 - ASTERISK-26227 #close - Reported by Mark Michelson + Change-Id: I09ffa5f6e2fdfd99ee999650ba4e0a7aad6dc40d - Change-Id: I0ed784f87504be2a59ee8d3242ef6f625d5ed1a9 +2017-05-08 16:11 +0000 [201346fb7d] George Joseph -2016-07-19 06:16 +0000 [9be69c1636] Alexander Traud + * logger: Added logger_queue_limit to the configuration options. - * chan_sip: Enable Session-Timers for SIP over TCP (and TLS). + 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. + Should something go bezerk and log tons of messages in a tight + loop, this will prevent memory escalation. - Asterisk defaults to timers=accept/refresher=uas. In that scenario, only in that - scenario, Sessions-Timers (RFC 4028) had no effect via TCP. This change enables - Session-Timers for SIP over TCP (and for SIP over TLS). + When the limit is reached, a WARNING is logged to that effect + and messages are discarded until the queue is empty again. At + that time another WARNING will be logged with the count of + discarded messages. There's no "low water mark" for this queue + because the logger thread empties the entire queue and processes it + in 1 batch before going back and waiting on the queue again. + Implementing a low water mark would mean additional locking as + the thread processes each message and it's not worth it. - 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 dropped calls. Consequently even with this change, - you might be better-off going for session-timers=refuse in your sip.conf. + A "test" was added to test_logger.c but since the outcome is + non-deterministic, it's really just a cli command, not a unit + test. - ASTERISK-19968 #close + Change-Id: Ib4520c95e1ca5325dbf584c7989ce391649836d1 - Change-Id: I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 +2017-05-02 18:05 +0000 [56c5c51076] Richard Mudgett -2016-07-19 13:39 +0000 [8fb807009f] Alexander Traud + * stream: ast_stream_clone() cannot copy the opaque user data. - * codecs: Add iLBC 20. + ast_stream_clone() cannot copy the opaque user data stored on a stream. + We don't know how to clone the data so it isn't copied into the clone. - Asterisk already supported iLBC 30. This change adds iLBC 20. Now, Asterisk - defaults to iLBC 20 but falls back to iLBC 30, when the remote party requests - this. + Change-Id: Ia51321bf38ecbfdcc53787ca77ea5fd2cabdf367 - ASTERISK-26218 #close - ASTERISK-26221 #close - Reported by: Aaron Meriwether +2017-05-04 17:32 +0000 [924628812b] Richard Mudgett - Change-Id: I07f523a3aa1338bb5217a1bf69c1eeb92adedffa + * netsock2.c: Made get/set addr port avoid potential uninitialized memory. -2016-07-15 16:16 +0000 [4286a369a1] Richard Mudgett + Change-Id: I532052bd7cd95a4b3565485fc01e2a1ea07ee647 - * res_pjsip: Whitespace and comment cleanup. +2017-05-05 08:48 +0000 [4146facfec] Joshua Colp - Change-Id: I11139a4a95df34e223ba622aa6227e33ab8f6c38 + * func_cdr: Allow empty value for CDR dialplan function. -2016-07-21 22:34 +0000 [68de3a9e51] Corey Farrell + A regression was introduced in 12 where passing an empty value + to the CDR dialplan function was not longer allowed. This + change returns to the behavior of 11 where it is permitted. - * pbx.c: Remove duplicate code. + ASTERISK-26173 - Merge code found in both branches of a conditional in - ast_add_extension2_lockopt. + Change-Id: I3f148203b54ec088007e29e30005a5de122e51c5 - The updated code initializes peer_table and peer_label_table of the - extension before linking it to the context. +2017-05-04 16:04 +0000 [0001834157] George Joseph - Change-Id: Ic759e27cdc9906c6877df41d28ee9c5be8f41c20 + * app_confbridge: Fix reference to cfg in menu_template_handler -2016-07-21 16:35 +0000 [15bf6a87dc] George Joseph + menu_template_handler wasn't properly accounting for the fact that + it might be called both during a load/reload (which isn't really + valid but not prevented) and by a dialplan function. In both cases + it was attempting to use the "pending" config which wasn't valid in + the latter case. aco_process_config is also partly to blame because + it wasn't properly cleaning "pending" up when a reload was done and + no changes were made. Both of these contributed to a crash if + CONFBRIDGE(menu,template) was called in a dialplan after a reload. - * Create Asterisk-14: Update CHANGES and UPGRADE files + * aco_process_config now sets info->internal->pending to NULL + after it unrefs it although this isn't strictly necessary in the + context of this fix. + * menu_template_handler now uses the "current" config and silently + ignores any attempt to be called as a result of someone uses the + "template" parameter in the conf file. - Change-Id: I35b5f6657670cfa8985796fa1e1fe86ad299efdc + Luckily there's no other place in the codebase where + aco_pending_config is used outside of aco_process_config. -2016-07-21 09:05 +0000 [1b4922466b] George Joseph + ASTERISK-25506 #close + Reported-by: Frederic LE FOLL - * chan_sip: Prevent deadlock when issuing "sip show channels" + Change-Id: Ib349a17d3d088f092480b19addd7122fcaac21a7 - sip_show_channels locks the dialogs container first then locks each - sip_pvt so it can spit out the details. The rest of sip dialog - processing locks the sip_pvt first then locks the dialogs container - if it needs to. Both lock in the order they need but deadlocks can - result. To fix, sip_show_channels and sip_show_channelstats have - been converted to use an iterator rather than ao2_callback. This way - the container is locked only while getting the next entry and is - unlocked when the callback is called. +2017-04-30 16:40 +0000 [c90d81ef51] Joshua Colp - ASTERISK-23013 #close + * bridge: Fix returning to dialplan when executing Bridge() from AMI. - Change-Id: Id9980419909e811f89484950ed46ef117b9eb990 + When using the Bridge AMI action on the same channel multiple times + it was possible for the channel to return to the wrong location in + the dialplan if the other party hung up. This happened because the + priority of the channel was not preserved across each action + invocation and it would fail to move on to the next priority in + other cases. -2016-07-15 19:28 +0000 [a36a174c4b] Corey Farrell + This change makes it so that the priority of a channel is preserved + when taking control of it from another thread and it is incremented + as appropriate such that the priority reflects where the channel + should next be executed in the dialplan, not where it may or may not + currently be. - * pbx: Create pbx_sw.c for management of 'struct ast_sw'. + The Bridge AMI action was also changed to ensure that it too + starts the channels at the next location in the dialplan. - This changes context switches from a linked list to a vector, makes - 'struct ast_sw' opaque to pbx.c. + ASTERISK-24529 - Although ast_walk_context_switches is maintained the procedure is no - longer efficient except for the first call (inc==NULL). This - functionality is replaced by two new functions implemented by vector - macros. - * ast_context_switches_count (AST_VECTOR_SIZE) - * ast_context_switches_get (AST_VECTOR_GET) + Change-Id: I52406669cf64208aef7252a65b63ade31fbf7a5a - As with ast_walk_context_switches callers of these functions are - expected to have locked contexts. Only a few places in Asterisk walked - the switches, they have been converted to use the new functions. +2017-04-25 11:49 +0000 [7b0e3b92fd] Kevin Harwell - Change-Id: I08deb016df22eee8288eb03de62593e45a1f0998 + * bridge_simple: Added support for streams -2016-07-21 10:28 +0000 [81ea024d93] Alexei Gradinari + This patch is the first cut at adding stream support to the bridging framework. + Changes were made to the framework that allows mapping of stream topologies to + a bridge's supported media types. - * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice. + The first channel to enter a bridge initially defines the media types for a + bridge (i.e. a one to one mapping is created between the bridge and the first + channel). Subsequently added channels merge their media types into the bridge's + adding to it when necessary. This allows channels with different sized + topologies to map correctly to each other according to media type. The bridge + drops any frame that does not have a matching index into a given write stream. - This patch removed call of pjsip_tx_data_dec_ref in send_notify - if send_request failed. - The pjsip_dlg_send_request deletes the message on error by itself. + For now though, bridge_simple will align its two channels according to size or + first to join. Once both channels join the bridge the one with the most streams + will indicate to the other channel to update its streams to be the same as that + of the other. If both channels have the same number of streams then the first + channel to join is chosen as the stream base. - It seems this patch fixes next issues: - ASTERISK-26199 - ASTERISK-26166 - ASTERISK-26174 + A topology change source was also added to a channel when a stream toplogy + change request is made. This allows subsystems to know whether or not they + initiated a change request. Thus avoiding potential recursive situations. - Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a + ASTERISK-26966 #close -2016-07-13 05:24 +0000 [1d2173c7ae] Alexander Traud + Change-Id: I1eb5987921dd80c3cdcf52accc136393ca2d4163 - * res_srtp: Enable AES-256 and AES-GCM. +2017-05-01 13:04 +0000 [008e25def9] Kevin Harwell - ASTERISK-26190 #close + * res_rtp_asterisk: Clearing the remote RTCP address causes RTCP failures - Change-Id: I11326d80edd656524a51a19450e586c583aa0a0b + When a call gets put on hold RTP is temporarily stopped and Asterisk was + setting the remote RTCP address to NULL. Then when RTCP data was received + from the remote endpoint, Asterisk would be missing this information when + publishing the rtcp_message stasis event. Consequently, message subscribers + (in this case res_hep_rtcp) trying to parse the "from" field output the + following error: -2016-07-18 22:46 +0000 [8f6e9ffcc6] Corey Farrell + "ast_sockaddr_split_hostport: Port missing in (null)" - * Add conditional support for noreturn functions. + This patch makes it so the remote RTCP address is no longer set to NULL when + stopping RTP. There was only one place that appeared to check if the remote + RTCP address was NULL as a way to tell if RTCP was running. This patch added + an additional check on the RTCP schedid for that case to make sure RTCP was + truly not running. - This adds support for tagging functions with the noreturn attribute. - If DO_CRASH is enabled then ast_do_crash never returns. If AST_DEVMODE - and DO_CRASH are enabled then failed assertions never return. This can - resolve a large number of false positives with static analyzers. + ASTERISK-26860 #close - ASTERISK-26220 #close + Change-Id: I6be200fb20db647e48b5138ea4b81dfa7962974b - Change-Id: Icfb61e5fe54574eced4c3e88b317244f467ec753 +2017-05-02 11:34 +0000 [675e058e77] Sean Bright -2016-07-19 13:18 +0000 [3d62f317dd] Richard Mudgett + * cleanup: Change severity of fread short-read warning - * chan_dahdi.c: Fix deadlock potential in fax redirection. + Many sound files don't have a full frame's worth of data at EOF, so the + warning messages were a bit too noisy. So we demote them to debug + messages. - The dahdi_handle_dtmf() and my_handle_dtmf() have the potential to - deadlock if an incoming fax happens during the Playback or similar - application. + Change-Id: I6b617467d687658adca39170a81797a11cc766f6 - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. +2017-04-26 16:22 +0000 [cd272da7a8] Richard Mudgett - ASTERISK-26216 #close - Reported by: Richard Mudgett + * SDP: Replace SDP telephone_event option with dtmf option - Change-Id: I9144b84ade5f96690996624ec8a2d40c56af40aa + The telephone_event option was used as a flag and a bit mapped value in + different places when it is a boolean. It is also inadequate to configure + the DTMF operation of the RTP instance created for the stream. -2016-07-13 18:49 +0000 [db4979fa79] Richard Mudgett + Change-Id: Ib1addeaf0ce86f07039f2f979cab29405dc5239b - * chan_sip.c: Fix deadlock potential in fax redirection. +2017-04-29 16:11 +0000 [52e4f02b1a] Richard Mudgett - The sip_read() has the potential to deadlock if an incoming fax happens - during the Playback or similar application. + * res_pjsip_t38.c: Fix deadlock in T.38 framehook. - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. + A deadlock can happen between a channel lock and a pjsip session media + container lock. One thread is processing a reINVITE's SDP and walking + through the session's media container when it waits for the channel lock + to put the determined format capabilities onto the channel. The other + thread is writing a frame to the channel and processing the T.38 frame + hook. The T.38 frame hook then waits for the pjsip session's media + container lock. The two threads are now deadlocked. - * Made always eat the fax detection frame whether there is a fax extension - or not. + * Made the T.38 frame hook release the channel lock before searching the + session's media container. This fix has been done to several other + frame hooks to fix deadlocks. - ASTERISK-26216 - Reported by: Richard Mudgett + ASTERISK-26974 #close - Change-Id: I6d3f5cccd4b77c3aa6ffc1a54c0f6bde61c9278e + Change-Id: Ie984a76ce00bef6ec9aa239010e51e8dd74c8186 -2016-07-13 18:48 +0000 [3db468ea9e] Richard Mudgett +2017-04-28 10:56 +0000 [8170793be6] George Joseph - * chan_pjsip.c: Fix deadlock potential in fax redirection. + * res_pjsip_outbound_authenticator_digest: Add context to log messages - The chan_pjsip_cng_tone_detected() has the potential to deadlock if an - incoming fax happens during the Playback or similar application. + There was no context info in this module's log messages so it was + impossible to toubleshoot. - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. + Added endpoint or host to all messages and added the realms in the + challenge for the "No auth credentials for any realm" message. - * Made always eat the fax detection frame whether there is a fax extension - or not. + Change-Id: Ifeed2786f35fbea7d141237ae15625e472acff9b - ASTERISK-26216 - Reported by: Richard Mudgett +2017-04-27 16:46 +0000 [48566b8c66] Richard Mudgett - Change-Id: I32aecbb4818af646dc5a619f0dc040e9b1f222e5 + * res_sdp_translator_pjmedia.c: Add TODO notes. -2016-07-12 17:33 +0000 [9abbea162c] Richard Mudgett + Change-Id: If27ca61f79accc882c3376d2e876d2b44aa1347b - * res_fax.c: Fix deadlock potential in FAXOPT(faxdetect) framehook. +2017-04-24 18:13 +0000 [ede90e4aa5] Richard Mudgett - The fax_detect_framehook() has the potential to deadlock if an incoming - fax happens during the Playback or similar application. + * SDP: Make SDP translation to/from internal representation more const. - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. + Change-Id: I473a174b869728604b37c60853896b0c458bc504 - * Made always eat the fax detection frame whether there is a fax extension - or not. +2017-04-20 19:25 +0000 [5c1851cbc0] Richard Mudgett - * Made only detach the framehook if we detected a fax and not on other - possible frames. + * stream: Make ast_stream_topology_create_from_format_cap() allow NULL cap. - ASTERISK-26216 - Reported by: Richard Mudgett + Change-Id: Ie29760c49c25d7022ba2124698283181a0dd5d08 - Change-Id: I99da35c26d1cd802626ffb4c1b4eb5b015581b6d +2017-04-24 16:55 +0000 [d71c6e3bfd] Richard Mudgett -2016-07-12 17:24 +0000 [804fbd9c2b] Richard Mudgett + * SDP: Make ast_sdp_state_set_remote_sdp() return error. - * res_fax: Fix FAXOPT(faxdetect) timeout option. + Change-Id: I7707c9d872c476d897ff459008652b35142a35e1 - The fax detection timeout option did not work because basically the wrong - variable was checked in fax_detect_framehook(). As a result, the timer - would timeout immediately and disable fax detection. +2017-04-14 11:52 +0000 [176123e76c] Richard Mudgett - * Fixed ignoring negative timeout values. We'd complain and then go right - on using the negative value. + * SDP: Misc cleanups (Mostly memory leaks) - * Fixed destroy_faxdetect() in the off-nominal case of an incomplete - object creation. + Change-Id: I74431b385da333f2c5f5a6d7c55e70b69a4f05d2 - * Added more range checking to FAXOPT(gateway) timeout parameter. +2017-04-27 18:15 +0000 [bad091b317] Richard Mudgett - ASTERISK-26214 #close - Reported by: Richard Mudgett + * chan_vpb.cc: Fix compile error. - Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976 + Change-Id: I6d9edd34d8b2474222c86f44e379ead61e57a54f -2016-07-18 16:16 +0000 [0d1744e132] Richard Mudgett +2017-04-26 16:14 +0000 [d6535c0080] Mark Michelson - * chan_dahdi: Add faxdetect_timeout option. + * SDP API: Add SSRC-level attributes - The new option allows the channel driver's faxdetect option to timeout on - a call after the specified number of seconds into a call. The new feature - is disabled if the timeout is set to zero. The option is disabled by - default. + RFC 5576 defines how SSRC-level attributes may be added to SDP media + descriptions. In general, this is useful for grouping related SSRCes, + indicating SSRC-level format attributes, and resolving collisions in RTP + SSRC values. These attributes are used widely by browsers during WebRTC + communications, including attributes defined by documents outside of RFC + 5576. - * Don't clear dsp_features after passing them to the dsp code in - my_pri_ss7_open_media(). We should still remember them especially for the - new faxdetect_timeout option. + This commit introduces the addition of SSRC-level attributes into SDPs + generated by Asterisk. Since Asterisk does not tend to use multiple + SSRCs on a media stream, the initial support is minimal. Asterisk + includes an SSRC-level CNAME attribute if configured to do so. This at + least gives browsers (and possibly others) the ability to resolve SSRC + collisions at offer-answer time. - ASTERISK-26214 - Reported by: Richard Mudgett + In order to facilitate this, the RTP engine API has been enhanced to be + able to retrieve the SSRC and CNAME on a given RTP instance. - Change-Id: Ieffd3fe788788d56282844774365546dce8ac810 + res_rtp_asterisk currently does not provide meaningful CNAME values in + its RTCP SDES items, and therefore it currently will always return an + empty string as the CNAME value. A task in the near future will result + in res_rtp_asterisk generating more meaningful CNAMEs. -2016-07-15 20:44 +0000 [e739888d99] Richard Mudgett + Change-Id: I29e7f23e7db77524f82a3b6e8531b1195ff57789 - * res_pjsip: Add fax_detect_timeout endpoint option. +2017-04-27 08:02 +0000 [d6b2a58736] George Joseph - The new endpoint option allows the PJSIP channel driver's fax_detect - endpoint option to timeout on a call after the specified number of - seconds into a call. The new feature is disabled if the timeout is set - to zero. The option is disabled by default. + * res_pjsip_session: Add cleanup to ast_sip_session_terminate - ASTERISK-26214 - Reported by: Richard Mudgett + If you use ast_request to create a PJSIP channel but then hang it + up without causing a transaction to be sent, the session will + never be destroyed. This is due ot the fact that it's pjproject + that triggers the session cleanup when the transaction ends. + app_chanisavail was doing this to get more granular channel state + and it's also possible for this to happen via ARI. - Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d + * ast_sip_session_terminate was modified to explicitly call the + cleanup tasks and unreference session if the invite state is NULL + AND invite_tsx is NULL (meaning we never sent a transaction). -2016-07-17 07:43 +0000 [d56fc3b36b] Alexander Traud + * chan_pjsip/hangup was modified to bump session before it calls + ast_sip_session_terminate to insure that session stays valid + while it does its own cleanup. - * translate: Enables native Packet-Loss Concealment (PLC) for supporting codecs. + * Added test events to session_destructor for a future testsuite + test. - ASTERISK-25629 #close + ASTERISK-26908 #close + Reported-by: Richard Mudgett - Change-Id: I66c0086e6c17764b8141ec60a3e2aaefe088eb78 + Change-Id: I52daf6f757184e5544c261f64f6fe9602c4680a9 -2016-09-19 14:18 +0000 Asterisk Development Team +2017-04-24 10:59 +0000 [2b22c3c84b] Joshua Colp - * asterisk 14.0.0-rc1 Released. + * channel: Add ability to request an outgoing channel with stream topology. -2016-09-19 09:17 +0000 [a23b33576f] Joshua Colp + This change extends the ast_request functionality by adding another + function and callback to create an outgoing channel with a requested + stream topology. Fallback is provided by either converting the + requested stream topology into a format capabilities structure if + the channel driver does not support streams or by converting the + requested format capabilities into a stream topology if the channel + driver does support streams. - * Release summaries: Add summaries for 14.0.0-rc1 + The Dial application has also been updated to request an outgoing + channel with the stream topology of the calling channel. -2016-09-19 09:17 +0000 [e11354b864] Joshua Colp + ASTERISK-26959 - * Release summaries: Remove previous versions + Change-Id: Ifa9037a672ac21d42dd7125aa09816dc879a70e6 -2016-09-19 09:17 +0000 [24fac2271a] Joshua Colp +2017-04-26 14:20 +0000 [c6b757fa05] Kevin Harwell - * .version: Update for 14.0.0-rc1 + * res_pjsip/res_pjsip_callerid: NULL check on caller id name string -2016-09-19 09:17 +0000 [52c101d441] Joshua Colp + It's possible for a name in a party id structure to be marked as valid, but the + name string itself be NULL (for instance this is possible to do by using the + dialplan CALLERID function). There were a couple of places where the name was + validated, but the string itself was not checked before passing it to functions + like 'strlen'. This of course caused a crashed. - * .lastclean: Update for 14.0.0-rc1 + This patch adds in a NULL check before attempting to pass it into a function + that is not NULL tolerant. -2016-09-19 09:17 +0000 [edae56dc65] Joshua Colp + ASTERISK-25823 #close - * realtime: Add database scripts for 14.0.0-rc1 + Change-Id: Iaa6ffe9d92f598fe9e3c8ae373fadbe3dfbf1d4a -2016-09-14 09:51 +0000 [205e2ea351] Joshua Colp +2017-04-25 11:43 +0000 [cf3429b934] Kevin Harwell - * res_pjsip_transport_management: Convert time in log message to seconds. + * vector: defaults and indexes - ASTERISK-26375 #close + Added an pre-defined integer vector declaration. This makes integer vectors + easier to declare and pass around. Also, added the ability to default a vector + up to a given size with a default value. Lastly, added functionality that + returns the "nth" index of a matching value. - Change-Id: I46496af5cae41413e76d44d2068a7431279f09dc + Also, updated a unit test to test these changes. -2016-09-13 06:08 +0000 [bc085bba24] Joshua Colp + Change-Id: Iaf4b51b2540eda57cb43f67aa59cf1d96cdbcaa5 - * res_pjsip: Don't assume a request will have any addresses. +2017-04-26 05:38 +0000 [985a5fd7aa] Joshua Colp - When performing DNS resolution the failover code present in - res_pjsip currently assumes that a request will always have - at least one viable address. In practice this is not true. - A domain may be used that has no records. + * frame: Better handle interpolated frames. - The code now checks that at least one address exists on the - request which prevents looping. + Interpolated frames are frames which contain a number of + samples but have no actual data. Audiohooks did not + handle this case when translating an incoming frame into + signed linear. It assumed that a frame would always contain + media when it may not. If this occurs audiohooks will now + immediately return and not act on the frame. - ASTERISK-26364 #close + As well for users of ast_trans_frameout the function has + been changed to be a bit more sane and ensure that the data + pointer on a frame is set to NULL if no data is actually + on the frame. This allows the various spots in Asterisk that + check for an interpolated frame based on the presence of a + data pointer to work as expected. - Change-Id: Ic0761b0264864acd85915c94d878a81624940f4c + ASTERISK-26926 -2016-09-09 05:39 +0000 [9a800b24ac] Joshua Colp + Change-Id: I7fa22f631fa28d540722ed789ce28e84c7f8662b - * res_pjsip: Only invoke unidentified endpoint logic when unidentified. +2017-04-26 09:22 +0000 [99dea9ba84] Yasin CANER - The code was incorrectly invoking the unidentified logic when - an endpoint had actually been identified, causing log messages - to be output. + * res_pjsip_session : fixed wrong From Header number On Re-invite - ASTERISK-26349 #close + ASTERISK-26964 #close - Change-Id: Id8104fc9e3d138d5e8b6f6977ecc08765fd17d4f + Change-Id: I55a9caa7dc90e6c4c219cb09b5c2ec08af84a302 -2016-08-16 15:34 +0000 [137aa2f13c] Mark Michelson +2017-04-26 08:45 +0000 [858ed60446] George Joseph - * res_pjsip: Do not crash on ACKs from unknown endpoints. + * pjproject_bundled: Add --disable-libwebrtc to configure - The endpoint identification PJSIP module is intended to identify which - endpoint an incoming request is from. If an endpoint is not identified, - then an artificial endpoint is used in its place when proceeding. + Without the disable, pjproject tries to build it's internal + webrtc implementation which requires sse2. This fails on + platforms without sse2. - The problem is that the ACK request type is an exception to the rule. - The artificial endpoint is not used when processing an ACK. This results - in the possibility of having a NULL endpoint being used further on. + ASTERISK-26930 #close + Reported-by: abelbeck - The reason ACK is an exception is an attempt not to spam security logs - with unidentified requests. Presumably, you've already logged the - unidentified request on the preceeding INVITE. + Change-Id: I07231f9160c35cfa42b194d3aad4e7d51fd9a410 - Up until Asterisk 13.10, retrieving a NULL endpoint in this fashion - didn't cause an issue. A new change in 13.10 added endpoint ACL checking - shortly after endpoint identification. Because we are accessing a NULL - endpoint, this ACL check resulted in a crash. +2017-04-26 07:58 +0000 [585f9405b1] Thierry Magnien - The fix here is to be sure to retrieve the artificial endpoint for all - request types. ACKs still do not generate unidentified request security - events. + * channels/chan_sip.c: use binding IP address for outgoing TCP SIP connections - ASTERISK-26264 #close - Reported by nappsoft + For outgoing TCP connections, Asterisk uses the first IP address of the + interface instead of the IP address we asked him to bind to. - AST-2016-006 + ASTERISK-26922 #close + Reported-by: Ksenia - Change-Id: Ie0c795ae2d72273decb972dd74b6a1489fb6b703 + Change-Id: I43c71ca89211dbf1838e5bcdb9be8d06d98e54eb -2016-08-23 06:35 +0000 [f877e62cc9] Corey Farrell (license 5909) +2017-04-21 12:04 +0000 [f5b67871df] Sean Bright - * chan_sip: Don't allocate new RTP instances on top of old ones. + * cleanup: Fix fread() and fwrite() error handling - In some scenarios dialog_initialize_rtp can be called multiple times on - the same dialog. This can cause RTP instances to be leaked along with - multiple file descriptors for each instance. + Cleaned up some of the incorrect uses of fread() and fwrite(), mostly in + the format modules. Neither of these functions will ever return a value + less than 0, which we were checking for in some cases. - This change makes it so the existing RTP instances are destroyed and - not overwritten, stopping the memory leak. + I've introduced a fair amount of duplication in the format modules, but + I plan to change how format modules work internally in a subsequent + patch set, so this is simply a stop-gap. - ASTERISK-26272 #close - patches: - ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909) + Change-Id: I8ca1cd47c20b2c0b72088bd13b9046f6977aa872 - Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73 +2017-04-25 07:52 +0000 [199d4776c0] Joshua Colp -2016-09-06 15:25 +0000 [b17ee86148] Matt Jordan + * alembic: Add table for 'resource_list' PJSIP RLS type. - * res/res_stasis_playback: Cancel the entire playlist when a stop occurs + This change adds an Alembic migration which adds a + ps_resource_list table that can contain resource_list + RLS configuration objects. - Prior to this patch, a stop issued by a delete of a Playback resource - (indicated by the control frame AST_CONTROL_STREAM_STOP) would only stop - the current media URI playing. Subsequent URIs specified by a playback - operation would then proceed on, even though we had just indicated to - the User that the Playback was finished *and* after they had just - 'deleted' the resource. Whoops. + ASTERISK-26929 - This patch corrects it by bailing out of the sequence of URIs to play if - one of them is terminated with an AST_CONTROL_STREAM_STOP indication. + Change-Id: I7c888fafc67b3e87012de974f71ca7a5b8b1ec05 - ASTERISK-26341 #close +2017-04-14 05:21 +0000 [19a79ae12c] Joshua Colp - Change-Id: I2da9ec43545ba46cdfffe287c7e4907eae7fca42 + * sdp: Add support for T.38 -2016-08-29 12:30 +0000 Asterisk Development Team + This change adds a T.38 format which can be used in a stream + topology to specify that a UDPTL stream needs to be created. + The SDP API has been changed to understand T.38 and create + the UDPTL session, add the attributes, and parse the attributes. - * asterisk 14.0.0-beta2 Released. + This change does not change the boundary of the T.38 state + machine. It is still up to the channel driver to implement and + act on it (such as queueing control frames or reacting to them). -2016-08-29 07:29 +0000 [9cdf44668d] Joshua Colp + ASTERISK-26949 - * Release summaries: Add summaries for 14.0.0-beta2 + Change-Id: If28956762ccb8ead562ac6c03d162d3d6014f2c7 -2016-08-29 07:29 +0000 [73d39f2029] Joshua Colp +2017-03-21 15:44 +0000 [32b3e36c68] Mark Michelson - * Release summaries: Remove previous versions + * SDP: Ensure SDPs "merge" properly. -2016-08-29 07:29 +0000 [e8a97775ee] Joshua Colp + The gist of this work ensures that when a remote SDP is received, it is + merged properly with the local capabilities. The remote SDP is converted + into a stream topology. That topology is then merged with the current + local topology on the SDP state. That new merged topology is then used + to create an SDP. Finally, adjustments are made to RTP instances based + on knowledge gained from the remote SDP. - * .version: Update for 14.0.0-beta2 + There are also a battery of tests in this commit that ensure that some + basic SDP merges work as expected. -2016-08-29 07:29 +0000 [345409825a] Joshua Colp + While this may not sound like a big change, it has the property that it + caused lots of ancillary changes. - * .lastclean: Update for 14.0.0-beta2 + * The remote SDP is no longer stored on the SDP state. Biggest reason: + there's no need for it. The remote SDP is used at the time it is being + set and nowhere else. -2016-08-29 07:29 +0000 [105c1168f7] Joshua Colp + * Some new SDP APIs were added in order to find attributes and convert + generic SDP attributes into rtpmap structures. - * realtime: Add database scripts for 14.0.0-beta2 + * Writing tests made me realize that retrieving a value from an SDP + options structure, the SDP options needs to be made const. -2016-08-29 06:31 +0000 [8927b52634] Joshua Colp + * The SDP state machine was essentially gutted by a previous commit. + Initially, I attempted to reinstate it, but I found that as it had + been defined, it was not all that useful. What was more useful was + knowing the role we play in SDP negotiation, so the SDP state machine + has been transformed into an indicator of role. - * alembic: Fix downgrade path. + * Rather than storing separate local and joint stream state + capabilities, it makes more sense to keep track of current stream + state and update it as things change. - The 3772f8f828da version was referencing a previous version - that did not exist in the 14.0 branch. It has been fixed to - reference the correct previous version. + Change-Id: I5938c2be3c6f0a003aa88a39a59e0880f8b2df3d - Change-Id: I004d0fcfdfe1d1bb6f01c6dac2b69f6b1f40ae51 +2017-04-24 13:16 +0000 [0611f2ca17] Sean Bright -2016-08-11 12:18 +0000 [9a95c6dea3] gtjoseph + * res_hep: Add additional config initialization and validation - * res_pjsip: Fail global load if debug or default_from_user are empty + * Initialize hepv3_runtime_data.sockfd to -1 so that our ao2 destructor + does not close fd 0 - If debug was specified in the global configuration but left blank, - the logger would treat it as a wildcard and log all hosts. If - default_from_user was empty, a crash would result. + * Add logging output when the required option - capture_address - is not + specified. - The global apply handler now checks for empty strings. + * Remove a no longer relevant #define and correct related documentation - ASTERISK-26239 #close - ASTERISK-26238 #close + * Pass appropriate flags to aco_option_register so that capture_address + cannot be the empty string. - Change-Id: Ie75727f5cd5808845d92cc81f5713842fb203336 + ASTERISK-26953 #close -2016-08-11 11:24 +0000 [aaee8160bc] gtjoseph + Change-Id: Ief08441bc6596d6f1718fa810e54a5048124f076 - * res_pjsip_caller_id: Copy header name to short header name +2017-04-17 19:06 +0000 [59203c51cc] Sean Bright - When compact_headers was set, we were sending a zero-length header name - for PAI and RPID because we always forced the short header name length - to 0. We did this because we cloned the header from "From" and wanted - to clear "f" from the sname. By cloning however, we bypass pjproject's - automatic logic that sets sname to name if there's no compact form of - the header, which there isn't for PAI and RPID. So now we force sname - to be the same as name right after we set name. + * core: Use eventfd for alert pipes on Linux when possible - res_pjsip_diversion needed the same treatment for the Diversion header. + The primary win of switching to eventfd when possible is that it only + uses a single file descriptor while pipe() will use two. This means for + each bridge channel we're reducing the number of required file + descriptors by 1, and - if you're using timerfd - we also now have 1 + less file descriptor per Asterisk channel. - ASTERISK-26241 #close + The API is not ideal (passing int arrays), but this is the cleanest + approach I could come up with to maintain API/ABI. - Change-Id: I633ec139630cd83809aae00336cee4a10077e467 + I've also removed what I believe to be an erroneous code block that + checked the non-blocking flag on the pipe ends for each read. If the + file descriptor is 'losing' its non-blocking mode, it is because of a + bug somewhere else in our code. -2016-08-11 12:01 +0000 [7af0eac02a] gtjoseph + In my testing I haven't seen any measurable difference in performance. - * autohints: Update CHANGES and extensions.conf.sample + Change-Id: Iff0fb1573e7f7a187d5211ddc60aa8f3da3edb1d - Make it clear that we're talking about device state hints and add - an entry to the sample config. +2017-04-21 12:33 +0000 [f1d20c84a1] Richard Mudgett - Change-Id: Iaef58ffb960191a21b713e8e0b51ce1fcd47e433 + * res_pjsip_session.c: Send 100 Trying out earlier to prevent retransmissions. -2016-08-11 10:50 +0000 [ef0bf47bb3] Kevin Harwell + If ICE is enabled and a STUN server does not respond then we will block + until we give up on the STUN response. This will take nine seconds. In + the mean time the peer that sent the INVITE will send retransmissions. - * alembic: add auth_username to endpoint's identify_by enum + * Restructure res_pjsip_session.c:new_invite() to send a 100 Trying out + earlier to prevent these retransmissions. - A new identify_by option was added recently, auth_username. However, this - setting was not added as an allowable choice in the database enumeration - value. + ASTERISK-26890 - This patch updates the current enumeration, adding in the new setting. + Change-Id: Ie3fc611e53a0eff6586ad55e4aacad81cf6319a8 - ASTERISK-26268 #close +2017-04-21 12:07 +0000 [835c209445] Richard Mudgett - Change-Id: Ib4788e8485e4cd40172ec0abbf5810a147ab8bf8 + * res_pjsip_session.c: Restructure ast_sip_session_alloc() -2016-08-08 14:50 +0000 [a1d6b14c40] Richard Mudgett + * Restructure ast_sip_session_alloc() to need less cleanup on off nominal + error paths. - * res_srtp: Move SDP SRTP code from the core to res_srtp. + * Made ast_sip_session_alloc() and ast_sip_session_create_outgoing() avoid + unnecessary ref manipulation to return a session. This is faster than + calling a function. That function may do logging of the ref changes with + REF_DEBUG enabled. - A patch made to the master branch (Now the 14 branch) inadvertently made - libsrtp a required dependency in order to compile Asterisk. Rather than - create dummy defines to substitute for the defines supplied by libsrtp - when libsrtp is not available, most of the code in sdp_srtp.c is moved - into res_srtp.c. This gets more code out of Asterisk's core that isn't - used when SRTP is not available. This also makes another inadvertent - required dependency on libsrtp by Asterisk's core unlikely. + Change-Id: I2a0affc4be51013d3f0485782c96b8fee3ddb00a - ASTERISK-26253 #close - Reported by: Ben Merrills +2017-04-20 02:13 +0000 [b4b1943c5d] Jean Aunis - Change-Id: I0a46cde81501c0405399c2588633ae32706d1ee7 + * chan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK -2016-08-09 12:07 +0000 [a783e1e60d] Kevin Harwell + Some equipments may send a re-INVITE containing an SDP in the final ACK + request. If this happens in the context of direct media, the remote end + should be updated with a re-INVITE. + This patch queues an "update RTP peer" frame to trigger the re-INVITE, + instead of the "source change" frame wich was used previously. - * alembic/sqlalchemy: auto increment only allowed on a single column + ASTERISK-26951 - The extensions table defined two columns (id and priority) as primary key - autoincrement columns. However only one is allowed when defining the primary - key. + Change-Id: I3644d2025f20e086ea9f8f62b486172c52b5b2e6 - This patch removes the autoincrement attribute from the priority column since - it does not need to be as such and really should not have been on there in the - first place. +2017-04-19 15:08 +0000 [c47b3e74d2] Sean Bright - This patch also removes 'context', 'exten', and 'priority' from the primary key - index and creates a new combined unique contraint index on them. + * pbx: Use same thread if AST_OUTGOING_WAIT_COMPLETE specified - ASTERISK-26183 #close + Both ast_pbx_outgoing_app() and ast_pbx_outgoing_exten() cause the core + to spawn a new thread to perform the dial. When AST_OUTGOING_WAIT_COMPLETE + is passed to these functions, the calling thread will be blocked until + the newly created channel has been hung up. - Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b + After this patch, we run the dial on the current thread rather than + spawning a new one. The only in-tree code that passes + AST_OUTGOING_WAIT_COMPLETE is pbx_spool, so you should see reduced + thread usage if you are using .call files. -2016-08-10 11:47 +0000 [9c56f798f6] gtjoseph + Change-Id: I512735d243f0a9da2bcc128f7a96dece71f2d913 - * res_resolver_unbound: Allow compilation with libunbound version < 1.5 +2017-04-19 13:23 +0000 [afad2ffd9f] Richard Mudgett - libunbound at version 1.4.20 (which CentOS still uses) declared all - of their string function parameters as as 'char *'. 1.4.21 changed - them all to 'const char *'. Thankfully 1.4.21 also introduced the - UNBOUND_VERSION_MAJOR define so configure now checks for that and - sets HAVE_UNBOUND_CONST_PARAMS. res_resolver_unbound then checks - that and casts away the 'const' if it's not set. + * res_rtp_asterisk.c: Fix crash in RTCP DTLS operation. - Tested compile and testsuite on CentOS6 (1.4.20), Ubuntu14 (1.4.22) and - Fedora24 (1.5.4). There are a few failing tests to be addressed though. + Occasionally a crash happens when processing the RTCP DTLS timeout + handler. The RTCP DTLS timeout timer could be left running if we have not + completed the DTLS handshake before we place the call on hold or we + attempt direct media. - ASTERISK-26283 #close + * Made ast_rtp_prop_set() stop the RTCP DTLS timer when disabling RTCP. - Change-Id: Ib708b19b706c5d0ba7b7d5473e6df339d9ae4148 + * Made some sanity tweaks to ast_rtp_prop_set() when switching from + standard RTCP mode to RTCP multiplexed mode. -2016-08-01 16:13 +0000 [1ad00c1c30] gtjoseph + ASTERISK-26692 #close - * menuselect: Add an opaque "member_data" string to the acceptable xml + Change-Id: If6c64c79129961acfa4b3d63a864e8f6b664acc0 - Change-Id: Id5ac43b95c8d7395f3be37f983632169db3d1afe +2017-03-22 16:05 +0000 [d165079cbc] Richard Mudgett -2016-07-17 18:28 +0000 [815b6f72f8] gtjoseph + * rtp_engine/res_rtp_asterisk: Fix RTP struct reentrancy crashes. - * pjproject_bundled: Update for pjproject 2.5.5 + The struct ast_rtp_instance has historically been indirectly protected + from reentrancy issues by the channel lock because early channel drivers + held the lock for really long times. Holding the channel lock for such a + long time has caused many deadlock problems in the past. Along comes + chan_pjsip/res_pjsip which doesn't necessarily hold the channel lock + because sometimes there may not be an associated channel created yet or + the channel pointer isn't available. - Add more --disable-* switches to Makefile.rules including - --disable-opus which was causing bundled pjproject to fail with - "undefined reference" errors in libasteriskpj. + In the case of ASTERISK-26835 a pjsip serializer thread was processing a + message's SDP body while another thread was reading a RTP packet from the + socket. Both threads wound up changing the rtp->rtcp->local_addr_str + string and interfering with each other. The classic reentrancy problem + resulted in a crash. - Changed PJ_ENABLE_EXTRA_CHECK to 1. + In the case of ASTERISK-26853 a pjsip serializer thread was processing a + message's SDP body while another thread was reading a RTP packet from the + socket. Both threads wound up processing ICE candidates in PJPROJECT and + interfering with each other. The classic reentrancy problem resulted in a + crash. - Removed 2 obsolete patches and added a new one. - The new one was merged by Teluu on 6/27/2016. + * rtp_engine.c: Make the ast_rtp_instance_xxx() calls lock the RTP + instance struct. - ASTERISK-26148 #close + * rtp_engine.c: Make ICE and DTLS wrapper functions to lock the RTP + instance struct for the API call. - Change-Id: Ib8af6c6a9d31f7238ce65b336134c2efdc855063 - (cherry picked from commit 4cf02b5584ce33bb0a64408c27bf20c19bc4ce13) + * res_rtp_asterisk.c: Lock the RTP instance to prevent a reentrancy + problem with rtp->rtcp->local_addr_str in the scheduler thread running + ast_rtcp_write(). -2016-07-29 13:13 +0000 [c95b611a73] Mark Michelson + * res_rtp_asterisk.c: Avoid deadlock when local RTP bridging in + bridge_p2p_rtp_write() because there are two RTP instance structs + involved. - * Remove SILK payload mappings from Asterisk core. + * res_rtp_asterisk.c: Avoid deadlock when trying to stop scheduler + callbacks. We cannot hold the instance lock when trying to stop a + scheduler callback. - SILK is a bit of a hog when it comes to using up our limited number of - dynamic payload types in the RTP engine. By freeing up four slots, it - allows for other codecs to potentially take the place. + * res_rtp_asterisk.c: Remove the lock in struct dtls_details and use the + struct ast_rtp_instance ao2 object lock instead. The lock was used to + synchronize two threads to prevent a race condition between starting and + stopping a timeout timer. The race condition is no longer present between + dtls_perform_handshake() and __rtp_recvfrom() because the instance lock + prevents these functions from overlapping each other with regards to the + timeout timer. - Now, codec_silk.so will dynamically use the payload slots in the RTP - engine when it loads. + * res_rtp_asterisk.c: Remove the lock in struct ast_rtp and use the struct + ast_rtp_instance ao2 object lock instead. The lock was used to + synchronize two threads using a condition signal to know when TURN + negotiations complete. - A better fix would be make RTP dynamic payload types actually - dynamic. However, at this stage of Asterisk 14 development, this is a - risky move that would be imprudent. + * res_rtp_asterisk.c: Avoid deadlock when trying to stop the TURN + ioqueue_worker_thread(). We cannot hold the instance lock when trying to + create or shut down the worker thread without a risk of deadlock. - Change-Id: I5774e09408f9a203db189529eabdc0d3f4c1e612 + This patch exposed a race condition between a PJSIP serializer thread + setting up an ICE session in ice_create() and another thread reading RTP + packets. -2016-07-27 12:36 +0000 [bc94ccbcdd] Kevin Harwell + * res_rtp_asterisk.c:ice_create(): Set the new rtp->ice pointer after we + have re-locked the RTP instance to prevent the other thread from trying to + process ICE packets on an incomplete ICE session setup. - * rtp_engine: Failed assertion and wrong name given for codec + A similar race condition is between a PJSIP serializer thread resetting up + an ICE session in ice_create() and the timer_worker_thread() processing + the completion of the previous ICE session. - Fixed an assert check that would trigger when the passed in value was negative. - The negative value was being cast to an unsigned value. This resulted in the - check failing. + * res_rtp_asterisk.c:ast_rtp_on_ice_complete(): Protect against an + uninitialized/null remote_address after calling + update_address_with_ice_candidate(). - Also fixed another problem when loading formats in the engine. When setting the - mime type the format's name was being passed in instead of the codec's name. + * res_rtp_asterisk.c: Eliminate the chance of ice_reset_session() + destroying and setting the rtp->ice pointer to NULL while other threads + are using it by adding an ao2 wrapper around the PJPROJECT ice pointer. + Now when we have to unlock the RTP instance object to call a PJPROJECT ICE + function we will hold a ref to the wrapper. Also added some rtp->ice NULL + checks after we relock the RTP instance and have to do something with the + ICE structure. - Change-Id: I1a201cd419ba4d8e9a40d337e36b6fbe1737192c + ASTERISK-26835 #close + ASTERISK-26853 #close -2016-07-26 23:19 +0000 Asterisk Development Team + Change-Id: I780b39ec935dcefcce880d50c1a7261744f1d1b4 - * asterisk 14.0.0-beta1 Released. +2017-04-19 08:39 +0000 [b8b3380944] Sean Bright -2016-07-26 17:22 +0000 [a7233fbf3e] Mark Michelson + * build: Update config.guess and config.sub - * Release summaries: Add summaries for 14.0.0-beta1 + Change-Id: Id078a1df07a771808775e1053cdfe1d99c8fb172 -2016-07-26 16:24 +0000 [c327430ea0] Mark Michelson +2017-04-14 13:52 +0000 [6c0ab9afa7] Sean Bright - * Release summaries: Remove previous versions + * format_wav: Read 16khz wav samples properly -2016-07-26 16:24 +0000 [763a18bc9d] Mark Michelson + When opening a PCM wave file for reading, we aren't tracking the + frequency of the opened file, so we treat 16khz files as 8khz and do + half reads. - * .version: Update for 14.0.0-beta1 + This patch also cleans up some of the data types and an unnecessarily + complex `if` expression. -2016-07-26 16:24 +0000 [ce6898bd3c] Mark Michelson + ASTERISK-26613 #close + Reported by: Vitaly K - * .lastclean: Update for 14.0.0-beta1 + Change-Id: I05f8b263058dc573ea8ffe0c62e7964506e11815 -2016-07-26 16:24 +0000 [ebc477aa5d] Mark Michelson +2017-04-16 19:59 +0000 [b55d21ad91] George Joseph - * realtime: Add database scripts for 14.0.0-beta1 + * make ari-stubs so doc periodic jobs can run -2016-07-26 16:00 +0000 [1838b283aa] Mark Michelson + The periodic doc job does a make ari-stubs and checks that + there are no changes before generating the docs. Since I changed + the mustache template (and the generated code directly) recently + and forgot to regenerate the stubs, the doc job thinks they're out + of date. - * ChangeLog: Updated for 14.0.0 + Change-Id: I94b97035311eccf52b0101b8590223265a7881d4 -2016-07-26 15:02 +0000 [f196cf975d] Mark Michelson +2017-04-14 12:51 +0000 [4fb9f5d60e] Sean Bright - * Release summaries: Add summaries for 14.0.0 + * format_ogg_vorbis: Clear ogg/vorbis data structures on close -2016-07-26 14:01 +0000 [699a7390eb] Mark Michelson + On filestream close, we need to clear out the ogg & vorbis data + structures to prevent a memory leak. - * .version: Update for 14.0.0 + ASTERISK-26169 #close + Reported by: Ivan Myalkin -2016-07-26 14:01 +0000 [4b17a11d7d] Mark Michelson + Change-Id: Iee94c5a5d5bdafbf8b181c5c064d15d90ace8274 - * .lastclean: Update for 14.0.0 +2017-04-14 17:32 +0000 [a3e623dd70] Richard Mudgett -2016-07-26 14:01 +0000 [bb9dcae98c] Mark Michelson + * Revert "bridging: Ensure successful T.38 negotation" - * realtime: Add database scripts for 14.0.0 + This reverts commit 7819f95791fe0ca0e0cdc417e2687a5900444053. -2016-07-24 18:27 +0000 [90f445729d] gtjoseph + Change-Id: Ib91a7e6c9856f5f41329e42f40ba2394fee861a4 - * menuselect: Various menuselect enhancements +2017-04-14 16:50 +0000 [f6600f2c2e] Sean Bright - * Add 'external' as a support level. - * Add ability for module directories to add entries to the menu - by adding members to the /.xml file. - * Expand the description field to 3 lines in the ncurses implementation. - * Allow the description field to wrap in the newt implementation. - * Add description field to the gtk implementation. + * res_stun_monitor: Don't fail to load if DNS resolution fails - Change-Id: I7f9600a1984a42ce0696db574c1051bc9ad7c808 + res_stun_monitor will fail to load if DNS resolution of the STUN server + fails. Instead, we continue without the STUN server being resolved and + we will re-attempt the resolution on the STUN refresh interval. -2016-07-24 16:51 +0000 [f75401b1e3] Joshua Colp + ASTERISK-21856 #close + Reported by: Jeremy Kister - * ari: Update version. + Change-Id: I6334c54a1cc798f8a836b4b47948e0bb4ef59254 - New functionality has been added so the version has been - bumped to one over the 13 version. +2017-04-14 14:36 +0000 [be71be7ed2] Roman S. - Change-Id: I5d30077f62640c0ac83599b4e9a9b657bf184f69 + * format_pcm: Track actual header size of .au files -2016-07-23 08:51 +0000 [58759bd77c] gtjoseph + Sun's Au file format has a minimum data offset 24 bytes, but this + offset is encoded in each .au file. Instead of assuming the minimum, + read the actual value and store it for later use. - * asterisk.c: Add auto generation and persistence of UUID + ASTERISK-20984 #close + Reported by: Roman S. + Patches: + asterisk-1.8.20.0-au-clicks-2.diff (license #6474) patch + uploaded by Roman S. - Upcoming features will require the generation and persistence - of a UUID. + Change-Id: I524022fb19ff2fd5af2cc2d669d27a780ab2057c - Change-Id: I3ec0062427e133217db6ef496a4216f427c3b92d +2017-04-12 07:50 +0000 [2e6075c51f] George Joseph -2016-07-22 14:44 +0000 [46b4e673ae] Mark Michelson + * modules: change module LOAD_FAILUREs to LOAD_DECLINES (master) - * Fix sqlalchemy error regarding identifier length. + Change-Id: Iac40ecb20e10513d67bf0eaf61807f306067b258 - sqlalchemy was complaining: +2017-04-10 05:13 +0000 [72c5f3b0ba] Alexander Traud - sqlalchemy.exc.IdentifierError: Identifier - 'ps_contacts_qualifyfreq_exptime' exceeds maximum length of 30 - characters + * res_pjsip_sdp_rtp: No rtpmap for static RTP payload IDs in SDP. - This fixes the problem by changing the index name to be - "ps_contacts_qualifyfreq_exp" instead. + This saves around 100 bytes when G.711, G.722, G.729, and GSM are advertised in + SDP. This reduces the chance to hit the MTU bearer of 1300 bytes for SIP over + UDP, if many codecs are allowed in Asterisk. This new feature is enabled + together with the optional feature compact_headers=yes via the file pjsip.conf. - ASTERISK-26227 #close - Reported by Mark Michelson + ASTERISK-26932 #close - Change-Id: I0ed784f87504be2a59ee8d3242ef6f625d5ed1a9 + Change-Id: Iaa556ab4c8325cd34c334387ab2847fab07b1689 -2016-07-22 07:01 +0000 [633c34c411] gtjoseph +2017-04-12 07:47 +0000 [6db0939b96] George Joseph - * build_tools: Update make_version for 14 + * modules: change module LOAD_FAILUREs to LOAD_DECLINES (14) - Also remove svn stuff + Change-Id: If99e3b4fc2d7e86fc3e61182aa6c835b407ed49e - Change-Id: I95d762f7cbbe5eb01117bde8779515d51a0bb06a +2017-04-11 11:07 +0000 [747beb1ed1] George Joseph -2016-07-19 13:39 +0000 [c82f24f36a] Alexander Traud + * modules: change module LOAD_FAILUREs to LOAD_DECLINES - * codecs: Add iLBC 20. + In all non-pbx modules, AST_MODULE_LOAD_FAILURE has been changed + to AST_MODULE_LOAD_DECLINE. This prevents asterisk from exiting + if a module can't be loaded. If the user wishes to retain the + FAILURE behavior for a specific module, they can use the "require" + or "preload-require" keyword in modules.conf. - Asterisk already supported iLBC 30. This change adds iLBC 20. Now, Asterisk - defaults to iLBC 20 but falls back to iLBC 30, when the remote party requests - this. + A new API was added to logger: ast_is_logger_initialized(). This + allows asterisk.c/check_init() to print to the error log once the + logger subsystem is ready instead of just to stdout. If something + does fail before the logger is initialized, we now print to stderr + instead of stdout. - ASTERISK-26218 #close - ASTERISK-26221 #close - Reported by: Aaron Meriwether + Change-Id: I5f4b50623d9b5a6cb7c5624a8c5c1274c13b2b25 - Change-Id: I07f523a3aa1338bb5217a1bf69c1eeb92adedffa +2017-04-05 06:41 +0000 [7819f95791] Torrey Searle -2016-07-15 16:16 +0000 [6e2e3915c8] Richard Mudgett + * bridging: Ensure successful T.38 negotation - * res_pjsip: Whitespace and comment cleanup. + When a T.38 happens immediatly after call establishment, the control + frame can be lost because the other leg is not yet in the bridge. - Change-Id: I11139a4a95df34e223ba622aa6227e33ab8f6c38 + This patch detects this case an makes sure T.38 negotation happens + when the 2nd leg is being made compatible with the negotating + first leg -2016-07-19 13:18 +0000 [5efb5b38e8] Richard Mudgett + ASTERISK-26923 #close - * chan_dahdi.c: Fix deadlock potential in fax redirection. + Change-Id: If334125ee61ed63550d242fc9efe7987e37e1d94 - The dahdi_handle_dtmf() and my_handle_dtmf() have the potential to - deadlock if an incoming fax happens during the Playback or similar - application. +2017-04-07 08:58 +0000 [7901225261] Torrey Searle - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. + * strings.h: Avoid overflows in the string hash functions - ASTERISK-26216 #close - Reported by: Richard Mudgett + On 2's compliment machines abs(INT_MIN) behavior is undefined and + results in a negative value still being returnd. This results in + negative hash codes that can result in crashes. - Change-Id: I9144b84ade5f96690996624ec8a2d40c56af40aa + ASTERISK-26528 #close -2016-07-13 18:49 +0000 [a1d36c89e0] Richard Mudgett + Change-Id: Idff550145ca2133792a61a2e212b4a3e82c6517b - * chan_sip.c: Fix deadlock potential in fax redirection. +2017-04-07 16:14 +0000 [7312cbe803] Richard Mudgett - The sip_read() has the potential to deadlock if an incoming fax happens - during the Playback or similar application. + * res_rtp_asterisk.c: Add stun_blacklist option - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. + 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. - * Made always eat the fax detection frame whether there is a fax extension - or not. + ASTERISK-26890 #close - ASTERISK-26216 - Reported by: Richard Mudgett + Change-Id: I3ff4f729e787f00c3e6e670fe6435acce38be342 - Change-Id: I6d3f5cccd4b77c3aa6ffc1a54c0f6bde61c9278e +2017-04-06 17:31 +0000 [7c37365f03] Richard Mudgett -2016-07-13 18:48 +0000 [4dfadcb025] Richard Mudgett + * stun.c: Fix ast_stun_request() erratic timeout. - * chan_pjsip.c: Fix deadlock potential in fax redirection. + If ast_stun_request() receives packets other than a STUN response then we + could conceivably never exit if we continue to receive packets with less + than three seconds between them. - The chan_pjsip_cng_tone_detected() has the potential to deadlock if an - incoming fax happens during the Playback or similar application. + * Fix poll timeout to keep track of the time when we sent the STUN + request. We will now send a STUN request every three seconds regardless + of how many other packets we receive while waiting for a response until we + have completed three STUN request transmission cycles. - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. + Change-Id: Ib606cb08585e06eb50877f67b8d3bd385a85c266 - * Made always eat the fax detection frame whether there is a fax extension - or not. +2017-04-06 18:30 +0000 [8d323c74fa] Richard Mudgett - ASTERISK-26216 - Reported by: Richard Mudgett + * sorcery.c: Speed up ast_sorcery_retrieve_by_id() - Change-Id: I32aecbb4818af646dc5a619f0dc040e9b1f222e5 + Return early if ast_sorcery_retrieve_by_id() is not passed an id to find. + Also eliminated the RAII_VAR() usage in the function. -2016-07-12 17:33 +0000 [964ae54ecf] Richard Mudgett + Change-Id: I871dbe162a301b5ced8b4393cec27180c7c6b218 - * res_fax.c: Fix deadlock potential in FAXOPT(faxdetect) framehook. +2017-04-10 11:30 +0000 [5b4e2ec267] Richard Mudgett - The fax_detect_framehook() has the potential to deadlock if an incoming - fax happens during the Playback or similar application. + * res_pjsip: Fix pointer use after unref. - * Fixed the potential deadlock by not calling ast_async_goto() with the - channel lock held. + Change-Id: I4b6e1b0070563eeaee223cb58326f1b962ed5bc1 - * Made always eat the fax detection frame whether there is a fax extension - or not. +2017-04-06 18:18 +0000 [6f793ac149] Richard Mudgett - * Made only detach the framehook if we detected a fax and not on other - possible frames. + * res_pjsip_sdp_rtp.c: Don't use deprecated transport struct member. - ASTERISK-26216 - Reported by: Richard Mudgett + * create_rtp(): Eliminate use of deprecated transport struct member. That + member and several others in the transport structure were deprecated + because of an infinite loop created when using realtime configuration. + See 2451d4e4550336197ee2e482750cc53f30afa352 - Change-Id: I99da35c26d1cd802626ffb4c1b4eb5b015581b6d + ASTERISK-26851 -2016-07-12 17:24 +0000 [c3462adeb8] Richard Mudgett + Change-Id: I0533aa13c9ce3c6cc394e0fd2b5bf1cd1b2ef3bc - * res_fax: Fix FAXOPT(faxdetect) timeout option. +2017-04-10 17:45 +0000 [d76bc0565c] Richard Mudgett - The fax detection timeout option did not work because basically the wrong - variable was checked in fax_detect_framehook(). As a result, the timer - would timeout immediately and disable fax detection. + * tcptls.c: Cleanup TCP/TLS listener thread on abnormal exit. - * Fixed ignoring negative timeout values. We'd complain and then go right - on using the negative value. + Temporarily running out of file descriptors should not terminate the + listener thread. Otherwise, when there becomes more file descriptors + available, nothing is listening. - * Fixed destroy_faxdetect() in the off-nominal case of an incomplete - object creation. + * Added EMFILE exception to abnormal thread exit. - * Added more range checking to FAXOPT(gateway) timeout parameter. + * Added an abnormal TCP/TLS listener exit error message. - ASTERISK-26214 #close - Reported by: Richard Mudgett + * Closed the TCP/TLS listener socket on abnormal exit so Asterisk does not + appear dead if something tries to connect to the socket. - Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976 + ASTERISK-26903 #close -2016-07-18 16:16 +0000 [c03e27c1c8] Richard Mudgett + Change-Id: I10f2f784065136277f271159f0925927194581b5 - * chan_dahdi: Add faxdetect_timeout option. +2017-04-08 03:05 +0000 [2b8dbc9e00] Walter Doekes - The new option allows the channel driver's faxdetect option to timeout on - a call after the specified number of seconds into a call. The new feature - is disabled if the timeout is set to zero. The option is disabled by - default. + * samples: Undo removal of include from canonicalize-app-names commit. - * Don't clear dsp_features after passing them to the dsp code in - my_pri_ss7_open_media(). We should still remember them especially for the - new faxdetect_timeout option. + This include was accidentally removed in changeset + Ia79aea64de89531362e993e34230c2044a70aa93. My bad. - ASTERISK-26214 - Reported by: Richard Mudgett + Change-Id: I1d716c7f9590b4e97909fb8bca1f2ed9bd0e4082 - Change-Id: Ieffd3fe788788d56282844774365546dce8ac810 +2017-04-07 08:35 +0000 [270b485f04] Joshua Colp -2016-07-15 20:44 +0000 [d11731ac2f] Richard Mudgett + * pjsip: Add Alembic for PUBLISH support. - * res_pjsip: Add fax_detect_timeout endpoint option. + This change adds database tables for the PUBLISH support so it + can be configured using realtime. A minor fix to the + res_pjsip_publish_asterisk module was done so that it read the + sorcery configuration from the correct section. Finally the + sample configuration files have been updated. - The new endpoint option allows the PJSIP channel driver's fax_detect - endpoint option to timeout on a call after the specified number of - seconds into a call. The new feature is disabled if the timeout is set - to zero. The option is disabled by default. + ASTERISK-26928 - ASTERISK-26214 - Reported by: Richard Mudgett + Change-Id: I81991ae5c75af98d247f7eacd1c0b0a763675952 - Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d +2017-04-07 08:06 +0000 [7a46cd7433] Alexander Traud -2016-07-21 10:28 +0000 [56b4112659] Alexei Gradinari + * pjproject_bundled: Crash on pj_ssl_get_info() while ioqueue_on_read_complete(). - * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice. + When the Asterisk channel driver res_pjsip offers SIP-over-TLS, sometimes, not + reproducible, Asterisk crashed in pj_ssl_sock_get_info() because a NULL pointer + was read. This change avoids this crash. - This patch removed call of pjsip_tx_data_dec_ref in send_notify - if send_request failed. - The pjsip_dlg_send_request deletes the message on error by itself. + ASTERISK-26927 #close - It seems this patch fixes next issues: - ASTERISK-26199 - ASTERISK-26166 - ASTERISK-26174 + Change-Id: I24a6011b44d1426d159742ff4421cf806a52938b - Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a +2017-04-05 09:10 +0000 [e6ae3651b8] Walter Doekes -2016-07-21 09:05 +0000 [52cbdf2393] gtjoseph + * samples: Canonicalize app names in extensions.conf.sample. - * chan_sip: Prevent deadlock when issuing "sip show channels" + This takes care of warnings by ossobv/asterisklint. - sip_show_channels locks the dialogs container first then locks each - sip_pvt so it can spit out the details. The rest of sip dialog - processing locks the sip_pvt first then locks the dialogs container - if it needs to. Both lock in the order they need but deadlocks can - result. To fix, sip_show_channels and sip_show_channelstats have - been converted to use an iterator rather than ao2_callback. This way - the container is locked only while getting the next entry and is - unlocked when the callback is called. + Change-Id: Ia79aea64de89531362e993e34230c2044a70aa93 - ASTERISK-23013 #close +2017-04-04 16:20 +0000 [01e9eaf3a6] George Joseph - Change-Id: Id9980419909e811f89484950ed46ef117b9eb990 + * pjproject_bundled: Add 3 upstream patches -2016-07-13 05:24 +0000 [2103ad1fec] Alexander Traud + 0035-r5572-svn-backport-dialog-transaction-deadlock.patch + 0036-r5573-svn-backport-ua-pjsua-transaction-deadlock.patch + 0037-r5576-svn-backport-session-timer-crash.patch - * res_srtp: Enable AES-256 and AES-GCM. + Also removed the progress bar from wget download to stdout. - ASTERISK-26190 #close + ASTERISK-26905 #close + Reported-by: Ross Beer - Change-Id: I11326d80edd656524a51a19450e586c583aa0a0b + Change-Id: I268fb3cf71a3bb24283ff0d24bd8b03239d81256 -2016-07-18 22:46 +0000 [05cfe1a76e] Corey Farrell +2017-04-04 11:44 +0000 [fac5115c43] Troy Bowman - * Add conditional support for noreturn functions. + * app_queue: Log reason for PAUSEALL/UNPAUSEALL - This adds support for tagging functions with the noreturn attribute. - If DO_CRASH is enabled then ast_do_crash never returns. If AST_DEVMODE - and DO_CRASH are enabled then failed assertions never return. This can - resolve a large number of false positives with static analyzers. + We needed the reason for our reporting when agents pause/unpause all of + their queues at once. This is a small, simple patch that adds a reason + for PAUSEALL and UNPAUSEALL. I have been using it in production for years. - ASTERISK-26220 #close + ASTERISK-26920 #close - Change-Id: Icfb61e5fe54574eced4c3e88b317244f467ec753 + Change-Id: Ifb3f0d1a0abd5194253d9794023546e1395baf3d -2016-07-15 19:28 +0000 [0c88fb460f] Corey Farrell +2017-04-05 14:50 +0000 [40e9d5e8b7] George Joseph - * pbx: Create pbx_sw.c for management of 'struct ast_sw'. + * sample_config: Add samples for pubsub to pjsip.conf.sample - This changes context switches from a linked list to a vector, makes - 'struct ast_sw' opaque to pbx.c. + Added: + * outbound-publish + * resource_list + * inbound-publication + * asterisk-publication - Although ast_walk_context_switches is maintained the procedure is no - longer efficient except for the first call (inc==NULL). This - functionality is replaced by two new functions implemented by vector - macros. - * ast_context_switches_count (AST_VECTOR_SIZE) - * ast_context_switches_get (AST_VECTOR_GET) + Change-Id: I65043a896c35483f30a92d30b5b118359af7ba5a - As with ast_walk_context_switches callers of these functions are - expected to have locked contexts. Only a few places in Asterisk walked - the switches, they have been converted to use the new functions. +2017-04-03 15:38 +0000 [f2ee8ac21e] Richard Mudgett - Change-Id: I08deb016df22eee8288eb03de62593e45a1f0998 + * res_pjsip_sdp_rtp.c: Don't alter global addr variable. -2016-07-19 04:48 +0000 [6fca2b3bf0] Alexander Traud + * create_rtp(): Fix unexpected alteration of global address_rtp if a + transport is bound to an address. - * Makefile: Retain XML Declaration and DTD in docs. + * create_rtp(): Fix use of uninitialized memory if the endpoint RTP media + address is invalid or the transport has an invalid address. - Since Asterisk 12, the documentation got an XML Stylesheet. Because of a typo, - the XML Declaration and DTD were overwritten by this. + ASTERISK-26851 - ASTERISK-26212 #close + Change-Id: Icde42e65164a88913cb5c2601b285eebcff397b7 - Change-Id: If5ee4625068042e98ab3fcb22a25e2f15d0c68bd +2017-03-27 09:03 +0000 [380973cc47] Corey Farrell -2016-07-18 18:40 +0000 [cf1188a1be] Corey Farrell + * CDR: Protect from data overflow in ast_cdr_setuserfield. - * Unit tests: Use AST_TEST_DEFINE in conditional code only. + ast_cdr_setuserfield wrote to a fixed length field using strcpy. This could + result in a buffer overrun when called from chan_sip or func_cdr. This patch + adds a maximum bytes written to the field by using ast_copy_string instead. - If AST_TEST_DEFINE is not conditional to TEST_FRAMEWORK it produces dead - code. This places all existing unit tests into a conditional block if - they weren't already. + ASTERISK-26897 #close + patches: + 0001-CDR-Protect-from-data-overflow-in-ast_cdr_setuserfie.patch submitted + by Corey Farrell (license #5909) - ASTERISK-26211 #close + Change-Id: Ib23ca77e9b9e2803a450e1206af45df2d2fdf65c - Change-Id: I8ef83ee11cbc991b07b7a37ecb41433e8c734686 +2017-03-25 19:01 +0000 [6c3ae397cb] Daniel Journo -2016-07-18 09:22 +0000 [e9daa34261] Alexei Gradinari + * Unused realtime MOH classes not purged on 'moh reload' - * res_pjsip_mwi: remove unneeded check on endpoint's contacts. + Purge Realtime MOH classes on 'moh reload' even when musiconhold.conf + hasn't changed. - The function create_mwi_subscriptions_for_endpoint checks - if there is active contacts by retrieving aors and contacts. + ASTERISK-25974 #close - This function is used to create all unsolicited mwi subscriptions - on startup and is used when contact added. + Change-Id: I42c78ea76528473a656f204595956c9eedcf3246 - In both cases it's not necessary to check if there are contacts. - The contacts are needed when asterisk sends mwi. +2017-03-31 12:09 +0000 [8e36064109] Corey Farrell - ASTERISK-26200 #close + * core: Improve/simplify handling of required headers. - Change-Id: I98e43bdc97f3c0829951cd9bf5f3c6348c6ac1fa + * Report failures if configure finds a required header is missing. + * Deduplicate includes between asterisk.h, astmm.h and compat.h. + * Unconditionally include headers in compat.h if required elsewhere. -2016-07-18 05:13 +0000 [cb5e3445be] Alexander Traud + Change-Id: Ie67d0185ca71fbfb81c9bdfaebe46a49e3c56dc5 - * res_rtp_asterisk: Count a roll-over of the sequence number even on lost packets. +2017-04-03 13:56 +0000 [a889621b14] Richard Mudgett - With this change, the initial RTP sequence number is randomly chosen not between - 0 and 65535 (0xffff) but 0 and 32767 (0x7fff). This assures, the roll-over - counter (ROC) synchronization is not lost for sRTP, when the very first RTP - packets get lost; see http://srtp.sourceforge.net/faq.html#Q6 + * res_pjsip: Fix transport ref leak. - ASTERISK-26207 #close + We were leaking a transport ref in multihomed_on_rx_message() which + resulted in the FRACK about excessive ref counts. - Change-Id: I9a527e3aa3ce8f3becc5131d7ba32b57b5845464 + ASTERISK-26916 #close -2016-07-18 04:14 +0000 [6428580e7f] Alexander Traud + Change-Id: I7a96658a9614a060565bb9ad51cb1c9c11ee145f - * Makefile: Suppress echoing of target 'config' again. +2017-04-03 02:30 +0000 [4fc22c7673] Alexander Traud - ASTERISK-26038 #close + * chan_sip: Session Timers required but refused wrongly. - Change-Id: I5746cf639f3fdc6332e8a97cf01f979e30bf403f + SIP user-agents indicate which protocol extensions are allowed in headers + like Supported and Required. Such protocol extensions are Session Timers + (RFC 4028) for example. Session Timers are supported since Mantis-10665. + Since ASTERISK-21721, not only the first but multiple Supported/Required + headers in a message are parsed. In that change, an existing variable was + re-used within a newly added do-loop. Currently, at the end of that loop, + that variable is an empty string always. Previously, that variable was used + within log output. However, the log output was not changed. -2016-07-15 02:59 +0000 [e2e8713b84] Corey Farrell + ASTERISK-26915 #close - * pbx: Create pbx_ignorepat.c for management of 'struct ast_ignorepat'. + Change-Id: I09315f31b4d78fb214bb2a9fb6c0f5e143eae990 - This changes context ignore patterns from a linked list to a vector, - makes 'struct ast_ignorepat' opaque to pbx.c. +2017-03-31 16:31 +0000 [48be02c5d8] Joshua Colp - Although ast_walk_context_ignorepats is maintained the procedure is no - longer efficient except for the first call (inc==NULL). This - functionality is replaced by two new functions implemented by vector - macros. - * ast_context_ignorepats_count (AST_VECTOR_SIZE) - * ast_context_ignorepats_get (AST_VECTOR_GET) + * res_pjsip_session: Allow BYE to be sent on disconnected session. - As with ast_walk_context_ignorepats callers of these functions are - expected to have locked contexts. Only a few places in Asterisk walked - the ignorepats, they have been converted to use the new functions. + It is perfectly acceptable for a BYE to be sent on a disconnected + session. This occurs when we respond to a challenge to the BYE + for authentication credentials. - Change-Id: I78f2157d275ef1b7d624b4ff7d770d38e5d7f20a + ASTERISK-26363 -2016-07-14 13:51 +0000 [be36bd7ca5] Corey Farrell + Change-Id: I6ef0ddece812fea6665a1dd2549ef44fb9d90045 - * pbx: Create pbx_include.c for management of 'struct ast_include'. +2017-03-31 13:14 +0000 [e8b1bb3041] Richard Mudgett - This changes context includes from a linked list to a vector, makes - 'struct ast_include' opaque to pbx.c. + * chan_vpb.cc: Fix compiler error. - Although ast_walk_context_includes is maintained the procedure is no - longer efficient except for the first call (inc==NULL). This - functionality is replaced by two new functions implemented by vector - macros. - * ast_context_includes_count (AST_VECTOR_SIZE) - * ast_context_includes_get (AST_VECTOR_GET) + Added missing channel technology read/write stream callback + initialization. - As with ast_walk_context_includes callers of these functions are - expected to have locked contexts. Only a few places in Asterisk walked - the includes, they have been converted to use the new functions. + Change-Id: I829043a327d987e0d964485dd3d27964bebbd623 - const have been applied where possible to parameters for ast_include - functions. +2017-03-30 18:28 +0000 [f9695dc057] Corey Farrell - Change-Id: Ib5c882e27cf96fb2aec67a39c18b4c71c9c83b60 + * Forward declare 'struct ast_json' in asterisk.h -2016-07-14 03:25 +0000 [d3348c51b5] Corey Farrell + The ast_json structure is used in many Asterisk headers and is often the + only part of json.h used. This adds a forward declaration to asterisk.h + and removes the include of json.h from many headers. The declaration + has been left in endpoints.h and stasis.h to avoid problems with source + files that use ast_json functions without directly including json.h. - * features.c: Remove unneeded adsi.h include. + ari.h continues to include json.h as it uses enum + ast_json_encoding_format. - adsi.h is no longer used by features.c since parking was moved to a - module. + Change-Id: Id766aabce6bed56626d27e8d29f559b5e687b769 - Change-Id: I2248b8a455225a17cb6ddaafd6c20c511a1eaf59 +2017-03-30 08:11 +0000 [c537f99488] Sean Bright -2016-06-30 15:58 +0000 [273052f404] Mark Michelson + * cdr_pgsql: Fix buffer overflow calling libpq - * Update support for SILK format. + Implement the same buffer size checking done in cel_pgsql. - This commit adds scaffolding in order to support the SILK audio format - on calls. Roughly, this is what is added: + ASTERISK-26896 #close + Reported by: twisted - * Cached silk formats. One for each possible sample rate. - * ast_codec structures for each possible sample rate. - * RTP payload mappings for "SILK". + Change-Id: Iaacfa1f1de7cb1e9414d121850d2d8c2888f3f48 - In addition, this change overhauls the res_format_attr_silk file in the - following ways: +2017-03-28 13:01 +0000 [a7d94f504f] Walter Doekes - * The "samplerate" attribute is scrapped. That's native to the format. - * There are far more checks to ensure that attributes have been - allocated before attempting to reference them. - * We do not SDP fmtp lines for attributes set to 0. + * build: Fix deb build issues with fakeroot - These changes make way to be able to install a codec_silk module and - have it actually work. It also should allow for passthrough silk calls - in Asterisk. + If DESTDIR is set, don't call ldconfig. Assume that DESTDIR is used to + create a binary archive. The ldconfig call should be delegated to the + archive postinst script. This fixes the case where fakeroot wraps 'make + install' causing $EUID to be 0 even though it doesn't have permission to + call ldconfig. - Change-Id: Ieeb39c95a9fecc9246bcfd3c45a6c9b51c59380e + The previous logic in configure.ac to detect and correct libdir + has been removed as it was not completely accurate. CentOS 64-bit + users should again specifiy --libdir=/usr/lib64 when configuring + to prevent install to /usr/lib. -2016-07-14 07:45 +0000 [31967dacdf] Richard Miller (license 5685) + Updated Makefile:check-old-libdir to check for orphans in + lib64 when installing to lib as well as orphans in lib when installing + to lib64. - * app_queue: Only remove queue member from pending when state changes. + Updated Makefile and main/Makefile uninstall targets to remove the + orphans using the new logic. - It is possible for a not in use state change to occur multiple - times causing a queue member to be removed from the pending call - container prematurely. + ASTERISK-26705 - The first not in use state change will remove the queue member - from the container. At this moment the member may be called and - placed in the pending container. After this another not in use - state change can be received which will remove it from the - container. Despite being called at this point the code will - incorrectly see that there are no pending calls to it. + Change-Id: I51739d4a03e60bff38be719b8d2ead0007afdd51 - This change only removes it from the pending container if the - state has actually changed. +2017-03-27 15:32 +0000 [f3290d6b66] Joshua Colp - ASTERISK-26133 #close - patches: - app_queue.diff submitted by Richard Miller (license 5685) + * sdp: Add support for setting connection address and clean up state. - Change-Id: Ie5a7f17a44f98e9159e9b85009ce3f8393aa78c0 + This change cleans up state management for media streams by moving + RTP instances into their own session structure and adding additional + details that are not relevant to the core (such as connection address). + These can live either in the local capabilities or joint capabilities. -2016-07-14 02:40 +0000 [f3608b50d7] Corey Farrell + The ability to set explicit connection address information for + the purposes of direct media and NAT has also been added at the + global and stream specific level. - * pbx: Fix leak of timezone for time based includes. + ASTERISK-26900 - Create include_free to run ast_destroy_timing and ast_free, use that in - all places that freed an ast_include structure. This fixes a couple of - paths that previously did not run ast_destroy_timing. + Change-Id: If7e5307239a9534420732de11c451a2705b6b681 - ASTERISK-26196 #close +2017-03-29 10:11 +0000 [5c1ea3ebbd] Sean Bright - Change-Id: I1671bd111bef0dc113e8bf8f77f89fcfc395d838 + * astobj2: Prevent potential deadlocks with ao2_global_obj_release -2016-07-13 17:45 +0000 [63ac4c9487] Kevin Harwell + The ao2_global_obj_release() function holds an exclusive lock on the + global object while it is being dereferenced. Any destructors that + run during this time that call ao2_global_obj_ref() will deadlock + because a read lock is required. - * translate: explicit format destination not properly set + Instead, we make the global object inaccessible inside of the write + lock and only dereference it once we have released the lock. This + allows the affected destructors to fail gracefully. - If the destination format's name differed from the codec name then the - translator's explict_dst field would be improperly set. In some circumstances - it would end up setting it to a newly created format that has the same name - as the codec when it actually needed to be the given destination codec. + While this doesn't completely solve the referenced issue (the error + message about not being able to create an IQ continues to be shown) + it does solve the backtrace spew that accompanied it. - This could cause the translation path to use the wrong format. For instance, - if an endpoint had specified 'myulaw' as a format the translator could end up - using a 'ulaw' format (with whatever/default settings) instead. If the format - attribute settings differed between the two then there may unexpected results - during processing. + ASTERISK-21009 #close + Reported by: Marcello Ceschia - This patch removes the name check when building the translation path. This - should make it always set the translator's explicit_dst to the given destination - format as long as the sample rate and types match. + Change-Id: Idf40ae136b5070dba22cb576ea8414fbc9939385 - Change-Id: Iaf8a03831d68e657d89569d54b505074efbefab5 +2017-03-30 10:18 +0000 [4e5cc70fb4] Corey Farrell -2016-07-08 11:46 +0000 [2f26512fd8] Richard Mudgett + * CEL: Remove header declarations of non-existant functions. - * stasis_endpoint.c: Fix contactstatus_to_json(). + ast_cel_alloc and ast_cel_destroy do not exist in code, remove them from + the headers. - The roundtrip_usec json member is optional. If it isn't present then - don't put it into the converted json structure where ast_json_pack() - will choke on it. + Change-Id: I99ce848e2e109e7d61771559f559b9e57973e45c - Change-Id: I39bb2f86154ef54591270c58bfda8635070f9ea0 +2017-03-27 11:49 +0000 [f66edcb8b0] Josh Roberson -2016-07-11 10:22 +0000 [bc1ff41be7] Richard Mudgett + * cel_pgsql.c: Fix buffer overflow calling libpq - * pjsip_options.c: Fix container operation. + PQEscapeStringConn() expects the buffer passed in to be an + adequitely sized buffer to write out the escaped SQL value string + into. It is possible, for large values (such as large values to + Dial with a lot of devices) to have more than our 512+1 byte + allocation and thus cause libpq to create a buffer overrun. - aor_observer_deleted() needs to operate on all contacts found for the - deleted AOR instead of only the first one found. This is really only a - problem if there is more than one contact for the AOR. + glibc will nicely ABRT asterisk for you, citing a stack smash. - Change-Id: Id24ac0d5e8c931330231fb45dd2a331a84339dc1 + Let's only allocate it to be as large as needed: + If we have a value, then (strlen(value) * 2) + 1 (as recommended + by libpq), and if we have none, just one byte to hold our null + will do. -2016-07-11 10:21 +0000 [eabcfeeaa3] Richard Mudgett + ASTERISK-26896 #close - * pjsip_configuration.c: Misc cleanups. + Change-Id: If611c734292618ed68dde17816d09dd16667dea2 - * Fix some whitespace in various routines. +2017-03-29 08:04 +0000 [e76cc51d5e] Alexander Traud - * Rename i to iter in persistent_endpoint_update_state(). + * srtp: Allow zero as tag value for a sRTP Crypto Suite. - * Fix off-nominal copy/paste message wording in - persistent_endpoint_contact_deleted_observer() + ASTERISK-25490 #close - Change-Id: Id8e34f5d09e7eebac3af22501c44c1110a3e29d8 + Change-Id: I1c5fc0942c33c96d62b24203aad0f1e1a1a0131f -2016-07-13 13:45 +0000 [f73ddde7d4] Corey Farrell +2017-03-28 13:10 +0000 [2fe52174de] George Joseph - * chan_sip: Fix reference leak in mwi_event_cb + * res_pjsip_config_wizard: Add 2 new parameters to help with proxy config - Cleanup the peer reference when stasis_subscription_final_message is - true. Also free peer_name even if peer exists, after reload a new - peer_name will be allocated. + Two new parameters have been added to the pjsip config wizard. - ASTERISK-26193 #close + * Setting 'sends_line_with_registrations' to true will cause the wizard + to skip the creation of an identify object to match incoming request + to the endpoint and instead add the line and endpoint parameters to + the outbound registration object. - Change-Id: If7ecd52facdc5c227f701c760841e3f6ca53cc69 + * Setting 'outbound_proxy' is a shortcut for adding individual + endpoint/outbound_proxy, aor/outbound_proxy and + registration/outbound_proxy parameters. -2016-07-13 11:30 +0000 [fd54d69feb] Corey Farrell + Change-Id: I678e5f80765734c056620528a6d40d82736ceeb0 + (cherry picked from commit a827892ff77cd37912b528d9c45b446be091bbc0) + (cherry picked from commit 27344675be1941d30508c6e6bd684acdd0791e1a) - * threadpool: Fix leak in ast_threadpool_serializer_group error path. +2017-03-28 09:29 +0000 [7c0b12dc41] Sean Bright - ast_threadpool_serializer_group leaks a reference to ser when listener - is allocated but tps is not. Although listener takes the reference to - ser cleanup functions are not run without tps. + * alembic: Turn off execute bit on non-executable python scripts - ASTERISK-26191 #close + Change-Id: I744c986da4a38aeff8c00837eb89de7841fbc86c - Change-Id: Ie3ccf69a3f1e676c2ef62a77067c0cb57dc9a585 +2017-03-27 12:37 +0000 [3d8899bacf] Richard Mudgett -2016-06-22 07:13 +0000 [85212f2799] Eugene Voityuk ,Alexander Traud + * Add DTLS sanity check. - * res_rtp_asterisk: Enable Forward Secrecy (PFS) for DTLS. + Change-Id: Ib32612cf6c7ce9213a11b9cba82f630f8cd3564b - Since July 2014, TLS based protocols (SIP over TLS, Secure WebSockets, HTTPS) - support PFS thanks to ASTERISK-23905. In July 2015, the same feature was added - for DTLS. The source code from main/tcptls.c should have been re-used to ease - security audits. Therefore, this change rolls back the change from July 2015 and - re-uses the code from July 2014. This has the additional benefits to work under - CentOS 7 and enabling not just ECDHE but DHE based cipher suites as well. +2017-03-08 07:24 +0000 [5d938045d4] Joshua Colp - ASTERISK-25659 #close - Reported by: StefanEng86, urbaniak, pay123 - Tested by: sarumjanuch, traud - patches: - res_rtp_asterisk.patch submitted by sarumjanuch - dtls_centos_step_1.patch submitted by traud - dtls_centos_step_2.patch submitted by traud + * channel: Remove old epoll support and fixed max number of file descriptors. - Change-Id: I537cadf4421f092a613146b230f2c0ee1be28d5c + This change removes the old epoll support which has not been used or + maintained in quite some time. -2016-06-24 19:55 +0000 [0d487b53b1] Matt Jordan + The fixed number of file descriptors on a channel has also been removed. + File descriptors are now contained in a growable vector. This can be + used like before by specifying a specific position to store a file + descriptor at or using a new API call, ast_channel_fd_add, which adds + a file descriptor to the channel and returns its position. - * res/res_pjsip_session: Check for presence of an active negotiator + Tests have been added which cover the growing behavior of the vector + and the new API call. - It is possible in a hypothetical situation for a session refresh to be - invoked on a PJSIP when the negotiatior on the INVITE session has not - yet been established. While this shouldn't occur with existing uses of - ast_sip_session_refresh, the crashes that occur due to improperly - calling PJSIP functions that expect a non-NULL negotiatior are - avoidable. PJSIP will create the negotiator in pjsip_inv_reinvite; this - means that simply checking for the presence of the negotiator before - passing it to other PJSIP functions that use it is allowable. As such, - this patch adds checks for the presence of the negotiator before calling - PJSIP functions that assume it is non-NULL. + ASTERISK-26885 - Change-Id: I1028323e7e01b0a531865e5412a71b6f6ec4276d + Change-Id: I1a754b506c009b83dfdeeb08c2d2815db30ef928 -2015-10-19 18:55 +0000 [c49833653b] Matt Jordan +2017-03-27 09:35 +0000 [fd204d5c65] Sean Bright - * res/res_pjsip_pubsub: Add additional debug statements + * res_musiconhold: Document the 'format' option - When something very sad and wrong occurs, it's challenging sometimes to - figure out why. This patch adds some additional debug statements on - off-nominal paths to try and make debugging easier. + ASTERISK-26086 #close + Reported by: Jens Bürger - Change-Id: I7bffb73cc733b6f80193a23340881db4a102b640 + Change-Id: I6aab666c0bf01fd0c64d7a5bcb22fa7f5d41335e -2015-10-19 18:55 +0000 [f12311ee69] Matt Jordan +2017-03-24 07:43 +0000 [cf6a6226ab] Sean Bright - * res/res_corosync: Raise a Stasis message on node join/leave events + * core: Remove embedded module support - When res_corosync detects that a node leaves or joins, it currently is - informed of this via Corosync callbacks. However, there are a few - limitations with the information presented: - (1) While we have information that Corosync is aware of - such as the - Corosync nodeid - that information is really only useful inside of - Corosync or res_corosync. There's no way to translate a Corosync - nodeid to some other internally useful unique identifier for the - Asterisk instance that just joined or left the cluster. - (2) While res_corosync is notified of the instance joining or leaving - the cluster, it has no mechanism to inform the Asterisk core or - other modules of this event. This limits the usefulness of res_corosync - as a heartbeat mechanism for other modules. + This has not worked for some time and is no longer actively maintained. - This patch addresses both issues. + Change-Id: I5110b0db69c152761b58fa025cb0a53b0e544d99 - First, it adds the notion of a cluster discovery message both within the - Stasis message bus, as well as the binary event messages that - res_corosync uses to transmit data back and forth within the cluster. - When Asterisk joins the cluster, it sends a discovery message to the other - nodes in the cluster, which correlates the Corosync nodeid along with - the Asterisk EID. res_corosync now maintains a hash of Corosync nodeids - to Asterisk EIDs, such that it can map changes in cluster state with the - Asterisk instance that has that nodeid. Likewise, when an Asterisk - instance receives a discovery message from a node in the cluster, it now - sends its own discovery message back to the originating node with the - local Asterisk EID. This lets Asterisk instances within the cluster - build a complete picture of the other Asterisk instances within the - cluster. +2017-03-27 08:58 +0000 [d22c678999] Sean Bright - Second, it publishes the discovery messages onto the Stasis message bus. - Said messages are published whenever a node joins or leaves the cluster. - Interested modules can subscribe for the ast_cluster_discovery_type() - message under the ast_system_topic() and be notified when changes in - cluster state occur. + * res_musiconhold: Don't chdir() when scanning MoH files - Change-Id: I9015f418d6ae7f47e4994e04e18948df4d49b465 + There doesn't appear to be any reason that we are chdir'ing in + moh_scan_files, and in the event of an Asterisk crash, the core files + may not get written because we have changed into a read-only directory. -2016-07-13 08:57 +0000 [a3f4141f6f] Alexander Traud + ASTERISK-23996 #close + Reported by: Walter Doekes - * BuildSystem: Avoid obsolete warning with pthread.m4 on autoconf. + Change-Id: Iac806dce01b3335963fbd62d4b4da9a65c614354 - Updated the macro-set autoconf/ax_pthread.m4 to its latest upstream version. +2017-03-23 09:48 +0000 [d5a8799c4b] Sean Bright - ASTERISK-26046 #close + * res_xmpp: Use incremental backoff when a read error occurs - Change-Id: I11abc11d17acd2b6a8a5a5be8ae8e0949dab9cc7 + If a read error occurs, we immediately attempt a reconnect without any + delay. Instead, let's sleep and backoff up to 60 seconds before we try + again. -2016-07-11 20:07 +0000 [886f2cab23] gtjoseph + ASTERISK-24712 #close + Reported by: Matthias Urlichs - * rest_api/channels: Fix multiple issues with create and dial + Change-Id: I6fe10ef4734837727437beab715e336777f13f48 - * We weren't properly subscribing to the channel and it's originator - on create. - * We weren't doing a publish_dial after calling ast_call on dial. - * We weren't calling depart_bridge when a channel left the dial bridge. +2017-03-24 11:29 +0000 [d08c69a9e2] Sean Bright - The first 2 issues were causing events to not be generated and the third - was actually causing channels to not get properly destroyed when hung up. + * res_pjsip_sdp_rtp: Set hangup cause for RTP timeouts - Together these 3 issues were causing the new - rest_apichannels/create_dial_bridge tests to fail. + chan_sip sets the hangup cause code to AST_CAUSE_REQUESTED_CHAN_UNAVAIL + (44) when a channel is hung up due to an RTP timeout. So do the same + when it happens with PJSIP for parity. - As a result of the fixes, the cdr state machine had to be slightly - tweaked to allow bridge leave events without asserting and the tests - themselves had to be updated to account for the channels now cleaning - themselves up. + Change-Id: I3546ebbde6460c22a27c9da1bf321711b5961ab8 - Change-Id: Ibf23abf5a62de76e82afb4461af5099c961b97d8 +2017-03-23 14:01 +0000 [d2f2cdf476] Kevin Harwell -2016-07-11 10:25 +0000 [b85446d039] Richard Mudgett + * AMI: Updated version - * res_pjsip: Fix statsd regression. + Updated the AMI version for the following reason (see CHANGES for more details): - The ASTERISK-25904 change-id I8fad8aae9305481469c38d2146e1ba3a56d3108f - patch introduced several regressions when the newly created "Updated" - state goes out for each endpoint registration refresh. + The 'PJSIPShowEndpoint' command's response event of 'IdentifyDetail' now + contains a new optional parameter, 'MatchHeader'. - 1) It restarted any OPTIONS RTT ping cycle. + Change-Id: Ie206913ef1dcfa6a2ebe3282da2387e52d6f05b9 - 2) It would interfere with a currently active ping and throw off that - ping's resulting RTT calculation. +2017-03-23 12:07 +0000 [12dde3b568] Kevin Harwell - 3) It cleared the RTT time each time the endpoint was refreshed. + * pjproject_bundled: raise timeout value used when downloading - 4) The cleared RTT time was sent out as a statsd update each time. + After configuring Asterisk with '--with-pjproject-bundled' the configure/build + process attempts to download pjproject from its download site. Currently, a + timeout of 10 seconds is used that will stop the download process if pjproject + has not been fully downloaded in that time. For some systems this was not enough + time and the process was timing out too early. - 5) It created two AMI events for each update. + This patch raises the download timeout value to '60'. Also, this patch fixes + another bug where the DOWNLOAD_TIMEOUT variable was not being properly exported + due to a naming error. DOWNLOAD_MAX_TIMEOUT is now properly renamed to + DOWNLOAD_TIMEOUT. - * Revert the original patch and reimplement it. Now the current contact - status state is re-sent instead of the state being momentarily toggled - every time the endpoint refreshes its registration. The statsd events are - not created for the re-sent refresh because they are sent after every - OPTIONS ping. + ASTERISK-26814 #close - ASTERISK-26160 #close - Reported by: Matt Jordan + Change-Id: Ia56e4e8a3d39db76bc8a1852b2cf07ec10b39842 - Change-Id: Ie072be790fbb2a8f5c1c874266e4143fa31f66d1 +2017-03-22 20:33 +0000 [98a88e9ffa] Sean Bright -2016-07-10 19:08 +0000 [4ad333bb0e] Joshua Colp + * res_xmpp: Correct implementation of JABBER_STATUS & JabberStatus - * func_odbc: Fix connection deadlock. + The documentation for JABBER_STATUS (and the deprecated JabberStatus + app) indicate that a return value of 7 indicates that the specified + buddy was not in the roster. It also indicates that you can specify a + "bare" JID (one without a resource). Unfortunately the actual behavior + does not match the documented behavior. - The func_odbc module was modified to ensure that the - previous behavior of using a single database connection - was maintained. This was done by getting a single database - connection and holding on to it. With the new multiple - connection support in res_odbc this will actually starve - every other thread from getting access to the database as - it also maintains the previous behavior of having only - a single database connection. + Assuming that our roster includes the buddy online and available + "valid@example.org/Valid" and does *not* include the buddy + "invalid@example.org", the JABBER_STATUS() function returns the + following before this patch: - This change disables the func_odbc specific behavior if - the res_odbc module is running with only a single database - connection active. The connection is only kept for the - duration of the request. + +------------------------------+------------+--------------------------+ + | Buddy | Status | Result | + +------------------------------+------------+--------------------------+ + | valid@example.org | Online | 7 (Not in roster) | + | valid@example.org/Valid | Online | 1 (Online) | + | valid@example.org/Invalid | N/A | 7 (Not in roster) | + | invalid@example.org | N/A | Error logged, no return | + | invalid@example.org/Valid | N/A | Error logged, no return | + +------------------------------+------------+--------------------------+ - ASTERISK-26177 #close + And after this patch: - Change-Id: I9bdbd8a300fb3233877735ad3fd07bce38115b7f + +------------------------------+------------+--------------------------+ + | Buddy | Status | Result | + +------------------------------+------------+--------------------------+ + | valid@example.org | Online | 1 (Online) | + | valid@example.org/Valid | Online | 1 (Online) | + | valid@example.org/Invalid | N/A | 6 (Offline) | + | invalid@example.org | N/A | 7 (Not in roster) | + | invalid@example.org/Valid | N/A | 7 (Not in roster) | + +------------------------------+------------+--------------------------+ -2016-07-12 03:50 +0000 [110b01a0bc] Alexander Traud + This brings the behavior in line with the documentation. - * BuildSystem: Allow own CFLAGS on ./configure. + ASTERISK-23510 #close + Reported by: Anthony Critelli - Before this change, make failed with the error - Unknown value '' found in build_tools/menuselect-deps for NATIVE_ARCH - when CFLAGS were supplied to the configure script. This was introduced with - which disabled BUILD_NATIVE when - CFLAGS were supplied. Those who need different -march= values, please, go for - ./configure - make menuselect.makeopts or make menuselect - ./menuselect/menuselect --disable BUILD_NATIVE + Change-Id: I9c3241035363ef4a6bdc21fabfd8ffcd9ec657bf - ASTERISK-25289 #close +2017-03-23 09:45 +0000 [be94105d6d] Sean Bright - Change-Id: Ic6365d5a97bb9b3556858f06432a8d1cfa83eebc + * res_xmpp: Try to provide useful errors messages from OpenSSL -2016-07-11 13:42 +0000 [44f16af7cc] Richard Mudgett + If any errors occur during the TLS connection setup, we currently dump a + fairly generic error message. So instead we try to pull in something + useful from OpenSSL to report instead. - * ast_expr2: Fix off-nominal memory leak. + ASTERISK-24712 + Reported by: Matthias Urlichs - Thanks to ibercom for pointing out a memory leak that was missed - in the earlier patch for the issue. + Change-Id: I288500991a9681f447d92913b11fedaf426087f4 - ASTERISK-26119 - Reported by: Alexei Gradinari +2017-03-23 05:19 +0000 [ee81ee1f14] Sean Bright - Change-Id: I9a151f5c4725d97fb82a9e938bc73dc659532b71 + * res_xmpp: Fix ref counting issue -2016-07-11 10:17 +0000 [8476a9332f] Alexander Traud + The only remaining reference to the endpoint is in the endpoints + container, and because it is unlinked in ast_endpoint_shutdown, we don't + have to explicitly cleanup the endpoint ourselves. - * install_prereq: Checkout of libSRTP 1.5.x. + Change-Id: I912a2692e52d3e2ed445b32d8ae3f9004bc2f2e8 - Since 5th November 2014, the master branch of libSRTP changed the prefix of - several member names and is not compatible with the source code in Asterisk - anymore. Therefore instead, this change checks out the latest version of the - libSRTP 1.5.x branch. Furthermore now, libSRTP is compiled with OpenSSL as - backend. This makes AES-GCM and AES-IN possible. +2017-03-23 09:30 +0000 [9493981419] Sean Bright - ASTERISK-22131 #close + * res_xmpp: Correctly check return value of SSL_connect - Change-Id: I2e396cdc01da0ff610686e398ed210ca7408f7d6 + SSL_connect returns non-zero for both success and some error conditions + so simply negating is inadequate. -2016-07-09 13:32 +0000 [ad30d60c69] Corey Farrell + Change-Id: Ifbf882896e598703b6c615407fa456d3199f95b1 - * chan_sip: Fix reference leaks in error paths. +2017-03-22 17:32 +0000 [7657c279b5] Sean Bright - * get_sip_pvt_from_replaces leaks sip_pvt_ptr on any error. - * build_peer leaks peer on failure to allocate the endpoint. + * res_xmpp: Don't crash when trying to send a message without a connection - This patch fixes get_sip_pvt by using an RAII_VAR, build_peer is fixed - with an unref in the appropriate place. + If we never establish a connection to our Jabber server, iksemel never sets up + its internal transport pointer, so attempting to send a message dereferences a + NULL pointer and causes a crash. - ASTERISK-26184 #close + ASTERISK-21855 #close + Reported by: Jeremy Kister - Change-Id: I728b424648ad041409f7d90880f4c28b3ce2ca12 + Change-Id: I204a568894e4a53ab929783ecc594a000f04d79c -2016-07-07 12:44 +0000 [7408c51a48] Corey Farrell +2017-03-22 15:40 +0000 [0136ec12a3] Sean Bright - * REF_DEBUG: Prevent logging of container node objects. + * res_xmpp: Include client name in connection related error messages - Using AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE can result in an unref being - recorded to the refs log for the node being replaced. This prevents - logging of those unrefs since they would produce errors in - refcounter.py. + ASTERISK-25622 #close + Reported by: Sean Darcy - ASTERISK-26181 #close + Change-Id: I8472cb7bfb58d411a3cfbd482da98cae2d94d1e9 - Change-Id: Ie4fded84e8a1a58b3a59ce59dfd7eb0da3ddc5d4 +2017-03-20 13:27 +0000 [9b103e7bea] Joshua C. Colp -2016-07-04 16:38 +0000 [c832f100d9] Alexei Gradinari + * rtp_engine: allocate RTP dynamic payloads per session - * res_sorcery_realtime: fix bug when successful UPDATE is treated as failed + Dynamic payload types were statically defined in Asterisk. This unfortunately + limited the number of dynamic payloads that could be registered. With this patch + dynamic payload type numbers are now assigned dynamically and per RTP instance. + However, in order to limit any issues where some clients expect the old + statically defined value this patch makes it so the value Asterisk used to pre- + designate is used for the dynamic assignment if available. - If the SQL UPDATE statement changes nothing then SQLRowCount returns 0. - This value should be treated as success. - But the function sorcery_realtime_update treats it as failed. + An option, "rtp_use_dynamic", has also been added (can be set in asterisk.conf) + that turns the new dynamic behavior on or off. When off it reverts back to using + statically defined payload values. This option defaults to "yes" in Asterisk 15. - This bug was found using stress tests on PJSIP. - If there are 2 consecutive SIP REGISTER requests with the same contact data - during 1 second then res_pjsip_registrar adds contact location on 1st request - and tries to update contact location on 2nd. - The update fails and res_pjsip_registrar even removes correct contact location. + ASTERISK-26515 #close + patches: + ASTERISK-26515.diff submitted by jcolp (license 5000 - The test "object_update_uncreated" was removed from test_sorcery_realtime.c - because it's now a valid situation. + Change-Id: I7653465c5ebeaf968f1a1cc8f3f4f5c4321da7fc - This patch also adds missing debug of extra SQL parameter. +2017-03-21 12:32 +0000 [bb2936f3e4] Sebastian Gutierrez - ASTERISK-26172 #close + * cdr: Allow setting of user field from 'h' extension - Change-Id: I05a7f3051455336c9dda29efc229decf86071303 + The CDR code previously did not allow the user field to be set + from the 'h' extension in the dialplan. This change removes that + limitation and allows it to be set. -2016-07-07 10:38 +0000 [302be4809a] Joshua Colp + ASTERISK-26818 - * chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled. + Change-Id: I0fed8a79b5e408bac4e30542b8f33a61c5ed9aa6 - Some T.38 implementations may send another re-invite after the initial - one which adds additional negotiation details (such as the max bitrate). - Currently this will fail when passthrough is being done in chan_sip as we - do nothing if T.38 is already active. +2017-03-14 16:45 +0000 [6b7697ed48] Richard Begg - Other handlers of T.38 inside of Asterisk (such as res_fax) handle this - scenario so this change adds support for it to chan_sip and res_pjsip_t38. - If a request to negotiate is received while T.38 is already enabled a - new re-INVITE is sent and negotiation is done again. + * res_pjsip_session: Enable RFC3578 overlap dialing support. - ASTERISK-26179 #close + Support for RFC3578 overlap dialling (i.e. 484 Response to partially matched + destinations) as currently provided by chan_sip is missing from res_pjsip. + This patch adds a new endpoint attribute (allow_overlap) [defaults to yes] + which when set to yes enables 484 responses to partial destination + matches rather than the current 404. - Change-Id: I0298494d3da6df3219bbfa4be9aa04015043145c + ASTERISK-26864 -2016-07-07 10:55 +0000 [fb96492ec4] Scott Griepentrog + Change-Id: Iea444da3ee7c7d4f1fde1d01d138a3d7b0fe40f6 - * PJSIP: provide valid tcp nodelay option for reuse +2017-03-21 06:59 +0000 [d4fcf196a2] Sean Bright - When using TCP transport with chan_pjsip, the TCP_NODELAY - option value was allocated on the stack, then passed as a - pointer to the tcp transport configuration structure, and - later re-used on subsequently created sockets when it was - no longer valid. This patch changes the allocation to be - a static. + * res_hep: Capture actual transport type in use - ASTERISK-26180 #close - Reported by: Scott Griepentrog + Rather than hard-coding UDP, allow consumers of the HEP API to specify + which protocol is in use. Update the PJSIP provider to pass in the + current protocol type. - Change-Id: I3251164c7f710dbdab031282f00e30a9770626a0 + ASTERISK-26850 #close -2016-07-06 09:29 +0000 [1c949eea6c] Alexei Gradinari + Change-Id: I54bbb0a001cfe4c6a87ad4b6f2014af233349978 - * res_pjsip: Added "subscribe_context" to endpoint +2017-03-21 09:57 +0000 [1bf839d44b] Sean Bright - 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. + * Revert "app_queue: Handle the caller being redirected out of a queue bridge" - ASTERISK-25471 #close + This reverts commit 163e9e53dc7d84dd42721e733b7706c8147bdd27. - Change-Id: I3fb7a15f5bc154079bd348c08b7ad1cdd2d5e514 + Change-Id: Ief28479c77a298879dfe2c56be7ee92dc465da4b -2016-07-04 05:58 +0000 [32cb981d04] Alexander Traud +2017-03-21 08:26 +0000 [6b4b87787c] Sean Bright - * BuildSystem: Avoid obsolete warning with libcurl.m4 on autoconf. + * res_pjsip_messaging: Check URI type before dereferencing - Updated the macro-set autoconf/libcurl.m4 to its latest upstream version. This - avoids a warning about an obsolete macro on AC_HELP_STRING, because Asterisk is - using AS_HELP_STRING everywhere else already. + We aren't validating that the URI we just parsed is a SIP/SIPS one before + trying to access the user, host, and port members of a possibly uninitialized + structure. - ASTERISK-26046 + Also update the MessageSend documentation to indicate what 'from' formats are + accepted. - Change-Id: I8299faf504ceaeee3e39930c59293809e116c631 + ASTERISK-26484 #close + Reported by: Vinod Dharashive -2016-06-22 17:26 +0000 [9f2c007254] Richard Mudgett + Change-Id: I476b5cc5f18a7713d0ee945374f2a1c164857d30 - * res_pjsip_session.c: Don't send extra BYE if SDP invalid. +2017-03-13 15:21 +0000 [65ad554c98] Joshua Elson - When an answer SDP is invalid we were disconnecting the outgoing call and - sending two BYE requests. The first BYE was sent by PJPROJECT because of - the invalid SDP answer. The second BYE was sent by Asterisk because it - thought the canceled call was the result of the RFC5407 section 3.1.2 race - condition. + * pjsip: prevent memory corruption on creation of xml bodies - * Made not send the BYE on a canceled session if the SDP negotiation is - incomplete because PJPROJECT has already sent a BYE for the failed - negotiation. + ASTERISK-26776 #close - ASTERISK-25772 #close - Reported by: Dmitriy Serov + Change-Id: I884b6f4e8233a355d0be687ec78d41bc0e4d3fd2 - Change-Id: I44ad0bd0605e8eeb7035c890d6f97a1331f1a836 +2017-03-20 16:27 +0000 [fc794de756] Sean Bright -2016-06-27 17:19 +0000 [08d3b9a89e] Richard Mudgett + * bridge_softmix: Ignore non-voice frames from translator - * res_pjsip_session.c: End call on initial invalid SDP negotiation. + Some codecs - codec_speex specifically - take voice frames and return + other types of frames, like CNG. If we subsequently treat those as + voice frames, we'll run into trouble when destroying the frame because + of the requirement that each voice frame have an associated format. - When an incoming call defers SDP negotiation and then sends us an invalid - SDP in the ACK, we need to send a BYE to disconnect the call. In this - case SDP negotiation has failed and we don't have valid media streams - negotiated. + ASTERISK-26880 #close + Reported by: Kirsty Tyerman - ASTERISK-25772 + Change-Id: I43f8450c48fb276ad8b99db8512be82949c1ca7c - Change-Id: Ia358516b0fc1e6c4c139b78246f10b9da7a2dfb8 +2017-03-14 23:49 +0000 [25016a74f8] Aaron An -2016-06-23 15:13 +0000 [e6e12c752c] Richard Mudgett + * audiohook.c: Lost RTP packets lead to out-of-sync MixMonitor. - * res_pjsip.c: Register PJMEDIA error code decoder. + Fixed a bug in function "ast_audiohook_write_frame" that checked the + variable other_factory_samples and only flushed the factories, so they + would be in sync, when other_factory_samples > 0. When there is not any + rtp incoming the variable other_factory_samples will be 0, and although + the result of "our_factory_ms - other_factory_ms" may be very large, + this led to the record file not syncing. - Registering the PJMEDIA error codes allows errors found when parsing an - incoming SDP to be easier to figure out. + ASTERISK-26875 #close + Reported-by: Aaron An + Tested-by: Aaron An - "Missing SDP rtpmap for dynamic payload type (PJMEDIA_SDP_EMISSINGRTPMAP)" - is much easier to understand than "Unknown error 220030". + Change-Id: Ia4d890fb8fc1636a7188502bab35f555685aea22 - ASTERISK-25772 +2017-03-18 12:30 +0000 [fc71c18a9b] Sean Bright - Change-Id: I44b2dcea656fedd7593171be9e845880a2c70ca0 + * thread safety: Don't use getprotobyname() -2016-06-27 16:56 +0000 [5d2fc6bab7] Richard Mudgett + POSIX does not require getprotobyname() to be thread safe and some + implementations use static memory which causes issues when multiple + threads are used. - * res_pjsip_session.c: Remove unused parameter from handle_incoming(). + Further, our usage of it today is just to ultimately get IPPROTO_TCP + for calls to setsockopt(). So instead we just use IPPROTO_TCP directly. - Change-Id: Iedd182d189ec947c42edc2c66c4bda3c22060daa + Change-Id: I2e14e58674808f7ce99b2f5e900d0f90d0d8da48 -2016-06-22 18:02 +0000 [656ed73ac6] Richard Mudgett +2017-03-19 13:26 +0000 [516e028b44] Sean Bright - * res_pjsip: Add missing NULL checks when using pjsip_inv_end_session(). + * res_rtp_asterisk: Pass correct data length to ast_rtcp_interpret - pjsip_inv_end_session() is documented as being able to return the - passed in tdata parameter set to NULL on success. + We are currently passing in the capacity of the read buffer instead of the + number of bytes that we actually read off the wire. - Change-Id: I09d53725c49b7183c41bfa1be3ff225f3a8d3047 + Change-Id: I60465049727d955c7f9a5e529e6f2aaff04cda36 -2016-06-30 15:17 +0000 [4f7b859726] Richard Mudgett +2017-03-14 09:27 +0000 [79069f8ccb] Robert Mordec - * features: Fix channel datastore access. + * app_queue: Member stuck as pending after forwarding previous call from queue - Found as a result of the testsuite tests/callparking test crashing. + Queue member will get stuck in pending_members if queue calls a device + that is different from the one observed for state changes. - Several calls to ast_get_chan_featuremap_config() and - ast_get_chan_features_xfer_config() did not lock the channel before - calling so the channel's datastore list was accessed without the lock's - protection. Apparently another thread deleted a datastore on the - channel's list while the crashing thread was walking the list. Crash at - 0xdeaddead due to MALLOC_DEBUG's memory filler value as a result. + This patch removes members from pending_members as a result of channel stasis + events such as blind or attended transfers and hangup. - * Add missing channel locks to calls that were not already protected - as the doxygen for those calls indicates. + ASTERISK-26862 #close - Change-Id: Id273b3d305cc616406c353cbc841b2b7655efaa1 + Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727 -2016-06-30 08:25 +0000 [5ad7e1c09a] gtjoseph +2017-02-22 23:26 +0000 [8cb4f9cea1] Richard Mudgett - * configure: Fix HAVE_PJSIP_EVSUB_GRP_LOCK not set with external pjproject + * CHANNEL(callid): Give dialplan access to the callid. - There was a typo in configure.ac preventing HAVE_PJSIP_EVSUB_GRP_LOCK - from getting set when using an external pjproject. + * Added CHANNEL(callid) to retrieve the call identifier log tag associated + with the channel. 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. - ASTERISK-26099 #close - Reported-by: Ross Beer + ASTERISK-26878 - Change-Id: I709af70428e125fb5ccd44b171d25dd29141f0ae + Change-Id: I2c97ebd928b6f3c5bc80c5729e4d3c07f453049f -2016-06-29 15:31 +0000 [dab2a6b689] Matt Jordan +2017-03-16 08:42 +0000 [c13ea6080e] Sean Bright - * hep.conf.sample: Default 'enabled' to 'no' + * app_queue: Fix locking behavior in stasis message handlers - Following the principle of least surprise, we should not be sending - massive numbers of PJSIP and RTCP HEP packets out into the ether to some - only-slightly-random IP address. Having 'enabled' set to 'no' in the - sample configuration file should prevent this from happening for those - who run 'make samples'. + The queue_stasis_data structure contains various mutable fields that require + appropriate locking. Specifically, the 'dying,' 'member_uniqueid,' and + 'caller_uniqueid' fields need to be locked when read from or written to. - ASTERISK-26159 #close + Change-Id: I246b7dbff8447acc957a1299f6ad0ebd0fd39088 - Change-Id: I1753a64ca83a3442a6ebdc31061f8185c062d9b1 +2017-03-07 19:28 +0000 [15aa3c0a23] Sean Bright -2016-06-29 15:09 +0000 [9129ac8e73] Matt Jordan + * chan_sip: Add rtcp-mux support - * pjproject/patches/config_site: Increase the max number of ICE candidates + ASTERISK-26846 #close - When negotiating ICE candidates with WebRTC capable endpoints, many - networks will result in a browser offering ICE candidates that exceeds - the default number of max candidates, 16. This patch bumps the max - candidates to 32, with the max checks at twice the number of candidates. - In practice, this has shown to be sufficient for browser/WebRTC - negotiation. + Change-Id: I541a1602ff55ab73684e9f8002edb9e0e745d639 - Change-Id: Ifd8da8b315f5ae14814d4ce20e10d2e6355020e5 +2017-03-16 16:50 +0000 [57656e2b5b] Richard Mudgett -2016-06-28 09:00 +0000 [4045e6d8ba] gtjoseph + * app_confbridge: Fix ConfbridgeTalking AMI event description. - * codecs: Fix ABI incompatibility created by adding format_name to ast_codec + Thanks to Chris Howard for pointing this out on the wiki. - Adding format_name even to the end of ast_codec caused issued with - binary codec modules because the pointer would be garbage in asterisk - when they registered. So, the ast_codec structure was reverted and an - internal_ast_codec structure was created just for use in codec.c. A new - internal-only API was also added (__ast_codec_register_with_format) so - that codec_builtin could register codecs with the format_name in a - separate parameter rather than in the ast_codec structure. + Change-Id: I18e56de09a70e736b5d04719d45ef29cf0636705 - ASTERISK-26144 #close - Reported-by: Alexei Gradinari +2017-03-16 16:37 +0000 [82982a191c] Richard Mudgett - Change-Id: I6df1b08f6a6ae089db23adfe1ebc8636330265ba + * res_pjsip_asterisk.c: Fix compile error if libsrtp is not installed. -2016-06-28 08:22 +0000 [651290a809] gtjoseph + struct ast_rtcp does not define the dtls member if SRTP is not enabled. - * BuildSystem: Fix a few issues hightlighted by gcc 6.x + ASTERISK-26732 - gcc 6.1.1 caught a few more issues. - Made sure the unit tests still pass for the func_env and stdtime - issues. + Change-Id: Id15ea212e04490e012f2cf4a56818b4dd948875e - ASTERISK-26157 #close +2017-03-16 15:45 +0000 [49b1f1ca16] Richard Mudgett - Change-Id: I6664d8f34a45bc1481d2a854481c7878b0c1cf8e + * res_pjsip_sdp_rtp.c: Fix cut-n-paste error -2016-06-28 10:33 +0000 [83f2c2573b] Matt Jordan + We were inadvertenly referencing the cos_video option to determine if we + should set the tos_audio and cos_audio value on the RTP instance. - * configs/basic-pbx/modules.conf: Remove 'bad' modules + Change-Id: Ia7964f486801d39dc6f5dae570baff079e1595b0 - This patch removes the following modules: - - pbx_functions: It never existed. - - res_pjsip_log_forwarder: It no longer exists. - - res_hep_pjsip: The base HEP module wasn't loaded, and most basic PBXs - aren't going to be installing HOMER - - res_pjsip_phoneprov_provider: The basic res_phoneprov module isn't - loaded, and we aren't configured to make use of the - module +2017-03-16 10:39 +0000 [e6dc28b78f] Matt Jordan - Change-Id: Id91f68cae7c9c8c3d370029fe1268cb51e4ff5a5 + * res/res_pjsip_session: Only check localnet if it is defined -2016-06-22 11:19 +0000 [75818b4084] Joshua Colp + If local_net is not defined on a transport, transport_state->localnet + will be NULL. ast_apply_ha will, be default, return AST_SENSE_ALLOW in + this case, causing the external_media_address, if set, to be skipped. - * siren: Add format attribute modules for Siren7 and Siren14. + This patch causes us to only check if we are sending within a network if + local_net is defined. - This change removes hardcoded SDP parsing and generation for - Siren7 and Siren14 from chan_sip and moves it to format attribute - modules so it can also be used by chan_pjsip. + ASTERISK-26879 #close - With this the fmtp lines for both are added with the bitrate - information. + Change-Id: Ib661c31a954cabc9c99f1f25c9c9a5c5b82cbbfb - ASTERISK-26021 +2017-03-14 16:22 +0000 [44568fc712] Richard Begg - Change-Id: Ibb004eda37a14c0a35ef0613f6237977fc800037 + * res_pjsip_sdp_rtp: RTP instance does not use same IP as explicit transport -2016-06-23 04:33 +0000 [6e87bf746a] Alexander Traud + Currently a wildcard address is used for the local RTP socket, which + will not always result in the same address as used by the SIP socket + (e.g. if explicit transport addresses are configured). + Use the transport's host address when binding new local RTP sockets if + available. - * BuildSystem: Avoid obsolete warning with AC_TYPE_SIGNAL on autoconf. + ASTERISK-26851 - Removed the obsolete macro AC_TYPE_SIGNAL because Asterisk does not use K&R C - but requires ANSI C anyway. + Change-Id: I098c29c9d1f79a4f970d72ba894874ac75954f1a - ASTERISK-26046 +2017-03-07 08:33 +0000 [5013d8f5d3] George Joseph - Change-Id: I914c014385e1862102d90fe7650621def78db02e + * res_pjsip: Symmetric transports -2016-06-22 15:04 +0000 [8c7017f76e] Corey Farrell + A new transport parameter 'symmetric_transport' has been added. - * res_fax: Fix reference leak in fax_v21_session_new. + 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. - fax_v21_session_new created a session details object but only released - the allocation reference during error conditions. fax_session_new adds - it's own reference to details if needed so the caller is always - responsible for cleaning it's own reference. + * config_transport was modified to accept and store the new parameter. - ASTERISK-26141 #close + * config_transport/transport_apply was updated to store the transport + name in the pjsip_transport->info field using the pjsip_transport->pool + on UDP transports. - Change-Id: Ie7fc52a83b6596ce9ce2d5a2bd9f3e204f48fc88 + * A 'multihomed_on_rx_message' function was added to + pjsip_message_ip_updater that, for incoming requests, retrieves the + transport name from pjsip_transport->info and retrieves the transport. + If transport->symmetric_transport is set, an 'x-ast-txp' uri parameter + containing the transport name is added to the incoming Contact header. -2016-06-22 14:25 +0000 [6fa3ed0679] Alexei Gradinari + * An 'ast_sip_get_transport_name' function was added to res_pjsip. + It takes an ast_sip_endpoint and a pjsip_sip_uri and returns a + transport name if endpoint->transport is set or if there's an + 'x-ast-txp' parameter on the uri and the uri host is an ipv4 or + ipv6 address. Otherwise it returns NULL. - * res_pjsip: improve realtime performance #2 + * An 'ast_sip_dlg_set_transport' function was added to res_pjsip + which takes an ast_sip_endpoint, a pjsip_dialog, and an optional + pjsip_tpselector. It calls ast_sip_get_transport_name() and if + a non-NULL is returned, sets the selector and sets the transport + on the dialog. If a selector was passed in, it's updated. - The patch removes updating all Endpoints' status on startup. - Instead, only non-qualified aors with static contact - and non-qualified non-expired contacts are retrieved from the realtime to - update the endpoint status to ONLINE. - The endpoint name was added to the contact object to simply find the endpoint - that created this contact. + * res_pjsip/ast_sip_create_dialog_uac and ast_sip_create_dialog_uas + were modified to call ast_sip_dlg_set_transport() instead of their + original logic. - The status of endpoints with qualified aors will be updated by 'qualify' - functions. + * res_pjsip/create_out_of_dialog_request was modified to call + ast_sip_get_transport_name() and pjsip_tx_data_set_transport() + instead of its original logic. - ASTERISK-26061 #close + * Existing transport logic was removed from endpt_send_request + since that can only be called after a create_out_of_dialog_request. - Change-Id: Id324c1776fa55d3741e0c5457ecac0304cb1a0df + * res_pjsip/ast_sip_create_rdata was converted to a wrapper around + a new 'ast_sip_create_rdata_with_contact' function which allows + a contact_uri to be specified in addition to the existing + parameters. (See below) -2016-06-22 13:41 +0000 [d293ead077] gtjoseph + * res_pjsip_pubsub/internal_pjsip_evsub_send_request was eliminated + since all it did was transport selection and that is now done in + ast_sip_create_dialog_uac and ast_sip_create_dialog_uas. - * res_rtp_asterisk: Fix a self-comparison identified by gcc 6 + * 'contact_uri' was added to subscription_persistence. This was + necessary because although the parsed rdata contact header has the + x-ast-txp parameter added (if appropriate), + subscription_persistence_update stores the raw packet which + doesn't have it. subscription_persistence_recreate was then + updated to call ast_sip_create_rdata_with_contact with the + persisted contact_uri so the recreated subscription has the + correct transport info to send the NOTIFYs. - gcc 6 caught a previously unidentified self-comparison in - ice_candidate_cmp. Fixed it and re-ordered the predicates for better - short-circuiting. + * res_pjsip_session/internal_pjsip_inv_send_msg was eliminated since + all it did was transport selection and that is now done in + ast_sip_create_dialog_uac. - ASTERISK-26140 #close + * pjsip_message_ip_updater/multihomed_on_tx_message was updated + to remove all traces of the x-ast-txp parameter from the + outgoing headers. - Change-Id: I3da713c568e24064430257b3502fbdafd35af7a7 + NOTE: This change does NOT modify the behavior of permanent + contacts specified on an aor. To do so would require that the + permanent contact's contact uri be updated with the x-ast-txp + parameter and the aor sorcery object updated. If we need to + persue this, we need to think about cloning permanent contacts into + the same store as the dynamic ones on an aor load so they can be + updated without disturbing the originally configured value. -2016-06-22 10:37 +0000 [c7309a5254] gtjoseph + You CAN add the x-ast-txp parameter to a permanent contact's uri + but it would be much simpler to just set endpoint->transport. - * chan_unistim: Fix memcpy in get_to_address + Change-Id: I4ee1f51473da32ca54b877cd158523efcef9655f - A code block only enabled when HAVE_PKTINFO is not defined (FreeBSD) - was using a pointer to a pointer as the destination of a memcpy and a - '&' instead of '*' in the sizeof. +2017-03-16 09:07 +0000 [68749a9fa7] Joshua Colp - ASTERISK-26138 #close + * res_rtp_asterisk: Fix crash when RTCP is not present when DTLS is stopped. - Change-Id: Id4927ff256c0e470bdf7bcfc025146a2f656e708 + This change removes an assumption that when DTLS is stopped + an RTCP session will be present on the RTP session. This is not + always the case. -2016-06-20 13:21 +0000 [b6bd97eea2] Mark Michelson + ASTERISK-26732 - * Fix Alembic upgrades. + Change-Id: Ib9f7c09ce0b005efe362dbcc8795202b18f94611 - A non-existent constraint was being referenced in the upgrade script. - This patch corrects the problem by removing the reference. +2017-03-15 13:24 +0000 [c87e7dd9ec] Richard Mudgett - In addition, the head of the alembic branch referred to a non-existent - revision. This has been fixed by referring to the proper revision. + * autochan/mixmonitor/chanspy: Fix unsafe channel locking and references. - This patch fixes another realtime problem as well. Our Alembic scripts - store booleans as yes or no values. However, Sorcery tries to insert - "true" or "false" instead. This patch introduces a new boolean type that - translates to "yes" or "no" instead. + Dereferencing struct ast_autochan.chan without first calling + ast_autochan_channel_lock() is unsafe because the pointer could change at + any time due to a masquerade. Unfortunately, ast_autochan_channel_lock() + itself uses struct ast_autochan.chan unsafely and can result in a deadlock + if the original channel happens to get destroyed after a masquerade in + addition to the pointer getting changed. - ASTERISK-26128 #close + The problem is more likely to happen with v11 and earlier because + masquerades are used to optimize out local channels on those versions. + However, it could still happen on newer versions if the channel is + executing a dialplan application when the channel is transferred or + redirected. In this situation a masquerade still must be used. - Change-Id: I51574736a881189de695a824883a18d66a52dcef + * Added a lock to struct ast_autochan to safely be able to use + ast_autochan.chan while trying to get the channel lock in + ast_autochan_channel_lock(). The locking order is the channel lock then + the autochan lock. Locking in the other direction requires deadlock + avoidance. -2016-06-22 10:51 +0000 [3b4f5d1345] gtjoseph + * Fix unsafe ast_autochan.chan usages in app_mixmonitor.c. - * test_res_pjsip_scheduler: Add 'depends' on pjproject in MODULEINFO + * Fix unsafe ast_autochan.chan usages in app_chanspy.c. - Since the file was missing the depends on pjproject, it wasn't - picking up the pjproject related include path. If there was no - system installed pjproject and pjproject-bundled was used, a compile - would fail because pjsip.h wasn't found. + * app_chanspy.c: Removed unused autochan parameter from next_channel(). - ASTERISK-26139 #close + ASTERISK-26867 - Change-Id: I2ee64a999051452bc198c4e2c168c70769cd3757 + Change-Id: Id29dd22bc0f369b44e23ca423d2f3657187cc592 -2016-06-22 10:55 +0000 [5f23aacda4] Alexander Traud +2017-03-07 14:13 +0000 [10fa49e327] Mark Michelson - * BuildSystem: Avoid obsolete warning with AC_FUNC_SETVBUF_REVERSED on autoconf. + * Add rtcp-mux support - Removed the obsolete macro AC_FUNC_SETVBUF_REVERSED because Asterisk does not - support the platform SVR2 from the year 1987 anymore. + This commit adds support for RFC 5761: Multiplexing RTP Data and Control + Packets on a Single Port. Specifically, it enables the feature when + using chan_pjsip. - ASTERISK-26046 + A new option, "rtcp_mux" has been added to endpoint configuration in + pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with + whatever it communicates with. Asterisk follows the rules set forth in + RFC 5761 with regards to falling back to standard RTCP behavior if the + far end does not indicate support for rtcp-mux. - Change-Id: I28161b037feb2d29ab46ed20e785928460226c22 + The lion's share of the changes in this commit are in + res_rtp_asterisk.c. This is because it was pretty much hard wired to + have an RTP and an RTCP transport. The strategy used here is that when + rtcp-mux is enabled, the current RTCP transport and its trappings (such + as DTLS SSL session) are freed, and the RTCP session instead just + mooches off the RTP session. This leads to a lot of specialized if + statements throughout. -2016-06-21 06:52 +0000 [804005d251] Torrey Searle + ASTERISK-26732 #close + Reported by Dan Jenkins - * res_rtp_asterisk: fix memory leak in dtls + Change-Id: If46a93ba1282418d2803e3fd7869374da8b77ab5 - ensure that cert bios get freed after creating the fingerprint +2017-03-14 08:49 +0000 [dc4cdafd42] Torrey Searle - ASTERISK-26129 #close + * res/res_pjsip_refer: call xfer w/o extension - Change-Id: I44d23aea07dce80176ca1ff877c5ace9452ef451 + When transfering to a URI without an extension, ensure that the + s extension of the dialplan is entered -2016-06-21 17:42 +0000 [f572b26495] Richard Mudgett + ASTERISK-26869 #close - * res_pjproject.c: Replace inlined DEBUG_ATLEAST() with macro. + Change-Id: I07403df66cf93f09e00a40ab5b41bfc6f72b1525 - Change-Id: I8799fb0a347ad76e747dafd0eacf1ea1086b9a8c +2017-03-09 11:05 +0000 [982d6173c5] Sean Bright -2016-06-12 11:19 +0000 [b57cd01404] gtjoseph + * app_queue: Handle the caller being redirected out of a queue bridge - * res_pjsip_pubsub: Address SEGV when attempting to terminate a subscription + A caller can leave the Queue() application after being bridged with a + member in a few ways: - Occasionally under load we'll attempt to send a final NOTIFY on a - subscription that's already been terminated and a SEGV will occur - down in pjproject's evsub_destroy function. This is a result of a - race condition between all the paths that can generate a notify - and/or destroy the underlying pjproject evsub object: + * Caller or member hangup + * Caller is transferred somewhere else (blind or atx) + * Caller is externally redirected elsewhere - * The client can send a SUBSCRIBE with Expires: 0. - * The client can send a SUBSCRIBE/refresh. - * The subscription timer can expire. - * An extension state can change. - * An MWI event can be generated. - * The pjproject transaction timer (timer_b) can expire. + The first 2 scenarios are currently handled by subscribing to stasis + messages, but the 3rd is not explicitly covered. If a caller is + redirected away from the Queue() application, the member who was last + bridged with that caller will remain in an "In use" state until the + caller hangs up. - Normally when our pubsub_on_evsub_state is called with a terminate, - we push a task to the serializer and return at which point the dialog - is unlocked. This is usually not a problem because the task runs - immediately and locks the dialog again. When the system is heavily - loaded though, there may be a delay between the unlock and relock - during which another event may occur such as the subscription timer - or timer_b expiring, an extension state change, etc. These may also - cause a terminate to be processed and if so, we could cause pjproject - to try to destroy the evsub structure twice. There's no way for us to - tell that the evsub was already destroyed and the evsub's group lock - can't tolerate this and SEGVs. + This patch adds handling of the caller leaving the queue via + redirection. We monitor the caller-member bridge, and if the caller is + the one that leaves, we treat it the same as we would a caller hangup. - The remedy is twofold. + ASTERISK-26400 #close + Reported by: Etienne Lessard - * A patch has been submitted to Teluu and added to the bundled - pjproject which adds add/decrement operations on evsub's group lock. + Change-Id: Iba160907770de5a6c9efeffc9df5a13e9ea75334 - * In res_pjsip_pubsub: - * configure.ac and pjproject-bundled's configure.m4 were updated - to check for the new evsub group lock APIs. - * We now add a reference to the evsub group lock when we create - the subscription and remove the reference when we clean up the - subscription. This prevents evsub from being destroyed before - we're done with it. - * A state has been added to the subscription tree structure so - termination progress can be tracked through the asyncronous tasks. - * The pubsub_on_evsub_state callback has been split so it's not doing - double duty. It now only handles the final cleanup of the - subscription tree. pubsub_on_rx_refresh now handles both client - refreshes and client terminates. It was always being called for - both anyway. - * The serialized_on_server_timeout task was removed since - serialized_pubsub_on_rx_refresh was almost identical. - * Missing state checks and ao2_cleanups were added. - * Some debug levels were adjusted to make seeing only off-nominal - things at level 1 and nominal or progress things at level 2+. +2017-03-15 08:44 +0000 [0b8a57af6d] Joshua Colp - ASTERISK-26099 #close - Reported-by: Ross Beer. + * res_pjsip_endpoint_identifier_ip: Don't output error if no header_match. - Change-Id: I779d11802cf672a51392e62a74a1216596075ba1 + This change ensures that if no header_match option is set on an + identify an error message is not output stating the option is set + to an invalid value. -2016-06-21 07:05 +0000 [6eb0354f2d] Alexander Traud + ASTERISK-26863 - * res_rtp_asterisk: Use latest DTLS version available by underlying platform. + Change-Id: I239bc6d2319dd3da24ba96a38d4d6e9b5526d62a - Do not use DTLSv1_method() but DTLS_method() when available in OpenSSL of the - underlying platform. This change enables DTLS 1.2 since OpenSSL 1.0.2, for - WebRTC (DTLS-SRTP via SIP-over-WebSockets). This change enables AEAD-based - cipher-suites. +2017-03-14 07:50 +0000 [1475604eff] Matt Jordan - ASTERISK-26130 #close + * res_pjsip_endpoint_identifier_ip: Add an option to match requests by header - Change-Id: I41f24448d6d2953e8bdb97c9f4a6bc8a8f055fd0 + This patch adds a new features to the endpoint identifier module, + 'match_header'. When set, inbound requests are matched by a provided SIP + header: value pair. This option works in conjunction with the existing + 'match' configuration option, such that if any 'match*' attribute + matches an inbound request, the request is associated with the specified + endpoint. -2016-06-21 10:53 +0000 [596d0b0bc3] Scott Griepentrog + Since this module now identifies by more than just IP address, + appropriate renaming of the module and/or variables can be done in a + non-release branch. - * PJSIP: provide transport type with received messages + ASTERISK-26863 #close - The receipt of a SIP MESSAGE may occur over any transport including TCP - and TLS. When the message is received, the original URI is added to the - message in the field PJSIP_RECVADDR, but this is insufficient to ensure - a reply message can reach the originating endpoint. This patch adds the - PJSIP_TRANSPORT field populated with the transport type. + Change-Id: Icfc14835c962f92e35e67bbdb235cf0589de5453 + (cherry picked from commit 30f52d79d7fc9ab0b628bef2b61ea515413795a2) - ASTERISK-26132 #close +2017-03-14 16:16 +0000 [f997090877] Richard Mudgett - Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e + * pbx.c: Fix crash from malformed exten pattern. -2016-06-21 08:01 +0000 [9e222efbf2] Alexander Traud + Forgetting to indicate an exten is a pattern can cause a crash if the + "pattern" has a character set range. e.g., "9999[3-5]" The crash is due + to a buffer overwrite because the '-' exten eye-candy wasn't removed as + expected and overran the allocated space. - * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf. + The buffer overwrite is fixed two ways in this patch. - Some configure scripts used both AC_HELP_STRING and its replacement - AS_HELP_STRING. For consistency and to avoid obsolete warnings, those were - changed to AS_HELP_STRING. + 1) Fix ext_strncpy() to distinguish between pattern and non-pattern + extens. Now '-' characters are removed when they are eye-candy and not + when they are part of a pattern character set. Since the function is + private to pbx.c, the return value now returns the number of bytes written + to the destination buffer instead of the strlen() of the final buffer so + the callers that care don't need to add one. - ASTERISK-26046 + 2) Fix callers to ext_strncpy() to supply the correct available buffer + size of the destination buffer. - Change-Id: I8aad4fd2bdee40aa2a31ce3339a1eb33ff4f5b0f + ASTERISK-26668 -2016-06-20 10:29 +0000 [e94aae00a7] Joshua Colp + Change-Id: I555d97411140e47e0522684062d174fbe32aa84a - * res_pjsip_session: Handle race condition at shutdown with timer. +2017-03-14 16:51 +0000 [0dc007e94d] Richard Begg - When shutting down res_pjsip_session will get unloaded before res_pjsip. - The act of unloading unregisters all the PJSIP services and sets - their module IDs to -1. In some cases it is possible for a timer to - occur after this happens which calls into res_pjsip_session. The - res_pjsip_session module can then try to get the session from the - INVITE session using the module ID. Since the module ID is now -1 - this fails. + * chan_iax2: Reload of iax peer results in loss of host address/port - This change stores a copy of the module ID and uses it for the timer - callback scenario. If the module ID is -1 the callback immediately - returns but if the module ID is valid then it continues as normal. + When using a non-dynamic peer address, build_peer() invalidates the + peer address structure by setting the address family to unspecified. + However, if dnsmgr is enabled, the subsequent call to ast_dnsmgr_lookup() + will not amend the peer address if the cache is still valid, resulting + in peer connectivity failures. + To fix this, we call ast_dnsmgr_refresh() instead. - This works as the original ID of the module is guaranteed to still - be valid when used with the INVITE session. + ASTERISK-26865 - ASTERISK-26127 #close + Change-Id: Id8a89a2f771ebbaf32255a35fe596a6dcb97a082 - Change-Id: I88df72525c4e9ef9f19c13aedddd3ac4a335c573 +2017-03-14 15:12 +0000 [59130260e7] Matt Jordan -2016-06-20 12:13 +0000 [0a30008224] Richard Mudgett + * configure: Don't use the progress bar with curl when downloading to stdout - * app_voicemail.c: Fix IMAP compile error. + In some scenarios, such as when there may not be a terminal (such as + inside a Docker container), curl will apparently direct the progress bar + to stdout. This can cause extra data to be appended to a file curl'd + down to stdout, resulting in md5 verification failures. - Fix compile error introduced by the patch for - ASTERISK-26045 + This patch removes the progress bar, and tells curl to download the file + silently. - Change-Id: I5b02876266f2824f4cec2b54d6ff4db5de5778d3 + ASTERISK-26872 #close -2016-06-17 13:51 +0000 [820ed3d4b3] Alexei Gradinari + Change-Id: Ie860b020f627d4372b3e7ce9453de5faafeebe6c - * fix: memory leaks, resource leaks, out of bounds and bugs +2017-03-02 17:11 +0000 [8470c2bdea] George Joseph - ASTERISK-26119 #close + * RFC sdp: Initial SDP creation - Change-Id: Iecbf7d0f360a021147344c4e83ab242fd1e7512c + * Added additional fields to ast_sdp_options. + * Re-organized ast_sdp. + * Updated field names to correspond to RFC4566 terminology. + * Created allocs/frees for SDP children. + * Created getters/setters for SDP children where appropriate. + * Added ast_sdp_create_from_state. + * Refactored res_sdp_translator_pjmedia for changes. -2016-06-13 17:40 +0000 [11caa10cf5] Mark Michelson + Change-Id: Iefbd877af7f5a4d3c74deead1bff8802661b0d48 - * ARI: Ensure announcer channels are destroyed. +2017-03-14 09:55 +0000 [05713c36ea] Matt Jordan - Announcer channels were not being destroyed because the - stasis_app_control structure that referenced them was not being - destroyed. The control structure was not being destroyed because it was - not being unlinked from its container. It was not being unlinked from - its container because the after bridge callback for the announcer - channel was not being run. The after bridge callback was not being run - because the after bridge datastore was not being removed from the - channel on destruction. The channel was not being destroyed because the - hangup that used to destroy the channel was now only reducing the - reference count to one. The reference count of the channel was only - being reduced to one because the stasis_app_control structure was - holding the final reference... + * configs/samples/hep.conf.sample: Clarify how the HEP stack works - The control structure used to not keep a reference to the channel, so - that loop described above did not happen. + This patch updates the documenation in hep.conf.sample to better specify + how the various HEP modules interact. - The solution is to manually remove the control structure from its - container when the playback on a bridge is complete. + ASTERISK-26717 #close - ASTERISK-26083 #close - Reported by Joshua Colp + Change-Id: I337fb742a89e3ec5edc7fc7a7a0295218d841124 - Change-Id: I0ddc0f64484ea0016245800b409b567dfe85cfb4 +2017-03-14 09:59 +0000 [0ded269bfa] Roman Bedros (License 6842) -2016-06-20 08:05 +0000 [f72ffc1ff9] Alexander Traud + * funcs/func_devstate: Remove new line in Device field of during module load - * http: leverage 'bindaddr' for TLS in http.conf + During module loading of func_devstate, Asterisk emits the current + device state of all Custom device states currently stored in the AstDB. + This was erroneously including a new line character ('\n') to the end of + the device state, causing two new lines to be emitted in + DeviceStateChange AMI events. - The internal HTTP/WebSocket server supports both TCP and TLS, which can be - activated separately via the file http.conf. The source code intends to re-use - the TCP parameter 'bindaddr' for TLS, even if 'tlsbindaddr' is not specified - explicitly. This did not work because of a typo. This change resolves this typo. + Note that this only happened for those device state changes that + occurred during startup. Regular device state changes for Custom device + states are handled elsewhere, and did not have the newline. - ASTERISK-26126 #close + ASTERISK-26643 #close + Reported by: Roman Bedros + Tested by: Matt Jordan + patches: + ami_devstate.diff uploaded by Roman Bedros (License 6842) - Change-Id: I5efb0409ae12044dfb3495b6b97b6d40a8c9c51f + Change-Id: I1f4c02fc79c448d43bf725f5039c83d9611d7d93 -2016-05-18 17:37 +0000 [3c80f84cd0] Richard Mudgett +2017-03-14 09:37 +0000 [b03b72717f] Matt Jordan - * res_pjsip_transport_management.c: Misc cleanups to survive shutdown. + * main/stasis_cache: Demote the ERROR message when removing a nonexistent item - * In unload_module(), reordered destroying things to minimize the window - that the global transports container could be used by other threads on - shutdown. When shutting down you need to stop things in the opposite - order of creation. + This patch demotes the ERROR message that is displayed when a + nonexistent item is removed from the Stasis cache. The genesis of this + demotion is due to chan_sip's realtime peers and their interaction with + Asterisk's core ast_endpoint code, but ostensibly it could happen from + other channel drivers as well. - * Put the global transports container into an AO2_GLOBAL_OBJ_STATIC to - eliminate the crash potential by other threads using the container on - shutdown. + Since Mark Michelson already did an excellent job of explaining on this + issue, it is quoted here for posterity: - * Made struct monitored_transport.sip_received not use - ast_atomic_fetchadd_int() since it is used as a boolean value that is only - set TRUE. It was previously incremented for every received SIP message - and could theoretically overflow. + "Internally, when a realtime peer is retrieved, Asterisk creates an + ast_endpoint structure. When that peer is destroyed, the ast_endpoint is + destroyed as well. Part of the destruction of the ast_endpoint involves + clearing the Stasis cache of all information about that endpoint. The + problem here is that the act of creating the ast_endpoint is not enough + to actually put any information in the Stasis cache. Instead, something + has to happen, such as a state change, in order for the Stasis cache to + have any information about that endpoint. When a device registers, + chan_sip creates an ast_endpoint structure, processes the REGISTER, and + then destroys the ast_endpoint. When the ast_endpoint is destroyed, + there is nothing to destroy in the Stasis cache, so an error message is + emitted. When you use rtcachefriends, ast_endpoint structures persist + for the lifetime of the module and so you do not see this error + message." - * In monitored_transport_state_callback(), allocated the monitored - transport object without a lock since the lock was unused. + ASTERISK-25237 #close - * In keepalive_global_loaded(), removed releasing the transports container - if the keepalive_thread could not be started. I set it up to be tried - again if the user reloads the configuration. + Change-Id: I53cebc6b4a897a1ab9564182b75c177780feff70 - Change-Id: I8d12d16ef564290fa6d25a32334bb5ce8fdf87ff +2017-03-08 12:39 +0000 [2d7e68c075] Matt Jordan -2016-01-05 19:08 +0000 [7c59f2126f] Richard Mudgett + * res_pjsip_endpoint_identifier_ip: Clean up a spaces/tabs issue - * res_pjsip.c: Add check that timer actually got scheduled. + Tabs > spaces. Always. - Change-Id: Iabaa2e5dccf0762c258101ea0eb1487cf6959ad1 + Change-Id: I899ff662361c7ab0327173bd7851a67b53dd65f1 -2016-06-13 13:33 +0000 [51cc5c31c4] Richard Mudgett +2017-03-12 09:21 +0000 [12460b05c1] Joshua Colp - * res_rtp_multicast.c: Fix warning message typo. + * chan_pjsip: Don't assume a session will have a channel. - Change-Id: Ic9928208b9957e09866abe3d9649030942ec52b3 + When querying for PJSIP specific information using the dialplan + function CHANNEL() it is possible that the underlying session + will no longer have a channel associated with it. This is + most likely to occur when the RTCP HEP module attempts to get + the channel name. If this happens then a crash will occur. -2016-02-11 18:15 +0000 [3d0632a9c2] Richard Mudgett + This change just adds a check that the channel exists on the + session before querying it. - * res_pjsip_session.c: Reorganize ast_sip_session_terminate(). + ASTERISK-26857 - Change-Id: I68a2128bcba4830985d2d441e70dfd1ac5bd712b + Change-Id: I113479cffff6ae64cf8ed089e9e1565223426f01 -2016-06-08 06:15 +0000 [ac683f13c9] Alexander Traud +2017-03-10 20:29 +0000 [d1ef127084] George Joseph - * core: Not the configured but granted number of possible file descriptors. + * pjproject_bundled: Reduce the need for rebuilds - With CLI "core show settings", simply the parameter maxfiles of the file - asterisk.conf was shown. If that parameter was not set, nothing was displayed - although the environment might have set a default number itself. Or if maxfiles - were not granted (completely), still maxfiles was shown. Now, the maximum number - of possible file descriptors in the environment is shown. + Bundled pjproject should now only rebuild if one of the menuselect + "Compiler Flags" options changes. - ASTERISK-26097 + Change-Id: If114a2e16b9e77af371a600d6a5e197bbf28fe43 - Change-Id: I2df5c58863b5007b34b77adbe28b885dfcdf7e0b +2017-03-05 15:26 +0000 [36fed72614] Daniel Journo -2016-06-10 10:39 +0000 [4eb8cf2684] Joshua Colp + * pjsip/cli_commands: pjsip show channelstats shows wrong codec - * translate: Enables native Packet-Loss Concealment (PLC) for supporting codecs. + * cli_commands.c Fixed CLI output - This reverts commit 5bfef2a8b4674382f959b21a3b8e14cf1d942bab as it - caused fax test failures. + ASTERISK-26822 #close - ASTERISK-25629 + Change-Id: I3889ef6a8f6738fc312fab42db5efacd6e452b01 - Change-Id: I79de974dc4f63a1cafe0d2509169fd9a6b3cbaf4 +2017-03-08 14:29 +0000 [b14724adb3] Daniel Journo -2016-06-08 06:05 +0000 [0bf1a53db3] Alexander Traud + * res_musiconhold: moh general section is a class and issues warning - * astfd: With RLIMIT_NOFILE only the current value is sensible. + * res_musiconhold.c: Ensure the general section is not treated as + a moh class. - With menuselect "DEBUG_FD_LEAKS" and CLI "core show fd", both the maximum max - and current max of possible file descriptors were shown. Both show the same - value always. Not to confuse users, just the current maximum is shown now. + ASTERISK-26353 #close - ASTERISK-26097 + Change-Id: Ia3dbd11ea2b43ab3e6c820a9827811dd24bea82d - Change-Id: I49cf7952d73aec9e3f6a88942842c39be18380fa +2017-03-08 17:08 +0000 [35cfd2c0cc] Sean Bright -2016-06-07 18:45 +0000 [d338343dac] Joshua Colp + * media_cache: Prefer ast_file_is_readable() over access() - * cel: Ensure only one dial status per channel exists. + Change-Id: Icc0dc6e61b2e68d5cdcb74b016b2726a388c7def - CEL wrongly assumed that a channel would only have a single dial - event on it. This is incorrect. Particularly in a queue each - call attempt to a member will result in a dial event, adding - a new dial status in CEL without removing the old one. This - would cause the container to grow with only one dial status - being removed when the channel went away. The other dial status - entries would remain leaking memory. +2017-03-07 06:25 +0000 [bc2c66b594] Sean Bright - This change fixes the memory leak by ensuring that only one dial - status will only ever exist for each channel. + * pbx_spool: Set AST_OUTGOING_ATTEMPT variable on channel - The behavior during the scenario where multiple events are received - has also been improved. For failure cases the first failure will - be the dial status. If an answer dial status is received, though, - it will take priority and the dial status for the channel will be - answer. + Set a variable on the channel that indicates which attempt number we + are currently performing to allow for attempt-specific behavior. - Memory usage has also been decreased by storing the minimal - amount of information and the code has been cleaned up slightly. + ASTERISK-26568 #close + Reported by: Roman Shubovich - ASTERISK-25262 #close + Change-Id: Iacd7e8d43b0ed5b6cb021c62f41f1a1f5733dd89 - Change-Id: I5944eb923db17b6a0faa7317ff6abc9307c009fe +2017-03-07 07:37 +0000 [4e3b0cedba] Joshua Colp -2016-06-01 13:48 +0000 [1fd3a7849e] Mark Michelson + * res_pjsip_transport_websocket: Add support for IPv6. - * ARI: Ensure proper channel state on operations. + This change adds a PJSIP patch (which has been contributed upstream) + to allow the registration of IPv6 transport types. - ARI was recently outfitted with operations to create and dial channels. - This leads to the ability to try funny stuff. You could create a channel - and then immediately try to play back media on it. You could create a - channel, dial it, and while it is ringing attempt to make it continue in - the dialplan. + Using this the res_pjsip_transport_websocket module now registers + an IPv6 Websocket transport and uses it for the corresponding + traffic. - This commit attempts to fix this by adding a channel state check to - operations that should not be able to operate on outbound channels that - have not yet answered. If a channel is in an invalid state, we will send - a 412 response. + ASTERISK-26685 - ASTERISK-26047 #close - Reported by Mark Michelson + Change-Id: Id1f9126f995b31dc38db8fdb58afd289b4ad1647 - Change-Id: I2ca51bf9ef2b44a1dc5a73f2d2de35c62c37dfd8 +2017-03-08 08:16 +0000 [60998371e3] Daniel Journo -2016-06-08 11:27 +0000 [10019dc70c] Mark Michelson + * app_voicemail: Cannot set fromstring on a per-mailbox basis - * test_http_media_cache: Fix failing test. + * apps/app_voicemail.c fromstring field added to mailbox which will + override the global fromstring if set. - The retrieve_cache_control_directives test has been failing occasionally - in Jenkins. The apparent failure occurs when attempting to validate the - expiration of the retrieved file. + ASTERISK-24562 #close - After reproducing, the problem was pretty clear. At the beginning of the - test, the current time is retrieved. The seconds value of this timestamp - is X. When the file is retrieved, res_http_media_cache calculates the - expiration and in doing so retrieves the current time. In most cases, - since the test executes quickly, it will also retrieve a timestamp with - X seconds. However, if the test starts very near to when the timestamp - seconds are set to increment, res_http_media_cache may retrieve a - timestamp with X+1 seconds instead. + Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe - The test attempted to account for this by allowing a tolerance of 1 - second when validating the expiration. However, the problem was that the - comparisons being used in the validation used > and < operations. This - meant that values that fell within the tolerance (because they equaled - the upper bound of the tolerance) would fail. +2017-03-07 13:38 +0000 [5d0371d743] Mark Michelson - The solution is to use >= and <= operators in the expiration validation. + * res_http_websocket: Fix faulty read logic. - However, I estimated that while the one second tolerance should be - fine on most machines, it would still be possible on a very slow machine - to end up falling outside the one second tolerance. So I have also - relaxed the tolerance of expiration validation to be three seconds - instead. + When doing some WebRTC testing, I found that the websocket would + disconnect whenever I attempted to place a call into Asterisk. After + looking into it, I pinpointed the problem to be due to the iostreams + change being merged in. - The final change here is to add a debug message when validating - expiration so that we can see what values are being compared. + Under certain circumstances, a call to ast_iostream_read() can return a + negative value. However, in this circumstance, the websocket code was + treating this negative return as if it were a partial read from the + websocket. The expected length would get adjusted by this negative + value, resulting in the expected length being too large. - ASTERISK-25959 #close - Reported by Joshua Colp + This patch simply adds an if check to be sure that we are only updating + the expected length of a read when the return from a read is positive. - Change-Id: Ic1a0e10722c1c5d276d5a4d6a67136d6ec26c247 + ASTERISK-26842 #close + Reported by Mark Michelson -2016-06-03 01:20 +0000 [56bdf048d2] Timo Teräs + Change-Id: Ib4423239828a013d27d7bc477d317d2f02db61ab - * Add support for OGG/Speex file format +2017-03-07 08:12 +0000 [d51ca4b406] Jean Aunis - ASTERISK-18995 #close + * chan_sip: Call not cancelled after receiving a 422 response - Change-Id: I98518bd28fc8f95668b3fe27d2cab45045ff3f7a + When receiving a 422 response, the invitestate variable must be reset to + INV_CALLING. -2016-06-09 10:33 +0000 [f0855358a6] gtjoseph + ASTERISK-26841 - * cdr.c: Remove assert in base_process_dial_end + Change-Id: Ia0502d6b02192664cefa4e75bafdd2645ce56099 - Scenario: Caller blonde transfer - Bob calls Charlie who answers. - Bob puts Charlie on hold and calls Alice. - Before Alice answers, Bob transfers Charlie to Alice. +2017-03-07 05:22 +0000 [3ed05badb9] Joshua Colp - Charlie's channel triggers an assert because he gets an "ANSWERED" - event even though he never dialed anything. With recent changes to dial - events, this is now a valid scenario so the assert needed to be removed. + * core: Add stream topology changing primitives with tests. - ASTERISK-26103 #close + This change adds a few things to facilitate stream topology changing: - Change-Id: I2679b517b696e7952ab7fb29403df9140e7d1de2 + 1. Control frame types have been added for use by the channel driver + to notify the application that the channel wants to change the stream + topology or that a stream topology change has been accepted. They are + also used by the indicate interface to the channel that the application + uses to indicate it wants to do the same. -2016-06-09 10:37 +0000 [cdb7edbe7b] Mark Michelson + 2. Legacy behavior has been adopted in ast_read() such that if a + channel requests a stream topology change it is denied automatically + and the current stream topology is preserved if the application is + not capable of handling streams. - * chan_pjsip: Lock channel when checking for RTP changes. + Tests have also been written which confirm the multistream and + non-multistream behavior. - bridge_native_rtp can call into an RTP-capable channel driver in order - for the driver to update information about who the channel is - communicating with. For SIP channel drivers, this means deactivating - RTCP and sending a reinvite so that the endpoints can communicate - directly. + ASTERISK-26839 - bridge_native_rtp does the right thing and has the channel locked when - calling into the channel driver. chan_pjsip can't alter session - properties in this thread, though. chan_pjsip queues a task on the - session serializer in order to update properties there. + Change-Id: Ia68ef22bca8e8457265ca4f0f9de600cbcc10bc9 - The problem is that this queued task was not locking the channel. This - meant that the queued task could attempt to deactivate RTCP at the same - time that the channel thread was attempting to process an incoming RTCP - packet. This could lead to a crash. +2017-03-06 15:54 +0000 [272259a2c6] Daniel Journo - This patch fixes the issue by locking the channel in the queued task - when altering RTP properties. + * Saynumber is trying to get "and" from "digits/" subfolder - ASTERISK-26092 #close - Reported by Niklas Larsson + * say.c Changed 'digits/and' to 'vm-and' for en_GB - Change-Id: I3464e226a3c41f6b915f97891e07fa1599e2a159 + ASTERISK-26598 #close -2016-06-03 22:44 +0000 [04ec9c745e] Richard Mudgett + Change-Id: If1b713e5daea6f952b339f139178d292a6c4fcfe - * res_pjsip_registrar.c: Eliminate rx REGISTER request race condition. +2017-03-06 13:15 +0000 [5a74abc53b] Sean Bright - This patch fixes a race condition processing received REGISTER requests - and their retransmissions caused by REGISTER requests being processed by - two threads. The "sip_transaction Unable to register REGISTER transaction - (key exists)" message is a notable symptom of this issue. + * pbx_spool: Gracefully handle long lines in call files - This issue was more likely to happen before the pjsip/distributor - serializers were created. Instead of steps one and two below placing the - REGISTER messages into the same pjsip/distributor they were placed in - random pjsip/default serializers. + Per the linked issue, we aren't checking the buffer filled by fgets() + to determine if it contains a newline, so we will fail to correctly + parse the trailing portion of a long line. - 1) REGISTER requests come in and get placed on the pjsip/distributor - serializer. + This patch increases the buffer size from 256 to 1024, and skips any + line that exceeds that length, logging a warning in the process. - 2) Before the first request is processed a retransmission comes in and is - placed on the same pjsip/distributor serializer. + ASTERISK-17067 #close + Reported by: Dave Olszewski - 3) The first request goes up the pjsip stack and is then shunted off to - the pjsip/aor/ serializer. + Change-Id: I51bcf270c1b4347ba05b43f18dc2094c76f5d7b0 - 4) Before the first request is completed processing in the pjsip/aor/ - serializer, the second request goes up the pjsip stack and is also shunted - off to the pjsip/aor/ serializer. +2017-03-02 21:27 +0000 [c9296b23d1] Richard Mudgett - 5) The first request completes processing and sends out its response. + * core: Cleanup ast_get_hint() usage. - 6) The second request completes processing and tries to send out its - response but pjlib complains that the REGISTER transaction key already - exists. + * manager.c:manager_state_cb() Fix potential use of uninitialized hint[] + if a hint does not exist for the requested extension. Ran into this when + developing a testsuite test. The AMI event ExtensionStatus came out with + the hint header value containing garbage. The AMI event PresenceStatus + also had the same issue. - 7) Sadness ensues. + * manager.c:action_extensionstate() no need to completely initialize the + hint[]. Only initialize the first element. - * The race is eliminated by removing the pjsip/aor/ serializer and - continuing the processing in the pjsip/distributor serializer. Now any - retransmissions queued in the pjsip/distributor serializer will be - processed after the first message is completely processed. + * pbx.c:ast_add_hint() Remove unnecessary assignment. - ASTERISK-26088 #close - Reported by: Richard Mudgett + * chan_sip.c: Eliminate an unneeded hint[] local variable. We only care + about the return value of ast_get_hint() there. - Change-Id: I842d714346088bf717ea27437f1dd85bff0bab5a + Change-Id: Ia9a8786f01f93f1f917200f0a50bead0319af97b -2016-06-03 11:35 +0000 [dcfef53ee2] Richard Mudgett +2017-02-16 04:22 +0000 [7922f26cb0] Jørgen H - * stasis: Add setting subscription congestion levels. + * res_pjsip WebRTC/websockets: Fix usage of WS vs WSS. - Stasis subscriptions and message routers create taskprocessors to process - the event messages. API calls are needed to be able to set the congestion - levels of these taskprocessors for selected subscriptions and message - routers. + According to the RFC[1] WSS should only be used in the Via header + for secure Websockets. - * Updated CDR, CEL, and manager's stasis subscription congestion levels - based upon stress testing. Increased the congestion levels to reduce the - potential for bursty call setup/teardown activity from triggering the - taskprocessor overload alert. CDRs in particular need an extra high - congestion level because they can take awhile to process the stasis - messages. + * Use WSS in Via for secure transport. - ASTERISK-26088 - Reported by: Richard Mudgett + * Only register one transport with the WS name because it would be + ambiguous. Outgoing requests may try to find the transport by name and + pjproject only finds the first one registered. This may mess up unsecure + websockets but the impact should be minimal. Firefox and Chrome do not + support anything other than secure websockets anymore. - Change-Id: Id0a716394b4eee746dd158acc63d703902450244 + * Added and updated some debug messages concerning websockets. -2016-06-02 18:19 +0000 [4879cd875c] Richard Mudgett + * security_events.c: Relax case restriction when determining security + transport type. - * sorcery: Add setting object type congestion levels. + * The res_pjsip_nat module has been updated to not touch the transport + on Websocket originating messages. - Sorcery creates taskprocessors for object types to process object observer - callbacks. An API call is needed to be able to set the congestion levels - of these taskprocessors for selected object types. + [1] https://tools.ietf.org/html/rfc7118 - * Updated PJSIP's contact and contact_status sorcery object type observer - default congestion levels based upon stress testing. Increased the - congestion levels to reduce the potential for bursty register/unregister - and subscribe/unsubscribe activity from triggering the taskprocessor - overload alert. + ASTERISK-26796 #close - ASTERISK-26088 - Reported by: Richard Mudgett + Change-Id: Ie3a0fb1a41101a4c1e49d875a8aa87b189e7ab12 - Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6 +2017-02-24 15:30 +0000 [0560c32375] George Joseph -2016-06-02 16:08 +0000 [2cd67d5b07] Richard Mudgett + * stream: Unit tests for stream read and tweaks framework - * taskprocessors: Implement high/low water mark alerts. + * Removed the AST_CHAN_TP_MULTISTREAM tech property. We now rely + on read_stream being set to indicate a multi stream channel. + * Added ast_channel_is_multistream convenience function. + * Fixed issue where stream and default_stream weren't being set on + a frame retrieved from the queue. + * Now testing for NULL being returned from the driver's read or + read_stream callback. + * Fixed issue where the dropnondefault code was crashing on a + NULL f. + * Now enforcing that if either read_stream or write_stream are + set when ast_channel_tech_set is called that BOTH are set. + * Added the unit tests. - When taskprocessors get backed up, there is a good chance that we are - being overloaded and need to defer adding new work to the system. + ASTERISK-26816 - * Implemented a high/low water alert mechanism for modules to check if the - system is being overloaded and take appropriate action. When a - taskprocessor is created it has default congestion levels set. A - taskprocessor can later have those congestion levels altered for specific - needs if stress testing shows that the taskprocessor is a symptom of - overloading or needs to handle bursty activity without triggering an - overload alert. + Change-Id: If7792b20d782e71e823dabd3124572cf0a4caab2 - * Add CLI "core show taskprocessor" low/high water columns. +2017-03-01 07:23 +0000 [1dacf317f3] Sean Bright - * Fixed __allocate_taskprocessor() to not use RAII_VAR(). RAII_VAR() was - never a good thing to use when creating a taskprocessor because of the - nature of how its references needed to be cleaned up on a partial - creation. + * res_config_pgsql: Make 'require' return consistent with other backends - * Made res_pjsip's distributor check if the taskprocessor overload alert - is active before placing a message representing brand new work onto a - distributor serializer. + res_config_pgsql should match the behavior of other realtime backend + drivers so that queue_log can disable adaptive logging. - ASTERISK-26088 - Reported by: Richard Mudgett + ASTERISK-25628 #close + Reported by: Dmitry Wagin - Change-Id: I182f1be603529cd665958661c4c05ff9901825fa + Change-Id: Ic1fb1600c7ce10fdfb1bcdc43c5576b7e0014372 -2016-05-27 17:31 +0000 [c966a035e0] Richard Mudgett +2017-02-22 15:11 +0000 [9c55a71798] Mark Michelson - * res_pjsip_session: Use distributor serializer for incoming calls. + * SDP: Add initial SDP state machine. - We must continue using the serializer that the original INVITE came in on - for the dialog. There may be retransmissions already enqueued in the - original serializer that can result in reentrancy and message sequencing - problems. + This introduces and documents the various states in the state machine. + This also introduces API functions that induce state changes, and places + TODO comments telling what needs to be done in addition to what is + already there. Those TODOs will be replaced with real code in upcoming + changes. - Outgoing call legs create the pjsip/outsess/ serializers for - their dialogs. + Change-Id: I871c0eb480b4c84d83e91ac5628e7a673e8b89ed - ASTERISK-26088 - Reported by: Richard Mudgett +2017-02-28 13:48 +0000 [60e9e4fcc0] Sean Bright - Change-Id: I24d7948749c582b8045d5389ba3f6588508adbbc + * media_cache: Mark cache entry stale if cache file is removed -2016-05-27 16:28 +0000 [5b7b16a87f] Richard Mudgett + In the event that a cache file is removed out from under us, we should + treat the cache entry as stale and force a refresh. - * res_pjsip_pubsub.c: Recreate subscriptions using distributor serializer. + ASTERISK-26774 #close + Reported by: Igor Gamayunov - * Resolves potential reentrancy problems if system restarted in the middle - of subscription message transactions. + Change-Id: I3b1bd0c999d59d18664ef73a29823bc5b431dc52 - * Fixes memory leak recreating persistent subscriptions when the - subscription resource tree could not be created. +2017-02-28 09:41 +0000 [e5b44c26b4] Sean Bright - ASTERISK-26088 - Reported by: Richard Mudgett + * res_config_pgsql: Release table locks where appropriate - Change-Id: I71e34d7ae8ed35a694f1030e820e2548c48697be + The find_table() functions NULL or a locked table pointer. We are + not consistently calling release_table() in failure paths. -2016-05-27 12:50 +0000 [c2ae49249c] Richard Mudgett + Change-Id: I6f665b455799c84b036e5b34904b82b05eab9544 - * res_pjsip_pubsub.c: Use distributor serializer for incoming subscriptions. +2017-02-28 05:41 +0000 [6ebdcfe27d] Tzafrir Cohen - We must continue using the serializer that the original SUBSCRIBE came in - on for the dialog. There may be retransmissions already enqueued in the - original serializer that can result in reentrancy and message sequencing - problems. The "sip_transaction Unable to register SUBSCRIBE transaction - (key exists)" message is a notable symptom of this issue. + * pjsip.conf.sample: user_agent: not a specific version - Outgoing subscriptions still create the pjsip/pubsub/ - serializers for their dialogs. - - ASTERISK-26088 - Reported by: Richard Mudgett + Use the description of useragent from sip.conf here. - Change-Id: I18b00bb74a56747b2c8c29543a82440b110bf0b0 + ASTERISK-26825 #close -2016-05-26 17:35 +0000 [2ff26e9746] Richard Mudgett + Change-Id: I5b33a4aaa0ae1d793289d05e3bc09521affbf755 - * pjsip_distributor.c: Consistently pick a serializer for messages. +2017-02-27 20:07 +0000 [fb68db87b1] George Joseph - Incoming messages that are not part of a dialog or a recognized response - to one of our requests need to be sent to a consistent serializer. Under - load we may be queueing retransmissions before we can process the original - message. We don't need to throw these messages onto random serializers - and cause reentrancy and message sequencing problems. + * res_pjsip_pubsub: Remove unneeded endpoint unref - * Created a pool of pjsip/distributor serializers that get picked by - hashing the call-id and remote tag strings of the received messages. + When a subscription was being recreated and the endpoint wasn't + found, we were trying to unref the endpoint. This was causing + FRACKs. Removed the unref. - * Made ast_sip_destroy_distributor() destroy items in the reverse order of - creation. + ASTERISK-26823 #close - ASTERISK-26088 - Reported by: Richard Mudgett + Change-Id: If86d2aecff8fe853c7f38a1bfde721fcef3cd164 - Change-Id: I2ce769389fc060d9f379977f559026fbcb632407 +2017-02-16 04:16 +0000 [ee0a123f43] Jørgen H -2016-06-02 12:51 +0000 [df2791da8f] Richard Mudgett + * res_pjsip: Fix crash when contact has no status - * pjsip_distributor.c: Ignore messages until fully booted. + This change fixes an assumption in res_pjsip that a contact will + always have a status. There is a race condition where this is + not true and would crash. The status will now be unknown when + this situation occurs. - We should not be processing any incoming messages until we are fully - booted. We may not have dialplan or other needed configuration loaded - yet. + ASTERISK-26623 #close - ASTERISK-26089 #close - Reported by: Scott Griepentrog + Change-Id: Id52d3ca4d788562d236da49990a319118f8d22b5 - ASTERISK-26088 - Reported by: Richard Mudgett +2017-02-21 18:06 +0000 [22242fef5d] George Joseph - Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264 + * res_pjsip_outbound_registration: Subscribe to network change events -2016-06-09 09:20 +0000 [d21a77b325] gtjoseph + Outbound registration now subscribes to network change events + published by res_stun_monitor and refreshes all registrations + when an event happens. - * build: Fix ast_sockaddr initialization to be more portable + The 'pjsip send (un)register' CLI commands were updated to accept + '*all' as an argument to operate on all registrations. - A change to glibc 2.22 changed the order of the sockadddr_storage - members which caused the places where we do an initialization of - ast_sockaddr with '{ { 0, 0, } }' to fail compilation. Those - initializers (which we shouldn't have been using anyway) have been - replaced with memsets. + The 'PJSIP(Un)Register' AMI commands were also updated to + accept '*all'. - Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4 + ASTERISK-26808 #close -2016-06-03 00:59 +0000 [72d190eb69] Timo Teräs + Change-Id: Iad58a9e0aa5d340477fca200bf293187a6ca5a25 - * Detect and use proper libraries for musl toolchains +2017-02-27 12:25 +0000 [4692a32ed7] George Joseph - Change-Id: I8d9b212f70813404b82918a3f99439e500d4bfcb + * build: Warn if asterisk is installed in both 32 and 64 bit sys dirs -2016-06-03 00:57 +0000 [39b69ab537] Timo Teräs + ... and clean them both up on uninstall. - * Fixes to include signal.h + We've fixed the issue where 'make install' was installing to + /usr/lib on 64-bit systems that use /usr/lib64. Now we need + to clean up the remnants in /usr/lib. - POSIX defines signal.h. sys/signal.h should not be used as it is - c-library internal header which may or may not exist. Notably with - musl it generates warning of being incorrect. + * 'make install' now prints a warning if DESTDIR/ASTLIBDIR + contains 'lib64' and libasterisk* shared libraries or modules + are also found in DESTDIR/ASTLIBDIR with 'lib64' transformed + to 'lib'. - Change-Id: Ia56b0aa1d84b5c590114867b1b384a624f39a6fc + * 'make uninstall' ALWAYS cleans up both DESTDIR/ASTLIBDIR and + DESTDIR/ASTLIBDIR with 'lib64' transformed to 'lib'. -2016-06-08 12:26 +0000 [7f5ca67e5f] Matt Jordan + ASTERISK-26705 - * res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loaded + Change-Id: I6edddeb3c07a51e7c7ba7cac3c05e4bf3ec3f01f - A crash can occur in res_hep_pjsip or res_hep_rtcp if res_hep has not - loaded and does not have a configuration file. Previously when this - occurred, checks were put in to see if the configuration was loaded - successfully. While this is a good idea - and has been added to the - offending function in res_hep - the reality is res_hep_pjsip and - res_hep_rtcp have no business running if res_hep isn't also running. +2017-02-27 07:02 +0000 [ff2b4308d1] Joshua Colp - As such, this patch also adds a function to res_hep that returns whether - or not it successfully loaded. Oddly enough, ast_module_check returns - "everything is peachy" even if a module declined its load - so it cannot - be solely relied on. res_hep_pjsip and res_hep_rtcp now also check this - function to see if they should continue to load; if it fails, they - decline their load as well. + * bridge_native_rtp: Handle case where channel joins already suspended. - ASTERISK-26096 #close + The bridge_native_rtp module did not properly handle the case where + a smart bridge operation occurs while a channel is suspended. In this + scenario the module would incorrectly set up local or remote RTP + bridging despite the media having to flow through Asterisk. The remote + endpoint would see two media streams and experience wonky audio. - Change-Id: I007e535fcc2e51c2ca48534f48c5fc2ac38935ea + The module has been changed so that it ensures both channels are + not suspended when performing the native RTP bridging and this + requirement has been documented in the bridge technology. -2016-06-08 02:11 +0000 [784c18128b] Alexander Traud + ASTERISK-26781 - * chan_sip: No rtpmap for static RTP payload IDs in SDP. + Change-Id: Id4022d73ace837d4a293106445e3ade10dbc7c7c - This saves around 100 bytes when G.711, G.722, G.729, and GSM are advertised in - SDP. This reduces the chance to hit the MTU bearer of 1300 bytes for SIP over - UDP, if many codecs are allowed in Asterisk. This new feature is enabled - together with the optional feature compactheaders=yes via the file sip.conf. +2016-08-12 11:23 +0000 [5b1796f59d] frahaase - ASTERISK-25578 #close + * Binaural synthesis (confbridge): DTMF conference management. - Change-Id: I16491b1937862de26f84fa0ffe679a6bab925044 + DTMF configuration options for the binaural softmix bridge: + toggle binaural rendering (per channel). -2016-06-02 12:04 +0000 [31a5c28339] Joshua Colp + ASTERISK-26292 - * res_odbc: Implement a connection pool. + Change-Id: Ibfe708b9fe26097c1798fcbfcc4dc461267d8af8 - Testing has shown that our usage of UnixODBC is problematic - due to bugs within UnixODBC itself as well as the heavy weight - cost of connecting and disconnecting database connections, even - when pooling is enabled. +2017-02-24 11:49 +0000 [2046743938] Joshua Colp - For users of UnixODBC 2.3.1 and earlier crashes would occur due - to insufficient protection of the disconnect operation. This was - fixed in UnixODBC 2.3.2 and above. + * config: Improve documentation and behavior of outbound_proxy option. - For users of UnixODBC 2.3.3 and higher a slow-down would occur - under heavy database use due to repeated connection establishment. - A regression is present where on each connection the database - configuration is cached again, with the cache growing out of - control. + This change updates the documentation for the outbound_proxy option + to ensure it is consistently stated that a full SIP URI must be + provided for the option. - The connection pool implementation present in this change helps - to mitigate these issues by reducing how much we connect and - disconnect database connections. We also solve the issue of - crashes under UnixODBC 2.3.1 by defaulting the maximum number of - connections to 1, returning us to the previous working behavior. - For users who may have a fixed version the maximum concurrent - connection limit can be increased helping with performance. + The res_pjsip_outbound_registration module has also been changed so + that the provided outbound_proxy value is checked to ensure it is a + URI and if not an error is output stating so. - The connection pool works by keeping a list of active connections. - If the connection limit has not been reached a new connection is - established. If the connection limit has been reached then the - request waits until a connection becomes available before - continuing. + ASTERISK-26782 - ASTERISK-26074 #close - ASTERISK-26054 #close + Change-Id: I6c239a32274846fd44e65b44ad9bf6373479b593 - Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff +2017-02-23 13:03 +0000 [c07c6714f2] Joshua Colp -2016-05-31 09:10 +0000 [80ff7912a1] Vasil Kolev + * channel: Add ast_read_stream function for reading frames from all streams. - * chan_sip: bigger buffers for headers, better failure mode + This change introduces an ast_read_stream function and callback in + the channel technology which allows reading frames from all streams + and not just the default streams. - Currently chan_sip can give weird messages if the contacts don't - fit in the From: or To: headers. This fix changes the from,to and - invite variables to use ast_str, allocates and deallocates them and - resizes them if needed. + The stream number has also been added to frames. This is to allow the + case where frames are queued onto the channel instead of being read + directly from the driver. - ASTERISK-26069 #close + This change does impose a restriction on reading though: a chain of + frames can only contain frames from the same stream. - Change-Id: I1b68fcbddca6f6cc7d7a92fe1cb0d5430282b2b3 + ASTERISK-26816 -2016-06-06 11:13 +0000 [60caebc738] Örn Arnarson + Change-Id: I5d7dc35e86694df91fd025126f6cfe0453aa38ce - * apps/app_voicemail.c and main/say.c: Add support for Icelandic language +2017-02-09 18:05 +0000 [a537dae6d0] George Joseph - Icelandic has some weird grammar rules when dealing with dates and - numbers. There are different genders used depending on which number - you're dealing with, and only a handful of numbers do change depending - on the gender. There is also an implied gender in several cases. + * pjproject_bundled: Update for pjproject 2.6 - This patch was originally written for asterisk 1.6, and has been in use - for several years without crashes. I cleaned it up a bit and rewrote - what was necessary for Asterisk 13. + * Removed all 2.5.5 functional patches. + * Updated usages of pj_release_pool to be "safe". + * Updated configure options to disable webrtc. + * Updated config_site.h to disable webrtc in pjmedia. + * Added Richard Mudgett's recent resolver patches. - The functions were copied from other similar languages and modified - where appropriate. If i recall correctly, the German and Danish - functions were used as a base. + Change-Id: Ib400cc4dfca68b3d07ce14d314e829bfddc252c7 - ASTERISK-26087 - Reported by: Örn Arnarson - Tested by: Örn Arnarson +2017-02-23 15:49 +0000 [b0067bcf2c] George Joseph - Change-Id: Ib7d8bd7b0fede5767921ed821315b5b508c0e665 + * build: Execute ldconfig to build cache. (take two) -2016-06-07 05:45 +0000 [52120204c9] Alexander Traud + On some platforms a multiarch approach is used for libraries. + The build system does not take this into account and still + places libraries into the lib directory if no --libdir is + specified to configure. On initial startup this results in + libasteriskssl.so not being found, as it is not in the multiarch + lib directory. To make matters worse, options were being passed + to ldconfig on both Linux and FreeBSD that actually prevented + the rebuild of the cache. - * res_srtp: Instead of libSRTP use OpenSSL as random source. + * Fedora has a /usr/share/config.site that automatically tells + autoconf to use /usr/lib64 but CentOS does not. This logic was + copied to configure.ac and modified so systems like Ubuntu, + which still use /usr/lib for 64-bit systems, aren't affected. - Since libSRTP 1.5, its Random Number Generator (RNG) is not maintained anymore. - Therefore, the symbol RAND_bytes is used instead of crypto_get_random. + Now that we have them in the correct directory... - ASTERISK-24436 #close + In order for the system loader to find libasteriskssl and + libasteriskpj, one of 3 things has to happen... - Change-Id: Iea0bae4d4e3c9aa0926ea442b6484b5159789d96 + - The linker cache must be rebuilt including the directory + where the libasterisk* libraries were installed. Only root + can rebuild the cache. This was busted. + - We have to link the asterisk binary with an rpath pointing + to the directrory where the libasterisk* libraries were + installed. This makes things very complicated and will happen + over the collective dead bodies of everyone who's had to + package a distribution with an rpath. + - Finally, you can start asterisk with LD_LIBRARY_PATH set to the + directrory where the libasterisk* libraries were installed. -2016-06-07 02:16 +0000 [da943ec5c0] Alexander Traud + There are no other options. So... - * BuildSystem: Avoid 'ar cru' and use 'ar cr' instead. + * The invokation of ldconfig has been moved from main/Makefile + to ASTTOPDIR/Makefile, the options have been removed, and + DESTDIR/ASTLIBDIR appended. If you aren't root, you will be + warned after the "Asterisk Installation Compete" banner that + you must re-run 'make install' as root, manually run + 'ldconfig DESTDIR/ASTLIBDIR' as root, or run asterisk with + LD_LIBRARY_PATH. - In several internal library projects, the files are archived with the help of - 'ar cr'. Only the projects editline and the Objective Open H.323 stack - implementation in C (ooh323c) use 'ar cru' instead. Recently, some platforms - changed the default parameters of AR which creates "/usr/bin/ar: `u' modifier - ignored since `D' is the default (see `U')". For consistency and to avoid this - message all projects use 'ar cr' now. + ASTERISK-26705 - ASTERISK-26091 #close + Change-Id: I2a64b7c33a7d3e9bde20f47e3d3ab771977af982 - Change-Id: I710a9b1c01c1b5a1931a646098c044c8161ead40 +2017-02-23 14:48 +0000 [0f4b349d37] Sean Bright -2016-06-01 16:57 +0000 [dca052e531] Richard Mudgett + * res_config_pgsql: Fix thread safety problems - * chan_rtp.c: Simplify options to UnicastRTP channel creation. + * A missing AST_LIST_UNLOCK() in find_table() - Change the awkward and not as flexible UnicastRTP options format - From: - Dial(UnicastRTP/127.0.0.1[/[][/[]]]) - To: - Dial(UnicastRTP/127.0.0.1[/[]]) + * The ESCAPE_STRING() macro uses pgsqlConn under the hood and we were + not consistently locking before calling it. - Where can be standard Asterisk flag options: - c() - Specify which codec/format to use such as 'ulaw'. - e() - Specify which RTP engine to use such as 'asterisk'. + * There were a handful of other places where pgsqlConn was accessed + directly without appropriate locking. - More option flags can be easily added later such as the codec's RTP - payload type to use when the codec does not have a static payload type - defined. + Change-Id: Iea63f0728f76985a01e95b9912c3c5c6065836ed - Change-Id: I0c297aaf09e2ee515536cb7437bb8042ff8ff3c9 +2017-02-22 05:00 +0000 [6cc890b880] Joshua Colp -2016-05-02 05:57 +0000 [5bfef2a8b4] Jaco Kroon + * channel: Add support for writing to a specific stream. - * translate: Enables native Packet-Loss Concealment (PLC) for supporting codecs. + This change adds an ast_write_stream function which allows + writing a frame to a specific media stream. It also moves + ast_write() to using this underneath by writing media + frames provided to it to the default streams of the channel. + Existing functionality (such as audiohooks, framehooks, etc) + are limited to being applied to the default stream only. - ASTERISK-25629 #close + Unit tests have also been added which test the behavior of + both non-multistream and multistream channels to confirm that + the write() and write_stream() callbacks are invoked + appropriately. - Change-Id: Ibfcf0670e094e9718d82fd9920f1fb2dae122006 + ASTERISK-26793 -2016-05-25 10:34 +0000 [3e8d523d88] Alexei Gradinari + Change-Id: I4df20d1b65bd4d787fce0b4b478e19d2dfea245c - * core/dial: New channel variable FORWARDERNAME +2016-08-12 11:23 +0000 [094c26aa68] frahaase - Added a new channel variable FORWARDERNAME which indicates which - channel was responsible for a forwarding requests received on dial attempt. + * Binaural synthesis (confbridge): Adds binaural synthesis to bridge_softmix. - Fixed a bug in the app_queue: FORWARD_CONTEXT is not used. + Adds binaural synthesis to bridge_softmix (via convolution using libfftw3). + Binaural synthesis is conducted at 48kHz. + For a conference, only one spatial representation is rendered. + The default rendering is applied for mono-capable channels. - ASTERISK-26059 #close + ASTERISK-26292 - Change-Id: I34e93e8c1b5e17776a77b319703c48c8ca48e7b2 + Change-Id: Iecdb381b6adc17c961049658678f6219adae1ddf -2016-05-27 14:49 +0000 [a2f820e8dc] gtjoseph +2017-02-22 08:53 +0000 [e57961db84] Sean Bright - * ari/resource_channels: Add 'formats' to channel create/originate + * res_config_ldap: Various code improvements - If you create a local channel and don't specify an originator channel - to take capabilities from, we automatically add all audio formats to - the new channel's capabilities. When we try to make the channel - compatible with another, the "best format" functions pick the best - format available, which in this case will be slin192. While this is - great for preserving quality, it's the worst for performance and - overkill for the vast majority of applications. + The initial motivation for this patch was to properly handle memory + allocation failures - we weren't checking the return values from the + various LDAP library allocation functions. - In the absense of any other information, adding all formats is the - correct thing to do and it's not always possible to supply an - originator so a new parameter 'formats' has been added to the channel - create/originate functions. It's just a comma separated list of formats - to make availalble for the channel. Example: "ulaw,slin,slin16". - 'formats' and 'originator' are mutually exclusive. + In the process, because update_ldap() and update2_ldap() were + substantially the same code, they've been consolidated. - To facilitate determination of format names, the format name has been - added to "core show codecs". + Change-Id: Iebcfe404177cc6860ee5087976fe97812221b822 - ASTERISK-26070 #close +2017-02-22 13:08 +0000 [66a35e2451] Michael L. Young - Change-Id: I091b23ecd41c1b4128d85028209772ee139f604b + * build_tools: Fix download_externals to allow the use of curl or wget -2016-06-03 01:33 +0000 [538c6415c6] Timo Teräs + Not sure if this is really a bug versus an improvement. I can see it being + viewed as a bug though by some. - * chan_sip: Support auth username for callbackextension feature + The current build_tools/download_externals file depends on wget in order to + download external modules. The current build system is able to discover + which tool to use for fetching remote files - either wget or curl. - ASTERISK-20527 #close + This patch takes advantage of this capability by modifying the two calls to + the wget binary to instead use what was discovered by the build system. - Change-Id: I659cf7f00836a09d09d146ad226a40477d731239 + ASTERISK-26812 #close -2016-06-03 00:39 +0000 [797695c5cc] Timo Teräs + Change-Id: If9411a2554f009274d377445613ae91192d948a1 - * Make use of GLOB_BRACE and GLOB_NOMAGIC optional +2017-02-22 11:12 +0000 [ced73d5b79] Joshua Colp - These flags are non-portable GNU extensions. Make their use - optional. This fixes complication error on e.g. musl c-library - based systems. + * Revert "build: Execute ldconfig to build cache." - Change-Id: I0aa06efc62aa8995f091445c8b762a75a91042f3 + This reverts commit 28c8e4f58f0f38792c7c79a05bd07788ebf15332. -2016-06-02 14:57 +0000 [3c1fec8099] Timo Teräs + Change-Id: Ie2e1aaf61fd49045994974a4581545ac8348fe4c - * Fix res_search usage +2017-02-21 10:47 +0000 [15ed7af027] Sean Bright - Resolver state is not part of res_search API. This fixes - compilation error: + * pbx_realtime: Prevent premature extension matching - dns.c:261:8: error: too many arguments to function 'res_search' - ret = res_search(&dns_state, + The patterns provided by pbx_realtime were checked in the order in + which they were returned from the realtime backend. If there was + overlap between multiple patterns, the first one to correctly match was + chosen even though it may not have been the best match. - Change-Id: Ia600a58557040df83f744da3dde23225293845a5 + We now sort the patterns descending by their length and compare in that + order. There may be cases where this still results in a sub-optimal + match, but this patch should improve the overall behavior. -2016-06-02 14:53 +0000 [9c1d95e873] Timo Teräs + ASTERISK-18271 #close + Reported by: Charlie Smurthwaite - * Fix #include poll.h and sys/cdefs.h + Change-Id: I56d9ac15810eb1775966b669c3028e32cc7bd809 - POSIX defines poll.h, sys/poll.h should not be used at is c-library - internal header which may or may not exist. Notable in musl it - generates warning of being incorrect. And add explict include of - sys/cdefs.h where needed. +2017-02-22 08:32 +0000 [f58aefba5b] Joshua Colp - Change-Id: I142930df53fe7585a06b854b6faddc5301e024be + * core: Show streams in "core show channel". -2016-05-25 08:45 +0000 [8a5c2e736c] Niklas Larsson + The "core show channel" CLI command will now output the streams + present on the channel with their details. - * core/manager: Add uptime field to FullyBooted + ASTERISK-26811 - Add Uptime and LastReload to event FullyBooted. + Change-Id: I9c95b57aa09415005f0677a1949a0feb07e4987a - ASTERISK-26058 #close - Reported by: Niklas Larsson +2017-02-21 15:09 +0000 [fc70ca9499] Peter Racz - Change-Id: I909b330801c0990d78df9b272ab0adc95aecb15e + * pbx_dundi: DUNDi weight parameter not processed correctly -2016-06-02 04:59 +0000 [4505a59dc9] Joshua Colp + The DUNDi weight field is not always converted from network byte order + to host byte order. This can result in incorrect weight values and + incorrect selection of DUNDi destinations. - * alembic: Fix migration. + ASTERISK-18731 #close + Reported by: Peter Racz + Patches: + dundi_weight.patch (license #6290) patch uploaded by Peter Racz - The 81b01a191a46_pjsip_add_contact_reg_server.py script was attempting - to use UniqueConstraint and failing. It was not imported and after - importing it also continued to fail. + Change-Id: Iba3e1a700ff539db57211a7bbc26f7b22ea9a1be - I've changed the script to use the explicit name of the constraint - instead. +2017-02-15 14:43 +0000 [a738772edd] Mark Michelson - Change-Id: I2438b0be90b7ce583b47dd27983c0c1a02cea5b9 + * Add initial SDP state code. -2016-06-01 13:57 +0000 [40d19f2e55] Richard Mudgett + This establishes the basic allocation/destruction of an SDP state + object, plus some of the simpler getter methods involved. Subsequent + tasks will deal with adding a state machine, creating SDPs from + capabilities and options, and merging SDPs into a joint SDP. - * logging,cdr,cel: Fix stringfield memory leak. + Change-Id: Ie3757ce186f04b65e9d1883f5aace53f24e53709 - The stringfields refactor to allow adding stringfields to the end of a - structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some - incomplete cleanup code by some stringfield users. +2017-02-21 10:47 +0000 [ab04a018e4] Sean Bright - The most noticeable leaker is the logging system where there is a leak for - every log message generated. + * realtime: Fix ast_load_realtime_multientry handling - ASTERISK-26078 #close - Reported by: Etienne Lessard - Patches: - jira_asterisk_26078_v13.patch (license #5621) patch uploaded - by Richard Mudgett + ast_load_realtime_multientry() returns an ast_config structure whose + ast_categorys are keyed with the empty strings. Several modules were + giving semantic meaning to the category names causing problems at + runtime. - Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782 + * app_directory: Treated the category name as the mailbox name, and + would fail to direct calls to the appropriate extension after an + entry was chosen. -2016-05-31 13:02 +0000 [aec7916595] Richard Mudgett + * app_queue: Queues, queue members, and queue rules were all affected + and needed to be updated. - * pjsip_distributor.c: Use correct rdata info access method (Part 2). + * pbx_realtime: Pattern matching would never succeed because the + extension entered by the user was always compared to the empty + string. - The pjproject doxygen for rdata->msg_info.info says to call - pjsip_rx_data_get_info() instead of accessing the struct member directly. - You need to call the function mostly because the function will generate - the struct member value if it is not already setup. + Change-Id: Ie7e44986344b0b76ea8f6ddb5879f5040c6ca8a7 - Change-Id: I4d519385a577f3e9d9193a88125e493cf17fa799 +2017-02-21 08:56 +0000 [6e6c96d713] Sean Bright -2016-05-09 15:00 +0000 [205a31f86c] Mark Michelson + * realtime: Centralize some common realtime backend code - * Expand the scope of Dial Events + All of the realtime backends create artificial ast_categorys to pass + back into the core as query results. These categories have no filename + or line number information associated with them and the backends differ + slightly on how they create them. So create a couple helper macros to + help make things more consistent. - Dial events up to this point have come in two flavors - * A Dial event with no status to indicate that dialing has begun - * A Dial event with a status to indicate that dialing has ended + Also updated the call sites to remove redundant error messages about + memory allocation failure. - With this change, Dial events have been expanded to also give - intermediate events, such as "RINGING", "PROCEEDING", and "PROGRESS". - This is especially useful for ARI dialing, as it gives the application - writer the opportunity to place a channel into an early bridge when - early media is detected. + Note that res_config_ldap sets the category filename to the 'table name' + but that is not read by anything in the core, so I've dropped it. - AMI handles these in-progress dial events by sending a new event called - "DialState" that simply indicates that dial state has changed but has - not ended. ARI never distinguished between DialBegin and DialEnd, so no - change was made to the event itself. + Change-Id: I3a1fd91e0c807dea1ce3b643b0a6fe5be9002897 - Another change here relates to dial forwards. A forward-related event - was previously only sent when a channel was successfully able to forward - a call to a new channel. With this set of changes, if forwarding is - blocked, we send a Dial event with a forwarding destination but no - forwarding channel, since we were prevented from creating one. This is - again useful for ARI since application writers can now handle call - forward attempts from within their own application. +2017-02-16 10:30 +0000 [28c8e4f58f] Joshua Colp - ASTERISK-25925 #close - Reported by Mark Michelson + * build: Execute ldconfig to build cache. - Change-Id: I42cbec7730d84640a434d143a0d172a740995543 + On some platforms a multiarch approach is used for libraries. + The build system does not take this into account and still + places libraries into the lib directory if no --libdir is + specified to configure. On initial startup this results in + libasteriskssl.so not being found, as it is not in the multiarch + lib directory. -2016-05-30 19:27 +0000 [8a6a14590d] gtjoseph + This change does the minimally invasive thing and executes + ldconfig so that the libraries in the lib directory are found + and their location cached. By doing so Asterisk starts up fine. - * res_pjsip_mwi_body_generator: Re-order the body items + If DESTDIR is specified, however, the old logic is executed as + the install process may not have permission to alter the ldconfig + cache. - Re-ordered the body items so Message-Account is second. + ASTERISK-26705 - Messages-Waiting: no - Message-Account: sip:1571@:5060 - Voice-Message: 0/0 (0/0) + Change-Id: If4eca46ac510c6fea5568256280ffdb3888d7bb4 - ASTERISK-26065 #close - Reported-by: Ross Beer +2017-01-08 20:32 +0000 [6f15500ced] Richard Mudgett - Change-Id: If5d35a64656eac98c2dd5e490cc0b2807bed80c3 + * res_pjsip_authenticator_digest.c: Fix sorcery's immutable contract violation. -2016-05-30 10:58 +0000 [7fa5766752] gtjoseph + The inbound authentication object is supposed to be immutable when it is + stored in sorcery. However, the immutable property is violated if the + authentication object does not have a realm set. - * pjproject_bundled: Move to pjproject 2.5 + The immutable contract violation has a different effect depending upon + what sorcery back end is used. If it is the config file back end you + would get the same object back until res_pjsip is reloaded. If it is the + real-time or AstDB back end you would get a new object on each query. If + it is cached you would get the same object back until it is refreshed from + the database. - Although all the patches we had against 2.4.5 were applied by Teluu, - a new bug was introduced preventing re-use of tcp and tls transports - This patch removes all the previous patches against 2.4.5, updates - the version to 2.5, and adds a new patch to correct the transport - re-use problem. + Once an inbound authentication object has its realm set it may or may not + get updated again if the default_realm changes. - Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068 + If the same authentication object is used for inbound and outbound + authentication then the immutable violation can make it very hard to + determine why the outbound authentication now fails. The only diagnostic + message is a complaint about no realms matching when it had worked + earlier. It fails because of the difference in behaviour for an empty + realm setting between inbound and outbound authentication objects. -2016-05-27 12:25 +0000 [b56f611856] Rusty Newton + * Fixed the sorcery object immutable violation by creating a new object + and setting the default_realm on it instead. The new object is a shallow + copy for speed. - * res_pjsip: Add clarifying documentation to PJSIP_HEADER help text + * The auth_store thread storage no longer holds an auth ref. It + interferes with the shallow copy and never needed a ref anyway. - Added notes about when you can read or write headers. Specifically - about being able to read on the inbound channel and write on an - outbound channel. + ASTERISK-26799 #close - ASTERISK-26063 #close - Reported by: Private Name - Tested by: Rusty Newton + Change-Id: I2328a52f61b78ed5fbba38180b7f183ee7e08956 - Change-Id: Ibeb64af17d1f6451028b3c29855a3f151a01d8c5 +2017-02-04 20:17 +0000 [6400f5f309] Richard Mudgett -2016-05-26 15:14 +0000 [bb0f4a6310] Mark Michelson + * res_pjsip: Update artificial auth whenever default_realm changes. - * multicast RTP: Add dialing options + There was code attempting to update the artificial authentication object + whenever the default_realm changed. However, once the artificial + authentication object was created it would never get updated. The + artificial authentication object would require a system restart for a + change to the default_realm to take effect. - This adds a new parameter to the end of a multicast RTP dialing string. - This parameter defines the following options: + ASTERISK-26799 - * i: Set the interface from which multicast RTP is sent - * l: Set whether multicast packets are looped back to the sender - * t: Set the TTL for multicast packets - * c: Set the codec to use for RTP + Change-Id: Id59036e9529c2d3ed728af2ed904dc36e7094802 - ASTERISK-26068 #close - Reported by Mark Michelson +2017-01-01 08:02 +0000 [0b660c9989] Richard Mudgett - Change-Id: I033b706b533f0aa635c342eb738e0bcefa07e219 + * res_pjsip: Update authentication realm documentation. -2016-05-09 14:48 +0000 [88d997913f] Mark Michelson + Using the same auth section for inbound and outbound authentication is not + recommended. There is a difference in meaning for an empty realm setting + between inbound and outbound authentication uses. - * ARI: Re-implement the ARI dial command, allowing for early bridging. + An empty inbound auth realm represents the global section's default_realm + value when the authentication object is used to challenge an incoming + request. An empty outgoing auth realm is treated as a don't care wildcard + when the authentication object is used to respond to an incoming + authentication challenge. - ARI dial had been implemented using the Dial API. This made great sense - when dialing was 100% separate from bridging. However, if a channel were - to be added to a bridge during the dial attempt, there would be a - conflict between the dialing thread and the bridging thread. Each would - be attempting to read frames from the dialed channel and act on them. + ASTERISK-26799 - The initial attempt to make the two play nice was to have the Dial API - suspend the channel in the bridge and stay in charge of the channel - until the dial was complete. The problem with this was that it was - riddled with potential race conditions. It also was not well-suited for - the case where the channel changed which bridge it was in during the - dial. + Change-Id: Id3952f7cfa1b6683b9954f2c5d2352d2f11059ce - This new approach removes the use of the Dial API altogether. Instead, - the channel we are dialing is placed into an invisible ARI dialing - bridge. The bridge channel thread handles incoming frames from the - channel. If the channel is added to a real bridge, it is departed from - the invisible bridge and then added to the real bridge. Similarly, if - the channel is removed from the real bridge, it is automatically added - back to the invisible bridge if the dial attempt is still active. +2017-02-13 17:11 +0000 [7f83bcd63d] Richard Mudgett - This approach keeps the threading simple by always having the channel - being handled by bridge channel threads. + * pjproject: Fixes to resolve DNS SRV crashes. - ASTERISK-25925 + * Re #1945 (misc): Don't trigger SRV complete callback when there is a + parse error. - Change-Id: I7750359ddf45fcd45eaec749c5b3822de4a8ddbb + * srv_resolver.c: Don't try to send query if already considered resolved. -2016-05-19 14:56 +0000 [31f17abe44] Alexei Gradinari + ** In resolve_hostnames() don't try to resolve a query that is already + considered resolved. - * res_pjsip: add "via_addr", "via_port", "call_id" to contact + ** In resolve_hostnames() fix DNS typo in comments. - 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. + ** In build_server_entries() move a common expression assigning to cnt + earlier. - Added "via_addr", "via_port", "call_id" to contact. - Added new fields ViaAddress, CallID to AMI event ContactStatus. + * sip_transport.c: Fix tdata object name to actually contain the pointer. - ASTERISK-26011 + It helps if the logs referencing a tdata object buffer actually have a + name that includes the correct pointer as part of the name. Also since + the tdata has its own pool it helps if any logs referencing the pool have + the same name as the tdata object. This change brings tdata logging in + line with how tsx objects are named. - Change-Id: I36bcc0bf422b3e0623680152d80486aeafe4c576 + ASTERISK-26669 #close + ASTERISK-26738 #close -2016-05-24 16:56 +0000 [574c9e77eb] Alexei Gradinari + Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af - * res_pjsip: chatty verbose messages +2017-02-20 13:38 +0000 [bf78c3c9c3] Richard Mudgett - There are a lot of verbose messages about Endpoint and Contact status - changes if there are many dynamic endpoints. - The patch sets verbose level 2 for Endpoint status changes - and verbose level 3 for Contact status changes. + * pjproject: Increase SENDER_WIDTH column size for 64-bit system logs. - ASTERISK-26055 #close + ASTERISK-26669 + ASTERISK-26738 - Change-Id: Ie64e261ddbbc41bfff0f0190241152cc123fe6d7 + Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0 -2016-05-20 13:56 +0000 [b3142e99e4] Alexei Gradinari +2017-02-06 14:26 +0000 [54812f18b5] Richard Mudgett - * app_voicemail: fix bugs, imap mm_status log change to debug + * pjsip_distributor.c: Update some debug messages to get transaction name. - Fixed some bugs: - - create dirpath when save downloading message from IMAP storage. - - create IMAP folder if not exists when saving to IMAP storage - - check if file successfully opened before write to it - - some IMAP checks - - remove non-standard flag 'Unseen' - etc + * Removed overloaded unmatched response ignore. We obviously sent the + request so we shouldn't ignore it because it isn't new work. - Change to debug IMAP mm_status log instead of verbose. + ASTERISK-26669 + ASTERISK-26738 - Remove unused X-Asterisk-VM-Caller-channel message header - for security reason. The clients should not know name of peer/endpoint. + Change-Id: I55fb5cadc83a8e6699b347c6dc7fa32c5a617d37 - ASTERISK-26045 #close +2017-02-20 06:28 +0000 [b18f1bfb13] Sean Bright - Change-Id: I7f83d88b69b36934e2539c114b9fb612deed971b + * app_voicemail: vm_authenticate accesses uninitialized memory -2016-05-25 18:30 +0000 [7d44d12816] Richard Mudgett + vm_authenticate doesn't always set the passed ast_vm_user argument, so + we initialize to 0 before passing it in. - * pjsip_distributor.c: Use correct rdata info access method. + ASTERISK-25893 #close + Reported by: Filip Jenicek - The pjproject doxygen for rdata->msg_info.info says to call - pjsip_rx_data_get_info() instead of accessing the struct member directly. - You need to call the function mostly because the function will generate - the struct member value if it is not already setup. + Change-Id: Ia3cc0128f93d352ed9add8d5c2f0f7232c2cbe4a - Change-Id: Iafe8b01242b7deb0ebfdc36685e21374a43936d2 +2017-02-20 11:19 +0000 [7739b0b3ae] Joshua Colp -2016-05-03 11:11 +0000 [1d60bfcdf1] Tzafrir Cohen + * Revert "build: Execute ldconfig to build cache." - * followme: allow disabling callee prompt + This reverts commit 8851c3e0885cb704a5a6159a51768ea5297e9b10. - Add the option 'enable_callee_prompt' to followme.conf. Enabled by - default. If disabled, a callee is not prompted to accept or reject - the forwarded call. + Change-Id: I124380be5e3bd57da978428a2a93604336ccd0db - ASTERISK-26064 #close +2017-02-20 08:04 +0000 [ffa7d69766] George Joseph - Change-Id: I0a8b19d4cf95c86a07c992813babb9e4a4acfff5 - Signed-off-by: Tzafrir Cohen + * pjproject cli: Add object count after object lists -2016-02-12 09:59 +0000 [80ff2c2540] Corey Farrell + When listing a container, we now print the number of objects + in the container at the end of the list. - * threadpool: Fix potential data race. + Change-Id: I791cbc3ee9da9a2af9adc655164b5d32953df812 - worker_start checked for ZOMBIE status without holding a lock. All - other read/write of worker status are performed with a lock, so this - check should do the same. +2017-02-20 05:53 +0000 [e84353b8a8] Sean Bright - ASTERISK-25777 #close + * res_config_ldap: Don't try to delete non-existent attributes - Change-Id: I5e33685a5c26fdb300851989a3b82be8c4e03781 + OpenLDAP will raise an error when we try to delete an LDAP attribute + that doesn't exist. We need to filter out LDAP_MOD_DELETE requests + based on which attributes the current LDAP entry actually has. There + is of course a small window of opportunity for this to still fail, + but it is much less likely now. -2016-05-24 05:28 +0000 [070eab6ed2] Joshua Colp + Change-Id: I3fe1b04472733e43151563aaf9f8b49980273e6b - * res_pjsip_outbound_publish: Ensure publish is valid when explicitly destroying. +2017-02-20 05:49 +0000 [9f392574f9] Sean Bright - Recent changes to res_pjsip_outbound_publish have introduced a - race condition at shutdown where an outbound publish may be shutdown - twice. In this case the first succeeds as a result of the unpublish. - In the second invocation since it's been unpublished a task is - queued to just destroy the client. This task holds no ref to the - publish and as a result the publish may be destroyed before the - task is run, causing a crash. + * res_config_ldap: Remove extraneous line numbers from log messages - This explicit destruction task now holds a reference to the publish - to ensure it remains valid. + Extraneous line numbers were being output in many log messages. These + have been removed. - ASTERISK-26053 #close + Change-Id: Ice9efa3d252ee87f37fa8f5ea852fda482675431 - Change-Id: I10789b98add3e50292ee3b33a55a1d9061cec94b +2017-02-20 05:45 +0000 [ef0944395e] Sean Bright -2016-05-09 14:27 +0000 [f6c33771f6] Mark Michelson + * res_config_ldap: Make memory allocation more consistent - * Bridging: introduce "invisible" bridges. + The code in update_ldap() and update2_ldap() was using both Asterisk's + memory allocation routines as well as OpenLDAP's. I've changed it so + that everything that is passed to OpenLDAP's functions are allocated + with their routines. - Invisible bridges function the same as normal bridges, but they have the - following restrictions: + Change-Id: Iafec9c1fd8ea49ccc496d6316769a6a426daa804 - * They never show up in CLI, AMI, or ARI queries. - * They do not have Stasis messages published about them. +2017-02-20 05:30 +0000 [dd3efdf525] Sean Bright - Invisible bridges' main use is for when use of the bridging system is - desired, but the bridge should not be known to users of the Asterisk - system. + * res_config_ldap: Fix configuration inheritance from _general - ASTERISK-25925 + The "_general" configuration section allows administrators to provide + both general configuration options (host, port, url, etc.) as well as a + global realtime-to-LDAP-attribute mapping that is a fallback if one of + the later sections do not override it. This neglected to exclude the + general configuration options from the mapping. As an example, during + my testing, chan_sip requested 'port' from realtime, and because I did + not have it defined, it pulled in the 'port' configuration option from + "_general." We now filter those out explicitly. - Change-Id: I804a209d3181d7c54e3d61a60eb462e7ce0e3670 + Change-Id: I1fc61560bf96b8ba623063cfb7e0a49c4690d778 -2016-05-22 11:03 +0000 [85d0272e76] Joshua Colp +2017-02-20 05:27 +0000 [d6d86f1c09] Sean Bright - * res_pjsip: Only check transaction on transaction state events. + * res_config_ldap: Fix erroneous LDAP_MOD_REPLACE in LDAP modify - The send request callback function currently assumes that it - will only ever be called on transaction state changes. This is - not always true. If our own timer callback occurs we will call - the callback with a timer event instead of a transaction state - change event. In this case the transaction on the event is - invalid and accessing it will result in a crash. + We always treat the first change of our modification batch as a + replacement when it sometimes is actually a delete. So we have to pass + the correct arguments to the OpenLDAP library. - ASTERISK-26049 #close + ASTERISK-26580 #close + Reported by: Nicholas John Koch + Patches: + res_config_ldap.c-11.24.1.patch (license #6833) patch uploaded + by Nicholas John Koch - Change-Id: I623211c8533eb73056b0250b4580b49ad4174dfc + Change-Id: I0741d25de07c9539f1edc6eff3696165dfb64fbe -2016-05-21 05:42 +0000 [31897d2d99] Jesper (License 5518) +2017-02-15 11:55 +0000 [44abe214d2] Sean Bright - * func_curl: Don't trim response text on non-ASCII characters + * res_config_sqlite3: Fix crash when loading with invalid config - The characters 0x80-0xFF were trimmed as well as 0x00-0x20 because of - a signed comparison. + When ast_config_load() fails with CONFIG_STATUS_FILEINVALID, it has + already destroyed the ast_config struct for us. Trying to do it again + results in a crash. - ASTERISK-25669 #close - Reported by: Jesper - patches: - strings.curl.trim.patch submitted by Jesper (License 5518) + Change-Id: If6a5c0ca718ad428e01a1fb25beb209a9ac18bc6 - Change-Id: Ia51e169f24e3252a7ebbaab3728630138ec6f60a +2017-02-17 17:06 +0000 [51e3b11989] Sean Bright -2016-05-20 19:03 +0000 [2a77af9ed0] Richard Mudgett + * pjproject-bundled: Fix checksum verification when using cURL - * chan_rtp.c: Cleanup ast_request() parameter parsing. + ASTERISK-26802 #close + Reported by: Michael L. Young - * Fixed NULL crash potential if parameters are missing. + Change-Id: Iad293080f55d4d69ab615717a15211d916eed613 - * Reordered some operations so further diagnostic messages can be - more helpful. +2017-02-17 16:57 +0000 [0b427f9b59] Richard Mudgett - Change-Id: Ibbdc67a2496508cbfbfef0cf19c35177ae2fbd70 + * tcptls.c: Add some missing allocation failure checks. -2016-05-20 16:59 +0000 [ade5275a3e] Richard Mudgett + * Fix tcptls_session ref and fd leak in ast_tcptls_server_root(). - * parking.h: Update ast_parking_park_call() doxygen to reality. + Change-Id: I0ddf01cd3c10d3b6666d7bf68d4e206a37f4fbdb - ASTERISK-26029 +2017-02-17 14:58 +0000 [dbc3598014] Mark Michelson - Change-Id: I2db14d102a48d3224010e6d1c69e856373cc1260 + * Remove extra ast_iostream_close() calls. -2016-05-12 15:18 +0000 [c378b00a83] Alexei Gradinari + When AMI encounters an error at the beginning of a session, it would + explicitly call ast_iostream_close() on its tcptls session's iostream. + It then would jump to a label where it would shut down the tcptls + session instance. The tcptls session instance would again attempt to + close the iostream. - * func_odbc: single database connection should be optional + Under normal circumstances, this might go by unnoticed. However, when + MALLOC_DEBUG is enabled, all fields on the iostream get set to + 0xdeaddead when the iostream is freed. Thus a second call to + ast_iostream_close() after the iostream has been freed would reslt in an + attempt to call SSL_shutdown on 0xdeaddead, which would crash and burn + horribly. - func_odbc was changed in Asterisk 13.9.0 - to make func_odbc use a single database connection per DSN - because of reported bug ASTERISK-25938 - with MySQL/MariaDB LAST_INSERT_ID(). + The fix here is to not directly close the iostream from the dangerous + scenarios. The specific scenarios are: + * Exceeding the configured authlimit + * Failing to build a mansession on a new connection - This is drawback in performance when func_odbc is used - very often in dialplan. + Change-Id: I908f98d516afd5a263bd36b072221008a4731acd - Single database connection should be optional. +2017-02-14 09:54 +0000 [5a130b2e17] Mark Michelson - ASTERISK-26010 + * Add SDP translator and PJMEDIA implementation. - Change-Id: I7091783a7150252de8eeb455115bd00514dfe843 + This creates the following: + * Asterisk's internal representation of an SDP + * An API for translating SDPs from one format to another + * An implementation of a translator for PJMEDIA -2016-05-20 09:39 +0000 [1c02b19b79] Mark Michelson + Change-Id: Ie2ecd3cbebe76756577be9b133e84d2ee356d46b - * res_pjsip: Match dialogs on responses better. +2017-02-07 09:50 +0000 [8af6342555] Mark Michelson - When receiving an incoming response to a dialog-starting INVITE, we were - not matching the response to the INVITE dialog. Since we had not - recorded the to-tag to the dialog structure, the PJSIP-provided method - to find the dialog did not match. + * Add initial SDP options. - Most of the time, this was not a problem, because there is a fall-back - that makes the response get routed to the same serializer that the - request was sent on. However, in cases where an asynchronous DNS lookup - occurs in the PJSIP core, the thread that sends the INVITE is not - actually a threadpool serializer thread. This means we are unable to - record a serializer to handle the incoming response. + This is step one of adding an SDP API: defining some + configurable settings for SDPs. This is based on options + that are currently supported in Asterisk. - Now, imagine what happens when an INVITE is sent on a non-serialized - thread, and an error response (such as a 486) arrives. The 486 ends up - getting put on some random threadpool thread. Eventually, a hangup task - gets queued on the INVITE dialog serializer. Since the 486 is being - handled on a different thread, the hangup task can execute at the same - time that the 486 is being handled. The hangup task assumes that it is - the sole owner of the INVITE session and channel, so it ends up - potentially freeing the channel and NULLing the session's channel - pointer. The thread handling the 486 can crash as a result. + Change-Id: I1ede91aafed403b12a9ccdfb91a88389baa7e5d7 - This change has the incoming response match the INVITE transaction, and - then get the dialog from that transaction. It's the same method we had - been using for matching incoming CANCEL requests. By doing this, we get - the INVITE dialog and can ensure that the 486 response ends up being - handled by the same thread as the hangup, ensuring that the hangup runs - after the 486 has been completely handled. +2017-02-16 10:30 +0000 [8851c3e088] Joshua Colp - ASTERISK-25941 #close - Reported by Javier Riveros + * build: Execute ldconfig to build cache. - Change-Id: I0d4cc5d07e2a8d03e9db704d34bdef2ba60794a0 + On some platforms a multiarch approach is used for libraries. + The build system does not take this into account and still + places libraries into the lib directory if no --libdir is + specified to configure. On initial startup this results in + libasteriskssl.so not being found, as it is not in the multiarch + lib directory. -2016-05-18 06:19 +0000 [e773e3a9bb] Matt Jordan + This change does the minimally invasive thing and executes + ldconfig so that the libraries in the lib directory are found + and their location cached. By doing so Asterisk starts up fine. - * ARI: Add the ability to download the media associated with a stored recording + ASTERISK-26705 - This patch adds a new feature to ARI that allows a client to download - the media associated with a stored recording. The new route is - /recordings/stored/{name}/file, and transmits the underlying binary file - using Asterisk's HTTP server's underlying file transfer facilities. + Change-Id: I6d30b6427e9d5e69470e11327c7ff203fa7da519 - Because this REST route returns non-JSON, a few small enhancements had - to be made to the Python Swagger generation code, as well as the - mustache templates that generate the ARI bindings. +2017-02-16 08:38 +0000 [e93f2a5142] Sean Bright - ASTERISK-26042 #close + * realtime: Fix LIKE escaping in SQL backends - Change-Id: I49ec5c4afdec30bb665d9c977ab423b5387e0181 + The realtime framework allows for components to look up values using a + LIKE clause with similar syntax to SQL's. pbx_realtime uses this + functionality to search for pattern matching extensions that start with + an underscore (_). -2016-05-19 11:41 +0000 [40cb032009] Joshua Colp + When passing an underscore to SQL's LIKE clause, it will be interpreted + as a wildcard matching a single character and therefore needs to be + escaped. It is (for better or for worse) the responsibility of the + component that is querying realtime to escape it with a backslash before + passing it in. Some RDBMs support escape characters by default, but the + SQL92 standard explicitly says that there are no escape characters + unless they are specified with an ESCAPE clause, e.g. - * res_sorcery_astdb: Filter fields to only the registered ones. + SELECT * FROM table WHERE column LIKE '\_%' ESCAPE '\' - This change introduces the same filtering that is done in res_sorcery_realtime - to the res_sorcery_astdb module. This allows persisted sorcery objects - that may contain unknown fields to still be read in from the AstDB - and used. This is particularly useful when switching between different - versions of Asterisk that may have introduced additional fields. + This patch instructs 3 backends - res_config_mysql, res_config_pgsql, + and res_config_sqlite3 - to use the ESCAPE clause where appropriate. - ASTERISK-26014 #close + Looking through documentation and source tarballs, I was able to + determine that the ESCAPE clause is supported in: - Change-Id: Ib655130485a3ccfd635b7ed5546010ca14690fb2 + MySQL 5.0.15 (released 2005-10-22 - earliest version available from + archives) + PostgreSQL 7.1 (released 2001-04-13) + SQLite 3.1.0 (released 2005-01-21) -2016-05-09 21:40 +0000 [9766a12b4c] snuffy + The versions of the relevant libraries that we depend on to access MySQL + and PostgreSQL will not work on versions that old, and I've added an + explicit check in res_config_sqlite3 to only use the ESCAPE clause when + we have a sufficiently new version of SQLite3. - * res_pjsip_empty_info: Respond to empty SIP INFO packets + res_config_odbc already handles the escape characters appropriately, so + no changes were required there. - Some SBCs require responses to empty SIP INFO packets - after establishing call via INVITE, if not responded to - they may drop your call after unspecified timeout of X minutes. + ASTERISK-15858 #close + Reported by: Humberto Figuera - They are identified by having no Content-Type, check for this - and respond with 200 - OK message. + ASTERISK-26057 #close + Reported by: Stepan - ASTERISK-24986 #close - Reported-by: Ilya Trikoz, Federico Santulli + Change-Id: I93117fbb874189ae819f4a31222df7c82cd20efa - Change-Id: Ib27e4f07151e5aef28fa587e4ead36c5b87c43e0 +2017-02-16 08:28 +0000 [f8f513d363] George Joseph -2016-05-18 10:58 +0000 [111c4b0324] Tzafrir Cohen + * stream: Rename creates/destroys to allocs/frees - * Makefile: remove OSARCH check for init install + To be consistent with sdp implementation. - There are more specific checks for the platform. + Change-Id: I714e300939b4188f58ca66ce9d1e84b287009500 - Specifically this allows installing OS/X init scripts. +2017-02-16 05:46 +0000 [30aaeec5a1] Sean Bright - ASTERISK-26038 #close + * res_config_sqlite3: Properly create missing columns when necessary - Change-Id: If08933621145b10362a0cfe73c079301d9c13f50 - Signed-off-by: Tzafrir Cohen + There were two specific issues resolved here: -2016-05-10 11:28 +0000 [d4b77dad1b] Joshua Colp + 1) The code that iterated over the required fields + (via ast_realtime_require) was broken for the RQ_INTEGER1 field + type. Iteration would stop when the first RQ_INTEGER1 (0) field + was encountered. - * res_pjsip_exten_state: Use the extension for publishing to. + 2) sqlite3_changes() was used to try and count the number of rows + returned by a SELECT statement. sqlite3_changes() only counts + affected rows, so this was always returning the value from the + most recent data modification statement. We now separate read-only + queries from data modification queries and count rows appropriately + in both cases. - This change uses the newly added multi-user support for - outbound publish to publish to the specific user that an - extension state change is for. + ASTERISK-23457 #close + Reported by: Scott Griepentrog - This also extends the res_pjsip_outbound_publish support - to include the user specific From and To URI information in - the outbound publishing of extension state. Since the URI - is used when constructing the body it is important to ensure - that the correct local and remote URIs are used. + Change-Id: I91ed20494efc3fcfbc2a96ac7646999a49814884 - Finally the max string growths for the dialog-info+xml - body generator has been increased as through testing it has - proven to be too conservative. - - ASTERISK-25965 +2017-02-15 14:44 +0000 [ac7a34c531] Joshua Elson - Change-Id: I668fdf697b1e171d4c7e6f282b2e1590f8356ca1 + * http: Ensure capath is defined on all http creations -2016-05-03 16:07 +0000 [3905997bae] Kevin Harwell + ASTERISK-26794 #close - * res_pjsip_outbound_publish: Add multi-user support per configuration + Change-Id: I9cbc3b6b6a8aab590f5ccde9c262a98e4d5253a1 - Added a new multi_user option that when specified allows a particular - configuration to be used for multiple users. It does this by replacing - the user portion of the server uri with a dynamically created one. +2017-02-15 23:09 +0000 [135bea931c] Igor Goncharovsky - Two new API calls have been added in order to make use of the new - functionality: + * chan_unistim: fix char type to have consistent behavior on ARM - ast_sip_publish_user_send - Sends an outgoing publish message based on the - given user. If state for the user already exists it uses that, otherwise - it dynamically creates new outbound publishing state for the user at that - time. + There is difference exists in behaviour of char type on x86 and ARM. + On x86 by default char variable type means signed char, but in ARM + unsigned char used. This make binary calculations and negative values + works wrong on ARM. - ast_sip_publish_user_remove - Removes all outbound publish state objects - associated with the user. This essentially stops outbound publishing for - the user. + This patch change type of char variables used for store negative + values and binary calculations to signed char. - ASTERISK-25965 #close + ASTERISK-26714 - Change-Id: Ib88dde024cc83c916424645d4f5bb84a0fa936cc + Change-Id: Id78716dee9568a58419d4ef63c038affc3dfc7ab -2016-05-18 07:54 +0000 [6e5e84458f] gtjoseph +2017-02-07 13:17 +0000 [4bdf5d329f] George Joseph - * udptl: Don't eat sequence numbers until OK is received + * res_pjsip_pubsub: Correctly implement persisted subscriptions - Scenario: - Local fax -> Asterisk w/ firewall -> Provider -> Remote fax + This patch fixes 2 original issues and more that those 2 exposed. - * Local fax starts rtp call to remote fax - * Remote fax starts t38 call back to local fax. - * Local fax sends t38 no-signal to Asterisk before sending an OK. - * udptl processes the frame and increments the expected sequence number. - * chan_sip drops the frame because the call isn't up so nothing goes out - the external interface to open the port for incoming packets. - * Local fax sends OK and Asterisk sends OK to the remote fax. - * Remote fax sends t38 packets which are dropped by the firewall. - * Local fax re-sends t38 no-signal with the same sequence number. - * udptl drops the frame because it thinks it's a dup. - * Still no outgoing packets to open the firewall. - * t38 negotiation fails. + * When we send a NOTIFY, and the client either doesn't respond or + responds with a non OK, pjproject only calls our + pubsub_on_evsub_state callback, no others. Since + pubsub_on_evsub_state (which does the sub_tree cleanup) does not + expect to be called back without the other callbacks being called + first, it just returns leaving the sub_tree orphaned. Now + pubsub_on_evsub_state checks the event for PJSIP_EVENT_TSX_STATE + which is what pjproject will set to tell us that it was the + transaction that timed out or failed and not the subscription + itself timing our or being terminated by the client. If is + TSX_STATE, pubsub_on_evsub_state now does the proper cleanup + regardless of the state of the subscription. - The patch drops frames t38 received before udptl sequence processing - when the call hasn't been answered yet. The second no-signal frame - is then seen as new and is relayed out the external interface which - opens the port and allows negotiation to continue. + * When a client renews a subscription, we don't update the + persisted subscription with the new expires timestamp. This causes + subscription_persistence_recreate to prune the subscription if/when + asterisk restarts. Now, pubsub_on_rx_refresh calls + subscription_persistence_update to apply the new expires timestamp. + This exposed other issues however... - ASTERISK-26034 #close + * When creating a dialog from rdata (which sub_persistence_recreate + does from the packet buffer) there must NOT be a tag on the To + header (which there will be when a client refreshes a + subscription). If there is one, pjsip_dlg_create_uas will fail. + To address this, subscription_persistence_update now accepts a flag + that indicates that the original packet buffer must not be updated. + New subscribes don't set the flag and renews do. This makes sure + that when the rdata is recreated on asterisk startup, it's done + from the original subscribe packet which won't have the tag on To. - Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9 + * When creating a dialog from rdata, we were setting the dialog's + remote (SUBSCRIBE) cseq to be the same as the local (NOTIFY) cseq. + When the client tried to resubscribe after a restart with the + correct cseq, we'd reject the request with an Invalid CSeq error. -2016-05-15 12:22 +0000 [52148d93f4] Matt Jordan + * The acts of creating a dialog and evsub by themselves when + recreating a subscription does NOT restart pjproject's subscription + timer. The result was that even if we did correctly recreate the + subscription, we never removed it if the client happened to go away + or send a non-OK response to a NOTIFY. However, there is no + pjproject function exposed to just set the timer on an evsub that + wasn't created by an incoming subscribe request. To address this, + we create our own timer using ast_sip_schedule_task. This timer is + used only for re-establishing subscriptions after a restart. - * CHANGES: Update formatting of items + An earlier approach was to add support for setting pjproject's + timer (via a pjproject patch) and while that patch is still included + here, we don't use that call at the moment. - * Provide consistent indenting of lines in bulleted paragraphs - * Respect the 80 character column width - * Group all like items together, e.g., all dialplan applications under - "Applications", etc. - * Use a single blank line to break up functionality changes within a - larger section - * Use two blanks lines to delineate larger sections + While addressing these issues, additional debugging was added and + some existing messages made more useful. A few formatting changes + were also made to 'pjsip show scheduled tasks' to make displaying + the subscription timers a little more friendly. - Change-Id: I0488554f5cb7c51da70003d69288a21c9aab9647 + ASTERISK-26696 + ASTERISK-26756 -2016-04-18 18:17 +0000 [03d88b5656] Matt Jordan + Change-Id: I8c605fc1e3923f466a74db087d5ab6f90abce68e - * ARI: Add the ability to play multiple media URIs in a single operation +2017-02-15 11:03 +0000 [11886dea82] Sean Bright - Many ARI applications will want to play multiple media files in a row to - a resource. The most common use case is when building long-ish IVR prompts - made up of multiple, smaller sound files. Today, that requires building a - small state machine, listening for each PlaybackFinished event, and triggering - the next sound file to play. While not especially challenging, it is tedious - work. Since requiring developers to write tedious code to do normal activities - stinks, this patch adds the ability to play back a list of media files to a - resource. + * res_rtp_asterisk: Use PJ_ICE_MAX_CAND instead of hard-coding 16 - Each of the 'play' operations on supported resources (channels and bridges) - now accepts a comma delineated list of media URIs to play. A single Playback - resource is created as a handle to the entire list. The operation of playing - a list is identical to playing a single media URI, save that a new event, - PlaybackContinuing, is raised instead of a PlaybackFinished for each non-final - media URI. When the entire list is finished being played, a PlaybackFinished - event is raised. + pjsip limits the total number of ICE candidates to PJ_ICE_MAX_CAND, + which is a compile-time constant. Instead of hard-coding 16 when we + enumerate local interfaces, use PJ_ICE_MAX_CAND so that we can + potentially collect more interfaces if the compile time options are + changed. - In order to help inform applications where they are in the list playback, the - Playback resource now includes a new, optional attribute, 'next_media_uri', - that contains the next URI in the list to be played. + Tangentially related to ASTERISK~24464 - It's important to note the following: - - If an offset is provided to the 'play' operations, it only applies to the - first media URI, as it would be weird to skip n seconds forward in every - media resource. - - Operations that control the position of the media only affect the current - media being played. For example, once a media resource in the list - completes, a 'reverse' operation on a subsequent media resource will not - start a previously completed media resource at the appropiate offset. - - This patch does not add any new operations to control the list. Hopefully, - user feedback and/or future patches would add that if people want it. + Change-Id: I1b85509e39e33b1fed63c86261fc229ba14bbabd - ASTERISK-26022 #close +2016-12-22 09:42 +0000 [b58de2fab7] Dennis Guse - Change-Id: Ie1ea5356573447b8f51f2e7964915ea01792f16f + * Binaural synthesis (confbridge): Adds utils/conf_bridge_binaural_hrir_importer -2016-05-17 11:14 +0000 [5bd1bf2816] gtjoseph + Adds the import tool for converting a HRIR database to hrirs.h - * chan_sip: Prevent extra Session-Expires headers from being added + ASTERISK-26292 - When chan_sip does a re-INVITE to refresh a session and authentication - is required, the INVITE with the Authorization header containes a - second Session-Expires header without the ";refersher=" parameter. - This is causing some proxies to return a 400. Also, when Asterisk is - the uas and the refresher, it is including the Session-Expires and - Min-SE headers in OPTIONS messages which is not allowed per RFC4028. + Change-Id: I51eb31b54c23ffd9b544bdc6a09d20c112c8a547 - This patch (based on the reporter's) Checks to see if a Session-Expires - header is already in the message before adding another one. It also - checks that the method is INVITE or UPDATE. +2017-02-14 12:33 +0000 [a9c15a0e4c] Joshua Colp - ASTERISK-26030 #close + * stream: Add unit tests for channel stream usage. - Change-Id: I58a7b07bab5a3177748d8a7034fb8ad8e11ce1d9 + This change adds unit tests cover the following: -2016-05-16 15:29 +0000 [ae81b55361] gtjoseph + 1. That retrieving the first media stream of a specific media + type from a stream topology retrieves the expected media + stream. - * res_pjsip_outbound_registration: Clean up state when registration is deleted + 2. That setting the native formats of a channel which does + not support streams results in the creation of streams on + its behalf according to the formats of the channel. - Nothing was cleaning up the registration state object when ast_sorcery_delete - was called on a registration. So, the registration was deleted from sorcery - but the state object went right on refreshing the registration (or failing - to refresh the registration) with the peer. + 3. That setting a stream topology on a channel which supports + streams sets the topology to the provided one. - * Added a 'deleted' observer on registration that removes the state object. + ASTERISK-26790 - ASTERISK-25964 #close - Reported-by Matt Jordan + Change-Id: Ic53176dd3e4532e8c3e97d9e22f8a4b66a2bb755 - Change-Id: I2db792145cdb1f72ebbf57dd9099596dbbf12c23 +2017-02-13 16:50 +0000 [275f469a4d] Sean Bright -2016-05-15 19:05 +0000 [8b5cee4a4f] gtjoseph + * app_voicemail: Allow 'Comedian Mail' branding to be overriden - * res_pjsip: Set TCP_NODELAY on TCP transports + Original patch by John Covert, slight modifications by me. - Although it's perfectly legal to place multiple SIP messages in the same packet, - it can cause problems because the Linux default is to enable Path MTU Discovery - which sets the Don't Fragment bit on the packets. If adding a second message to - the packet causes the MTU to be exceeded, and the destination isn't equipped to - send a FRAGMENTATION NEEDED response to a large packet, the packet will just be - dropped. + ASTERISK-17428 #close + Reported by: John Covert + Patches: + app_voicemail.c.patch (license #5512) patch uploaded by + John Covert - We can't specifically tell the stack to send only 1 message per packet, but we - can turn on TCP_NODELAY when we create the transport. This will at least tell - the stack to send packets as soon as possible. + Change-Id: Ic3361b0782e5a5397a19ab18eb8550923a9bd6a6 - ASTERISK-26005 #close - Reported-by: Ross Beer +2017-02-13 11:50 +0000 [bf2f091bbb] George Joseph - Change-Id: I820f23227183f2416ca5e393bec510e8fe1c8fbd + * stream: Add stream topology to channel -2016-05-14 07:24 +0000 [3522376512] Matt Jordan + Adds topology set and get to channel. - * logger: Support JSON logging with Verbose messages + ASTERISK-26790 - When 2d7a4a3357 was merged, it missed the fact that Verbose log messages - are formatted and handled by 'verbosers'. Verbosers are registered - functions that handle verbose messages only; they exist as a separate - class of callbacks. This was done to handle the 'magic' that must be - inserted into Verbose messages sent to remote consoles, so that the - consoles can format the messages correctly, i.e., the leading - tabs/characters. + Change-Id: Ic379ea82a9486fc79dbd8c4d95c29fa3b46424f4 - In reality, verbosers are a weird appendage: they're a separate class of - formatters/message handlers outside of what handles all other log - messages in Asterisk. After some code inspection, it became clear that - simply passing a Verbose message along with its 'sublevel' importance - through the normal logging mechanisms removes the need for verbosers - altogether. +2017-01-25 16:25 +0000 [2b245b12d9] Ryan Rittgarn - This patch removes the verbosers, and makes the default log formatter - aware that, if the log channel is a console log, it should simply insert - the 'verbose magic' into the log messages itself. This allows the - console handlers to interpret and format the verbose message - themselves. + * app_voicemail: VoiceMailPlayMsg did not play database stored messages - This simplifies the code quite a lot, and should improve the performance - of printing verbose messages by a reasonable factor: - (1) It removes a number of memory allocations that were done on each - verobse message - (2) It removes the need to strip the verbose magic out of the verbose - log messages before passing them to non-console log channels - (3) It now performs fewer iterations over lists when handling verbose - messages + When attempting to use VoiceMailPlayMsg with a realtime data backend + the message is located, but never retrieved. This patch adds the + required RETRIEVE and DISPOSE calls that will fetch the message from + the database (and IMAP storage as well for that matter). - Since verbose messages are now handled like other log messages (for the - most part), the JSON formatting of the messages works as well. + Also, removed extraneous make_file call. - ASTERISK-25425 + ASTERISK-26723 #close - Change-Id: I21bf23f0a1e489b5102f8a035fe8871552ce4f96 + Change-Id: I1e122dd53c0f3d7faa10f3c2b7e7e76a47d51b8c -2016-05-14 21:48 +0000 [a1803cb5f4] Matt Jordan +2017-02-14 08:12 +0000 [662c9e69fa] var - * configs/samples/pjsip.conf.sample: Fix typo + * app_record: Add option to prevent silence from being truncated - A ':' is not a valid token for starting a comment. + When using Record() with the silence detection feature, the stream is + written out to the given file. However, if only 'silence' is detected, + this file is then truncated to the first second of the recording. - Change-Id: I123592d93a83d1bdde3e352822881eb9da85e5ad + This patch adds the 'u' option to Record() to override that behavior. -2016-05-12 07:08 +0000 [d29c17834c] Matt Jordan + ASTERISK-18286 #close + Reported by: var + Patches: + app_record-1.8.7.1.diff (license #6184) patch uploaded by var - * res/res_hep_pjsip: Fix reported local IP address when bound to 'any' + Change-Id: Ia1cd163483235efe2db05e52f39054288553b957 - When bound to an 'any' address, e.g., 0.0.0.0, PJSIP reports as its - local address the 'any' address, as opposed to the IP address we - actually received the packet on. This can cause some confusion in Homer, - as it will dutifully report what we send it. +2017-02-07 11:13 +0000 [9f394d074a] Sebastian Gutierrez - This patch uses the PJSIP inspection routines to determine which IP - address we probably received the packet on based on the remote party's - IP address. In the event that this fails, it falls back to the IP - address natively reported by the transport. + * app_queue: reset abandoned in sl for sl2 calculations - Change-Id: I076f835d2aef489e1ee1d01595b211eb2ce62da3 + ASTERISK-26775 #close -2016-05-14 12:29 +0000 [14938184a3] Sean Bright + Change-Id: I86de4b1a699d6edc77fea9b70d839440e4088284 - * res_ari: Correct Location headers returned by some ARI resources +2017-02-13 11:00 +0000 [6c4657e28e] Joshua Colp - The Location headers returned by: + * stream: Add stream topology unit tests and fix uncovered bugs. - * /bridges/{bridgeId}/play - * /bridges/{bridgeId}/record - * /channels/{channelId}/play - * /channels/{channelId}/record + This change adds unit tests for the various API calls relating + to stream topologies. This includes creation, destruction, + inspection, and manipulation. - Did not have the '/ari' prefix, and in the case of the 'play' resources, were - using 'playback' instead of 'playbacks.' + Through this a few bugs were uncovered in the implementation: - Change-Id: I957c58a3a1471bf477dae7c67faa1b74fcd9241c + 1. Creating a topology using a format capabilities would fail as + the code considered a return value of 0 from the append stream + function to indicate an error which is incorrect. -2016-05-11 20:17 +0000 [e06a23681c] Matt Jordan + 2. Not all functions which placed a stream into a topology + set the position on the stream itself. - * res_hep: Provide an option to pick the UUID type + 3. Appending a stream would cause a frack if the position + provided was the last one. This occurred because the existing + stream was queried but the index was outside of what the + vector was currently at for size. - At one point in time, it seemed like a good idea to use the Asterisk - channel name as the HEP correlation UUID. In particular, it felt like - this would be a useful identifier to tie PJSIP messages and RTCP - messages together, along with whatever other data we may eventually send - to Homer. This also had the benefit of keeping the correlation UUID - channel technology agnostic. + ASTERISK-26786 - In practice, it isn't as useful as hoped, for two reasons: - 1) The first INVITE request received doesn't have a channel. As a - result, there is always an 'odd message out', leading it to be - potentially uncorrelated in Homer. - 2) Other systems sending capture packets (Kamailio) use the SIP Call-ID. - This causes RTCP information to be uncorrelated to the SIP message - traffic seen by those capture nodes. + Change-Id: Id5590e87c8a605deea1a89e53169a9c011d66fa0 - In order to support both (in case someone is trying to use res_hep_rtcp - with a non-PJSIP channel), this patch adds a new option, uuid_type, with - two valid values - 'call-id' and 'channel'. The uuid_type option is used - by a module to determine the preferred UUID type. When available, that - source of a correlation UUID is used; when not, the more readily available - source is used. +2017-02-11 09:57 +0000 [3f94373778] Sean Bright - For res_hep_pjsip: - - uuid_type = call-id: the module uses the SIP Call-ID header value - - uuid_type = channel: the module uses the channel name if available, - falling back to SIP Call-ID if not - For res_hep_rtcp: - - uuid_type = call-id: the module uses the SIP Call-ID header if the - channel type is PJSIP and we have a channel, - falling back to the Stasis event provided - channel name if not - - uuid_type = channel: the module uses the channel name + * cli: Fix various CLI documentation and completion issues - ASTERISK-25352 #close + * app_minivm: Use built-in completion facilities to complete optional + arguments. - Change-Id: Ide67e59a52d9c806e3cc0a797ea1a4b88a00122c + * app_voicemail: Use built-in completion facilities to complete + optional arguments. -2016-05-13 11:46 +0000 [69a85a519f] Alexei Gradinari + * app_confbridge: Add missing colons after 'Usage' text. - * res_pjsip: Endpoint IP Access Controls + * chan_alsa: Use built-in completion facilities to complete optional + arguments. - With the old SIP module we can use IP access controls per peer. - PJSIP module missing this feature. + * chan_sip: Use built-in completion facilities to complete optional + arguments. Add completions for 'load' for 'sip show user', 'sip show + peer', and 'sip qualify peer.' - This patch added next 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 + * chan_skinny: Correct and extend completions for 'skinny reset' and + 'skinny show line.' - This patch also better logging failed request: - add custom message instead of "No matching endpoint found" - add SIP method to logging + * func_odbc: Correct completions for 'odbc read' and 'odbc write' - ASTERISK-25900 + * main/astmm: Use built-in completion facilities to complete arguments + for 'memory' commands. - Change-Id: I456dea3909d929d413864fb347d28578415ebf02 + * main/bridge: Correct completions for 'bridge kick.' -2016-05-12 14:36 +0000 [fd3f70598d] Mark Michelson + * main/ccss: Use built-in completion facilities to complete arguments + for 'cc cancel' command. - * Use doubles instead of floats for conversions when comparing strings. + * main/cli: Add 'all' completion for 'channel request hangup.' Correct + completions for 'core set debug channel.' Correct completions for 'core + show calls.' - In 13.9.0, there was an issue where PJSIP contacts added to an AOR would - be deleted at seemingly random times. + * main/pbx_app: Remove redundant completions for 'core show + applications.' - One reason this was happening was because of an operation to retrieve - the contacts whose expiration time was less than or equal to the current - time. When retrieving existing contacts, the contact's expiration time - and the current time were converted from a string to a float, and those - two floats were compared. + * main/pbx_hangup_handler: Remove unused completions for 'core show + hanguphandlers all.' - On some systems, including mine, this conversion was horribly off. For - instance, I could regularly see the string "1463079214" get converted - into 1463079168.000000. When switching from using a float to using a - double, the conversion was as expected. + * res_sorcery_memory_cache: Add completion for 'reload' argument of + 'sorcery memory cache stale' and properly implement. - Why was the conversion to float off? My best guess is that the - conversion to float was attempting to store the entire value in the 23 - bit significand of the IEEE-754 floating point number. In particular, if - you take only the 23 most significant bits of 1463079214, you get the - messed up 1463079168 that we were seeing in the conversion. It likely - was possible to get a more precise value by composing the number using - an exponent, but the conversion did not work that way. With a double, - you have a 52 bit significand, allowing the entire value to fit there, - and thereby allowing an accurate conversion. + Change-Id: Iee58c7392f6fec34ad9d596109117af87697bbca - ASTERISK-26007 #close - Reported by Greg Siemon +2017-02-10 15:45 +0000 [8b72ec312b] George Joseph - Change-Id: I83ca7944aae8b7cd994b254c78ec02411d321070 + * stream: Add media stream topology definition and API -2016-05-12 09:13 +0000 [4f8cfa0220] gtjoseph + This change adds the media stream topology definition and API for + accessing and using it. - * pjsip_distributor: Add missing newline to NOTICE + Some refactoring of the stream was also done. - There was a newline missing from the end of the "no matching endpoint" notice. + ASTERISK-26786 - Change-Id: Idc11fe5bc0354072291663dbffe648c471e39181 + Change-Id: Ic930232d24d5ad66dcabc14e9b359e0ff8e7f568 -2016-05-10 10:19 +0000 [d14d1ba826] Sebastian Damm +2017-01-13 11:21 +0000 [75f8167e66] Norbert Varga - * res_pjsip_outbound_registration: generate correct Contact URI for TLS + * chan_pjsip: Multidomain endpoint finding on call - There are two types of SIP URIs indicating a secure transport: - * sips:user@example.org - * sip:user@example.org;transport=tls + When PJSIP tries to call an endpoint with a domain (e.g. 1000@test.com), + the user part is stripped down as it would be a trunk with a specified user, + and only the host part is called as a PJSIP endpoint and can't be found. + This is not correct in the case of a multidomain SIP account, so the stripping + after the @ sign is done only if the whole endpoint (in multidomain case + 1000@test.com) can't be found. - When using a sips URI, Asterisk checks incoming INVITEs and answers from - the other side for sips URIs, and rejects the packet if there are only - sip URIs. So Asterisk should only generate a sips Contact URI if the - other side supports it. + ASTERISK-26248 - This patch makes Asterisk generate either a sip or sips Contact URI - depending on the format of the server URI. + Change-Id: I3a2dd6f57f3bd042df46b961eccd81d31ab202e6 - If you want a sip URI, use: - server_uri=sip:example.org\;transport=tls +2017-02-13 05:05 +0000 [89871576b9] Joshua Colp - If you want a sips URI, use: - server_uri=sips:example.org + * channel: Protect flags in ast_waitfor_nandfds operation. - ASTERISK-25990 #close - Reported-by: Sebastian Damm + The ast_waitfor_nandfds operation will manipulate the flags + of channels passed in. This was previously done without + the channel lock being held. This could result in incorrect + values existing for the flags if another thread manipulated + the flags at the same time. - Change-Id: I5ae57d6531ce940b5fc64d5cd2673e60db0f9ba2 + This change locks the channel during flag manipulation. -2016-05-05 16:41 +0000 [9f996624b0] Alexei Gradinari + ASTERISK-26788 - * logger: Add PID to syslog messages. + Change-Id: I2c5c8edec17c9bdad4a93291576838cb552ca5ed - During refactoring of this support the addition of - the PID to messages was removed. This change adds it - back in. +2017-02-11 11:25 +0000 [07abb39d6a] Richard Mudgett - ASTERISK-25538 #close + * res_pjsip.c: Fix inconsistency between warning and action. - Change-Id: Ie2d43b0652e59b7ac319a7dba94501540d70ba36 + The original return value corresponded to AST_SIP_AUTHENTICATION_CHALLENGE + but we have no authenticator registered to create the challenge. -2016-05-11 14:07 +0000 [5236ffed97] Matt Jordan + Change-Id: I62368180d774b497411b80fbaabd0c80841f8512 - * configure: Fix errors with AST_UNDEFINED_SANITIZER/AST_LEAK_SANITIZER +2017-02-11 11:26 +0000 [ce810a892b] Richard Mudgett - When running on a system that does not support or use AST_UNDEFINED_SANITIZER - or AST_LEAK_SANITIZER, the configure script would incorrectly set those - constants to a blank value, e.g., 'AST_UNDEFINED_SANITIZER='. This would - cause menuselect to error out, complaining that a blank value is not a - valid option. This patch corrects the issue by setting the value to 0 if - the options that those constants enable/disable is not found. + * pjsip_distributor.c: Fix off-nominal tdata ref leak. - Change-Id: Ib39814aaf940f308d500c1e026edb3d70de47fba + Change-Id: I571f371d0956a8039b197b4dbd8af6b18843598d -2016-05-10 08:17 +0000 [b5c471b339] Tzafrir Cohen +2017-02-09 10:01 +0000 [0910773077] Sean Bright - * followme: delete the right recorded name file + * manager: Restore Originate failure behavior from Asterisk 11 - FollowMe with the option a records the name of the caller and plays it - to the callee. However it has failed to clean up that recorded file - as it tried to delete the file name without the '.sln' extension. + In Asterisk 11, if the 'Originate' AMI command failed to connect the provided + Channel while in extension mode, a 'failed' extension would be looked up and + run. This was, I believe, unintentionally removed in 51b6c49. This patch + restores that behavior. - ASTERISK-26008 #close + This also adds an enum for the various 'synchronous' modes in an attempt to + make them meaningful. - Change-Id: I79d7b1be7d5cde57bf076d9389e2a8a4422776ec - Signed-off-by: Tzafrir Cohen + ASTERISK-26115 #close + Reported by: Nasir Iqbal -2016-05-10 03:10 +0000 [ec85ea3c21] Tzafrir Cohen + Change-Id: I8afbd06725e99610e02adb529137d4800c05345d - * basic-cfg: asterisk.conf: don't set languages +2017-02-08 14:27 +0000 [16fdb11bc3] Richard Mudgett - * No need to set language in a miniml configuration. 'en' will do just - fine. - * It would be useful to have an example of setting it to a different - language. - * Setting the documentation language explicitly is likewise not - required. Setting it to a different value is not common. At least - until there is a set of translated documentation. + * core: Cleanup some channel snapshot staging anomalies. - Change-Id: I94d91ea34e129925f25af81ef8dc0906fb568cb7 - Signed-off-by: Tzafrir Cohen + We shouldn't unlock the channel after starting a snapshot staging because + another thread may interfere and do its own snapshot staging. -2016-05-10 03:08 +0000 [1b0a9bb2c4] Tzafrir Cohen + * app_dial.c:dial_exec_full() made hold the channel lock while setting up + the outgoing channel staging. Made hold the channel lock after the called + party answers while updating the caller channel staging. - * basic-cfg: asterisk.conf: debug level 5 spams + * chan_sip.c:sip_new() completed the channel staging on off-nominal exit. + Also we need to use ast_hangup() instead of ast_channel_unref() at that + location. - Don't suggest users to use debug level 5, which spews (usually - non-useful) debug information. Reduce the suggestion to (an - arbitrarily-selected) level 2. + * channel.c:__ast_channel_alloc_ap() added a comment about not needing to + complete the channel snapshot staging on off-nominal exit paths. - Change-Id: Ib53195f78945970956ff59ef13fa89b90e0fcd60 - Signed-off-by: Tzafrir Cohen + * rtp_engine.c:ast_rtp_instance_set_stats_vars() made hold the channel + locks while staging the channels for the stats channel variables. -2016-05-10 03:06 +0000 [d0ba3e8196] Tzafrir Cohen + Change-Id: Iefb6336893163f6447bad65568722ad5d5d8212a - * basic-cfg: asterisk.conf: defaults of options +2017-02-07 06:56 +0000 [bab4885f1e] Joshua Colp - Note the default of remmed-out options. To clarify that those values are - not the defaults. + * stream: Add media stream definition and API with unit tests. - Change-Id: I849c29b7a710f0abc37355fcb5bfee335ae30738 - Signed-off-by: Tzafrir Cohen + This change adds the media stream definition and API for + accessing and using it. Unit tests have also been written + which exercise aspects of the API. -2016-05-10 02:56 +0000 [f943a1fd84] Tzafrir Cohen + ASTERISK-26773 - * basic-cfg: asterisk.conf: remove [directories] + Change-Id: I3dbe54065b55aaa51f467e1a3bafd67fb48cac87 - A minimal configuration does not need to explicitly spell out the - directories. The built-in defaults will do just fine. In many cases - they are wrong. +2017-02-10 09:35 +0000 [648d181d2f] George Joseph - Change-Id: Id1a671e5c5e9923765a4156b57f9f7e263fdd26c - Signed-off-by: Tzafrir Cohen + * configs/samples: Fix placement of 'identify' entry in sorcery.conf -2016-05-05 11:37 +0000 [1e876d6915] Kevin Harwell + The entry for 'identify' was incorrectly placed in the + res_pjsip section when it should be in + res_pjsip_endpoint_identifier_ip. - * res_pjsip_authenticator_digest: Don't use source port in nonce verification + ASTERISK-26785 #close - From the issue reporter: - "res_pjsip_outbound_authenticator_digest builds a nonce that is a hash of - the timestamp, the source address, the source port, a server UUID that is - calculated at startup, and the authentication realm. + Change-Id: Ia1372b12a952bfe2df6b1b1e0e725ca306a5d41a - Rather than caching nonces that we create, we instead attempt to re-calculate - the nonce when receiving an incoming request with authentication. We then - compare the re-calculated nonce to the incoming nonce, and if they don't match, - then authentication has failed early. +2017-02-08 11:50 +0000 [46147a8f30] Mark Michelson - The problem is that it is possible, especially when using TCP, to receive two - requests from the same endpoint but have differing source ports for those - requests. Asterisk itself commonly will use different source ports for - outbound TCP requests." + * Revert "Update qualifies when AOR configuration changes." - This patch removes the source port dependency when building the nonce. + This reverts commit 6492e91392b8fd394193e411c6eb64b45486093f. - ASTERISK-25978 #close + The change in question was intended to prevent the need to reload in + order to update qualifies on contacts when an AOR changes. However, this + ended up causing a deadlock instead. - Change-Id: I871b5f4adce102df1c4988066283095ec509dffe + Change-Id: I1a835c90a5bb65b6dc3a1e94cddc12a4afc3d71e -2016-05-07 14:39 +0000 [dfefbf8731] gtjoseph +2017-02-07 12:01 +0000 [5422ec140c] nappsoft (license 6822) - * config_transport: Tell pjproject to allow all SSL/TLS protocols + * srv: Fix crash when ast_srv_lookup is used and 0 records are returned. - The default tls settings for pjproject only allow TLS 1, TLS 1.1 and TLS 1.2. - SSL is not allowed. So, even if you specify "sslv3" for a transport method, - it's silently ignored and one of the TLS protocols is used. This was a new - behavior of pjsip_tls_setting_default() in 2.4 (when tls.proto was added) that - we never caught. + When performing an SRV lookup using the ast_srv_lookup function it + did not properly handle the situation where 0 records are returned. + If this happened it would wrongly assume that at least one record + was present. - Now we need to set tls.proto = 0 after we call pjsip_tls_setting_default(). - This tells pjproject to set the socket protocol to match the method. + This change fixes the code so it will exit early if an error occurs + or if 0 records are returned. - ASTERISK-26004 #close + ASTERISK-26772 + patches: + srv_lookup.patch submitted by nappsoft (license 6822) - Change-Id: Icfb55c1ebe921298dedb4b1a1d3bdc3ca41dd078 + Change-Id: I09b19081c74e0ad11c12bf54a257243b1bcb2351 -2016-05-05 09:14 +0000 [d03e170ae7] Joshua Colp +2017-02-06 11:40 +0000 [b79cc62057] Joshua Colp - * res_pjsip_pubsub: Use common datastores container API. + * res_stasis_device_state: Protect the adding/removing of subscriptions. - This migrates res_pjsip_pubsub over to using the newly - introduce common datastores management API instead of using - its own implementations for both subscriptions and - publications. + The adding and removing of device state subscriptions did not protect + fully against simultaneous manipulation. In particular the subscribe + case allowed a small window where two subscriptions could be added for + the same device state instead of just one. - As well the extension state data now provides a generic - datastores container instead of a subscription. This allows - the dialog-info+xml body generator to work for both - subscriptions and publications. + This change makes the code hold the subscriptions lock for the entirety + of each operation to ensure that two are not occurring at the same time. - ASTERISK-25999 #close + ASTERISK-26770 - Change-Id: I773f9e4f35092da0f653566736a8647e8cfebef1 + Change-Id: I3e7f8eb9d09de440c9024d2dd52029f6f20e725b -2016-05-05 09:12 +0000 [94cd351ec4] Joshua Colp +2017-02-01 17:56 +0000 [b47cf1a7d6] Richard Mudgett - * datastore: Add common container based datastores API. + * res_pjsip: Fix some off nominal tdata leaks. - This change introduces a common container based datastores - management API. This has been done in a few places across - the tree but this consolidates all of the logic into one - place in a generic fashion. + Change-Id: I243a4be5e7fbfe604923764969c4ee04eee89b9d - ASTERISK-25999 +2017-02-03 15:26 +0000 [7b280e7ccf] Sebastien Duthil - Change-Id: I72eb15941dcdbc2a37bb00a33ce00f8755bd336a + * res_ari: fix memory leak for channelvars -2016-05-04 02:40 +0000 [8923c9ac96] Jaco Kroon + In ari.conf, when setting the option channelvars, every Stasis channel + snapshot would create a list of variable/value that would not be freed + when the snapshot is freed, resulting in a often-recurring memory + leak. - * app_confbridge: Add a regcontext option for confbridge bridge profiles. + ASTERISK-26767 #close - This patch allows for having app_confbridge register the name of the - conference as an extension into a specific context, similar to - regcontext for chan_sip. This variant is not quite as involved as the - one in chan_sip and doesn't allow for multiple contexts or custom - extensions, you can only specify the context and the conference name - will always be used as the extension to register. + Change-Id: Ia37dd9d68063d7f879193df02ede293e5ded716d - ASTERISK-25989 #close +2017-02-03 02:25 +0000 [c6c7f17206] Tzafrir Cohen - Change-Id: Icacf94d9f2b5dfd31ef36f6cb702392619a7902f + * libasteriskssl: do nothing with OpenSSL >= 1.1 -2016-05-08 20:19 +0000 [facce6f632] gtjoseph + OpenSSL 1.1 requires no explicit initialization. The hacks in the + library are not needed. They also happen to fail running Asterisk. - * pjproject_bundled: Check for python-dev and TEST_FRAMEWORK + Change-Id: I3b3efd5d80234a4c45a8ee58dcfe25b15d9ad100 - The pjsua and pjsystest apps are now built only if TEST_FRAMEWORK is set. - The python bindings are now built only if TEST_FRAMEWORK is set and a - python development package is installed. +2017-01-20 23:59 +0000 [bc041ca14a] Tzafrir Cohen - libresample was also disabled. + * tcptls: use TLS_client_method with OpenSSL 1.1 - ASTERISK-25993 #close - Reported-by: Joshua Colp + OpenSSL 1.1 introduced TLS_client_method() and deprecated the previous + version-specific methods (such as TLSv1_client_method(). Other than + being simpler to use and more correct (gain support for TLS newer that + TLS1, in our case), the older ones produce a deprecation warning that + fails the build in dev-mode. - Change-Id: If4e91c503a02f113d5b71bc8b972081fa3ff6f03 + Change-Id: I257b1c8afd09dcb0d96cda3a41cb9f7a15d0ba07 -2016-05-06 11:54 +0000 [322c3b4262] Alexei Gradinari +2017-01-20 23:57 +0000 [2c8d0764de] Tzafrir Cohen - * res_pjsip: module load priority + * openssl 1.1 support: use OPENSSL_VERSION_NUMBER - The res_pjsip_authenticator_digest, res_pjsip_endpoint_identifier_* - and res_pjsip_registrar modules should load ASAP - to avoid "No matching endpoint found" for legitimate endpoint. + Use OPENSSL_VERSION_NUMBER instead of OPENSSL_API_COMPAT to detect + the openssl 1.1 API. - ASTERISK-25994 + Change-Id: I4e448f55ef516aedf6ad154037c35577a421a458 - Change-Id: Iac95d95ad031e0be104189d29e923a2ad7c24a1b +2017-01-31 18:28 +0000 [50029f585e] Richard Mudgett -2016-05-05 15:16 +0000 [516f49f316] Alexei Gradinari + * channel.c: Fix unbalanced read queue deadlocking local channels. - * stasis_endpoints: Add new Status and Headers to ContactStatus + Using the timerfd timing module can cause channel freezing, lingering, or + deadlock issues. The problem is because this is the only timing module + that uses an associated alert-pipe. When the alert-pipe becomes + unbalanced with respect to the number of frames in the read queue bad + things can happen. If the alert-pipe has fewer alerts queued than the + read queue then nothing might wake up the thread to handle received frames + from the channel driver. For local channels this is the only way to wake + up the thread to handle received frames. Being unbalanced in the other + direction is less of an issue as it will cause unnecessary reads into the + channel driver. - ASTERISK-25903 added a new headers to AMI Event ContactStatusDetail. - ASTERISK-25904 added a new Status to AMI Event ContactStatusDetail. - These additions should be also in stasis_endpoints - to include in command "manager show event ContactStatus" + ASTERISK-26716 is an example of this deadlock which was indirectly fixed + by the change that found the need for this patch. - Change-Id: I7610ad02a998e1f26c20caa27aa50279d0164f6a + * In channel.c:__ast_queue_frame(): Adding frame lists to the read queue + did not add the same number of alerts to the alert-pipe. Correspondingly, + when there is an exceptionally long queue event, any removed frames did + not also remove the corresponding number of alerts from the alert-pipe. -2016-05-03 15:43 +0000 [64e058f75a] Kevin Harwell + ASTERISK-26632 #close - * res_pjsip_outbound_publish: state potential dropped on reloads/realtime fetches + Change-Id: Ia98137c5bf6e9d6d202ce0eb36441851875863f6 - When reloading, or fetching realtime data, if the "apply" failed for any - numerous reasons the current state object would not be maintained. This - potentially resulted in publishes being stopped for some states/clients when - they should not have been. +2017-01-31 16:38 +0000 [97c308471d] Richard Mudgett - This patch makes it so the current state object is kept upon any type of reload/ - fetch failures. + * res_agi: Prevent an AGI from eating frames it should not. (Re-do) - Change-Id: Iab6020c116d628ed2ae81183e987e2eaa3c90b30 + A dialplan intercept routine is equivalent to an interrupt routine. As + such, the routine must be done quickly and you do not have access to the + media stream. These restrictions are necessary because the media stream + is the responsibility of some other code and interfering with or delaying + that processing is bad. A possible future dialplan processing + architecture change may allow the interception routine to run in a + different thread from the main thread handling the media and remove the + execution time restriction. -2016-05-03 15:35 +0000 [adc82a2260] Kevin Harwell + * Made res_agi.c:run_agi() running an AGI in an interception routine run + in DeadAGI mode. No touchy channel frames. - * res_pjsip_outbound_publishing: After unloading the library won't load again + ASTERISK-25951 - The same thing was happening in res_pjsip_publish_asterisk. When the library - was unloaded it did not unregister the object type from sorcery. Subsequent - loads resulted in a failed load due to the sorcery type already existing. + ASTERISK-26343 - Change-Id: Ifdc25e94e4cd40bc5a19eb4d0a00b86c2e9fedc9 + ASTERISK-26716 -2016-05-03 15:39 +0000 [3b0ce5169d] Kevin Harwell + Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43 - * res_pjsip_outbound_publish: Won't unload if condition wait times out +2017-01-31 16:32 +0000 [72e3fc5845] Richard Mudgett - When res_pjsip_outbound_publish unloads it has to wait for all current - publishing objects to get done. However if the wait condition times out - then it does not fail the unload. This sometimes results in an infinite - loop check while unloading. This patch now fails the unload operation if - the condition times out. + * Frame deferral: Revert API refactoring. - Change-Id: Id57b8cbed9d61222690fcba1e4f18e259df4c7ec + There are several issues with deferring frames that are caused by the + refactoring. -2016-05-03 14:59 +0000 [41fccbfeb1] Kevin Harwell + 1) The code deferring frames mishandles adding a deferred frame to the + deferred queue. As a result the deferred queue can only be one frame + long. - * res_pjsip_outbound_publish: Ref leak in off nominal callback paths + 2) Deferrable frames can come directly from the channel driver as well as + the read queue. These frames need to be added to the deferred queue. - There were a few spots where the client object's reference was being leaked in - sip_outbound_publish_callback. This patch cleans up those leaks. + 3) Whoever is deferring frames is really only doing the __ast_read() to + collect deferred frames and doesn't care about the returned frames except + to detect a hangup event. When frame deferral is completed we must make + the normal frame processing see the hangup as a frame anyway. As such, + there is no need to have varying hangup frame deferral methods. We also + need to be aware of the AST_SOFTHANGUP_ASYNCGOTO hangup that isn't real. + That fake hangup is to cause the PBX thread to break out of loops to go + execute a new dialplan location. - Change-Id: I485d0bc9335090f373026f77c548042e258461df + 4) To properly deal with deferrable frames from the channel driver as + pointed out by (2) above, means that it is possible to process a dialplan + interception routine while frames are deferred because of the + AST_CONTROL_READ_ACTION control frame. Deferring frames is not + implemented as a re-entrant operation so you could have the unsupported + case of two sections of code thinking they have control of the media + stream. -2016-05-03 15:31 +0000 [dfbb03cc8e] Kevin Harwell + A worse problem is because of the bad implementation of the AMI PlayDTMF + action. It can cause two threads to be deferring frames on the same + channel at the same time. (ASTERISK_25940) - * res_pjsip_outbound_publish: Potential crash due to off nominal path + * Rather than fix all these problems simply revert the API refactoring as + there is going to be only autoservice and safe_sleep deferring frames + anyway. - It was possible for the explicit publish destroy function to be called without - the pjsip client ever being initialized. This fix checks to make sure there is - a client to destroy before attempting. + ASTERISK-26343 - Change-Id: I8eea1bfa3bd472149bfc255310be2a6248688f5c + ASTERISK-26716 #close -2016-05-05 05:07 +0000 [17b6ba49ef] Joshua Colp + Change-Id: I45069c779aa3a35b6c863f65245a6df2c7865496 - * file: Ensure nativeformats remains valid for lifetime of use. +2017-02-02 11:26 +0000 [4c51ad158d] Sean Bright - It is possible for the nativeformats of a channel to change - throughout its lifetime. As a result a user of it needs to either - ensure the channel is locked when accessing the formats or keep - a reference to the nativeformats themselves. + * res_odbc: Remove deprecated settings from sample configuration file - This change fixes the file playback support so it keeps a - reference to the nativeformats when accessing things. + ASTERISK-26704 #close + Reported by: Anthony Messina - ASTERISK-25998 #close + Change-Id: I976a1f94cf79c5f31e76174c61f5c6a65fd6354f - Change-Id: Ie45b65475e1481ddf05b874ee48f63e39fff8915 +2017-02-01 17:14 +0000 [7d9b50a7b2] Richard Mudgett -2016-04-15 09:32 +0000 [cc4c5f5693] Alexei Gradinari + * res_resolver_unbound.c: Fix frequent ref leak caught by excessive ref trap. - * res_pjsip: improve realtime performance + ASTERISK-26765 - This patch modified pjsip_options to retrieve only - permament contacts for aor if the qualify_frequency is > 0 - and persisted contacts if the qualify_frequency is > 0. + Change-Id: I27eb97df7f8d7e624b0b9a61c0fcee4718c86d8d - This patch also fixed a bug in res_sorcery_astdb. - res_sorcery_astdb doesn't save object data retrived from astdb. +2017-02-01 15:56 +0000 [2849b726b6] Sean Bright - ASTERISK-25826 + * audiohooks: Muting a hook can mute underlying frames - Change-Id: I1831fa46c4578eae5a3e574ee3362fddf08a1f05 + If an audiohook is placed on a channel that does not require transcoding, + muting that hook will cause the underlying frames to be muted as well. -2016-05-02 16:52 +0000 [92f85fe766] Alexei Gradinari + The original patch is from David Woolley but I have modified slightly. - * res_fax/t38_gateway: Peer V.21 session is created on wrong channel + ASTERISK-21094 #close + Reported by: David Woolley + Patches: + ASTERISK-21094-Patch-1.8-1.txt (license #5737) patch uploaded + by David Woolley - The channel and peer V.21 sessions are created on the same channel now. - The peer V.21 session should be created only on peer channel - when one of channel can handle T.38. + Change-Id: Ib2b68c6283e227cbeb5fa478b2d0f625dae338ed - Also this patch enable debug for T.38 gateway session - if global fax debug enabled. +2017-02-01 13:54 +0000 [bbed75c3ba] Mark Michelson - ASTERISK-25982 + * Update qualifies when AOR configuration changes. - Change-Id: I78387156ea521a77eb0faf170179ddd37a50430e + Prior to this change, qualifies would only update in the following + cases: + * A reload of res_pjsip.so was issued. + * A dynamic contact was re-registered after its AOR's qualify_frequency + had been changed + This does not work well if you are using realtime for your AORs. You can + update your database to have a new qualify_frequency, but the permanent + contacts on that AOR will not have their qualifies updated. And the + dynamic contacts on that AOR will not have their qualifies updated until + the next registration, which could be a long time. -2016-05-04 16:11 +0000 [4df48581f1] Alexei Gradinari + This change seeks to fix this problem by making it so that whenever AOR + configuration is applied, the contacts pertaining to that AOR have their + qualifies updated. - * pjsip: Added "reg_server" to contacts (fixed alembic) + Additions from this patch: + * AOR sorcery objects now have an apply handler that calls into a newly + added function in the OPTIONS code. This causes all contacts + associated with that AOR to re-schedule qualifies. + * When it is time to qualify a contact, the OPTIONS code checks to see + if the AOR can still be retrieved. If not, then qualification is + canceled on the contact. - ASTERISK-25931 + Alterations from this patch: + * The registrar code no longer updates contact's qualify_frequence and + qualify_timeout. There is no point to this since those values already + get updated when the AOR changes. + * Reloading res_pjsip.so no longer calls the OPTIONS initialization + function. Reloading res_pjsip.so results in re-loading AORs, which + results in re-scheduling qualifies. - Change-Id: Icc4321a88f5c93ff809da3f372eebbf69c6a8549 + Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121 -2016-05-04 03:17 +0000 [02f4ca1079] Chris Trobridge +2017-01-31 11:17 +0000 [aeea634bc0] Joshua Colp - * config_options.c: Expand #ifdef to contain whole if statement. + * res_pjsip: Handle invocation of callback on outgoing request when error occurs. - ASTERISK-25956 #close + There are some error cases in PJSIP when sending a request that will + result in the callback for the request being invoked. The code did not + handle this case and assumed on every error case that the callback was not + invoked. - Change-Id: If6961ec54be276d5ab4f012ee7e7b420cb45de38 + The code has been changed to check whether the callback has been invoked + and if so to absorb the error and treat it as a success. -2016-05-02 16:08 +0000 [380ac201ac] Alexei Gradinari + ASTERISK-26679 + ASTERISK-26699 - * res_fax: add FAXMODE variable + Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91 - The app_fax set FAXMODE variable, but res_fax missing this feature. - This patch add FAXMODE variable which is set to either "audio" or "T38". +2017-01-30 09:02 +0000 [7a16524a83] Sean Bright - ASTERISK-25980 + * res_rtp_asterisk: Swap byte-order when sending signed linear - Change-Id: Ie3dcbfb72cc681e9e267a60202f7fb8723a51b6b + Before Asterisk 13, signed linear was converted into network byte order by a + smoother before being sent over the network. We restore this behavior by + forcing the creation of a smoother when slinear is in use and setting the + appropriate flags so that the byte order conversion is always done. -2016-05-02 05:56 +0000 [0c9faaee47] Jean Aunis + ASTERISK-24858 #close + Reported-by: Frankie Chin - * app_chanspy: fix audiohook options in non read-only mode + Change-Id: I868449617d1a7819578f218c8c6b2111ad84f5a9 - When option 'o' was not set, ChanSpy created its audiohook with the flag - AST_AUDIOHOOK_MUTE_WRITE, which caused ChanSpy to listen audio from one - direction only. +2017-01-31 12:46 +0000 [e252aff9ad] George Joseph - ASTERISK-25866 #close + * debug_utilities: Install ast_logescalator to /var/lib/asterisk/scripts - Change-Id: I5c745855eea29a3fbc4e4aed0b0c0f53580535e0 + Forgot to install it with the original patch -2016-04-07 16:33 +0000 [a4cfcda036] Alexei Gradinari + Change-Id: I8bdb540a6694971ae5fe21f48d532332c6482e4c - * res_pjsip/AMI: add contact.updated event +2017-01-25 06:50 +0000 [ef4deb8ecd] George Joseph - With the old SIP module AMI sends PeerStatus event on every - successfully REGISTER requests, ie, on start registration, - update registration and stop registration. + * debug_utilities: Add ast_logescalator - With PJSIP AMI sends ContactStatus only when status is changed. - Regarding registration: - on start registration - Created - on stop registration - Removed - but on update registration nothing + The escalator works by creating a set of startup commands in cli.conf + that set up logger channels and issue the debug commands for the + subsystems specified. If asterisk is running when it is executed, + the same commands will be issued to the running instance. The original + cli.conf is saved before any changes are made and can be restored by + executing '$prog --reset'. - This patch added contact.updated event. + The log output will be stored in... + $astlogdir/message.$uniqueid + $astlogdir/debug.$uniqueid + $astlogdir/dtmf.$uniqueid + $astlogdir/fax.$uniqueid + $astlogdir/security.$uniqueid + $astlogdir/pjsip_history.$uniqueid + $astlogdir/sip_history.$uniqueid - ASTERISK-25904 + Some minor tweaks were made to chan_sip, and res_pjsip_history + so their history output could be send to a log channel as packets + are captured. - Change-Id: I8fad8aae9305481469c38d2146e1ba3a56d3108f + A minor tweak was also made to manager so events are output to verbose + when "manager set debug on" is issued. -2016-04-30 17:52 +0000 [e61716b774] gtjoseph + Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543 - * pjproject_bundled: Various fixes discovered during testing of OSes +2017-01-23 09:35 +0000 [178b90af02] Torrey Searle - For all OSes: - * Disabled third-party codecs in pjproject and added - '--disable-speex-codec --disable-speex-aec --disable-gsm-codec' to the - configure options since we don't use the pjsip codec capability. + * libastssl/pj: libastssl/pj should have an so_version - FreeBSD: - * Added FreeBSD support to install_prereq. - * Changed pjproject/configure.m4 to use $GNU_MAKE instead of hardcoding "make". - * Added __progname and environ to asterisk.exports.in. - * Reverted the use of ldconfig to create shared library symlinks to ln. - * Only enable epoll in pjproject if `uname -s` is Linux. - * Added a patch to pjproject to take the name of the 'make' command from - an environment variable if supplied. This is needed for the python bindings. - (merged by Teluu into pjproject trunk 5/3/2016) - FreeBSD support isn't complete. Still some general issues regarding - make/gmake having nothing to do with pjproject. With some handholding it DOES - build successfully. + Issue introduced in b59956a87. In the non-darwin case libastssl/pj + should be versioned. This causes the symbol file for this lib + to not be generated. - CentOS: - Added 'patch' and 'bzip2' to install_prereq PACKAGES_RH. - CentOS 6/7 32/64 build and run the pjsip testsuite successfully. + Change-Id: Ib07ae8c40252813c488e2c1ac6204fd42816dd4c + (cherry picked from commit 54b027916a71f2b83b2050cef5ef704ea5de39b2) - Ubuntu: - No changes required. - Ubuntu 15/16 32/64 build and run the pjsip testsuite successfully. +2017-01-24 19:51 +0000 [138cd8d019] Kirill Katsnelson - Debian: - No changes required. - Debian 6/7/8 32/64 build and run the pjsip testsuite successfully. + * make_build_h: handle backslashes in external strings - There will utimately be a follow-up patch to create an install_prereq for - the testsuite as I've discovered a few missing requirements. + LikewiseOpen creates user names with a backslash in them. A gentle + massage with sed(1) allows such strings to be inserted into build.h + properly quoted. I am also adding the same for host name and other + strings used in the script that are more or less user-controlled. - ASTERISK-25968 #close + ASTERISK-26754 - Change-Id: I5756a07facfc63798115a5e73a8709382fe9259c + Change-Id: Iac5ef2b67a68ee58f35ddbf86bb818ba6eabecae -2016-03-17 14:29 +0000 [080c6216b6] Andrew Nagy +2017-01-24 22:31 +0000 [8270d2436d] Kirill Katsnelson - * app_voicemail: always copy dynamic struct to avoid race condition + * app_queue: Fix queues randomly disappearing on reload - Voicemail email addresses can be corrupt or voicemail - emails can end up being sent to the wrong email address if asterisk is - reading voicemail.conf during a reload and processing an email at the - same time. This patch always copies the struct that would otherwise only - be copied once. - - ASTERISK-24463 #close - Reported by: John Campbell - Tested by: Etienne Lessard - Tested by: Andrew Nagy - Change-Id: I3a0643813116da84e2617291903d0d489b7425fb - -2016-04-15 14:26 +0000 [2b1edee772] Alexei Gradinari - - * pjsip: Added "reg_server" to contacts. + With 500+ queues and a reload every minute, a random queue disappears + upon reload. The cause is mususe of the 'dead' flag. Namely, all queues + were marked dead up front, and then "resurrected" by dropping this flag + for those found in the configuration. But a queue marked dead can be + removed also when control leaves the app entry point on a PBX thread. - 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. + With this change, the queue is marked only not found, and at the end of + reload only the queues that are still not found are actually marked as + dead, so the dead flag is never reset, and set only on positively dead + queues. - ASTERISK-25931 + ASTERISK-26755 - Change-Id: Ia8f6bd2267809c78753b52bcf21835b9b59f4cb8 + Change-Id: I3a4537aec9eb8d8aeeaa0193407e3523feb004bf -2016-05-01 02:21 +0000 [bf13b59062] Diederik de Groot +2017-01-26 07:57 +0000 [7fa3de7ae9] Joshua Colp - * configs/basic-pbx/asterisk.conf: contains incorrect path separator + * res_pjsip_endpoint_identifier_ip: Fix memory leak of hosts when resolving. - Note: When packagers use these files (as an example) the paths are never - really used when they are split using '='. + This change adds a missing unreference of the hostname when resolving and + also cleans up the iterator. - Note: Thirdparty applications will also have trouble parsing the file when - expecting '=>'. + ASTERISK-26735 - Change-Id: I0ada647f588e81f023fb1333ca15a1a333fd6004 + Change-Id: Ic012ebaf3d89e714eec340b7b0c5e63c66af857a -2016-04-27 17:19 +0000 [2c46063d54] Richard Mudgett +2017-01-25 15:26 +0000 [d32bd63860] Mark Michelson - * res_pjsip_exten_state: Create PUBLISH messages. + * Add reload options to CLI/AMI stale object commands. - Create PUBLISH messages to update a third party when an extension state - changes because of either a device or presence state change. + Marking an object as stale in a memory cache is supposed to prime the + cache so that the next time the item is retrieved, the stale item is + deleted from the cache and a background task is run to re-populate the + cache with a fresh version of the object. - A configuration example: + The problem is, there are some object types out there for which there is + no natural reason that they would be retrieved from the backend with any + regularity. Outbound PJSIP registrations are a good example of this. At + startup, they are read, and an object-specific state is created that + refers to the initially-retrieved object for all time. - [exten-state-publisher] - type=outbound-publish - server_uri=sip:instance1@172.16.10.2 - event=presence - ; Optional regex for context filtering, if specified only extension state - ; for contexts matching the regex will cause a PUBLISH to be sent. - @context=^users - ; Optional regex for extension filtering, if specified only extension - ; state for extensions matching the regex will cause a PUBLISH to be sent. - @exten=^[0-9]* - ; Required body type for the PUBLISH message. - ; - ; Supported values are: - ; application/pidf+xml - ; application/xpidf+xml - ; application/cpim-pidf+xml - ; application/dialog-info+xml (Planned support but not yet) - @body=application/pidf+xml + Adding the "reload" option to the CLI/AMI commands gives the cache the + opportunity to manually re-retrieve the object from the backend, both + storing the new object in the cache and applying the new object's + configuration to the module that uses that object. - The '@' extended variables are used because the implementation can't - extend the outbound publish type as it is provided by the outbound publish - module. That means you either have to use extended variables, or - implement some sort of custom extended variable thing in the outbound - publish module. Another option would be to refactor that stuff to have an - option which specifies the use of an alternate implementation's - configuration and then have that passed to the implementation. JColp - opted for the extended variables method originally. + Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8 - ASTERISK-25972 #close +2017-01-10 17:39 +0000 [20aed30d9a] Richard Mudgett - Change-Id: Ic0dab4022f5cf59302129483ed38398764ee3cca + * T.140: Fix format ref and memory leaks. -2016-04-26 16:10 +0000 [0b5292525c] Richard Mudgett + * channel.c:ast_sendtext(): Fix T.140 SendText memory leak. - * res_pjsip_exten_state: Check if body generator is available. + * format_compatibility.c: T.140 RED and T.140 were swapped. - When starting the extension state publishers, check if the requested - message body generator is available. If not available give error message - and skip starting that publisher. + * res_rtp_asterisk.c:rtp_red_init(): Fix ast_format_t140_red ref leak. - * res_pjsip_pubsub.c: Create new API if type/subtype generator - registered. + * res_rtp_asterisk.c:rtp_red_init(): Fix data race after starting periodic + scheduled red_write(). - * res_pjsip_exten_state.c: Use new body generator API for validation. + * res_rtp_asterisk.c: Some other minor misc tweaks. - ASTERISK-25922 + Change-Id: Ifa27a2e0f8a966b1cf628607c86fc4374b0b88cb - Change-Id: I4ad69200666e3cc909d4619e3c81042d7f9db25c +2017-01-24 15:39 +0000 [ee2b0f2eef] Joshua Colp -2016-04-28 11:35 +0000 [369182d084] Richard Mudgett + * res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0. - * res_pjsip: Start body generator users after suppliers. + When configuring a match using a netmask the error variable was + not defaulting to 0. For some people this would cause the code + to think an error occurred when adding the match when in reality + it added perfectly fine. - Change-Id: I8f0b57841feaab56c8a4e821b5ccb4e05e5fbadb + ASTERISK-26693 -2016-04-28 16:06 +0000 [3af83ea2fb] Richard Mudgett + Change-Id: I850c250813742bddde65c84e739093c9e01dfe56 - * res_pjsip_pubsub.c: Add useful information to some messages. +2017-01-10 17:37 +0000 [930a24a730] Richard Mudgett - Change-Id: Ia0b2e15773894c599e5c5748bbc70e99f434192a + * astobj2.c: Add excessive ref count trap. -2016-04-26 15:58 +0000 [8e1b663b87] Richard Mudgett + Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a - * res_pjsip_pubsub.c: Fix body generator registration race. +2017-01-10 13:11 +0000 [de28c1b9f1] Richard Mudgett - Change-Id: Id8752073ef06472a2fd96080f4009fac42843e67 + * main/app.c: Memory corruption from early format destruction. -2016-04-28 16:54 +0000 [30415944a8] gtjoseph + * make_silence() created a malloced silence slin frame without adding a + slin format ref. When the frame is destroyed it will unref the slin + format that never had a ref added. Memory corruption is expected to + follow. - * pjproject_bundled: Disable PJSIP_UNESCAPE_IN_PLACE + * Simplified and fixed counting the number of samples in a frame list for + make_silence(). - When pjsip_parse_uri is called with PJSIP_UNESCAPE_IN_PLACE enabled, - the input uri string will become corrupted if it contains escape sequences. - It's not possible to automatically strdup or strdupa the input string because - the output uri pj_str_t's will have pointers to chunks of the input string. - Getting around this would require more memory management code and wouldn't - be worth the savings of doing the unescape in place. + * Eliminated an unnecessary RAII_VAR associated with the make_silence() + frame. - ASTERISK-25970 #close - Reported-by: Dmitriy Serov + Change-Id: I47de3f9b92635b7f8b4d72309444d6c0aee6f747 - Change-Id: I28dc0e599b5108f7959b9c46dc8278371b372f88 +2017-01-11 14:59 +0000 [2039eb8edf] Richard Mudgett -2016-04-26 15:13 +0000 [906ea2c43f] Richard Mudgett + * frame.c: Fix off-nominal format ref leaks. - * res_pjsip_pubsub.h: Fix doxygen association. + * ast_frisolate() could leak frame format refs on allocation + failures. - Change-Id: I110d3e3572598289fcd4215d966cf0c858f98632 + * Similified code in ast_frisolate() and code used by + ast_frisolate(). -2016-04-25 16:00 +0000 [76ea4cfaae] Richard Mudgett + Change-Id: I79566d4d36b3d7801bf0c8294fcd3e9a86a2ed6d - * res_pjsip_outbound_publish.c: Remove redundant flag check. +2017-01-13 19:08 +0000 [e922979d49] Richard Mudgett - Change-Id: I0da80a3c3e0eae0c52ff27e7412ba027d6f52353 + * stasis_bridge.c: Fix off-nominal stasis control ref leak. -2016-03-07 18:34 +0000 [4ebf9a938d] gtjoseph + Change-Id: Ib17218343a6596832060180e19386da9df150ac8 - * res_pjsip: Add ability to identify by Authorization username +2017-01-10 12:30 +0000 [56854f22d2] Richard Mudgett - A feature of chan_sip that service providers relied upon was the ability to - identify by the Authorization username. This is most often used when customers - have a PBX that needs to register rather than identify by IP address. From my - own experiance, this is pretty common with small businesses who otherwise - don't need a static IP. + * res_musiconhold.c: Fix format ref leak when parsing MOH config class. - In this scenario, a register from the customer's PBX may succeed because From - will usually contain the PBXs account id but an INVITE will contain the caller - id. With nothing recognizable in From, the service provider's Asterisk can - never match to an endpoint and the INVITE just stays unauthorized. + Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5 - The fixes: +2017-01-10 14:03 +0000 [d87f81ddb1] Richard Mudgett - A new value "auth_username" has been added to endpoint/identify_by that - will use the username and digest fields in the Authorization header - instead of username and domain in the the From header to match an endpoint, - or the To header to match an aor. This code as added to - res_pjsip_endpoint_identifier_user rather than creating a new module. + * chan_oss.c: Fix format ref leak in oss_read(). - Although identify_by was always a comma-separated list, there was only - 1 choice so order wasn't preserved. So to keep the order, a vector was added - to the end of ast_sip_endpoint. This is only used by res_pjsip_registrar - to find the aor. The res_pjsip_endpoint_identifier_* modules are called in - globals/endpoint_identifier_order. + Change-Id: I0a5d56c7dcf327d60f86a4c25a23571733709fd0 - Along the way, the logic in res_pjsip_registrar was corrected to match - most-specific to least-specific as res_pjsip_endpoint_identifier_user does. +2017-01-10 17:48 +0000 [36bdd7c1a0] Richard Mudgett - The order is: + * Add notes about embedded ast_frame structs holding a format ref. - username@domain - username@domain_alias - username + mod_format.h: Note ast_filestream.fr holds a format ref. - Auth by username does present 1 problem however, the first INVITE won't have - an Authorization header so the distributor, not finding a match on anything, - sends a securty_alert. It still sends a 401 with a challenge so the next - INVITE will have the Authorization header and presumably succeed. As a result - though, that first security alert is actually a false alarm. + translate.h: Note ast_trans_pvt.f holds a format ref. - To address this, a new feature has been added to pjsip_distributor that keeps - track of unidentified requests and only sends the security alert if a - configurable number of unidentified requests come from the same IP in a - configurable amout of time. Those configuration options have been added to - the global config object. This feature is only used when auth_username - is enabled. + Change-Id: I86bda354d725207b41e08920355d7c31b2d7f749 - Finally, default_realm was added to the globals object to replace the hard - coded "asterisk" used when an endpoint is not yet identified. +2017-01-20 21:13 +0000 [6f3e8c8e01] Richard Mudgett - The testsuite tests all pass but new tests are forthcoming for this new - feature. + * PJPROJECT logging: Fix detection of max supported log level. - ASTERISK-25835 #close - Reported-by: Ross Beer + The mechanism used for detecting the maximum log level compiled into the + linked pjproject did not work. The API call simply stores the requested + level into an integer and does no range checking. Asterisk was assuming + that there was range checking and limited the new value to the allowable + range. To get the actual maximum log level compiled into the linked + pjproject we need to get and save off the initial set log level from + pjproject. This is the maximum log level supported. - Change-Id: I30ba62d208e6f63439600916fcd1c08a365ed69d + * Get and save off the initial log level setting before altering it to the + desired level on startup. This has to be done by a macro rather than + calling a core function to avoid incorrectly linking pjproject. -2016-04-27 13:23 +0000 [2b150f0b80] Mark Michelson + * Split the initial log level warning messages to warn if the linked + pjproject cannot support the requested startup level and if it is too low + to get the pjproject buildopts for "pjproject show buildopts". - * func_odbc: Check connection status before executing queries. + * Adjust the CLI "pjproject set log level" to check the saved max log + level and to generate normal output messages instead of a warning message. - A recent change to func_odbc made it so that a single connection was - maintained per DSN. The problem was that the code was optimistic about - the health of the connection after initially opening it and did nothing - to re-connect in case the connection had died. + ASTERISK-26743 #close - This change adds a check before executing a query to ensure that the - connection to the database is still up and running. + Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4 - ASTERISK-25963 #close - Reported by Ross Beer +2017-01-05 13:21 +0000 [0ea3c371c5] Richard Mudgett - Change-Id: Id33c86eb04ff48ca088bb2e3086c27b3b683491d + * res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands. -2016-04-15 11:59 +0000 [860b135c88] Alexei Gradinari + ASTERISK-23828 #close - * res_pjsip: disable multi domain to improve realtime performace + Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567 - This patch added new global pjsip option 'disable_multi_domain'. - Disabling Multi Domain can improve Realtime performance by reducing - number of database requests. +2017-01-23 16:18 +0000 [4bfeda6ee4] Mark Michelson - ASTERISK-25930 #close + * Free endpoint ACLs when destroying PJSIP endpoints. - Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7 + If endpoint ACLs were specified, they were not being freed + when endpoints were destroyed. On systems with realtime endpoints, this + could add up quickly since each DB lookup would allocate the ACL without + freeing it. -2016-04-01 07:50 +0000 [7281770710] Jean Aunis + ASTERISK-26731 #close + Reported by Ustinov Artem - * app_chanspy: reduce audio loss on the spying channel. + Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad - ChanSpy was creating its audiohook with the flags AST_AUDIOHOOK_TRIGGER_SYNC - and AST_AUDIOHOOK_SMALL_QUEUE, which caused audio frames to be lost when - queues grow too large or when read and write queues go out of sync. - Now these flags are set conditionally: - - AST_AUDIOHOOK_TRIGGER_SYNC is not set if the option "o" is set - - a new option "l" is created: if set, AST_AUDIOHOOK_SMALL_QUEUE will not - be set on the audiohook +2017-01-19 09:05 +0000 [6691606723] George Joseph - ASTERISK-25866 + * ari: Implement 'debug all' and request/response logging - Change-Id: I9c7652f41d9fa72c8691e4e70ec4fd16b047a4dd + 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. To accomplish this, a new global_debug global + variable was added to res/stasis/app.c and new APIs were added to + set and query the value. -2016-04-14 07:03 +0000 [81ea80b74c] Joshua Colp + 'ari set debug' now displays requests and responses as well as events. + This required refactoring the existing debug code. - * res_pjsip_exten_state: Add config support for exten state publishers. + * The implementation for 'ari set debug' was moved from stasis/cli.{c,h} + to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted. + * In order to print the body of incoming requests even if a request + failed, the consumption of the body was moved from the ari stubs + to ast_ari_callback in res_ari.c and the moustache templates were + then regenerated. The body is now passed to ast_ari_invoke and then + on to the handlers. This results in code savings since that template + was inserted multiple times into all the stubs. - This change adds the ability to configure outbound publishing of - extension state. Right now stuff is merely set up to store the - configuration and to register a global extension state callback. The - act of constructing the body and sending is not yet complete. + An additional change was made to the ao2_str_container implementation + to add partial key searching and a sort function. The existing cli + code assumed it was already there when it wasn't so the tab completion + was never working. - Configurable elements right now are a regex for filtering the context, - a regex for filtering the extension, and the body type to publish. + Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf + (cherry picked from commit 1d890874f39a5a81b20da44358143ed9b54ab0fe) - ASTERISK-25922 #close +2017-01-20 23:41 +0000 [f3f9175df0] Tzafrir Cohen - Change-Id: Ia7e630136dfc355073c1cadff8ad394a08523d78 + * test_voicemail_api: order of params to VERIFY macros -2016-04-26 11:13 +0000 [c480159045] Joshua Colp + Fix order of parameters in calls to VM_API_INT_VERIFY and + VM_API_STRING_VERIFY - * chan_sip: Give more time for TCP/TLS threads to stop. + ASTERISK-26739 #close - The unload process currently tells each TCP/TLS to terminate but - does not wait for them to do so. This introduces a race condition - where the container holding the threads may be destroyed before - the threads are able to remove themselves from it. When they - finally do the container is invalid and can't be used causing a - crash. + Change-Id: I30dc6b36893aadad6012be3f16f93aa5720870d6 + Note: status: builds. Not tested any further. - A previous change existed which waited a bit to wait for any - stranglers to finish. This change extends this and waits longer. +2017-01-23 09:10 +0000 [96e7291cbd] George Joseph - ASTERISK-25961 #close + * pjproject_bundled: Fix setting max log level - Change-Id: Idc6262b670ca49ede32061159e323b7b63c6f3c6 + An earlier attempt to prevent pjsua from spitting out an extra 6795 + lines of debug output every time the testsuite called it was also + turning off the ability for asterisk to output debug info when it + needed to. This patch reverts the earlier fix and instead adds + a pjproject patch that sets the startup log level to 1 for pjsua + pjsystest and the pjsua python binding. This is an asterisk-only + patch that does not affect pjproject functionality and will not be + submitted upstream. -2016-04-26 05:48 +0000 [8ae69cffef] Joshua Colp + Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8 - * app_queue: Fix crash when unloading module. +2017-01-23 10:08 +0000 [23690c1b35] Joshua Colp - When unloading the app_queue module the members in each queue are - destroyed and as part of this they are removed from the pending - members container. Unfortunately a crash would occur as the container - was destroyed before the members were removed. + * res_pjsip_endpoint_identifier_ip: Read settings before resolving. - This change tweaks ordering so the container destruction occurs - after the members are destroyed. + An option has been added, srv_lookups, which controls whether + SRV lookups are performed on the provided match hosts or not. + It was possible for this option to be applied after resolution + had already happened. - ASTERISK-16115 + This change makes it so hosts are stored away, settings are read + and applied, and then resolution is done. This ensures that no + matter the ordering the srv_lookups option is in effect. - Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b + ASTERISK-26735 -2016-04-24 22:51 +0000 [284bb814ac] gtjoseph + Change-Id: I750378cb277be0140f8c5539450270afbfc43388 - * config: Fix ast_config_text_file_save2 writability check for missing files +2016-11-29 09:31 +0000 [1061539b75] Lorenzo Miniero - A patch I did back in 2014 modified ast_config_text_file_save2 to check the - writability of the main file and include files before truncating and re-writing - them. An unintended side-effect of this was that if a file doesn't exist, - the check fails and the write is aborted. + * media: Add experimental support for RTCP feedback. - This patch causes ast_config_text_file_save2 to check the writability of the - parent directory of missing files instead of checking the file itself. This - allows missing files to be created again. A unit test was also added to - test_config to test saving of config files. + This change adds experimental support for providing RTCP + feedback information to codec modules so they can dynamically + change themselves based on conditions. - The regression was discovered when app_voicemail's passwordlocation=spooldir - feature stopped working. + ASTERISK-26584 - ASTERISK-25917 #close - Reported-by: Jonathan Rose + Change-Id: Ifd6aa77fb4a7ff546c6025900fc2baf332c31857 - Change-Id: Ic4dbe58c277a47b674679e49daed5fc6de349f80 +2017-01-22 17:25 +0000 [cfe72c39cf] Richard Mudgett -2016-04-25 08:11 +0000 [f99ec857c8] Javier Acosta + * LISTFILTER: Remove outdated ERROR message. - * Fix case sensitive actions in AMI QueueSummary and QueueStatus + Feeding LISTFILTER an empty variable results in an invalid ERROR message. + Earlier changes made the message useless because we can no longer tell if + the variable is empty or does not exist. It is valid to try to remove a + value from an empty list just as it is valid to try to remove a value that + is not in a non-empty list. - ASTERISK-25954 #close - Reported by: Javier Acosta + * Removed the outdated ERROR message. - Change-Id: I00be83d45cc7e8385de2523012bd196aafeeb256 - (cherry picked from commit c0688a6398f27296ff849848a2e416e036d794e3) + * Added more test cases to the LISTFILTER unit test. -2016-04-21 14:23 +0000 [30ab21d5fa] Kevin Harwell + Change-Id: Ided9040e6359c44a335ef54e02ef5950a1863134 - * app_queue: queue members can receive multiple calls +2017-01-21 14:43 +0000 [dbb9c8141d] Tzafrir Cohen - It was possible for a queue member that is a member of at least 2 or more - queues to receive mulitiple calls at the same time. This happened because - of a race between when a member was being rung and when the device state - notified the other queue(s) member object of the state change. + * tests: use datadir for sound files - This patch makes it so when a queue member is being rung it gets added to - a global pool of queue members. If that same member is tried again, e.g. - from another queue, and it is found to already exist in the pending member - container then it will not ring that member. + Some (voicemail-related) tests API symlinks beep.gsm and other files + from ast_config_AST_VAR_DIR. It should use ast_config_AST_DATA_DIR. - ASTERISK-16115 #close + ASTERISK-26740 #close - Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48 + Change-Id: Id49c56fb9e16df64b1a2b829693ca7601252df89 -2016-04-22 17:53 +0000 [99fcf2a791] gtjoseph +2017-01-05 15:11 +0000 [ef9164b9ca] Richard Mudgett - * res_agi: Prevent run_agi from eating frames it shouldn't + * res_pjsip_pubsub.c: Fix AMI event list counts. - The run_agi function is eating control frames when it shouldn't be. This is - causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond - transfer. + Fix the AMI PJSIPShowSubscriptionsInbound, PJSIPShowSubscriptionsOutbound, + and PJSIPShowResourceLists actions event counts. The reported counts may + not necessarily be accurate depending on what happens. - Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie - answers. + The subscriptions count would be wrong if Asterisk ever has outbound + subscriptions. - Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE - and is left thinking he's connected to Bob. + The resource list count could be wrong if a list were added or removed + during the AMI action being processed. - In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls - an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on - Charlie's channel. + Change-Id: I4344301827523fa174960a42c413fd19abe4aed5 - The fix was to accumulate deferrable frames in the "forever" loop instead of - dropping them, and re-queue them just before running the actual agi command - or exiting. +2017-01-05 13:02 +0000 [ab858295a2] Richard Mudgett - ASTERISK-25951 #close + * res_pjsip_pubsub.c: Fix incorrect message string wrapping. - Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645 + Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120 -2016-04-22 15:25 +0000 [757ec6172b] Richard Mudgett +2017-01-05 13:01 +0000 [6d648185bc] Richard Mudgett - * test_message.c: Wait longer in case dialplan also processes the test message. + * res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage. - Bumped the wait from 1 second to 5 seconds. The test message was hitting my - default call handler and failing the test because it took longer. + Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be - Change-Id: I3a03737f25e92983de00548fcc7bbc50dd7544ba +2017-01-05 12:58 +0000 [90f3b1270c] Richard Mudgett -2016-04-21 23:53 +0000 [41ecf22587] Kirill Katsnelson + * res_pjsip: alloca can never fail. - * chan_sip: Make autocreated peers send PeerStatus events + Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1 - Since Stasis has been introduced, an attempt to send AMI messages by an - autocreated peer caused a crash, and all events from autocreated peers were - semi-inadvertently disabled altogether in 0b83761. This change restores the - disabled functionality. +2017-01-13 11:03 +0000 [d16b3a9917] George Joseph - ASTERISK-25950 + * debug_utilities: Create ast_loggrabber - Change-Id: Iecc350f23db603fadb2f302064643ebe9664e974 + ast_loggrabber gathers log files from customizable search patterns, + optionally converts POSIX timestamps to a readable format and + tarballs the results. -2016-04-13 17:09 +0000 [b3cc74fda9] Richard Mudgett + Also a few tweaks were made to ast_coredumper. - * manager_channels.c: Fix allocation failure crash. + Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495 + (cherry picked from commit c70915287837704090d75f181525765de7a17221) - An earlier allocation failure failed to create a channel snapshot for the - AMI HangupRequest/SoftHangupRequest event which resulted in a crash in - channel_hangup_request_cb(). Where the stasis message gets generated - cannot tell if the NULL snapshot returned was because of an allocation - failure or the channel was a dummy channel. +2017-01-01 03:47 +0000 [48730ae65e] Richard Mudgett - * Made channel_hangup_request_cb() check if the channel blob has a - snapshot and exit if it doesn't. + * res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages. - * Eliminated the RAII_VAR usage in channel_hangup_request_cb(). + Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49 - Change-Id: I0b6a1c4e95cbb7d80b2a7054c6eadecc169dfd24 +2016-12-22 04:07 +0000 [40b9766a31] Martin Tomec -2016-04-13 13:50 +0000 [a63656b419] Richard Mudgett + * app_queue: add RINGCANCELED log event on caller hang up - * Bridge system: Fix memory leaks and double frees on impart failure. + QueueLog did not log ringnoanswer when the caller abandoned call + before first timeout. It was impossible to get agent membername + and ringing duration for this short calls. After some discusions + it seems that the best way is to add new event RINGCANCELED, + which is generated after caller hangup during ringing. - You cannot reference the passed in features struct after calling - ast_bridge_impart(). Even if the call fails. + ASTERISK-26665 - Change-Id: I902b88ba0d5d39520e670fb635078a367268ea21 + Change-Id: Ic70f7b0f32fc95c9378e5bcf63865519014805d3 -2016-04-13 13:20 +0000 [71dfa35540] Richard Mudgett +2017-01-12 15:58 +0000 [283c16c6b6] Kevin Harwell - * bridge_softmix.c: Fix crash if channel fails to join mixing tech. + * abstract/fixed/adpative jitter buffer: disallow frame re-inserts - softmix_bridge_join() failed because of an allocation failure. To address - this, the softmix bridge technology now checks if the channel failed to - join softmix successfully. In addition, the bridge now begins the process - of kicking the channel out of the bridge so we don't have channels - partially in the bridge for very long. + It was possible for a frame to be re-inserted into a jitter buffer after it + had been removed from it. A case when this happened was if a frame was read + out of the jitterbuffer, passed to the translation core, and then multiple + frames were returned from said translation core. Upon multiple frames being + returned the first is passed on, but sebsequently "chained" frames are put + back into the read queue. Thus it was possible for a frame to go back into + the jitter buffer where this would cause problems. - * Fix the test_channel_feature_hooks.c unit tests. The test channel must - have a valid codec to join the simple_bridge technology. This patch makes - joining a bridge more strict by not allowing partially joined channels to - remain in the bridge. + This patch adds a flag to frames that are inserted into the channel's read + queue after translation. The abstract jitter buffer code then checks for this + flag and ignores any frames marked as such. - Change-Id: I97e2ade6a2bcd1214f24fb839fda948825b61a2b + Change-Id: I276c44edc9dcff61e606242f71274265c7779587 -2016-04-12 15:29 +0000 [06632a0d11] Richard Mudgett +2016-11-06 06:30 +0000 [8cc1cd5df7] Sebastian Gutierrez - * Manager: Short circuit AMI message processing. + * app_queue: Add QueueUpdate application. - Improve AMI message processing performance if there are no consumers - listening for the messages. We now skip creating the AMI event message - text strings. + Add an application that allows tracking outbound calls + using app_queue. - Change-Id: I7b22fc5ec4e500d00635c1a467aa8ea68a1bb2b3 + ASTERISK-19862 -2016-04-13 17:54 +0000 [6ddd856b86] Richard Mudgett + Change-Id: Ia0ab64aed934c25b2a25022adcc7c0624224346e - * manager.c: Eliminate most RAII_VAR usage. +2017-01-13 21:23 +0000 [f4e77a5678] Richard Mudgett - * Made ast_manager_event_blob_create() not allocate the ao2 event object - with a lock as it is not needed. + * taskprocessor.c: Change when high water warning logged. - Change-Id: I8e11bfedd22c21316012e0b9dd79f5918f644b7c + The task processor queue reached X scheduled tasks message was originally + intended to get logged only once per task processor to prevent spamming + the log. This is no longer necessary since high and low water thresholds + can better control when the message is logged. -2016-04-22 13:49 +0000 [924738e950] Mark Michelson + It is beneficial to generate the warning each time a task processor + reaches the high water level because PJSIP stops processing new requests + while any high water alert is active. Without this change you would have + to enable at least debug level 3 logging to know about a repeated alert + trigger. - * func_odbc: Use one connection per DSN. + * Made generate the warning message whenever a task is pushed into the + task processor that triggers the high water alert. - res_odbc was changed in Asterisk 13.8.0 to remove connection management, - opting instead to let unixodbc maintain open connections and return - those to Asterisk as requested. + * Appended 'again' to the warning for a repeated high water alert trigger. - This was a boon for realtime, since it meant that multiple threads could - potentially run parallel queries since they could each be using their - own database connections. + Change-Id: Iabf75a004f7edaf1e5e8c323099418e667cac999 - However, on the user-facing side, func_odbc, there were some inherent - behaviors being relied on that no longer hold true after the change. - One such reported behavior was that MySQL's LAST_INSERTED_ID() works - per-connection. This means that if Asterisk uses separate connections - for every database operation, whereas before it used one connection for - everything, we have broken expectations and functionality. +2017-01-10 05:54 +0000 [e0e502d9d2] Aaron An - The fix provided in this patch is to make func_odbc use a single - database connection per DSN. This way, user-facing database usage will - have the same behavior as it did pre-13.8.0. However, realtime, which is - the real workhorse of database interaction, will continue to let - unixodbc manage connections. + * res_rtp_asterisk: Fix bug in function CHANNEL(rtcp, all_rtt) - ASTERISK-25938 #close - Reported by Edwin Vandamme + Function CHANNEL(rtcp,all_rtt) CHANNEL(rtcp,all_loss) CHANNEL(rtcp,all_jitter) + always return 0.0 due to wrong define of macro "AST_RTP_SATA_SET" and + "AST_RTP_STAT_STRCPY". + It should compare "combined" with "stat" not "current_stat". - Change-Id: Iac961fe79154c6211569afcdfec843c0c24c46dc + ASTERISK-26710 #close + Reported-by: Aaron An + Tested-by: AaronAn -2016-04-22 13:02 +0000 [6ede210c98] Leif Madsen + Change-Id: Id4140fafbf92e2db689dac5b17d9caa009028a15 - * Remove reference to non-existent sip.conf option +2017-01-10 18:10 +0000 [0d53c91fba] George Joseph - Option was removed in commit 7f883ef495b57ae9182e47213d01d5e8009dbf3f + * debug_utilities: Create the ast_coredumper utility - ASTERISK-25927 #close + This utility allows easy manipulation of asterisk coredumps. - Change-Id: I92f9b0196d9fc41d1d58354c07340c465ef1fcf8 + * Configurable search paths and patterns for existing coredumps + * Can generate a consistent coredump from the running instance + * Can dump the lock_infos table from a coredump + * Dumps backtraces to separate files... + - thread apply 1 bt full -> .thread1.txt + - thread apply all bt -> .brief.txt + - thread apply all bt full -> .full.txt + - lock_infos table -> .locks.txt + * Can tarball corefiles and optionally delete them after processing + * Can tarball results files and optionally delete them after processing + * Converts ':' in coredump and results file names '-' to facilitate + uploading. Jira for instance, won't accept file names with colons + in them. -2016-04-21 08:26 +0000 [c991e5472e] Diederik de Groot + Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1]. - * lock.c: Check *lt before dereferencing it + [1] For *BSDs, the "devel/gdb" package might have to be installed to + get a recent gdb. The utility will check all instances of gdb + it finds in $PATH and if one isn't found that can run python, it + prints a friendly error. - *lt is NULL if t->tracking == 0 + Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd + (cherry picked from commit cb47b4556053cd50d9102eef913671ad0306062d) - ASTERISK-25948 #close +2017-01-08 10:29 +0000 [e54c8aec34] George Joseph - Change-Id: I4a81af28f9c82a74aa82413d772a7dc8fa6f45ba + * pjproject_bundled: Fix compilation with MALLOC_DEBUG -2016-04-15 14:36 +0000 [6b1a632290] Richard Mudgett + When MALLOC_DEBUG was specified, make was failing. Immediately + remaking would work. The issues was in the ordering of the make + dependencies. - * res_stasis: Handle re-enter stasis bridge with swap channel. + Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd - We lose the fact that there is a swap channel if there is one. We - currently wind up rejoining the stasis bridge as a normal join after the - swap channel has already been kicked from the bridge. +2017-01-05 06:11 +0000 [a7d856cd96] Joshua Colp - This patch preserves the swap channel so the AMI/ARI events can note that - the channel joining the bridge is swapping with another channel. Another - benefit to swaqpping in one operation is if there are any channels that - get lonely (MOH, bridge playback, and bridge record channels). The lonely - channels won't leave before the joining channel has a chance to come back - in under stasis if the swap channel is the only reason the lonely channels - are staying in the bridge. + * res_pjsip_endpoint_identifier_ip: Add support for SRV lookups. - ASTERISK-25947 #close - Reported by: Richard Mudgett + This change implements SRV support for the IP based endpoint + identifier module. All possible addresses through SRV are looked + up and added as matches. If no SRV records are available a + fallback to normal host resolution is done. If an IP address + is provided then no SRV lookup occurs. - ASTERISK-24649 - Reported by: John Bigelow + This is configured using the "srv_lookups" option on the + identify section and defaults to "yes". - ASTERISK-24782 - Reported by: John Bigelow + ASTERISK-26693 - Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee + Change-Id: I6b641e275bf96629320efa8b479737062aed82ac -2016-04-19 16:58 +0000 [1c5248c383] Richard Mudgett +2016-11-06 06:37 +0000 [740ca862e4] Sebastian Gutierrez - * bridge: Hold off more than one imparting channel at a time. + * app_queue: add new Service Level calculation - An earlier patch blocked the ast_bridge_impart() call until the channel - either entered the target bridge or it failed. Unfortuantely, if the - target bridge is stasis and the imprted channel is not a stasis channel, - stasis bounces the channel out of the bridge to come back into the bridge - as a proper stasis channel. When the channel is bounced out, that - released the block on ast_bridge_impart() to continue. If the impart was - a result of a transfer, then it became a race to see if the swap channel - would get hung up before the imparted channel could come back into the - stasis bridge. If the imparted channel won then everything is fine. If - the swap channel gets hung up first then the transfer will fail because - the swap channel is leaving the bridge. + Adds a new formula for SL2 and documentation - * Allow a chain of ast_bridge_impart()'s to happen before any are - unblocked to prevent the race condition described above. When the channel - finally joins the bridge or completely fails to join the bridge then the - ast_bridge_impart() instances are unblocked. + ASTERISK-26559 - ASTERISK-25947 - Reported by: Richard Mudgett + Change-Id: I0970c620460507cd9d45b0d43600779c8915e770 - ASTERISK-24649 - Reported by: John Bigelow +2016-12-19 15:03 +0000 [d96e350256] Jonathan R. Rose - ASTERISK-24782 - Reported by: John Bigelow + * core/pbx: dialplan show - display filename/line# - Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1 + Adds the ability for extensions to be registered to include filename and + line number so that dialplan show output can show the filename and line + number of a config file responsible for generating a given extension. -2016-04-19 17:52 +0000 [70e860ec49] gtjoseph + This only affects config modules that are written to use the new extension + registering functions. In this patch, that only includes pbx_config, so + extensions registered in extensions.conf and any included extension will + be shown in this manner. Extensions registered in this manner will show + the filename and line number *instead* of the registrar. - * res_pjsip_callerid: Clear out display name if id->name is not valid + ASTERISK-26658 #close + Reported by: Jonathan R. Rose - When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning - the From header, then it overwrites the display name and uri from the channel's - connected.id. If the connected.id.name wasn't valid, create_new_id_hdr was - leaving the display name from the From header in the new RPID or PAI header. - On an attended transfer where the originator had a caller id number set but not - a display name, the re-INVITE to the final transferee had the number of the - originator but the display name of the transferer. + Change-Id: Ieccc6abccdff34ed5c7da3511fd24972b8f2dd30 - Added a check to clear out the display name in the new header if - connected.id.name was invalid. +2016-12-22 09:13 +0000 [aea2285865] Alexander Traud - ASTERISK-25942 #close + * res_pjsip_session: Access SIPDOMAIN via Dialplan. - Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b + This feature was available in the SIP channel driver chan_sip. For example, + Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not + local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect + and dial remote SIP-URIs. This change here sets the SIP destination domain of + an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well. -2016-04-19 13:02 +0000 [d95512a7dd] Joshua Colp + ASTERISK-26670 #close - * app_talkdetect: Make the module core supported. + Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243 - This module is used as part of testsuite tests to confirm - stuff works. I'm accordingly marking it as core as it is - required by those tests. +2017-01-04 05:50 +0000 [e220c11bec] Alexander Traud - Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88 + * chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND. -2016-04-18 12:12 +0000 [0235a66532] Mark Michelson + After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats + but remember the joint format. Cached formats contain default parameters, + often create an empty fmtp line. However, a joint format might have passed + format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and + contain the resulting format parameters from a SDP negotiation. - * PJSIP: Remove PJSIP parsing functions from uri length validation. + ASTERISK-26691 #close - The PJSIP parsing functions provide a nice concise way to check the - length of a hostname in a SIP URI. The problem is that in order to use - those parsing functions, it's required to use them from a thread that - has registered with PJLib. + Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc - On startup, when parsing AOR configuration, the permanent URI handler - may not be run from a PJLib-registered thread. Specifically, this could - happen when Asterisk was started in daemon mode rather than - console-mode. If PJProject were compiled with assertions enabled, then - this would cause Asterisk to crash on startup. +2017-01-03 15:14 +0000 [ceb9dae566] George Joseph - The solution presented here is to do our own parsing of the contact URI - in order to ensure that the hostname in the URI is not too long. The - parsing does not attempt to perform a full SIP URI parse/validation, - since the hostname in the URI is what is important. + * pjproject_bundled: Compile pjsua with max log level = 2 - ASTERISK-25928 #close - Reported by Joshua Colp + A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6. + This allowed us to control the log level better from inside Asterisk. + An unfortunate side effect of this was that the pjsua binary and + python bindings were also compiled with log level set to 6 so whenever + a testsuite test that uses pjsua runs, it spits out 6795 lines of + debug in an instant even before the test starts. I believe this + overruns the Jenkins capture buffer and prevents the test from + properly terminating. In turn, this results in the testsuite just + hanging until the job is killed. It's more frequent on the higher + end agents because they can spit out the messages faster. - Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60 + Unfortunately, the messages are all spit out before we have control + of the python pj.Lib instance where we can set logging levels so the + only alternative was to actually compile pjsua and _pjsua.so with an + overridden PJ_LOG_MAX_LEVEL. Although defining a lower max level was + done in the Makefile, the define in config_site.h had to be wrapped + with "#ifndef" so the change would take effect. -2016-04-18 17:00 +0000 [b8b60135ec] Mark Michelson + Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff - * res_pjsip_registrar: Fix bad memory-ness with user_agent. +2016-12-22 16:00 +0000 [ae57652983] Joshua Colp - Recent changes to the PJSIP registrar resulted in tests failing due to - missing AOR_CONTACT_ADDED test events. The reason for this was that the - user_agent string had junk values in it, resulting in being unable to - generate the event. + * chan_pjsip: Use session for retrieving CHANNEL() information. - I'm going to be honest here, I have no idea why this was happening. Here - are the steps needed for the user_agent variable to get messed up: - * REGISTER is received - * First contact in the REGISTER results in a contact being removed - * Second contact in the REGISTER results in a contact being added - * The contact, AOR, expiration, and user agent all have to be passed as - format parameters to the creation of a string. Any subset of those - parameters would not be enough to cause the problem. + The CHANNEL() dialplan function implementation for PJSIP allows + querying of PJSIP specific information. This used the channel + passed in to get the PJSIP session and associated information. + It is possible for this channel to be masqueraded and end + up as a different channel type by the time the information + request is actually acted upon. - Looking into what was happening, the thing that struck me as odd was - that the user_agent variable was meant to be set to the value of the - User-Agent SIP header in the incoming REGISTER. However, when removing a - contact, the user_agent variable would be set (via ast_strdupa inside a - loop) to the stored contact's user_agent. This means that the - user_agent's value would be incorrect when attempting to process further - contacts in the incoming REGISTER. + This change retrieves the PJSIP session safely and accesses + data from it (including channel). This provides a guarantee + that the session and channel will not be altered when the + request is being acted upon. - The fix here is to use a different variable for the stored user agent - when removing a contact. Correcting the behavior to be correct also - means the memory usage is less weird, and the issue no longer occurs. + ASTERISK-26673 - ASTERISK-25929 #close - Reported by Joshua Colp + Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6 - Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08 +2016-12-31 19:56 +0000 [386e3a01b3] Joshua Elson -2016-04-18 13:41 +0000 [6cfa02394f] Joshua Colp + * res_pjsip: Fix known compact header issues - * res_pjsip_transport_management: Allow unload to occur. + ASTERISK-26684 #close - At shutdown it is possible for modules to be unloaded that wouldn't - normally be unloaded. This allows the environment to be cleaned up. + Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a - The res_pjsip_transport_management module did not have the unload - logic in it to clean itself up causing the res_pjsip module to not - get unloaded. As a result the res_pjsip monitor thread kept going - processing traffic and timers when it shouldn't. +2016-12-30 06:59 +0000 [aad29b9bca] Martin Tomec - Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a + * res_calendar: delete old calendars after reload -2016-04-15 11:41 +0000 [6365f0018f] Richard Mudgett + When "fetch_again_at_reload" is set in config, we create now + new object and thread for each reloaded calendar (with new + configuration). Old calendar should be then unlinked, so the + old thread can exit and free memory. - * bridge_channel.c: Ignore role setup failure in channel push. + ASTERISK-26683 - We have to setup the channel roles after the bridge class push is called - because the bridge class push callback may have set roles on the incoming - channel. Since we have already partially pushed the channel into the - bridge and reversing what we have already done could be problematic, the - only thing we can do is press on to complete pushing the channel into the - bridge. + Change-Id: Ic17fba9371c5a8b26a6bc54ea4957c13a32a343e - * Ignore any channel role setup errors after pushing the channel into a - bridge. The channel may behave incorrectly in the bridge but we can no - longer abort the push at this time. +2016-12-30 09:10 +0000 [5a5953f98c] JoshE (license 6075) - Change-Id: I08a97082b729052ee65cdca6bb730cf1289ede00 + * res_pjsip_refer: Handle compact Refer-To header. -2016-04-17 15:37 +0000 [f06ce7f90a] Jaco Kroon + refer_incoming_refer_request needed to look for the "r" header as well + as the "Refer-To" header. - * chan_sip: Don't verify table if rtupdate=no + ASTERISK-26655 #close + patches: + refer_compact_fix.diff submitted by JoshE (license 6075) - If rtupdate=no do not verify sipregs/peers table has updatable fields. + Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f - ASTERISK-25934 #close +2016-12-23 12:11 +0000 [ac04e63ac2] Richard Mudgett - Change-Id: Iaa2c53037b93daccc7e7333c40d61861847b856d + * bridge_native_rtp.c: Minor code cleanups. -2016-04-18 04:53 +0000 [dbb47e0a47] ibercom + In native_rtp_bridge_compatible_check() - * app_queue: Frequent segfaults in function can_ring_entry() + * Made one variable declaration per line. - ASTERISK-25888 #close + * Extracted if test assignment to make the test easier to see. - Change-Id: I007a2f2dd99823e04fb5be3ff01f02b0a2956117 + * Made long if tests easier to see the combinatorial logic. -2016-04-15 16:51 +0000 [af114edb8b] Richard Mudgett + * Added bridge id to a couple debug messages. - * stasis_bridge.c: Update stasis bridge push diagnostic messages. + Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad - Change-Id: I195b14994c9dcccb9452491ca20a885d2a54605a +2016-12-23 12:10 +0000 [da6f40c9ff] Richard Mudgett -2016-04-12 14:55 +0000 [5e64d7e7a3] Mark Michelson + * bridge_native_rtp.c: Fix native rtp bridge data race. - * Dial: Combine frame handling functions. + native_rtp_bridge_compatible() didn't lock the bridge channels before + checking the channels for native bridging ability. As a result, one of + the channel's native format capabilities structure got replaced out from + under the native bridge check. Use of a stale pointer to freed memory + causes bad things to happen. - There is a good amount of repetition in the two frame handling routines - in the Dial API. This commit combines the two functions into one. + MALLOC_DEBUG, DO_CRASH, and the + tests/channels/pjsip/transfers/blind_transfer/caller_direct_media + testsuite test caught this. - This is in preparation for an upcoming commit that adds the ability to - handle frames for a channel in a bridge. + * Add missing channel locking in native_rtp_bridge_compatible(). - ASTERISK-25925 - Reported by Mark Michelson + Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53 - Change-Id: Iaae2f174e3058e774cb44e10659fcdfb85345c58 +2016-12-21 16:28 +0000 [b576b58d74] Richard Mudgett -2016-04-11 16:20 +0000 [a6e2ba187a] Alexei Gradinari + * res_rtp_asterisk.c: Fix uninitialized memory crash. - * Codecs: strip codec name while parsing allow/disallow options + ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to + ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' + parameter may not get initialized. Thus when the code tries to save the + 'us' parameter to the local address we could try to copy a ridiculous + sized memory buffer and segfault. - Failed registration using PJSIP/Realtime if one of the codec name - in allow/disallow option is wrong or contains space. + * Made pass an initialized 'us' parameter to ast_ouraddrfor(). - This patch strip codec name. + * Optimized out the 'us' struct variable. - ASTERISK-25914 + ASTERISK-26672 #close - Change-Id: Ifdf02de94e5ddbce305640f6f0666084a3b9283d + Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc -2016-04-14 13:49 +0000 [be4333ddad] Mark Michelson +2016-12-21 16:25 +0000 [67cc8499a2] Richard Mudgett - * transport management: Register thread with PJProject. + * acl.c: Improve ast_ouraddrfor() diagnostic messages. - The scheduler thread that kills idle TCP connections was not registering - with PJProject properly and causing assertions if PJProject was built in - debug mode. + * Made not generate strings unless they will actually be used. - This change registers the thread with PJProject the first time that the - scheduler callback executes. + ASTERISK-26672 - AST-2016-005 + Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3 - Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283 +2016-12-21 17:54 +0000 [67b47191e9] Richard Mudgett -2016-03-17 12:28 +0000 [e83499df56] gtjoseph + * chan_rtp.c: Fix uninitialized memory crash. - * res_pjsip: Add serialized scheduler (res_pjsip/pjsip_scheduler.c) + unicast_rtp_request() could pass an uninitialized 'us' parameter to + ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' + parameter may not get initialized. Thus when the code tries to save the + 'us' parameter to the local address we could try to copy a ridiculous + sized memory buffer and segfault. - There are several places that do scheduled tasks or periodic housecleaning, - each with its own implementation: + * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort + the UnicastRTP channel request if it fails. - * res_pjsip_keepalive has a thread that sends keepalives. - * pjsip_distributor has a thread that cleans up expired unidentified requests. - * res_pjsip_registrar_expire has a thread that cleans up expired contacts. - * res_pjsip_pubsub uses ast_sched directly and then calls ast_sip_push_task. - * res_pjsip_sdp_rtp also uses ast_sched to send keepalives. + ASTERISK-26672 - There are also places where we should be doing scheduled work but aren't. - A good example are the places we have sorcery observers to start registration - or qualify. These don't work when changes are made to a backend database - without a pjsip reload. We need to check periodically. + Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0 - As a first step to solving these issues, a new ast_sip_sched facility has - been created. +2016-12-21 17:55 +0000 [2fc65173e5] Richard Mudgett - ast_sip_sched wraps ast_sched but only uses ast_sched as a scheduled queue. - When a task is ready to run, ast_sip_task_pusk is called for it. This ensures - that the task is executed in a PJLIB registered thread and doesn't hold up the - ast_sched thread so it can immediately continue processing the queue. The - serializer used by ast_sip_sched is one of your choosing or a random one from - the res_pjsip pool if you don't choose one. + * res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip(). - Another feature is the ability to automatically clean up the task_data when the - task expires (if ever). If it's an ao2 object, it will be dereferenced, if - it's a malloc'd object it will be freed. This is selectable when the task is - scheduled. Even if you choose to not auto dereference an ao2 task data object, - the scheduler itself maintains a reference to it while the task is under it's - control. This prevents the data from disappearing out from under the task. + We access uninitialized memory when the 'ourip' parameter does not + have an initial guess to our IP address. - There are two scheduling models. + ASTERISK-26672 - AST_SIP_SCHED_TASK_PERIODIC specifies that the invocations of the task occur at - the specific interval. That is, every "interval" milliseconds, regardless of - how long the task takes. If the task takes longer than the interval, it will - be scheduled at the next available multiple of interval. For exmaple: If the - task has an interval of 60 secs and the task takes 70 secs (it better not), - the next invocation will happen at 120 seconds. + Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15 - AST_SIP_SCHED_TASK_DELAY specifies that the next invocation of the task should - start "interval" milliseconds after the current invocation has finished. +2016-12-07 15:23 +0000 [8b7d252987] Richard Mudgett - Also, the same ast_sched facility for fixed or variable intervals exists. The - task's return code in conjunction with the AST_SIP_SCHED_TASK_FIXED or - AST_SIP_SCHED_TASK_VARIABLE flags controls the next invocation start time. + * res_rtp_asterisk.c: Fix off nominal memory leak. - One res_pjsip.h housekeeping change was made. The pjsip header files were - added to the top. There have been a few cases lately where I've needed - res_pjsip.h just for ast_sip calls and had compiles fail spectacularly because - I didn't add the pjsip header files to my source even though I never referenced - any pjsip calls. + Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75 - Finally, a few new convenience APIs were added to astobj2 to make things a - little easier in the scheduler. ao2_ref_and_lock() calls ao2_ref() and - ao2_lock() in one go. ao2_unlock_and_unref() does the reverse. A few macros - were also copied from res_phoneprov because I got tired of having to duplicate - the same hash, sort and compare functions over and over again. The - AO2_STRING_FIELD_(HASH|SORT|CMP)_FN macros will insert functions suitable for - aor_container_alloc into your source. +2016-12-14 02:21 +0000 [bab253ac9f] Tzafrir Cohen - This facility can be used immediately for the situations where we already have - a thread that wakes up periodically or do some scheduled work. For the - registration and qualify issues, additional sorcery and schema changes would - need to be made so that we can easily detect changed objects on a periodic - basis without having to pull the entire database back to check. I'm thinking - of a last-updated timestamp on the rows but more on this later. + * Fixes to various issues reported by pyflakes - Change-Id: I7af6ad2b2d896ea68e478aa1ae201d6dd016ba1c + Pyflake is a python (2) source checker. This patch fixes various + (mostly trivial) errors and warnings it reports. -2016-03-08 12:12 +0000 [216f22fd0f] Mark Michelson + Change-Id: Ia35c5ac61751b927814cf693994c632c412386ea - * res_pjsip_transport_management: Kill idle TCP connections. +2016-12-09 12:23 +0000 [f461f65dea] Martin Tomec - "Idle" here means that someone connects to us and does not send a SIP - request. PJProject will not automatically time out such connections, so - it's up to Asterisk to do it instead. + * app_queue: Ensure member is removed from pending when hanging up. - When we receive an incoming TCP connection, we will start a timer - (equivalent to transaction timer D) waiting to receive an incoming - request. If we do not receive a request in that timeframe, then we will - shut down the TCP connection. + In some cases member is added to pending_members, and the channel + is hung up before any extension state change. So the member would + stay in pending_members forever. So when we call do_hang, we + should also remove member from pending. - ASTERISK-25796 #close - Reported by George Joseph + ASTERISK-26621 #close - AST-2016-005 + Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54 - Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6 +2016-12-18 15:23 +0000 [d29eb3b99d] George Joseph -2016-03-08 10:52 +0000 [d9fba46016] Mark Michelson + * pjproject_bundled: Make build single threaded - * Rename res_pjsip_keepalive res_pjsip_transport_management + There were just too many issues in various environments with + multi threaded building of pjproject. It doesn't really speed + things up anyway since asterisk is already being compiled in + parallel. - ASTERISK-25796 - Reported by George Joseph + Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1 - AST-2016-005 +2016-12-08 20:00 +0000 [8fbb384ea2] Corey Farrell - Change-Id: Id322a05f927392293570599730050bc677d99433 + * chan_sip: Reorder unload_module to deal with stuck TCP threads. -2016-04-14 07:23 +0000 [7b8b6e2e4f] Mark Michelson + In some situations TCP threads may become frozen. This creates the + possibility that Asterisk could segfault if they become unfrozen after + chan_sip has been dlclose'd. This reorders the unload_module process to + allow abort if threads do not exit within 5 seconds. - * AST-2016-004: Fix crash on REGISTER with long URI. + High level order as follows: + 1) Unregister from the core to stop new requests. + 2) Signal threads to stop + 3) Clear config based tables (but do not free the table itself). + 4) Verify that threads have shutdown, cancel unload if not. + 5) Clean all remaining resources. - Due to some ignored return values, Asterisk could crash if processing an - incoming REGISTER whose contact URI was above a certain length. + ASTERISK-26586 - ASTERISK-25707 #close - Reported by George Joseph + Change-Id: Ie23692041d838fbd35ece61868f4c640960ff882 - Patches: - 0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch +2016-12-16 01:32 +0000 [147b8e636e] David M. Lee - AST-2016-004 + * configure: fix with-pjproject-bundled - Change-Id: I3ea7cee16f29c8088794de3085ca7523c1c4833d + The AC_ARG_WITH macro's shell variable is withval; not enableval. Purely + coincidentally, the option would work when --enable-dev-mode is given. -2016-04-12 13:10 +0000 [ff3af764de] Richard Mudgett + Also fixed a portability problem with bootstrap.sh, since -printf is not + a portable option for find. - * bridge_softmix.c: Fix crash if could not allocate the dsp. + Change-Id: I0f0e5b1a934b5af5737713834361e9c95b96b376 - Fix off nominal crash where we could not setup the channel to process - frames for the softmix bridge technology because of allocation failure. +2016-12-15 13:25 +0000 [d27dee3cca] Richard Mudgett - Change-Id: Ic307a8386e46bf551e48fcd1eb97276714d56372 + * autosupport: Add 'pjproject show buildopts' -2016-04-13 13:38 +0000 [caa416d5f3] gtjoseph + Change-Id: I8aa55a7c3fb175235ddc7f85e9457d5102d06fa7 - * stringfields: Update extended string fields for master only. +2016-12-14 14:21 +0000 [9404efa6f4] Richard Mudgett - In 13, the new ast_string_field_header structure had to be dynamically - allocated and assigned to a pointer in ast_string_field_mgr to preserve ABI - compatability. In master, it can be converted to being a structure-in-place in - ast_string_field_mgr to eliminate the extra alloc and free calls. + * chan_dahdi.c: Fix bounds check regression. - Change-Id: Ia97c5345eec68717a15dc16fe2e6746ff2a926f4 + Caused by ASTERISK-25494 -2016-04-12 15:41 +0000 [bd3671b397] gtjoseph + Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb - * pjproject: Add patch for removing strip of '[]' from header params +2016-12-13 14:34 +0000 [45a5e2abc6] Richard Mudgett - From the patch submitted to Teluu on 4/12/2016 - <<<<<<<<< - The wholesale stripping of '[]' from header parameters causes issues if - something (like a port) occurs after the final ']'. + * res_pjsip: Add/update ERROR msg if invalid URI. - '[2001:a::b]' will correctly parse to '2001:a::b' - '[2001:a::b]:8080' will correctly parse to '2001:a::b' but the scanner is left - with ':8080' and parsing stops with a syntax error. + ASTERISK-24499 - I can't even find a case where stripping the '[]' is a good thing anyway. Even - if you continued to parse and resulted in a string that looks like this... - '2001:a::b:8080', it's not valid. + Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c - This came up in Asterisk because Kamailio sends us a Contact with an alias - URI parameter that has an IPv6 address in it like this: - Contact: - which should be legal but causes a syntax error because of the characters - after the final ']'. Even if it didn't, the '[]' should still not be stripped. +2016-12-12 18:38 +0000 [44e72c9d44] Richard Mudgett - I've run the Asterisk Test Suite for PJSIP (252 tests) many of which are IPv6 - enabled. No issues were caused by removing the code that strips the '[]'. - >>>>>>>>>>> + * MESSAGE: Flush Message/ast_msg_queue channel alert pipe. - ASTERISK-25123 #close - Reported-by: Anthony Messina + ASTERISK-25083 - Change-Id: I5cb33f4ebf07ee1f2b26d07caae715e2ec65595a + Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2 -2016-04-12 09:10 +0000 [5a0534dc62] Joshua Colp +2016-12-13 14:06 +0000 [19328de2ab] George Joseph - * app_voicemail: Fix test_voicemail_notify_endl test. + * res_sorcery_memory_cache: Change an error to a debug message - The test_voicemail_notify_endl test checks the end-of-line - characters of an email message to confirm that they are consistent. - The test wrongfully assumed that reading from the email message - into a buffer will always result in more than 1 character being - read. This is incorrect. If only 1 character was read the test - would go outside of the buffer and access other memory causing - a crash. + When a sorcery user calls ast_sorcery_delete on an object that + may have already expired from the cache, res_sorcery_memory_cache + spits out an ERROR. Since this can happen frequently and validly when + an inbound registration expires after the cache entry expired, the + errors are unnecessary and misleading. Changed to a debug/1. - The test now checks to ensure that 2 or more characters are read - in ensuring the test stays within the buffer. + Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7 - ASTERISK-25874 #close +2016-12-09 08:14 +0000 [31268e0a28] George Joseph - Change-Id: Ic2c89cea6e90f2c0bc2d8138306ebbffd4f8b710 + * pjproject_bundled: Retry download if previously saved tarball is bad -2016-04-07 12:02 +0000 [c00c298a0e] Alexei Gradinari + If a tarball is corrupted during download, the makefile will attempt to + download it again. If the tarball somehow gets corrupted after it's + downloaded however, the makefile was just failing. We now + retry the download. - * app_voicemail/IMAP: function 'save_to_folder' creates wrong folder + ASTERISK-26653 #close - If try to move message to Cust1 (number 5) - the function 'save_to_folder' tries to create Greeting folder instead of Cust1. + Change-Id: I1b24d454852d80186f60c5a65dc4624ea8a1c359 - This patch fixed it by setting GREETINGS_FOLDER = -1 +2016-12-08 12:43 +0000 [4c6ba1dbba] Badalyan Vyacheslav - ASTERISK-24927 #close + * Fix typo in chan_sip - Change-Id: I03d1a761894bcc2d130ec9b003bbcddc28e25c51 + The conditional expressions of the 'if' operators + situated alongside each other are identical. -2016-04-07 16:18 +0000 [49813bc9e5] Alexei Gradinari + Change-Id: I652b6dcddb3be007e669a6aa8107edb31a1ddafb - * res_pjsip: Add headers to AMI Event ContactStatusDetail +2016-12-08 12:30 +0000 [934aa2c768] Badalyan Vyacheslav - * Added Useragent and RegExpire headers to AMI Event - ContactStatusDetail with associated documentation. + * res_pjsip: Fix 'A = B != C' kind. - ASTERISK-25903 #close + Consider reviewing the expression of the 'A = B != C' kind. + The expression is calculated as following: 'A = (B != C)' - Change-Id: If3d121e943e588d016ba51d4eb9c6a421a562239 + Change-Id: Ibaa637dfda47d51a20e26069d3103e05ce80003d -2016-04-05 16:56 +0000 [4e00e31ef1] Alexei Gradinari +2016-12-08 12:54 +0000 [51118e7d70] Badalyan Vyacheslav - * res_pjsip_outbound_publish: Add transport for outbound PUBLISH + * chan_sip: Delete unneeded check - The first available transport of the appropriate type is used now. - This patch adds new config option 'transport' for outbound-publish. - If transport is set then outbound PUBLISH requests will use this transport. + P is always true. We check it before - ASTERISK-25901 #close + Change-Id: Iee61cda002a9f61aee26b9f66c5f9b59e3389efb - Change-Id: Ib389130489b70e36795b0003fa5fd386e2680151 +2016-12-08 12:58 +0000 [fe5be81821] Badalyan Vyacheslav -2016-04-11 14:26 +0000 [2cc56573de] Jaco Kroon + * Small code cleanup in chan_sip - * core_unreal: Fix hangupcauses not getting set on Local channels + The conditional expressions of the 'if' operators situated + alongside each other are identical. - ASTERISK-25912 #close + Change-Id: I2cf7c317b106ec14440c7f1b5dcfbf03639f748a - Change-Id: I8e72e6894feaf36c9450f2788d205d07baec23aa +2016-12-08 12:34 +0000 [149d8db96c] Badalyan Vyacheslav -2016-04-01 13:30 +0000 [a621dd5e96] gtjoseph + * Fix IO conversion bug - * res_pjsip contact: Lock expiration/addition of contacts + Expression 'rlen < 0' is always false. + Unsigned type value is never < 0. - Contact expiration can occur in several places: res_pjsip_registrar, - res_pjsip_registrar_expire, and automatically when anyone calls - ast_sip_location_retrieve_aor_contact. At the same time, res_pjsip_registrar - may also be attempting to renew or add a contact. Since none of this was locked - it was possible for one thread to be renewing a contact and another thread to - expire it immediately because it was working off of stale data. This was the - casue of intermittent registration/inbound/nominal/multiple_contacts test - failures. + Change-Id: Id9f393ff25b009a6c4a6e40b95f561a9369e4585 - Now, the new named lock functionality is used to lock the aor during contact - expire and add operations and res_pjsip_registrar_expire now checks the - expiration with the lock held before deleting the contact. +2016-11-30 09:31 +0000 [c796f00c35] Walter Doekes - ASTERISK-25885 #close - Reported-by: Josh Colp + * chan_sip: Do not allow non-SP/HTAB between header key and colon. - Change-Id: I83d413c46a47796f3ab052ca3b349f21cca47059 + RFC says SIP headers look like: -2016-04-10 14:16 +0000 [8637f29d24] gtjoseph + HCOLON = *( SP / HTAB ) ":" SWS + SWS = [LWS] ; sep whitespace + LWS = [*WSP CRLF] 1*WSP ; linear whitespace + WSP = SP / HTAB ; from rfc2234 - * pjproject: Add patch to fix Via IPv6 parsing + chan_sip implemented this: - There's a bug in pjproject's sip_parser where the ":" wasn't correctly - interpreted. This is causing IPv6 addresses in the "received" parameter of the - Via header to cause a syntax check failure. + HCOLON = *( LOWCTL / SP ) ":" SWS + LOWCTL = %x00-1F ; CTL without DEL - This patch was submitted to Teluu on 4/10/2016. + This discrepancy meant that SIP proxies in front of Asterisk with + chan_sip could pass on unknown headers with \x00-\x1F in them, which + would be treated by Asterisk as a different (known) header. For + example, the "To\x01:" header would gladly be forwarded by some proxies + as irrelevant, but chan_sip would treat it as the relevant "To:" header. - ASTERISK-25910 #close - Reported-by: Anthony Messina + Those relying on a SIP proxy to scrub certain headers could mistakenly + get unexpected and unvalidated data fed to Asterisk. - Change-Id: Ic7e4c4aa14ded61860401ec349f5177568c4d922 + This change fixes so chan_sip only considers SP/HTAB as valid tokens + before the colon, making it agree on the headers with other speakers of + SIP. -2016-03-31 20:04 +0000 [216abb0ae7] gtjoseph + ASTERISK-26433 #close + AST-2016-009 - * lock: Add named lock capability + Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b - Locking some objects like sorcery objects can be tricky because the underlying - ao2 object may not be the same for all callers. For instance, two threads that - call ast_sorcery_retrieve_by_id on the same aor name might actually get 2 - different ao2 objects if the underlying wizard had to rehydrate the aor from a - database. Locking one ao2 object doesn't have any effect on the other even if - those objects had locks in the first place. +2016-11-14 18:18 +0000 [5c89604a32] Joshua Colp - Named locks allow access control by keyspace and key strings. Now an "aor" - named "1000" can be locked and any other thread attempting to lock "aor" "1000" - will wait regardless of whether the underlying ao2 object is the same or not. - Mutex and rwlocks are supported. + * res_format_attr_opus: Fix crash when fmtp contains spaces. - This capability will initially be used to lock an aor when multiple threads may - be attempting to prune expired contacts from it. + When an opus offer or answer was received that contained an + fmtp line with spaces between the attributes the module would + fail to properly parse it and crash due to recursion. - Change-Id: If258c0b7f92b02d07243ce70e535821a1ea7fb45 + This change makes the module handle the space properly and + also removes the recursion requirement. -2016-04-07 11:37 +0000 [f9dab80816] Alexei Gradinari + ASTERISK-26579 - * app_voicemail/IMAP: IMAP access FATAL error: Out of memory + Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3 - Sometimes uw-imap function 'mail_fetchbody' returns huge len - which then pass to uw-imap function 'rfc822_base64'. - uw-imap tries to allocate huge memory and abort() on fail. +2016-12-06 14:54 +0000 [79b09b5f18] George Joseph - This patch check the len. - If the len more than max size (128 Mbytes) log error. - This patch also set variables len, newlen to avoid uninizialezed len. - This patch also check pointer returned by rfc822_base64. + * res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command - ASTERISK-25899 #close + The PJSIPShowRegistrationsInbound AMI command was just dumping out + all AORs which was pretty useless and resource heavy since it had + to get all endpoints, then all aors for each endpoint, then all + contacts for each aor. - Change-Id: I4a0e7d655f11abef6a5224e2169df6d5c1f1caca + PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail + events which meets the intended purpose of the other command and has + significantly less overhead. Also, some additional fields that were + added to Contact since the original creation of the ContactStatusDetail + event have been added to the end of the event. -2016-04-07 16:39 +0000 [b3be945415] Alexei Gradinari + For compatibility purposes, PJSIPShowRegistrationsInbound is left + intact. - * res_pjsip_dialog_info: Add missing "direction" attribute in NOTIFY event + ASTERISK-26644 #close - BLF pickup isn't working on Cisco SPA and Snom phones - if the direction="recipient" attribute is missing in 'dialog' tag. + Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a - This patch adds direction="recipient" if extension state is - Ringing. +2016-12-07 14:22 +0000 [3b6e6cd01c] snuffy - ASTERISK-24601 #close + * tests_dns: Make DNS tests older nameser.h compatible - Change-Id: I5b2c097ca29fd59e92ba237ca5d397cb1b0bcd8c + Fix the tests for DNS to use older style nameser.h as + in ASTERISK-26608. -2016-04-06 17:57 +0000 [6138a75e8e] Richard Mudgett + Tested on: OpenBSD 6.0, Debian 8 - * pbx.h: Make ast_state_cb_type take more const. + ASTERISK-26647 #close - This eliminates some casts that I made a note saying v10 and above - would no longer need them. + Change-Id: I285913c44202537c04b3ed09c015efa6e5f9052d - Better late than never :) +2016-12-06 16:45 +0000 [76d52dc228] Richard Mudgett - Change-Id: I346cdb3032b6478ceb40eb6fe732978b54035572 + * Bundled pjproject: Fix finding SIP transactions. -2016-04-07 10:59 +0000 [72c19f7dc5] Richard Mudgett + Occasionally SIP message transactions are not found when they should be. + In the particular case an incoming INVITE transaction is CANCELed but the + INVITE transaction cannot be found so a 481 response is returned for the + CANCEL. The problematic calls have a '_' character in the Via branch + parameter. - * pbx.c: Minor code rearangements. + The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code. + The problem with the "own tolower" code is that it does not calculate the + same hash value as when the pj_tolower() function is used. The "own + tolower" code will erroneously modify the ASCII characters '@', '[', '\\', + ']', '^', and '_'. Calls to pj_hash_calc_tolower() can use the + PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled. Calls to + pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call + find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm. As a + result you may not be able to find a hash tabled entry because the + calculated hash values would differ. - * Pull out a loop invariant. + * Simply disable PJ_HASH_USE_OWN_TOLOWER. - * Convert an else-if ladder to a switch statement. + ASTERISK-26490 #close - Change-Id: I0a95cfa9474a4600b9865f7b444534d275b37e95 + Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253 -2016-04-07 12:26 +0000 [28cefc3e88] Richard Mudgett +2016-12-01 16:49 +0000 [503006123a] Mark Michelson - * pbx: Update doxygen for extension state watchers. + * http: Send headers and body in one write. - Change-Id: Id1403b12136de62a272c01bb355aef65fd2c2d1e + This is a semi-regression caused by the iostreams change. Prior to + iostreams, HTTP headers were written to a FILE handle using fprintf. + Then the body was written using a call to fwrite(). Because of internal + buffering, the result was that the HTTP headers and body would be sent + out in a single write to the socket. -2016-04-07 11:49 +0000 [751d7a5a49] gtjoseph + With the change to iostreams, the HTTP headers are written using + ast_iostream_printf(), which under the hood calls write(). The HTTP body + calls ast_iostream_write(), which also calls write() under the hood. + This results in two separate writes to the socket. - * alembic: Remove batch operations (and sqlite support) + Most HTTP client libraries out there will handle this change just fine. + However, a few of our testsuite tests started failing because of the + change. As a result, in order to reduce frustration for users, this + change alters the HTTP code to write the headers and body in a single + write operation. - Because SQLite doesn't support full ALTER capabilities, alembic scripts - require batch operations. However, that capability wasn't available until - 0.7.0 which some distributions haven't reached yet. Therefore, the batch - operations introduced in commit 86d6e44cc (review 2319) have been reverted - and SQLite is unsupported again, for now anyway. + ASTERISK-26629 #close + Reported by Joshua Colp - Tested the full upgrade and downgrade on MySQL/Mariadb and Postgresql. + Change-Id: Idc2d2fb3d9b3db14b8631a1e302244fa18b0e518 - ASTERISK-25890 #close - Reported-by: Harley Peters +2016-12-06 10:56 +0000 [bf6423a336] Mark Michelson - Change-Id: I82eba5456736320256f6775f5b0b40133f4d1c80 + * Iostreams: Correct off-by-one error. -2016-04-07 11:05 +0000 [2eaeea690d] Joshua Colp + ast_iostream_printf() attempts first to use a fixed-size buffer to + perform its printf-like operation. If the fixed-size buffer is too + small, then a heap allocation is used instead. The heap allocation in + this case was exactly the length of the string to print. The issue here + is that the ensuing call to vsnprintf() will print a NULL byte in the + final space of the string. This meant that the final character was being + chopped off the string and replaced with a NULL byte. For HTTP in + particular, this caused problems because HTTP publishes the expected + Contact-Length. This meant HTTP was publishing a length one character + larger than what was actually present in the message. - * res_pjsip_registrar_expire: Fix race condition at shutdown. + This patch corrects the issue by adding one to the allocation length. - When shutting down, the PJSIP sorcery is destroyed. The registrar - expiration module queries the PJSIP sorcery to determine what - to expire. As there was no synchronization between termination - of the expiration thread and the unloading of the module it was - possible for the thread to try to access the PJSIP sorcery after - it had been destroyed. + ASTERISK-26629 + Reported by Joshua Colp - This change ensures that the thread is shut down before allowing - the module to be considered unloaded. + Change-Id: Ib3c5f41e96833d0415cf000656ac368168add639 - Change-Id: I69fd239edbaaf160c2d37ae00d3ac06e5596fe8b +2016-12-06 12:06 +0000 [fe9f070885] George Joseph -2016-04-06 16:28 +0000 [3e5672d843] Joshua Colp + * pjproject_bundled: Fix missing inclusion of symbols - * res_pjsip: Fix configuration setting of "regcontext". + Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to + the CFLAGS. Not sure how they went missing. - Due to a merge problem two options were swapped causing the - regcontext setting to not get set. + Also fixed an uninstall problem where we weren't removing the + symlink from libasteriskpj.so.2 to libasteriskpj.so. While I was + there, I fixed it for libasteriskssl as well. - Change-Id: Icb33edc668e7357bacbaec2861a6b5ac64edaff1 + Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556 -2016-04-06 08:01 +0000 [8ed5f61152] Jacek Konieczny +2016-11-30 18:25 +0000 [4b3d3fc741] Richard Mudgett - * frame.c: Copy the whole subclass in ast_frdup(). + * res_pjsip_outbound_registration.c: Filter redundant statsd reporting. - The problem is ast_frdup() does not copy whole frame.subclass for voice, - video and image frames, only the format is copied. For video frames, the - subclass structure contains the .frame_ending flag used to put the RTP - marker where it needs to be. + Increasing the testsuite shutdown timeout before forcibly killing + Asterisk allowed more events to be sent out. Some tests failed as + a result. The tests/channels/pjsip/statsd/registrations failed + because we now get the statsd events that a comment in the test + configuration stated couldn't be intercepted. Unfortunately, we + get a variable number of events because of internal status state + transition races generating redundant statsd events. - ASTERISK-25894 #close + We were reporting redundant statsd PJSIP.registrations.state changes + for internal state changes that equated to the same thing publicly. - Change-Id: I812ca90e84ed5d4f473b997d0dd0d3c5a915fe33 + * Made update_client_state_status() filter out redundant statsd + updates. -2016-03-30 17:18 +0000 [abbb2edd4c] Mark Michelson + ASTERISK-26527 - * ARI: Add method to Dial a created channel. + Change-Id: If851c7d514bb530d9226e4941ba97dcf52000646 - This adds a new ARI method that allows for you to dial a channel that - you previously created in ARI. +2016-06-28 16:26 +0000 [26c8552fff] Tzafrir Cohen - By combining this with the create method for channels, it allows for a - workflow where a channel can be created, manipulated, and then dialed. - The channel is under control of the ARI application during all stages of - the Dial and can even be manipulated based on channel state changes - observed within an ARI application. + * OpenSSL 1.1.0 support - The overarching goal for this is to eventually be able to add a dialed - channel to a Stasis bridge earlier than the "Up" state. However, at the - moment more work is needed in the Dial and Bridge APIs in order to - facilitate that. + OpenSSL 1.1.0 includes some major changes in the interface. See + https://wiki.openssl.org/index.php/1.1_API_Changes . - ASTERISK-25889 #close + Status: Right now there are still a few deprecation notes with OpenSSL + 1.1.0. But it's a start. - Change-Id: Ic6c399c791e66c4aa52454222fe4f8b02483a205 + Changes: + * CRYPTO_LOCK is no longer available. Replace it with its value for now. + I don't completely understand what it is used for there. + * Remove several functions from libasteriskssl that seem to no longer be + needed. + * Structures have become opaque and are accesses with accessors. + * ERR_remove_thread_state() no longer needed. + * SSLv2 code now could no longer be used in 1.1. -2016-03-30 17:01 +0000 [dd48d60c5b] Mark Michelson + ASTERISK-26109 #close - * ARI: Add method to create a new channel. + Change-Id: I5e29d477d486ca29b6aae0dc2f5dff960c1cb82b - This adds a new ARI method to the channels resource that allows for the - creation of a new channel. The channel is created and then placed into - the specified Stasis application. +2016-11-22 11:20 +0000 [75230f4c01] Guido Falsi - This is different from the existing originate method that creates a - channel, dials it, and then places the answered channel into the - dialplan or a Stasis application. This method does not attempt to call - the channel at all. Dialing is left as a later step after channel - creation. This allows for pre-dialing channel manipulation if desired. + * res_rtp: Fix regression when IPv6 is not available. - ASTERISK-25889 + The latest Release candidate fails to create RTP streams when IPv6 + is not available. Due to the changes made in September the ast_sockaddr + structure passed around to create these streams is always of AF_INET6 + type, causing failure when used for IPv4. This patch adds a utility + function to check for availability of IPv6 and applies such check + at startup to determine how to create the ast_sockaddr structures. - Change-Id: I3c96a0aba914b08e39f6256371a5bd4c92cbded8 + ASTERISK-26617 #close -2016-03-28 11:31 +0000 [1dc5e28624] Joshua Colp + Change-Id: I627a4e91795e821111e1cda523f083a40d0e0c3e - * pbx: Add support for autohints. +2016-11-23 18:27 +0000 [1dfa11b65c] Richard Mudgett - This change introduces the concept of autohints. These are hints - which are created as a result of device state changes occurring within - the core. When this happens a hint will be created (if it does not - exist already) using the device name as the extension. + * PJPROJECT logging: Made easier to get available logging levels. - For example if a device state change is received for "PJSIP/bob" - and autohints are enabled on a context then a hint will exist in - that context for "bob" with a device of "PJSIP/bob". + Use of the new logging is as simple as issuing the new CLI command or + setting the new pjproject.conf option. - For virtual or custom device states the name after the type will - be used. For example if the device state of "Custom:bob" changes - then a hint will exist in that context for "bob" with a device of - "Custom:bob". + Other options that can affect the logging are how you have the pjproject + log levels mapped to Asterisk log types in pjproject.conf and if you have + configured Asterisk to log the DEBUG type messages. Altering the + pjproject.conf level mapping shouldn't be necessary for most installations + as the default mapping is sensible. Configuring Asterisk to log the DEBUG + message type is standard practice for collecting debug information. - This functionality can be enabled in extensions.conf by placing - "autohints=yes" in a context. + * Added CLI "pjproject set log level" command to dynamically adjust the + maximum pjproject log message level. - ASTERISK-25881 #close + * Added CLI "pjproject show log level" command to see the currently set + maximum pjproject log message level. - Change-Id: I7e444c7da41b7b7d33374420fec658beeb18584e + * Added pjproject.conf startup section "log_level" option to set the + initial maximum pjproject log message level so all messages could be + captured from initialization. -2016-04-05 14:23 +0000 [a098251e7e] Mark Michelson + * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into + bundled pjproject. Pjproject will use the currently set run time log + level to determine if a log message is generated just like Asterisk + verbose and debug logging levels. - * res_pjsip: Handle deferred SDP hold/unhold properly. + * In log_forwarder(), made always log enabled and mapped pjproject log + messages. DEBUG mapped log messages are no longer gated by the current + Asterisk debug logging level. - Some SIP devices indicate hold/unhold using deferred SDP reinvites. In - other words, they provide no SDP in the reinvite. + * Removed RAII_VAR() from res_pjproject.c:get_log_level(). - A typical transaction that starts hold might look something like this: + ASTERISK-26630 #close - * Device sends reinvite with no SDP - * Asterisk sends 200 OK with SDP indicating sendrecv on streams. - * Device sends ACK with SDP indicating sendonly on streams. + Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389 - At this point, PJMedia's SDP negotiator saves Asterisk's local state as - being recvonly. +2016-11-30 10:48 +0000 [621d886ca7] Mark Michelson - Now, when the device attempts to unhold, it again uses a deferred SDP - reinvite, so we end up doing the following: + * Frame deferral: Re-queue deferred frames one-at-a-time. - * Device sends reinvite with no SDP - * Asterisk sends 200 OK with SDP indicating recvonly on streams - * Device sends ACK with SDP indicating sendonly on streams + The recent change that made frame deferral into an API had a behavior + change to it. When frame deferral was completed, we would take all of + the deferred frames and queue them all onto the channel in one call to + ast_queue_frame_head(). Before frame deferral was API-ized, places that + performed manual frame deferral would actually take each deferred frame + and queue them onto the channel. - The problem here is that Asterisk offered recvonly, and by RFC 3264's - rules, if an offer is recvonly, the answer has to be sendonly. The - result is that the device is not taken off hold. + This change in behavior caused the confbridge_recording test to start + failing consistently. Without going too crazily deep into the details, + a channel was getting "stuck" in an ast_safe_sleep(). An AMI redirect + was attempting to break it out of the sleep, but because there were more + frames in the channel read queue than expected, the channel ended up + being unable to break from its sleep loop. - What is supposed to happen is that Asterisk should indicate sendrecv in - the 200 OK that it sends. This way, the device has the freedom to - indicate sendrecv if it wants the stream taken off hold, or it can - continue to respond with sendonly if the purpose of the reinvite was - something else (like a session timer refresher). + By restoring the behavior of individual frame queuing after deferral, + the test starts passing again. - The fix here is to alter the SDP negotiator's state when we receive a - reinvite with no SDP. If the negotiator's state is currently in the - recvonly or inactive state, then we alter our local state to be - sendrecv. This way, we allow the device to indicate the stream state as - desired. + Note, this points to a potential underlying issue pointing to an + "unbalance" that can occur when queuing multiple frames at once, + and so a follow-up issue is being created to investigate that + possibility. - ASTERISK-25854 #close - Reported by Robert McGilvray + Change-Id: Ied5dacacda06d343dea751ed5814a03364fe5a7d - Change-Id: I7615737276165eef3a593038413d936247dcc6ed +2016-11-15 15:01 +0000 [e5e887be53] Alexei Gradinari -2016-03-30 16:47 +0000 [ef4d3f1328] Mark Michelson + * chan_pjsip: fix switching sending codec when asymmetric_rtp_codec=no - * Dial: Add function to append already-created channel. + The sending codec is switched to the receiving codec and then + is switched back to the best native codec on EVERY receiving RTP packets. + This is because after call of ast_channel_set_rawwriteformat there is call + of ast_set_write_format which calls set_format which sets rawwriteformat + to the best native format. - The Dial API takes responsiblity for creating an outbound channel when - calling ast_dial_append(). This commit adds a new function, - ast_dial_append_channel(), which allows us to create the channel outside - the Dial API and then to append the channel to the ast_dial structure. + This patch adds a new function ast_set_write_format_path which set + specific write path on channel and uses this function to switch + the sending codec. - This is useful for situations where the channel's creation and dialing - are distinct operations. Upcoming ARI early bridge work will illustrate - its usage. + ASTERISK-26603 #close - ASTERISK-25889 + Change-Id: I5b7d098f8b254ce8f45546e6c36e5d324737f71d - Change-Id: Id8179f64f8f99132f80dead8d5db2030fd2c0509 +2016-11-21 15:43 +0000 [ddc951060a] David Kerr -2016-03-27 23:33 +0000 [984d6fd95c] gtjoseph + * app_originate: Add option to execute gosub prior to dial - * config: Allow filters when appending to a category + Issue/patch ASTERISK-26587 was inspired by issue ASTERISK-22992 + that requested ability to add callerid into app_originate. + Comments in that issue suggested that it was better solved by + adding an option to gosub prior to originating the call. The + attached patch implements this much like app_dial with two + options one to gosub on the originating channel and one to gosub + on the newly created channel and behaves just like app_dial. + I have tested this patch by adding callerid info to the new + channel and also SIPAddHeader (to e.g. add header to force auto + answer) and confirmed it works. Have also tested both 'exten' + and 'app' versions of app_originate. - In sorcery based config files where there are multiple categories with the same - name, you can't use the (+) operator to reliably append to a category because - config.c stops looking when it finds the first one with the same name. + Opened by: dkerr + Patch by: dkerr - Example: + Change-Id: I36abc39b58567ffcab4a636ea196ef48be234c57 - [1000] - type = endpoint +2016-11-28 19:43 +0000 [0e214c4932] Eduardo S. Libardi - [1000] - type = aor + * res_calendar_caldav: Add support reading gmail calendar - [1000](+) - authenticate_qualify = yes + The response from gmail calendar includes the string name + "caldav:calendar-data". res_calendar_caldav implements + the example included in RFC 4791: string "C:calendar-data". + When reading the calendar, res_calendar_caldav compare the + string and if does not match just discards the event. + This commit compares the response to both strings, + successfully loading gmail calendar events. + Writing to gmail calendar is working prior to this fix. - This config will fail because config.c appends authenticate_qualify to the - first category it finds, the endpoint, and that's not valid for endpoint. + ASTERISK-26624 + Reported by: Eduardo S. Libardi - Solution: + Change-Id: Ia1eef10552ae616efb645d390f5ffe81260d7d4a - The capability to find a category that contains a certain variable already - exists so the only real change was to parse anything after the '+' that's not a - comma, as a filter string. +2016-11-28 15:12 +0000 [a3f48be0da] Matt Jordan - [1000] - type = endpoint + * res/res_pjsip: Fix documentation whitespace issues - [1000] - type = aor + Tabs > Spaces. - [1000](+type=aor) - authenticate_qualify = yes + Change-Id: If1e43a71822615a898e958e0f8b2e882606f0bd0 - This now works as expected. +2016-11-22 10:27 +0000 [0e15760795] Matt Jordan - Although the following example doesn't make any sense for pjsip, you can even - specify multiple filters: + * res_pjsip/chan_sip: Advertise 'ws' in the SIP URI transport parameter - [1000](+type=aor&qualify_frequency=10) + Per RFC 7118 5.2, the SIP URI 'transport' parameter should advertise + 'ws' when WebSockets are to be used as the transport. This applies to + both secure and insecure WebSockets. - ASTERISK-25868 #close - Reported-by: Nick Repin + There were two bugs in Asterisk with respect to this: - Change-Id: I10773da4c79db36fbf1993961992af63d3441580 + (1) The most egregious occurs in res_pjsip. There, we advertise 'ws' for + insecure websockets and 'wss' for secure websockets. While this + would seem to make sense - since 'WS' and 'WSS' are used for the Via + Transport parameter - this is not the case for the SIP URI. This + patch corrects that by registering the secure websockets with + pjproject using the shorthand 'WS', and by returning 'ws' when asked + for the transport parameter. Note that in pjproject, it is perfectly + valid to have multiple transports use the same shorthand. -2016-04-05 10:21 +0000 [784fb43f43] Joshua Colp + (2) In chan_sip, we return an upper-case version of the transport 'WS' + instead of 'ws'. Since we should be strict in what we send and + liberal in what we accept (within reason), this patch lower-cases + the transport before appending it to the parameter. - * res_http_websocket: Make core supported. + ASTERISK-24330 #close + Reported by: cervajs, Inaki Baz Castillo - Websockets are a core part of ARI support and as such this - module should also be core supported. + Change-Id: Iff77b645f8cc3b7cd35168a6676c26b147f22f42 - Change-Id: I8f9283c6a167152761b92984779bb39e3db51a9c +2016-11-28 11:03 +0000 [8a68289766] George Joseph -2016-03-25 23:22 +0000 [4d40b161c3] gtjoseph + * build_tools: Fix download_externals to handle certified branches - * stringfields: Refactor to allow fields to be added to the end of structures + download_externals wasn't handling the "certified/13.x" version + correctly. - String fields are great, except that you can't add new ones without breaking - ABI compatibility because it shifts down everything else in the structure. - The only alternative is to add your own char * field to the end of the - structure and manage the memory yourself which isn't ideal, especially since - you then can't use the OPT_STRINGFIELD_T type. + Change-Id: I124d195bb117ca36fd7bf1150c630f3b474a9d9a - Background: +2016-11-28 07:36 +0000 [e3dae763ee] Joshua Colp - The reason string fields had to be declared inside the - AST_DECLARE_STRING_FIELDS block was to facilitate iteration over all declared - fields for initialization, compare and copy. Since AST_DECLARE_STRING_FIELDS - declared the pool, then the fields, then the manager, you could use the offsets - of the pool and manager and iterate over the sequential addresses in between to - access the fields. The actual pool, field allocation and field set operations - don't actually care where the field is. It's just iteration over the fields - that was the problem. + * iostream: Move include of asterisk.h - Solution: Extended String Fields + The asterisk.h header file needs to be included first or else + some things go awry, such as: - An extended string field is one that is declared outside the - AST_DECLARE_STRING_FIELDS block but still (anywhere) inside the parent - structure. Other than using AST_STRING_FIELD_EXTENDED instead of - AST_STRING_FIELD, it looks the same as other string fields. It's storage comes - from the pool and it participates in string field compare and copy operations - peformed on the parent structure. It's also a valid target for the - OPT_STRINGFIELD_T aco option type. + implicit declaration of function 'vasprintf' - Implementation: + Change-Id: I981dc2a77a1ba791888e4f1726644d4656c0407c - To keep track of the extended fields and make sure that ABI isn't broken, the - existing embedded_pool pointer in the manager structure was repurposed to be a - pointer to a separate header structure that contains the embedded_pool pointer - plus a vector of fields. The length of the manager structure didn't change and - the embedded_pool pointer isn't used in the macros, only the stringfields C - code. A side benefit of this is that changing the header structure in the - future won't break ABI. +2016-11-26 10:57 +0000 [0b588778c0] Michael Kuron - ast_string_fields_init initializes the normal string fields and appends them to - the vector, and subsequent calls to ast_string_field_init_extended initialize - and append the extended fields. Cleanup, ast_string_fields_cmp, and - ast_string_fields_copy can now work on the vector instead of sequentially - traversing the addresses between the pool and manager. + * chan_sip: Fix segfault during module unload - The total size of a structure using string fields didn't change, whether using - extended fields or not, nor have the offsets of any structure members, either - inside the original block or outside. Adding an extended field to the end of a - structure is the same as adding a char *. + If a TCP/TLS connection was pending (not accepted and not timed out) during + unload of chan_sip, Asterisk would segfault when trying to send a signal to + a thread whose thread ID hadn't been recorded yet. This commit fixes that by + recording the thread ID before calling the blocking connect() syscall. + This was a regression introduced by 776a14386a55b5425c7e9617eff8af8b45427144. - Details: + The above wasn't enough to fix the segfault, which was now delayed to the + point where connect() timed out. Therefore, it was necessary to also remove + the SA_RESTART flag from the SIGURG sigaction so that pthread_kill() could be + used to interruput the connect() syscall. + This was a regression introduced by 5d313f51b982a18f7321adcf7c7a4e822d8b2714. - The stringfield C code was pulled out from utils.c and into stringfields.c. - It just made sense. + ASTERISK-26586 #close - Additional work was done in ast_string_field_init and - ast_calloc_with_stringfields to handle the allocation of the new header - structure and the vector, and the associated cleanup. In the process some - additional NULL pointer checking was added. + Change-Id: I76fd9d47d56e4264e2629bce8ec15fecba673e7b - A lot of work was done in stringfields.h since the logic for compare and copy - is there. Documentation was added as well as somne additional NULL checking. +2016-11-23 14:52 +0000 [ead773f801] Dennis Guse - The ability to call ast_calloc_with_stringfields with a number of structures - greater than 1 never really worked. Well, the calloc worked but there was no - way to access the additional structures or clean them up. It was agreed that - there was no use case for requesting more than 1 structure so an ast_assert - was added to prevent it and the iteration code removed. + * pbx_lua: On configuration errors report module load failure instead of decline. - Testing: + Switched from AST_MODULE_LOAD_DECLINE to AST_MODULE_LOAD_FAILURE. + Therefore, if pbx_lua fails to load and pbx_lua is marked as required, + Asterisk exits as expected. + If extensions.lua cannot be opened, AST_MODULE_LOAD_DECLINE is reported. - The stringfield unit tests were updated to test both normal and extended - fields. Tests for ast_string_field_ptr_set_by_fields and - ast_calloc_with_stringfields were also added. + Change-Id: I8e5a0037e69b41743db60c568541ebb2f52a7a8f - As an ABI test, 13 was compiled from git and the res_pjsip_* modules, except - res_pjsip itself, saved off. The patch was then added and a full compile and - install was performed. Then the older res_pjsip_* moduled were copied over the - installed versions so res_pjsip was new and the rest were old. No issues. +2016-11-11 08:16 +0000 [d9b24cce0a] gestoip2 - contact->aor, which is a char * at the end of contact, was then changed to an - extended string field and a recompile and reinstall was performed, again - leaving stock versions of the the res_pjsip_* modules. Again, no issues with - the res_pjsip_* modules using the old stringfield implementation and with - contact->aor as a char *, and res_pjsip itself using the new stringfield - implementation and contact->aor being an extended string field. + * res_rtp_asterisk: RTT miscalculation in RTCP - Finally, several existing string fields were converted to extended string - fields to test OPT_STRINGFIELD_T. Again, no issues. + When retrieving RTCP stats for PJSIP channels, RTT values are unreliable. + RTT calculation is correct, but the data representation isn't. RTT is + represented by a 32-bit fixed-point number with the integer part in the + first 16 bits and the fractional part in the last 16 bits. In order to + get the RTT value, the fractional part is miscalculated, there is an + unnecessary 16 bit shift that causes overflow. Besides this there is + another mistake, when transforming the integer value to the fixed point + fractional part via bitwise operation, that loses precision. - Change-Id: I235db338c5b178f5a13b7946afbaa5d4a0f91d61 + * RTT fractional part is no longer shifted, avoiding overflow. -2016-04-04 18:02 +0000 [c07e1190ec] gtjoseph + * RTT fractional part is transformed to its fixed-point value more + precisely. - * res_pjsip_mwi: Fix segv caused by 16c7d8e74a9af13f98c3c22aa9c43ce39965f6b7 + * Fixed timeval2ntp() and ntp2timeval() second fraction conversions. - I forgot the new voicemail_extension wasn't a stringfield and didn't check - for NULL where I should have. + * Fixed NTP timestamp report logging. The usec was inexplicably + multiplied by 4096. - Change-Id: I029482d5c2ab72474838750461bd46b0809c90fb + ASTERISK-26566 #close + Reported by Hector Royo Concepcion -2016-04-03 11:47 +0000 [060b7b83bc] gtjoseph + Change-Id: Ie09bdabfee75afb3f1b8ddfd963e5219ada3b96f - * install_prereq: Fix check_installed_debs remove subversion +2016-11-15 13:44 +0000 [635b0a0a55] Michael Kuron - check_installed_debs wasn't handling virtual packages like libsrtp-dev and - libresample-dev and on multiarch systems it was accidentally filtering out all - packages if any :i386 packages were found instead of just filtering out the - :i386 packages themselves. + * tcptls: Use new certificate upon sip reload - Change-Id: Ifd68da0d1ee30cc84df14de3f9b9079d7c3cecda + Previously, a TLS server socket would only be restarted upon sip reload if the + bind address had changed. This commit adds checking for changes to TLS + parameters like certificate, ciphers, etc. so they get picked up without + requiring a reload of the entire chan_sip module. This does not affect open + connections in any way, but new connections will use the new TLS parameters. + The changes also apply to HTTP and Manager. -2016-04-01 13:09 +0000 [433d2c4bbf] gtjoseph + ASTERISK-26604 #close - * utils.c: Fix typo in handle_show_locks + Change-Id: I169e86cefc6dcd627c915134015a6a1ab1aadbe6 - ast_cli_allow_on_shutdown(e) should have been ast_cli_allow_at_shutdown(e). +2016-11-21 09:49 +0000 [abae3dc36e] George Joseph - Change-Id: I4f092495c0b2bfd85c2651e0b5877bf4d05d9faf + * pjproject_bundled: Use $(LIB_RT) for link of libasteriskpj -2016-03-30 18:34 +0000 [304f81780d] gtjoseph + libasteriskpj was hard coded to use -lrt but librt is linux specific + so we now use the LIB_RT variable which gets set by configure. - * pjproject_bundled: Fix use of LDCONFIG for shared library link creation + Change-Id: I41148884517e3031f7675a413d524c86e8614694 - LDCONFIG apparently isn't set to something sane on all systems so the creation - of the shared library links fails. Instead of just testing for non-blank, - main/Makefile now checks that LDCONFIG is actually executable and reverts to - LN if it isn't. +2016-11-19 16:19 +0000 [b546497fe0] snuffy - This applies to both libasteriskpj and libasteriskssl. + * Add support for older name resolving version libraries like openBSD - Thanks to 'abelbeck' for pointing out that the issue was LDCONFIG. + Fix support of OS's like openBSD that use an older nameser.h, + this change reverts the defines to the older style which on other + systems is found in nameser_compat.h - ASTERISK-25873 #close - Reported-by: Hans van Eijsden + Tested on openBSD 6.0, Debian 8 - Change-Id: I25b76379bc637726ec044b2c0e709b56b3701729 + ASTERISK-26608 #close -2016-03-29 13:47 +0000 [0ea742d33a] Richard Mudgett + Change-Id: Iffb36caab8c5aa9dece0ce2d009041f7b56cc86a - * res_stasis: Add control ref to playback and recording structs. +2016-11-18 09:46 +0000 [7a8d6bc81b] Mark Michelson - The stasis_app_playback and stasis_app_recording structs need to have a - struct stasis_app_control ref. Other threads can get a reference to the - playback and recording structs from their respective global container. - These other threads can then use the control pointer they contain after - the control struct has gone. + * Bump ARI version to 2.0.0 - * Add control ref to stasis_app_playback and stasis_app_recording structs. + In order to not have version number overlap between different versions + of Asterisk, each new major version of Asterisk will mean we also bump + the ARI major version number. - With the refs added, the control command queue can now have a circular - control reference which will cause the control struct to never get - released if the control's command queue is not flushed when the channel - leaves the Stasis application. Also the command queue needs better - protection from adding commands if the control->is_done flag is set. + This particular change does NOT introduce any known breaking changes to + ARI. - * Flush the control command queue on exit. + For discussion relating to this topice, see: + http://lists.digium.com/pipermail/asterisk-dev/2016-November/075964.html - ASTERISK-25882 #close + Change-Id: I712ee0df177a8fe1252da2bc029705268b97b665 - Change-Id: I3cf1fb59cbe6f50f20d9e35a2c07ac07d7f4320d +2016-11-16 12:05 +0000 [d3f070c7a2] George Joseph -2016-03-28 18:10 +0000 [53f63ad770] Richard Mudgett + * pjproject_bundled: Improve reliability of pjproject download - * res_stasis: Fix crash on a hanging up channel. + The download process now has a timeout which will cause wget to retry + if it stops retrieving data for 5 seconds and fetch and curl to timeout + if the whole retrieval take smore than 30 seconds. - * Give the struct stasis_app_control ao2 object a ref to the channel held - in the object. Now the channel will still be around if a thread needs to - post a stasis message instead of crash because the topic was destroyed. + If the tarball retrieval works, the MD5SUM file is retrieved from + the downloads site and the md5 checksum is verified. - * Moved stopping any lingering silence generator out of the struct - stasis_app_control destructor and made it a part of exiting the Stasis - application. Who knows which thread the destructor will be called under - so it cannot affect the channel's silence generator. Not only was the - channel unprotected when the silence generator was stopped, stasis may no - longer even control the channel. + If either the tarball retrieval or MD5SUM retrieval fails, or the + checksums don't match, the entire process is retried once. If it + fails again, any incomplete tarball is deleted. - ASTERISK-25882 + .DELETE_ON_ERROR: was also added to the Makefile. Not only does + this delete the tarball on failure, it till also delete corrupted + library files from the pjproject source directory should they + fail to build correctly. - Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4 + Tested all the way back to FreeBSD 9, CentOS 6, Debian 6 and + Ubuntu 14. -2016-03-30 13:31 +0000 [2fab4d7da8] Richard Mudgett + Change-Id: Iea7d33b96a31622ab1b6e54baebaf271959514e1 - * res_stasis.c: Protect channel datastore list from stasis end. +2016-11-11 07:13 +0000 [e822a50f86] Mikheili Dautashvili - Change-Id: Ifadc469590bd4d5368e19d3763db3bd1f80fdb95 + * main/app.c: Transmit Silence on ControlPlayback pause -2016-03-29 18:06 +0000 [ece2edaa04] Richard Mudgett + ASTERISK-26562 #close - * res_ari: Cannot get control also means channel is unavailable. + Change-Id: Ie6cb0ffc2b8c775639ce7784fe96f4ea00cfa2f8 - The only caller of ari_bridges_play_found() has this note: +2016-11-17 10:52 +0000 [d670ea6297] Mark Michelson - If ari_bridges_play_found fails because the channel is unavailable for - playback, The channel will be removed from the playback list soon. We can - keep trying to get channels from the list until we either get one that - will work or else there isn't a channel for this bridge anymore, in which - case we'll revert to ari_bridges_play_new. + * manager: update minor version - Change-Id: Ib068141b367ccaa17be0dab4181c98e26c5127d6 + Based on bridge video AMI event changes, bump the minor version of AMI. -2016-03-29 14:29 +0000 [2f36cba4b5] Richard Mudgett + Change-Id: Idf84507354170400813cda780906c94c9f1b60b4 - * res_stasis_recording.c: Cleanup stasis_app_recording_find_by_name(). +2016-11-17 08:25 +0000 [349e08cb48] Timo Teräs - Change-Id: Ic7d93c402c498677a122505558859c853d4e5ac7 + * codec_dahdi: Fix poll.h include. -2016-03-28 14:23 +0000 [34457dd9db] Richard Mudgett + POSIX defines poll.h. sys/poll.h should not be used as it is c-library + internal header which may or may not exist. Notably in musl including + sys/poll.h generates warning of being incorrect. - * core_unreal.c: Add clarification comment about channel ref. + Change-Id: Ib318c1c7142a737bcf3caa4d8d72560bebe39252 - Change-Id: I0be0627260cd8d6b6c3cc345949dcfdf32eff1f3 +2016-11-16 20:24 +0000 [935f5d003b] George Joseph -2016-03-30 12:38 +0000 [2b3261cd36] gtjoseph + * build: Various OpenBSD issues - * res_pjsip_mwi: Allow subscribe to vm access extension as an alias + OpenBSD's 'find' doesn't take the -delete argument so you have to pipe + through 'xargs rm -rf'. - Background: + 'echo -e' doesn't like \t starting a line. It just prints 't' which + causes the libasteriskpj.exports file to be garbage. They were just + cosmetic so they were removed. - If your extension is 1000 and the voicemail access extension is 1571 and you - dial 1571, usually a dialplan rule calls voicemailmain with your extension and - you are placed directly in your mailbox. Therefore most admins program the - voicemail (or other speed dial) button on their phones to the access extension. - Some phones (Snom at least) use whatever is programmed there to also subscribe - for MWI and so can't dial one number and subscribe to another. This works fine - in chan_sip because chan_sip completely ignores the user portion of the - SUBSCRIBE message request URI. If it can match the peer, is subscribes to the - peer's mailbox. The user could be set to anything or nothing and you'd still - get subscribed to your mailbox. + librt doesn't exist so the link of libasteriskpj.so fails. It's not + actually needed for linux anyway so -lrt was removed from the link. - Issue: + res_rtp_asterisk was failing to load because of an undefined + DTLS_method. '|| defined(LIBRESSL_VERSION_NUMBER)' was added to the #if + so DTLSv1_method is used instead. - chan_pjsip actually uses the user portion of the URI to find an aor and its - mailboxes. Therefore a subscribe to 1571 results in a 404. Sure, you can - create an aor for 1571 but you certainly can't add your entire voicemail - system's mailboxes to it and everyone would get notified of every MWI. + ASTERISK-26608 - Solution: + Change-Id: I926ec95b0b69633231e3ad1d6e803b977272c49c - When an MWI subscribe comes in and an aor can't be found that matches the - resource directly, check the resource against the endpoint's aors. If an aor - is found that has a voicemail_extension that matches the resource, use it. +2016-11-16 15:42 +0000 [dc8f99ee27] Mark Michelson - ASTERISK-25865 - Reported-by: Ross Beer + * res_format_attr_opus: Fix fmtp generation. - Change-Id: I770ea185f751f1ada888fafb4b452115f1c06e9e + res_format_attr_opus assumed that the string being passed into it was + empty. It tried to determine if the only thing it had written was -2016-03-24 22:55 +0000 [e2524fcee3] gtjoseph + a=fmtp: - * res_pjsip_mwi: Add voicemail extension and mwi_subscribe_replaces_unsolicited + And if it had, it would reset the string. Its calculation was off when + working with chan_sip, though. chan_sip passes the entire built SDP + rather than an empty string. This resulted in always putting an empty + fmtp line in the SDP. - res_pjsip_mwi was missing the chan_sip "vmexten" functionality which adds - the Message-Account header to the MWI NOTIFY. Also, specifying mailboxes - on endpoints for unsolicited mwi and on aors for subscriptions required - that the admin know in advance which the client wanted. If you specified - mailboxes on the endpoint, subscriptions were rejected even if you also - specified mailboxes on the aor. + ASTERISK-26520 #close + Reported by scgm11 - Voicemail extension: - * Added a global default_voicemail_extension which defaults to "". - * Added voicemail_extension to both endpoint and aor. - * Added ast_sip_subscription_get_dialog for support. - * Added ast_sip_subscription_get_sip_uri for support. + Change-Id: Ib2e8712d26a47067e5f36d5973577added01dbb5 - When an unsolicited NOTIFY is constructed, the From header is parsed, the - voicemail extension from the endpoint is substituted for the user, and the - result placed in the Message-Account field in the body. +2016-11-15 16:23 +0000 [ed9ced0531] Richard Mudgett - When a subscribed NOTIFY is constructed, the subscription dialog local uri - is parsed, the voicemail_extension from the aor (looked up from the - subscription resource name) is substituted for the user, and the result - placed in the Message-Account field in the body. + * codec_opus: Fix warning when Opus negotiated but codec_opus not loaded. - If no voicemail extension was defined, the Message-Account field is not added - to the NOTIFY body. + When Opus is negotiated but not loaded, the log is spammed with messages + because the system does not know how to calculate the number of samples in + a frame. - mwi_subscribe_replaces_unsolicited: - * Added mwi_subscribe_replaces_unsolicited to endpoint. + * Suppress the warning by supplying a function that assumes 20ms of + samples in the frame. For pass through support it doesn't really seem to + matter what number of samples is returned anyway. - The previous behavior was to reject a subscribe if a previous internal - subscription for unsolicited MWI was found for the mailbox. That remains the - default. However, if there are mailboxes also set on the aor and the client - subscribes and mwi_subscribe_replaces_unsolicited is set, the existing internal - subscription is removed and replaced with the external subscription. This - allows an admin to configure mailboxes on both the endpoint and aor and allows - the client to select which to use. + ASTERISK-26605 #close - ASTERISK-25865 #close - Reported-by: Ross Beer + Change-Id: Icf2273692f040dc2c45b01e72a790d11092f9e0f - Change-Id: Ic15a9415091760539c7134a5ba3dc4a6a1217cea +2016-11-14 14:36 +0000 [0cd0e70c16] Richard Mudgett -2016-03-30 09:46 +0000 [724b9ab28f] gtjoseph + * res_pjsip_outbound_authenticator_digest.c: Fix memory pool leak. - * res_rtp_asterisk: Fix placement of txcount increment + Responding to authentication challenges leaks PJSIP memory pools. - Commit 1bce690ccb36a4744a327c07af23a9a3a0fa20cd was incrementing txcount - for rtcp packets as well as rtp packets and that was causing sender reports - to be generated instead of receiver reports in cases where no rtp was actually - being sent. + The leak was introduced with a pjproject 2.5.5 API change. + https://trac.pjsip.org/repos/ticket/1929 changed the API usage of + pjsip_auth_clt_init() to require the new API pjsip_auth_clt_deinit() to + clean up cached authentication allocations that get allocated with + pjsip_auth_clt_reinit_req(). - Moved the txcount increment from __rtp_sento, which handles both rtp and rtcp, - to rtp_sento which only handles rtp packets. + ASTERISK-26516 #close - Discovered by the hep/rtcp-receiver test. + Change-Id: I4473141b8c3961d0dc91c382beb3876b3efb45c8 - Change-Id: Ie442e4bb947a68847a676497021ba10ffaf376d5 +2016-11-15 12:01 +0000 [3017f09f22] George Joseph -2016-03-26 22:33 +0000 [c4064727d2] gtjoseph + * file.c/__ast_file_read_dirs: Fix issues on filesystems without d_type - * chan_pjsip: Add 'pjsip show channelstats' + One of the code paths in __ast_file_read_dirs will only get executed if + the OS doesn't support dirent->d_type OR if the filesystem the + particular file is on doesn't support it. So, while standard Linux + systems support the field, some filesystems like XFS do not. In this + case, we need to call stat() to determine whether the directory entry + is a file or directory so we append the filename to the supplied + directory path and call stat. We forgot to truncate path back to just + the directory afterwards though so we were passing a complete file name + to the callback in the dir_name parameter instead of just the directory + name. - Added the ability to show channel statistics to chan_pjsip (cli_functions.c) + The logic has been re-written to only create a full_path if we need to + call stat() or if we need to descend into another directory. - Moved the existing 'pjsip show channel(s)' functionality from - pjsip_configuration to cli_functions.c. The stats needed chan_pjsip's - private header so it made sense to move the existing channel commands as well. + Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba - Now using stasis_cache_dump to get the channel snapshots rather than retrieving - all endpoints, then getting each one's channel snapshots. Much more efficient. +2016-06-02 14:10 +0000 [070a51bf7c] Timo Teräs - Change-Id: I03b114522126d27434030b285bf6d531ddd79869 + * Implement internal abstraction for iostreams -2016-03-25 10:59 +0000 [970803efcb] Jacek Konieczny + fopencookie/funclose is a non-standard API and should not be used + in portable software. Additionally, the way FILE's fd is used in + non-blocking mode is undefined behaviour and cannot be relied on. - * res_rtp_asterisk: Use separate SRTP session for RTCP with DTLS + This introduces internal abstraction for io streams, that allows + implementing the desired virtualization of read/write operations + with necessary timeout handling. - Asterisk uses separate UDP ports for RTP and RTCP traffic and RFC 5764 - explicitly states: + ASTERISK-24515 #close + ASTERISK-24517 #close - There MUST be a separate DTLS-SRTP session for each distinct pair of - source and destination ports used by a media session + Change-Id: Id916aef418b665ced6a7489aef74908b6e376e85 - This means RTP keying material cannot be used for DTLS RTCP, which was - the reason why RTCP encryption would fail. +2016-11-15 08:07 +0000 [d3b61a98f4] Joshua Colp - ASTERISK-25642 + * manager: Bump AMI version number. - Change-Id: I7e8779d8b63e371088081bb113131361b2847e3a + During the development of Asterisk 14 the behavior of + the Command AMI action was altered such that the result + was returned on lines with a prefix of "Output: ". While + this was documented in the UPGRADE.txt file it is also + reasonable that this should bump the AMI version number. -2016-03-25 10:42 +0000 [9785e8d090] Jacek Konieczny + ASTERISK-26556 - * app_echo: forward and generate VIDUPDATE frames + Change-Id: Idf1bf01608e53f7bfdf43ddb4d0683e53f74ee42 - When using app_echo via WebRTC with VP8 video the video would appear - only after a few minutes, because there would be nothing to request - a full reference frame. +2016-11-14 15:57 +0000 [edd7ae85e8] Matt Jordan - This fixes the problem in both ways: - - echos any VIDUPDATE frames received on the channel - - sends one such frame when first video frame is to be forwarded + * pjproject: Use a much higher limit for PJ_ICE_MAX_CHECKS - This makes the echo work with Firefox and Chrome WebRTC implementation. + The PJ_ICE_MAX_CHECKS constant is used by pjproject to determine how + many pairs of local/remote candidates will be made. If for some reason + we reach this upper bound, ICE will generally fail and no media will + flow between the browser and Asterisk. - ASTERISK-25867 #close + This patch makes PJ_ICE_MAX_CHECKS set to the total possible number of + pairs of candidates we'd theoretically allow, which is + PJ_ICE_MAX_CAND^2. Prior to this patch, we simply multiplied + PJ_ICE_MAX_CAND by two; on systems with multiple interfaces (I blame + Docker), this is far too low to allow WebRTC calls to succeed. - Change-Id: I73bda87bf7532ee8bfb28d917045a21034908c1e + Setting this to be PJ_ICE_MAX_CAND^2 allowed WebRTC calls to succeed + even when the system Asterisk was running on had quite a few virtual + interfaces. -2016-03-27 12:53 +0000 [44ffb5105a] gtjoseph + Change-Id: Icd4f17de0ac9d3a83dddfc8bf1cb7616bc107d55 - * res_rtp_asterisk: Fix packet stats on bridged connection +2016-11-14 15:32 +0000 [cc86329228] Matt Jordan - rxcount, txcount, rxoctetcount and txoctetcount weren't being calculated - for bridged streams because the calulations were being done after the - bridged short-circuit. Actually, rxoctetcount wasn't ever being calculated. + * apps/app_echo: Only relay a single video source change frame - Moved the calculations so they occur for all valid received packets and - all transmitted packets. Also added rxoctetcount and txoctetcount to - ast_rtp_instance_stat. + In 9785e8d0, app_echo was updated to relay video source updates to the + channel for the purposes of displaying video in WebRTC tests. + Unfortunately, this can cause a Kafkaesque nightmare if two or more + Local channels are in a bridge together where their ends are in + app_echo. When this situation occurs, a video update sent into app_echo + will cause the video update to be relayed to the other Local channels, + causing another round of video updates, etc. In not much time at all, + the channel length queues will be overwhelmed, channel alert pipes will + fail, and all hell will break loose as Asterisk merrily continues to + throw more video update requests onto the channels. - Change-Id: I08fb06011a82d38c3b4068867a615068fbe59cbb + This patch updates app_echo to *only* relay a single video update. Once + a video update has been made, all further video updates are dropped. + This meets the intended purpose of the original patch: if we get a video + update and we're in app_echo, go ahead and ask the sender to update + themselves. However, once we've got that video stream sync'd up, don't + keep spamming the world. -2016-03-10 19:52 +0000 [c971a64366] gtjoseph + Change-Id: I9210780b08d4c17ddb38599d1c64453adfc34f74 - * res_pjsip/pjsip_options: Fix From generation on outgoing OPTIONS +2016-11-08 10:11 +0000 [a72ef38113] Matt Jordan - No one seemed to notice but every time an OPTIONS goes out, it goes - out with a From of "asterisk" (or whatever the default from_user is set to), - even if you specify an endpoint. + * res/ari/resource_bridges: Add the ability to manipulate the video source - The issue had several causes... - qualify_contact is only called with an endpoint if called from the CLI. - If the endpoint is NULL, qualify_contact only looks up the endpoint if - authenticate_qualify=yes. Even then, it never passes it on to - ast_sip_create_request where the From header is set. Therefore From - is always "asterisk" (or whatever the default from_user is set to). - Even if ast_sip_create_request were to get an endpoint, it only sets - the From if endpoint->from_user is set. + In multi-party bridges, Asterisk currently supports two video modes: + * Follow the talker, in which the speaker with the most energy is shown + to all participants but the speaker, and the speaker sees the + previous video source + * Explicitly set video sources, in which all participants see a locked + video source - The fix is 4 parts... + Prior to this patch, ARI had no ability to manipulate the video source. + This isn't important for two-party bridges, in which Asterisk merely + relays the video between the participants. However, in a multi-party + bridge, it can be advantageous to allow an external application to + manipulate the video source. - First, create_out_of_dialog_request was modified to use the endpoint id - if endpoint was specified and from_user is not set. + This patch provides two new routes to accomplish this: + (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId} + Sets a video source to an explicit channel + (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource + Removes any explicit video source, and sets the video mode to talk + detection - Second, qualify_contact was modified to always look up an endpoint if - one wasn't specified regardless of authenticate_qualify. It then passes - the endpoint on to create_out_of_dialog_request. + ASTERISK-26595 #close - Third (and most importantly), find_an_endpoint was modified to find - an endpoint by using an "aors LIKE %contact->aor%" predicate with - ast_sorcery_retrieve_by_fields. As such, this patch will only work - if the sorcery realtime optimizations patch goes in. Otherwise we'd - be pulling the entire endpoints database every time we send an OPTIONS. - Since we already know the contact's aor, the on_endpoint callback was also - modified to just check if the contact->aor is an exact match to one of - the endpoint's. + Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621 - Finally, since we now have an endpoint for every OPTIONS request, - res_pjsip/endpt_send_request (which handles out-of-dialog reqests) was - updated to get the transport from the endpoint and set it on tdata. - Now the correct transport is used. +2016-11-14 14:03 +0000 [7263a17ca0] George Joseph - Change-Id: I2207e12bb435e373bd1e03ad091d82e5aba011af + * channel: Fix issues in hangup scenarios caused by frame deferral -2016-03-08 15:55 +0000 [c948ce9651] gtjoseph + ASTERISK-26343 - * sorcery/res_pjsip: Refactor for realtime performance + Change-Id: I06dbf7366e26028251964143454a77d017bb61c8 + (cherry picked from commit 0be46aaf6b8b9eb5b0160ec591cdc2c6e1802a6d) - There were a number of places in the res_pjsip stack that were getting - all endpoints or all aors, and then filtering them locally. +2016-11-14 13:55 +0000 [0dc4567133] George Joseph - A good example is pjsip_options which, on startup, retrieves all - endpoints, then the aors for those endpoints, then tests the aors to see - if the qualify_frequency is > 0. One issue was that it never did - anything with the endpoints other than retrieve the aors so we probably - could have skipped a step and just retrieved all aors. But nevermind. + * Revert "Revert "channel: Use frame deferral API for safe sleep."" - This worked reasonably well with local config files but with a realtime - backend and thousands of objects, this was a nightmare. The issue - really boiled down to the fact that while realtime supports predicates - that are passed to the database engine, the non-realtime sorcery - backends didn't. + This reverts commit e5365dada5052b87275c048f6e29ac7d5e2b2415. - They do now. + Change-Id: Icc40cf0c7687454760762912dd29e4ae79e8e9ee - The realtime engines have a scheme for doing simple comparisons. They - take in an ast_variable (or list) for matching, and the name of each - variable can contain an operator. For instance, a name of - "qualify_frequency >" and a value of "0" would create a SQL predicate - that looks like "where qualify_frequency > '0'". If there's no operator - after the name, the engines add an '=' so a simple name of - "qualify_frequency" and a value of "10" would return exact matches. +2016-11-14 13:55 +0000 [6d61f7bfd1] George Joseph - The non-realtime backends decide whether to include an object in a - result set by calling ast_sorcery_changeset_create on every object in - the internal container. However, ast_sorcery_changeset_create only does - exact string matches though so a name of "qualify_frequency >" and a - value of "0" returns nothing because the literal "qualify_frequency >" - doesn't match any name in the objset set. + * Revert "Revert "autoservice: Use frame deferral API"" - So, the real task was to create a generic string matcher that can take a - left value, operator and a right value and perform the match. To that - end, strings.c has a new ast_strings_match(left, operator, right) - function. Left and right are the strings to operate on and the operator - can be a string containing any of the following: = (or NULL or ""), !=, - >, >=, <, <=, like or regex. If the operator is like or regex, the - right string should be a %-pattern or a regex expression. If both left - and right can be converted to float, then a numeric comparison is - performed, otherwise a string comparison is performed. + This reverts commit edca6911f392f47c1a5a25d1d3a357c72b04a78a. - To use this new function on ast_variables, 2 new functions were added to - config.c. One that compares 2 ast_variables, and one that compares 2 - ast_variable lists. The former is useful when you want to compare 2 - ast_variables that happen to be in a list but don't want to traverse the - list. The latter will traverse the right list and return true if all - the variables in it match the left list. + Change-Id: I76030b87333a2c390cd05392b74b75678d78ddfa - Now, the backends' fields_cmp functions call ast_variable_lists_match - instead of ast_sorcery_changeset_create and they can now process the - same syntax as the realtime engines. The realtime backend just passes - the variable list unaltered to the engine. The only gotcha is that - there's no common realtime engine support for regex so that's been noted - in the api docs for ast_sorcery_retrieve_by_fields. +2016-11-14 13:55 +0000 [f62c9c42fa] George Joseph - Only one more change to sorcery was done... A new config flag - "allow_unqualified_fetch" was added to reg_sorcery_realtime. - "no": ignore fetches if no predicate fields were supplied. - "error": same as no but emit an error. (good for testing) - "yes": allow (the default); - "warn": allow but emit a warning. (good for testing) + * Revert "Revert "AGI: Only defer frames when in an interception routine."" - Now on to res_pjsip... + This reverts commit 6bce938c2fcb60b7a77a0e997a6518860c0bfa39. - pjsip_options was modified to retrieve aors with qualify_frequency > 0 - rather than all endpoints then all aors. Not only was this a big - improvement in realtime retrieval but even for config files there's an - improvement because we're not going through endpoints anymore. + Change-Id: Iadbf462bf2a52e8b2fa9ebc75b37b1f688ba51d9 - res_pjsip_mwi was modified to retieve only endpoints with something in - the mailboxes field instead of all endpoints then testing mailboxes. +2016-11-14 13:54 +0000 [2966fa5ad7] George Joseph - res_pjsip_registrar_expire was completely refactored. It was retrieving - all contacts then setting up scheduler entries to check for expiration. - Now, it's a single thread (like keepalive) that periodically retrieves - only contacts whose expiration time is < now and deletes them. A new - contact_expiration_check_interval was added to global with a default of - 30 seconds. + * Revert "Revert "Add API for channel frame deferral."" - Ross Beer reports that with this patch, his Asterisk startup time dropped - from around an hour to under 30 seconds. + This reverts commit fa749866c17f91860d3e9f89742eab3e6f03ecbc. - There are still objects that can't be filtered at the database like - identifies, transports, and registrations. These are not going to be - anywhere near as numerous as endpoints, aors, auths, contacts however. + Change-Id: Idcd1b88fa0766b1326dcc87d8905dbc314c71bd7 - Back to allow_unqualified_fetch. If this is set to yes and you have a - very large number of objects in the database, the pjsip CLI commands - will attempt to retrive ALL of them if not qualified with a LIKE. - Worse, if you type "pjsip show endpoint " guess what's going to - happen? :) Having a cache helps but all the objects will have to be - retrieved at least once to fill the cache. Setting - allow_unqualified_fetch=no prevents the mass retrieve and should be used - on endpoints, auths, aors, and contacts. It should NOT be used for - identifies, registrations and transports since these MUST be - retrieved in bulk. +2016-11-11 10:45 +0000 [c6d755de11] Mark Michelson - Example sorcery.conf: + * res_ari: Add support for channel variables in ARI events. - [res_pjsip] - endpoint=config,pjsip.conf,criteria=type=endpoint - endpoint=realtime,ps_endpoints,allow_unqualified_fetch=error + This works the same as for AMI manager variables. Set + "channelvars=foo,bar" in your ari.conf general section, and then the + channel variables "foo" and "bar" (along with their values), will + appear in every Stasis websocket channel event. - ASTERISK-25826 #close - Reported-by: Ross Beer - Tested-by: Ross Beer + ASTERISK-26492 #close + patches: + ari_vars.diff submitted by Mark Michelson - Change-Id: Id2691e447db90892890036e663aaf907b2dc1c67 + Change-Id: I5609ba239259577c0948645df776d7f3bc864229 -2016-03-25 23:19 +0000 [8e8cf80cea] Philip Correia +2016-11-14 12:16 +0000 [72da2ef9ff] George Joseph - * res_parking: Fix blind transfer dynamic lots creation. + * cli: Fix ast_el_read_char to work with libedit >= 3.1 - Blind transfers to a recognized parking extension need to use the parker's - channel variable values to create the dynamic parking lot. This is - because there is always only one parker while the parkee may actually be a - multi-party bridge. A multi-party bridge can never supply the needed - channel variables to create the dynamic parking lot. In the multi-party - bridge blind transfer scenario, the parker's CHANNEL(parkinglot) value and - channel variables are inherited by the local channel used to park the - bridge. + Libedit 3.1 is not build with unicode on as a default and so the + prototype for the el_gets callback changed from expecting a char buffer + to accepting a wchar buffer. If ast_el_read_char isn't changed, + the cli reads garbage from teh terminal. - * In park_common_setup(), make use the parker instead of the parkee to - supply the dynamic parking lot channel variable values. In all but one - case, the parkee is the same as the parker. However, in the recognized - parking extension blind transfer scenario for a two party bridge they are - different channels. For consistency, we need to use the parker channel. + Added a configure test for (*el_rfunc_t)(EditLine *, wchar_t *) and + updated ast_el_read_char to use the HAVE_ define to detemrine whether + to use char or wchar. - * In park_local_transfer(), pass the CHANNEL(parkinglot) value to the - local channel when blind transferring a multi-party bridge to a recognized - parking extension. + ASTERISK-26592 #close - * When a local channel starts a call, the Local;2 side needs to inherit - the CHANNEL(parkinglot) value from Local;1. + Change-Id: I9099b46f68e06d0202ff80e53022a2b68b08871a - The DTMF one-touch parking case wasn't even trying to create dynamic - parking lots before it aborted the attempt. +2016-11-12 12:15 +0000 [97a75e3829] Tzafrir Cohen - * In parking_park_call(), add missing code to create a dynamic parking - lot. + * Add support for building RADIUS with radcli - A DTMF bridge hook is documented as returning -1 to remove the hook. - Though the hook caller is really coded to accept non-zero. See the - ast_bridge_hook_callback typedef. + Radcli is yet another RADIUS client library, generally compatible with + freeradius and radiusclient-ng. - * In feature_park_call(), don't remove the DTMF one-touch parking hook - because of an error. + This commit adds autoconf option for detecting it as well and changes + cdr_radius and cel_radius to use its header file in that case. - ASTERISK-24605 #close - Reported by: Philip Correia - Patches: - call_park.patch (license #6672) patch uploaded by Philip Correia + ASTERISK-26540 #close - Change-Id: I221d3a8fcc181877a1158d17004474d35d8016c9 + Change-Id: I271f0715406334874865ffbce0b354b3a2ca148f -2016-03-23 14:24 +0000 [3cf714031c] Richard Mudgett +2016-11-10 10:57 +0000 [1bd49040c4] Joshua Colp - * res_parking: Cleanup find_channel_parking_lot_name() usage. + * res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp. - Change-Id: I8f7a8890aef27824301c642d4d15407ac83e6f02 + When optimistic SRTP was on it was possible for us to still + set up a call without an audio stream if an offer was received + with required SRTP. -2016-03-18 14:01 +0000 [13e75ee04f] Richard Mudgett + This change makes it so this scenario will now fail with a 488 + response. - * res_parking: Misc fixes. + ASTERISK-26575 - res/parking/parking_applications.c: + Change-Id: I7d14187037681f48879bd20319ac79d0877318f3 - * Add malloc fail checks in setup_park_common_datastore(). +2016-11-11 02:41 +0000 [dfb951817f] Igor Goncharovskiy - * Fix playing parking failed announcement to only happen on non-blind - transfers in park_app_exec(). It could never go out before because a test - was provedly always false. + * Fix closing rtp ports after call finished in chan_unistim. - res/parking/parking_bridge.c: + Fix ASTERISK-26565 by adding ast_rtp_instance_stop before + rtp instance destroy for chan_unistim. Also several fixes + for displayed text translation. - * Fix NULL tolerance in generate_parked_user() because - bridge_parking_push() can theoretically pass a NULL parker channel if the - parker channel went away for some reason. + Change-Id: If42a03eea09bd1633471406bdc829cf98bf6affc - * Clarify some weird code dealing with blind_transfer in - bridge_parking_push(). +2016-11-11 00:29 +0000 [939dcf66b0] Timo Teräs - res/parking/parking_bridge_features.c: + * addons/chan_mobile: do not use strerror_r - * Made park_local_transfer() set BLINDTRANSFER on the Local;1 channel - which will be bulk copied to the Local;2 channel on the subsequent - ast_call(). The additional advantage is if the parker channel has the - BLINDTRANSFER and ATTENDEDTRANSFER variables set they are now guaranteed - to be overridden. + The two reasons why it might be used are that some systems do not + implement strerror in thread safe manner, and that strerror_r returns + the error code in the string in case there's no error message. - res/parking/parking_manager.c: + However, all of asterisk elsewhere uses strerror() and assumes it + to be thread safe. And in chan_mobile the errno is also explicitly + printed so neither of the above reasons are valid. - * Fix AMI Park action input range checking of the Timeout header in - manager_park(). + The reasoning to remove usage is that there are actually two versions + of strerror_r: XSI and GNU. They are incompatible in their return + value, and there's no easy way to figure out which one is being + used. glibc gives you the GNU version if _GNU_SOURCE is defined, + but the same feature test macro is needed for other symbols. On + all other systems you assumedly get XSI symbol, and compilation warnings + as well as non-working error printing. - * Reduced locking scope to where needed in manager_park(). + Thus the easiest solution is to just remove strerror_r and use + strerror as rest of the code. Alternative is to introduce ast_strerror + in separate translation unit so it can request the XSI symbol in + glibc case, and replace all usage of strerror. - res/res_parking.c: + Change-Id: I84d35225b5642d85d48bc35fdf399afbae28a91d - * Fix some off nominal missing unlocks by eliminating the returns. +2016-09-23 17:54 +0000 [338f35edcc] Richard Mudgett - Change-Id: Ib64945bc285acb05a306dc12e6f16854898915ca + * res_pjsip.c: Rework endpt_send_request() req_wrapper code. -2014-12-15 05:23 +0000 [e2853ae337] Philip Correia + * Don't hold the req_wrapper lock too long in endpt_send_request(). We + could block the PJSIP monitor thread if the timeout timer expires. + sip_get_tpselector_from_endpoint() does a sorcery access that could take + awhile accessing a database. pjsip_endpt_send_request() might take awhile + if selecting a transport. - * res_parking: Update parking documentation for dynamic parking lots. + * Shorten the time that the req_wrapper lock is held in the callback + functions. - * Remove duplicate res_parking.conf courtesytone config option - documentation. + * Simplify endpt_send_request() req_wrapper->timeout code. - ASTERISK-24596 #close - Reported by: Philip Correia + * Removed some redundant req_wrapper->timeout_timer->id assignments. - ASTERISK-24605 - Reported by: Philip Correia - Patches: - call_park_app_doc.patch (license #6672) patch uploaded by Philip Correia + Change-Id: I3195e3a8e0207bb8e7f49060ad2742cf21a6e4c9 - Change-Id: I90a92a891c6494dc08173e675856afcc4764c5b5 +2016-09-21 15:10 +0000 [bb196323f9] Richard Mudgett -2016-03-25 06:02 +0000 [72a897c534] Joshua Colp + * res_pjsip: Fix tdata leaks in off nominal paths. - * media_cache: Demote warning to debug as it may occur often. + Change-Id: Ie83e06e88c2d60157775263b07e40b61718ac97b - The file playback system will now query the media cache and then - the old file functionality. Under normal conditions this will result - in the cache failing to retrieve a file causing a warning message - to get output each time a file is played back. +2016-10-24 12:41 +0000 [9df59d9ff4] Richard Mudgett - This change demotes this warning to a debug message. + * res_pjsip_registrar_expire.c: Remove extra linefeed in debug message. - Change-Id: Ib72246ba300b5cce32774bfb3c26634bfb708624 -2016-03-10 16:58 +0000 [89e94e886c] Mark Michelson + Change-Id: I1f9adb911f23376503396ec8867e8005b755eb94 - * Restrict CLI/AMI commands on shutdown. +2016-11-10 13:38 +0000 [73524bde9c] C.J. Collier - During stress testing, we have frequently seen crashes occur because a - CLI or AMI command attempts to access information that is in the process - of being destroyed. + * chan_sip: Fix typo and re-wrap surrounding docs - When addressing how to fix this issue, we initially considered fixing - individual crashes we observed. However, the changes required to fix - those problems would introduce considerable overhead to the nominal - case. This is not reasonable in order to prevent a crash from occurring - while Asterisk is already shutting down. + Correct typo of end-pints to end-points + Re-wrap session timer parameter docs to max 80 chars wide; this + eases reading on terminals with lower resolution, commonly the case + for those with visual impairments. - Instead, this change makes it so AMI and CLI commands cannot be executed - if Asterisk is being shut down. For AMI, this is absolute. For CLI, - though, certain commands can be registered so that they may be run - during Asterisk shutdown. + ASTERISK-26573 - ASTERISK-25825 #close + Change-Id: I22c94459f4bb6b8a2f6713cfd22e87c32f204e6b + Signed-off-by: C.J. Collier - Change-Id: I8887e215ac352fadf7f4c1e082da9089b1421990 +2016-11-09 15:14 +0000 [bdb6d928c5] Joshua Colp -2016-03-24 14:08 +0000 [3f720155b7] Alexander Traud + * res_pjsip: Perform resolution when explicit IPv6 transport is used. - * chan_sip: Do not send all codecs on INVITE. Do not break on Session-Timers. + This change fixes the SIP resolver such that if an IPv6 transport + is explicitly used it will resolve NAPTR, SRV, and AAAA records. - Asterisk 13.7.0 included a fix for ASTERISK-24543, not to send all those - codecs, which the caller did not request/support. That fix was not complete - because on the second Session Timer all codecs were sent again. Some VoIP/SIP - clients interpreted that complete codec-list as a change in the SIP session. - Because of that, Asterisk did not send the RTP audio via NAT anymore which - created a non-audio scenario after the second Session Timer fired. + You can explicitly use one by specifying it on an endpoint. - ASTERISK-24543 #close + ASTERISK-26571 - Change-Id: I1881827816ab7fd47eb4287a95961179b34a0b66 + Change-Id: I2ed3ce81b43a6a8a937c0ebc1b8ed2da5ac2ef36 -2016-03-19 07:34 +0000 [894071ea2c] Gianluca Merlo +2016-11-10 08:33 +0000 [93a0de1f0e] Joshua Colp - * config: fix flags in uint option handler + * app_queue: Add mention of 'ABANDON' variable to CHANGES. - The configuration unsigned integer option handler sets flags for the - parser as if the option should be a signed integer (PARSE_INT32), - leading to errors on "out of range" values. Fix flags (PARSE_UINT32). + ASTERISK-26558 - A fix to res_pjsip is also present which stops invalid flags from - being passed when registering sorcery object fields for qualify - status. + Change-Id: I1127010181e79c8ac291f72f036cb8e430dc7f7e - ASTERISK-25612 #close +2016-11-10 07:34 +0000 [fa749866c1] George Joseph - Change-Id: I96b539336275e0e72a8e8033487d2c3344debd3e - -2016-03-24 07:51 +0000 [13cdf3e8a1] Walter Doekes - - * musiconhold: Only warn if music class is not found in memory and database. - - The log message when a MusicOnHold music class was not found was changed - from debug level to WARNING level in Asterisk 11.19 and 13.5. For those - using realtime musiconhold, this message is wrong because it warns - before checking the database. + * Revert "Add API for channel frame deferral." - This changeset delays the warning until after the database has been - checked. + This reverts commit f073f648b87d45e4729969fd2d83695c300757d1. + Multiple testsuite failures were detected after the fact. - Reported-by: Conrad de Wet - ASTERISK-25444 #close + Change-Id: I968c380418bf65c7166f6ecff30fe8e247ea6682 - Change-Id: I6cfb2db2f9cfbd2bb3d30566ecae361c4abf6dbf +2016-11-10 07:33 +0000 [6bce938c2f] George Joseph -2016-03-24 05:48 +0000 [87c9ab97ea] Walter Doekes + * Revert "AGI: Only defer frames when in an interception routine." - * core/logging: Fix broken syslog levels on older glibc. + This reverts commit 28926d1c81540bbeb16802814d3f2e63c2347bd2. + Multiple testsuite failures were detected after the fact. - The fix to ASTERISK-25407 introduced the usage of LOG_MAKEPRI. However - this macro is broken in older glibc (< 2.17); it would left-shift the - facility a second time, causing the resultant priority to become - invalid. + Change-Id: I8d4f5ccbb421a351d616254844ae7e5a31053edb - The syslog manpage mentions nothing about LOG_MAKEPRI and suggests this: +2016-11-10 07:32 +0000 [edca6911f3] George Joseph - The priority argument is formed by ORing the facility and the level - values [...]. + * Revert "autoservice: Use frame deferral API" - ASTERISK-25510 #close - Reported by: Michael Newton + This reverts commit afef1b8e4a311d33b3e485b9bab3c6e7fd13fbc9. + Multiple testsuite failures were detected after the fact. - Change-Id: Ia89debe7fac5ad090c7ef595c0707f31bb1e3d03 -2016-03-24 06:18 +0000 [a72f3b5bb4] Joshua Colp + Change-Id: Ib4cb0c0a6475681ce817f71b4050be25640ab67f - * tests/test_http_media_cache: Fix file descriptor leak in test. +2016-11-10 07:31 +0000 [e5365dada5] George Joseph - Change-Id: Ie8a9ae3d13bdeaacafc8d28271adc6707f633a5f + * Revert "channel: Use frame deferral API for safe sleep." -2016-02-28 19:05 +0000 [13efea24f7] Matt Jordan + This reverts commit 392202304d248147378f1e16f1f012285dc1221f. - * main/app: Only look to end of file if ':end' is specified, and not just ':' + Multiple testsuite issues were discovered after the fact. - There is a little known feature in app_controlplayback that will cause the - specified offset to be used relative to the end of a file if a ':end' is - detected within the filename. + Change-Id: I848c4196dca2994b1a368087004326ea354cff95 - This feature is pretty bad, but okay. +2016-11-09 18:18 +0000 [edea41126b] George Joseph - However, a bug exists in this code where a ':' detected in the filename - will cause the end pointer to be non-NULL, even if the full ':end' isn't - specified. This causes us to treat an unspecified offset (0) as being - "start playing from the end of the file", resulting in no file playback - occurring. + * build: Fix default values for some SANITIZER options - This patch fixes this bug by resetting the end pointer if ':end' is not - found in the filename. + 2 of the sanitizers didn't have default values so in systems that + don't support sanitizers menuselect would spit out warnings. They + were harmless but confusing. They've now been set to "0". - Change-Id: Ib4c7b1b45283e4effd622a970055c51146892f35 + Change-Id: I08dc495e3b83f1feac3160b421f538c375fc5d58 -2015-12-26 15:29 +0000 [ca14b99e6e] Matt Jordan +2016-11-06 06:04 +0000 [4e8ab6cda9] Sebastian Gutierrez - * main/file: Add the ability to play media in the media cache + * app_queue: new variable set when abandoned - This patch allows applications/APIs that access media through the core file - APIs to play media in the media cache. Prior to determining if a 'filename' - exists, the filename is passed to the media cache's retrieve API call. If - that call succeeds, the local file specified passed back by the API is - opened for streaming. When used in this fashion, the 'filename' is actually - a URI that the media cache process and understand. + sets the variable ABANDONED to TRUE if the call was not answered. - ASTERISK-25654 #close + ASTERISK-26558 - Change-Id: I73b6e2e90c3e91b8500581c45cdf9c0dc785f5f0 + Change-Id: I4729af9bff4eba436d8a776afd3374065d0036d3 -2015-12-30 10:52 +0000 [01962a3932] Matt Jordan +2016-11-08 10:48 +0000 [e5860ce07d] Mark Michelson - * tests/test_http_media_cache: Add unit tests for res_http_media_cache + * res_pjsip_session: Do not call session supplements when it's too late. - This patch adds unit tests for res_http_media cache, that covers nominal - creation and retrieval - and through them as well, staleness and deletion - checks. In addition, this patch adds tests that covers the interaction of - various HTTP headers, including Expires, Etag, and Cache-Control. + res_pjsip_sesssion was hooking into transaction and invite state + changes. One of the reasons for doing so was due to the + PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the + message sending process, and so we should call session supplements to + alter the outgoing message. - ASTERISK-25654 + In reality, this event was meant to indicate that the message either + a) had already been sent, or + b) required a DNS lookup and would be sent when the DNS query + completed. - Change-Id: I2db101e307c863857fe416d6f5bf4cace9ac7cf5 + In case (a), this meant we were altering an already-sent + request/response for no reason. In case (b), this potentially meant we + could be trying to alter a request/response at the same time that the + DNS resolution completed. In this case, it meant we might be stomping on + memory being used by the thread actually sending the message. This + caused potential crashes and memory corruption. -2015-01-29 08:38 +0000 [22e2340813] Matt Jordan + This patch removes the calls to session supplements from the case where + the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to + alter the message at this point is too late, and it can cause nothing + but harm to try to do it. Because there were no longer any calls to the + handle_outgoing() function, it has been removed. - * res/res_http_media_cache: Add an HTTP(S) backend for the core media cache + Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92 - This patch adds a bucket backend for the core media cache that interfaces to a - remote HTTP server. When a media item is requested in the cache, the cache will - query its bucket backends to see if they can provide the media item. If that - media item has a scheme of HTTP or HTTPS, this backend will be invoked. +2016-11-03 16:46 +0000 [392202304d] Mark Michelson - The backend provides callbacks for the following: - * create - this will always retrieve the URI specified by the provided - bucket_file, and store it in the file specified by the object. - * retrieve - this will pull the URI specified and store it in a temporary - file. It is then up to the media cache to move/rename this file - if desired. - * delete - destroys the file associated with the bucket_file. - * stale - if the bucket_file has expired, based on received HTTP headers from - the remote server, or if the ETag on the server no longer matches - the ETag stored on the bucket_file, the resource is determined to be - stale. + * channel: Use frame deferral API for safe sleep. - Note that the backend respects the ETag, Expires, and Cache-Control headers - provided by the HTTP server it is querying. + This is another case where manual frame deferral can be replaced with + centralized routines instead. - ASTERISK-25654 + Change-Id: I42cdf205f8f29a7977e599751a57efbaac07c30e + (cherry picked from commit d149c4b9e07eeb880d8428ad52c6fdb315cc15f5) - Change-Id: Ie201c2b34cafc0c90a7ee18d7c8359afaccc5250 +2016-11-03 16:46 +0000 [afef1b8e4a] Mark Michelson -2015-12-26 15:31 +0000 [791b4c9f81] Matt Jordan + * autoservice: Use frame deferral API - * main/media_cache: Provide an extension on the local file associated with a URI + Rather than use manual frame deferral, just let the channel API do it + for us. - This patch does the following: + ASTERISK-26343 - First, it addresses file extension handling in the media cache. The media core - in Asterisk is a bit interesting in that it wants: - * A file to have an extension on it. That extension is used to associate the - file with a defined format module. - * The filename passed to the core to not have an extension on it. This allows - the core to match the available file formats with the format a channel - is capable of handling. + Change-Id: I688386f36e765dbc07be863943a43f26bd5eac49 + (cherry picked from commit 8ba3e2fc27f9966b8c7ce75c1eca6208613a9315) - Unfortunately, this makes the current implementation a bit lacking in the media - cache. By default, we do not store the extension of a retrieved URI on the - local file that is created. As a result, the media core does not know what - format the file is, and the file is ignored. Modifying the file outside of the - media core is bad, as we would not be able to update the internal - ast_bucket_file's path. +2016-11-03 16:42 +0000 [28926d1c81] Mark Michelson - At the same time, we do not want to pass the extension out in the file_path - parameter in ast_media_cache_retrieve. This parameter is intended to be fed - into the media core; if we passed the extension, all callers would have to - strip it off. + * AGI: Only defer frames when in an interception routine. - Thus, this patch does the following: - * If there is an extension specified in the URL, we append it to the local - file name (if a preferred file name isn't specified), and we store that - in the local file path. - * The extension, however, is stripped off of the file_path parameter passed - back out of ast_media_cache_retrieve. + AGI recently was modified to defer important frames. This was because + when AGI was used in a connected line interception routine, the + resulting connected line frame would end up getting discarded by the + AGI. - Second, this patch causes stale items to be completely removed from the system. - Prior to this patch, sound files could be orphaned due to the bucket - referencing the file being deleted, but the file itself not being removed. This - is now addressed by explicitly calling ast_bucket_file_delete on the - bucket_file when it is deemed to be stale. Note that this only happen when we - know we will attempt to retrieve the resource again. + However, this caused bad behavior in other cases. Specifically, during a + transfer, if someone attempted to manually set the Caller ID on a + channel in an AGI, the deferred connected line frame would end up + overwriting what had been manually set in the AGI. - Finally, this patch changes the AO2 container holding media items to just use - a regular mutex. The usage for this container already assumed it was a plain - mutex, and - given that retrieval of an item can cause it to be replaced in - the container - a mutex makes more sense than a read/write lock. + Since the initial issue was specific to interception routines, this + change removes the manual frame deferral from AGI and instead uses the + new frame deferral API in interception routines. - Change-Id: I51667fff86ae8d2e4a663555dfa85b11e935fe0f + ASTERISK-26343 #close + Reported by Morton Tryfoss -2014-10-25 20:21 +0000 [6bbcfb34bd] Matt Jordan + Change-Id: Iab7d39436d0ee99bfe32ad55ef91e9bd88db4208 - * funcs/func_curl: Add the ability for CURL to download and store files +2016-11-03 16:36 +0000 [f073f648b8] Mark Michelson - This patch adds a write option to the CURL dialplan function, allowing it to - CURL files and store them locally. The value 'written' to the CURL URL - specifies the location on disk to store the file. As an example: + * Add API for channel frame deferral. - same => n,Set(CURL(http://1.1.1.1/foo.wav)=/tmp/foo.wav) + There are several places in Asterisk that have duplicated logic + for deferring important frames until later. - Would retrieve the file foo.wav from the remote server and store it in the - /tmp directory. + This commit adds a couple of API calls to facilitate this automatically. - Due to the potentially dangerous nature of this function call, APIs are - forbidden from using the write functionality unless live_dangerously is set - to True in asterisk.conf. + ast_channel_start_defer_frames(): Future reads of deferrable frames on + this channel will be deferred until later. - ASTERISK-25652 #close + ast_channel_stop_defer_frames(): Any frames that have been deferred get + requeued onto the channel. - Change-Id: I44f4ad823d7d20f04ceaad3698c5c7f653c41b0d + ASTERISK-26343 -2016-03-23 08:59 +0000 [392341ba37] gtjoseph + Change-Id: I3e1b87bc6796f222442fa6f7d1b6a4706fb33641 - * pjproject-bundled: Cleanups for reported issues +2016-11-02 10:52 +0000 [d30415bfa1] Joshua Colp - PortAudio should no longer be required - PJSIP_MAX_PKT_LEN is now 6000 - Older autoconf issue fixed. (CentOS 6) + * res_stasis: Don't unsubscribe from a NULL bridge. - Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd + A NULL bridge has special meaning in res_stasis for + unsubscribing. It means that a subscription to ALL + bridges should be removed. This should not be done + as part of the normal subscription management in + the res_stasis channel loop. -2015-11-20 08:02 +0000 [ac66999971] Francesco Castellano + ASTERISK-26468 - * chan_sip.c: Space after port causes unnecessary resolution attempt + Change-Id: I6d5bea8246dd13a22ef86b736aefbf2a39c15af0 - check_via() already skips leading blanks where the sent-by address (with the - optional port) should be placed. +2016-11-03 07:42 +0000 [0a698cd932] Alexander Anikin - Since RFC 3261 allows for blanks between the port ant the Via parameters: - > https://tools.ietf.org/html/rfc3261#section-20.42 - (actually it allows a lot of blanks more ;-)). I just switched from - ast_skip_blanks() to ast_strip() on the local copy of the string. + * chan_ooh323: Fixes to work right with Cisco devices - ASTERISK-21301 #close + Changed output packets queue processing algo to one read-one write + instead of all read-all send - Change-Id: Ie5b8fe5a07067b7c0dc9bcdd1707e99b23b02b06 -2016-03-19 17:49 +0000 [1d3191b118] gtjoseph + Remove h.245 tunneling parameter from ReleaseComplete packet - * progdocs: Exclude ./third-party from documentation generation + ASTERISK-24400 #close + Reported by: Dmitry Melekhov + Tested by: Dmitry Melekhov - We don't need pjproject's documentation embedded in Asterisk's. + Change-Id: I0b31933b062a21011dbac9a82b8bcfe345f406f6 - Change-Id: Iea6f5a621c0f4e3168dda3321eaab258d9f24a17 +2016-11-03 13:10 +0000 [a1cdc3891a] Alexander Anikin -2016-03-18 20:32 +0000 [8f94f947f5] Gianluca Merlo + * chan_ooh323: reset rrq count on gk registration - * func_aes: fix misuse of strlen on binary data + reset registration attempts count on success registration on gatekeeper - The encryption code for AES_ENCRYPT evaluates the length of the data to - be encoded in base64 using strlen. The data is binary, thus the length - of it can be underestimated at the first NULL character. - Reuse the write pointer offset to evaluate it, instead. + Change-Id: I5f47351852e0ca76c9ac78421659600e0f106336 - ASTERISK-25857 #close +2016-11-06 05:40 +0000 [b2b5f9d897] frahaase - Change-Id: If686b5d570473eb926693c73461177b35b13b186 -2016-03-18 14:31 +0000 [a3c9a74a02] Kevin Harwell + * ast_format: Adds an identifier for interleaved audio formats to the ast_format - * chan_pjsip: ref leak when checking direct_media_glare + Adds an identifier (with a getter and setter) to detect channels with + interleaved audio. + This is needed by the binaural bridge_softmix patch (ASTERISK-26292) and + was already discussed here: + http://lists.digium.com/pipermail/asterisk-dev/2016-October/075900.html + The identifier can be set during fmtp parsing (to be seen in the + res_format_attr_opus.c change). - Fix the reference leak introduced in the following commit: + ASTERISK-26292 - c534bd58075e2e1a1e4f3b23c435186c71b155fd + Change-Id: I359801cc5f98c35671c48dabc81a7f4ee1183d63 - ASTERISK-25849 +2016-11-06 03:46 +0000 [fbbbd0add9] Michael Kuron - Change-Id: I5cfefd5ee6c1c3a1715c050330aaa10e4d2a5e85 -2016-03-16 12:37 +0000 [c534bd5807] Kevin Harwell + * automon: restore mixing of the both channels after recording stops - * chan_pjsip: transfers with direct media reinvite has wrong address/port + This is a regression over Asterisk 11, introduced by + 2dc8a060064f359a17f5ebcd515d85fe5203c019. Previously, recordings started via + the automon DTMF code would automatically be mixed together using sox because + app_monitor would be called with the m option. This commit restores this + behavior. - During a transfer involving direct media a race occurs between when the - transferer channel is swapped out, initiating rtp changes/updates, and the - subsequent reinvites. + Change-Id: Ibaf58684285c3f1b6ca3714524e6d638ae3b3759 - When Alice, after speaking with Charlie (Bob is on hold), connects Bob and - Charlie invites are sent to each in order to establish the call between them. - Bob is taken off hold and Charlie is told to have his media flow through - Asterisk. However, if before those invites go out the bridge updates Bob's - and/or Charlie's rtp information with direct media data (i.e. address, port) - then the invite(s) will contain the remote data in the SDP instead of the - Asterisk data. +2016-11-04 15:42 +0000 [367d4903cc] Matt Jordan - The race occurs in the native bridge glue code when updating the peer. The - direct_media_address can get set twice before sending out the first invite - during call connection. This can happen because the checking/setting of the - direct_media_address happened in one thread while the sending of the invite(s) - happened in another thread. + * res_http_websocket: Increase the buffer size for non-LOW_MEMORY systems - This fix removes the race condition by moving the checking/setting of the - direct_media_address to be in the same thread as the sending of the invites(s). - This serializes the checking/setting and sending so they can no longer happen - out of order. + Not surprisingly, using Respoke (and possibly other systems) it is + possible to blow past the 16k limit for a WebSocket packet size. This + patch bumps it up to 32k, which, at least for Respoke, is sufficient. + For now. - ASTERISK-25849 #close + Because 32k is laughable on a LOW_MEMORY system (as is 16k, for that + matter), this patch adds a LOW_MEMORY directive that sets the buffer to + 8k for systems who have asked for their reduced memory availability to + be considered. - Change-Id: Idfea590175e74f401929a601dba0c91ca1a7f873 + Change-Id: Id235902537091b58608196844dc4b045e383cd2e -2016-03-03 04:43 +0000 [bdccb81157] Sergio Medina Toledo +2016-11-04 15:40 +0000 [7a449b6819] Matt Jordan - * res_pjsip_refer.c: Fix seg fault in process of Refer-to header. + * res_stasis: Set a video source mode on Stasis created bridges - The "Refer-to" header of an incoming REFER request is parsed by - pjsip_parse_uri(). That function requires the URI parameter to be NULL - terminated. Unfortunately, the previous code added the NULL terminator by - overwriting memory that may not be safe. The overwritten memory results - could be benign, memory corruption, or a segmentation fault. Now the URI - is NULL terminated safely by copying the URI to a new chunk of memory with - the correct size to be NULL terminated. + When a bridge is created via ARI (through res_stasis), no video source + mode is set by default. As a result, any endpoint sending video media + won't ever see any video reflected back to it. - ASTERISK-25814 #close + This patch defaults a bridge to a 'follow the talker' video mode. + Further work can be done to add routes that allow for the video mode to + be controlled through the /bridges resource. - Change-Id: I32565496684a5a49c3278fce06474b8c94b37342 + Change-Id: I7e9d530a5d7a97a4524a9ee4e468e1a6b3443866 -2016-02-25 10:29 +0000 [0da36fca6b] Leif Madsen +2016-11-04 15:37 +0000 [bbe943729a] Matt Jordan - * Add initial support to build Docker images + * main/bridge_channel: Fix channel reference leak on video source - This work-in-progress is the first step to being able to reliably - build Asterisk containers from the Asterisk source. I'm submitting - this based on feedback gained at AstriDevCon 2015. + When a channel is made the video source, the bridge holds a reference to + it. Whenever the video source changes, that reference is released. + However, a ref leak does occur if the channel leaves the bridge (such as + being hung up) while it is the video source, as the bridge never + releases the ref in such a case. - Information about how to use this is provided in contrib/docker/README.md - and will result in a local Asterisk container being built right from - your source. I believe this can eventually be automated via - hub.docker.com. + This patch adds a line to the bridge_channel_internal_join routine such + that, when a channel finishes its time in the bridge, it notifies the + bridge via ast_bridge_remove_video_src that if it is a video source its + reference should be released. - Change-Id: Ifa070706d40e56755797097b6ed72c1e243bd0d1 + ASTERISK-26555 #close -2016-03-11 12:22 +0000 [810f92c9dc] Richard Mudgett + Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a - * chan_sip.c: Fix mwi resub deadlock potential. +2016-11-04 15:36 +0000 [a70d6dba8c] Matt Jordan - This patch is part of a series to resolve deadlocks in chan_sip.c. + * main/bridge: Add some verbose logging for video source changes - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. + It's actually quite useful to see the source of a video stream change. + This doesn't happen terribly often, even with talk detection - but when + it does, it's nice to know which channel is now providing your video + stream. - ASTERISK-25023 #close + As a verbose 5 level message, it shouldn't be terribly spammy or costly + to have, and is 'lower level' then most other verbose messages that the + bridge system emits. - Change-Id: I96d429c57a48861fd8bde63dd93db4e92dc3adb6 + ASTERISK-26555 -2016-03-10 17:01 +0000 [72c444ba37] Richard Mudgett + Change-Id: Ia1c20ecafa9670171fd38bddcf3beccae47fb15c - * chan_sip.c: Fix registration timeout and expire deadlock potential. +2016-11-04 15:33 +0000 [fb17b630a5] Matt Jordan - This patch is part of a series to resolve deadlocks in chan_sip.c. + * bridges/bridge_softmix: Remove SSRC changes on join/leave; update video source - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. + WebRTC clients really, really want to know the SSRC of the media they're + getting. Changing the SSRC is generally not a good thing. - ASTERISK-25023 + bridge_softmix, starting in Asterisk 12, started changing the SSRC of + parties as they joined or left the bridge. With most phones, this isn't + a problem: phones just play back the stream they're getting. With WebRTC + clients, however, the SSRC is tied to a media stream that may be + negotiated. When a new SSRC just shows up, the media can be dropped. - Change-Id: I2e40de89efc8ae6e8850771d089ca44bc604b508 + As it turns out, the SSRC change shouldn't even be necessary. From the + perspective of the client, it's still talking to Asterisk with the same + media stream: why indicate that the far party has suddenly changed to a + different source of media? -2016-03-09 16:26 +0000 [7ea1e181dc] Richard Mudgett + This patch opts to just remove the SSRC changes. With this patch, video + clients that join/leave a softmix bridge actually get the video stream + instead of freaking out. - * chan_sip.c: Fix waitid deadlock potential. + ASTERISK-26555 - This patch is part of a series to resolve deadlocks in chan_sip.c. + Change-Id: I27fec098b32e7c8718b4b65f3fd5fa73527968bf - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. +2016-10-28 15:11 +0000 [70d5f90e3d] Kevin Harwell - * Made always run check_pendings() under the scheduler thread so scheduler - ids can be checked safely. + * stasis_recording/stored: remove calls to deprecated readdir_r function. - ASTERISK-25023 + The readdir_r function has been deprecated and should no longer be used. This + patch removes the readdir_r dependency (replaced it with readdir) and also moves + the directory search code to a more centralized spot (file.c) - Change-Id: Ia834d6edd5bdb47c163e4ecf884428a4a8b17d52 + Also removed a strict dependency on the dirent structure's d_type field as it + is not portable. The code now checks to see if the value is available. If so, + it tries to use it, but defaults back to using the stats function if necessary. -2016-03-10 12:17 +0000 [fbf8e04aed] Richard Mudgett + Lastly, for most implementations of readdir it *should* be thread-safe to make + concurrent calls to it as long as different directory streams are specified. + glibc falls into this category. However, since it is possible that there exist + some implementations that are not safe, locking has been added for those other + than glibc. - * chan_sip.c: Fix t38id deadlock potential. + ASTERISK-26412 + ASTERISK-26509 #close - This patch is part of a series to resolve deadlocks in chan_sip.c. + Change-Id: Id8f54689b1e2873e82a09d0d0d2faf41964e80ba - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. +2016-11-04 10:57 +0000 [bf01ff53f8] Kevin Harwell - ASTERISK-25023 + * Revert "chan_sip: Fix lastrtprx always updated" - Change-Id: If595e4456cd059d7171880c7f354e844c21b5f5f + This reverts commit 93332cb1d0eea18021ea6538237297e627d6e2fc. -2016-03-08 15:08 +0000 [02458cc6fd] Richard Mudgett + Unfortunately, the aforementioned commit caused a regression (incoming calls + would eventually disconnect). Thus it is being removed. - * chan_sip.c: Fix session timers deadlock potential. + ASTERISK-26523 #close + ASTERISK-25270 - This patch is part of a series to resolve deadlocks in chan_sip.c. + Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. +2016-11-03 13:45 +0000 [1504194215] Alexander Anikin - ASTERISK-25023 + * chan_ooh323: Fix infinite loop on read second part of H.225 packet - Change-Id: I6d65269151ba95e0d8fe4e9e611881cde2ab4900 + Fix logic on read second part of H.225 packet. There was infinite loop on + wrong connections due to read before poll. -2016-03-09 16:34 +0000 [c7fdff2e37] Richard Mudgett + Change-Id: I42b4bf75c46e4a5c5df5c5ca1f0bd74b8944e7ff - * chan_sip.c: Fix reinviteid deadlock potential. +2016-11-03 11:55 +0000 [78dc6ceaf6] George Joseph - This patch is part of a series to resolve deadlocks in chan_sip.c. + * pjproject_bundled: Fix issue with libasteriskpj needing libresample - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. + libresample is only needed by pjproject if we're building pjsua, which + we only do if TEST_FRAMEWORK is selected. It's required by pjsua to + process audio which is needed by some testsuite tests. Unfortunately, + pjproject relies on a newer version of libresample than the version + that ships by most distros so we need to compile the version that's + bundled with pjproject. Since we only need it for pjsua, we DON'T want + it's symbols exposed when we actually build asterisk. - ASTERISK-25023 + There was a problem however... TEST_FRAMEWORK is only known AFTER we've + already run ./configure on both asterisk and pjproject but pjproject's + ./configure needs to test it to know whether to set up to build + libresample or not. The previous way of figuring this out was to + always tell ./configure "yes" but not actually build the library. This + caused an issue where building libasteriskpj was being told to include + libresample but it wasn't actually there. - Change-Id: I9c11b9d597468f63916c99e1dabff9f4a46f84c1 + The solution is to still do a default pjproject configure during an + asterisk ./configure but if makeopts or menuselect.makeopts changes + subsequently, we now reconfigure pjproject, taking into account the + current state of TEST_FRAMEWORK. Previously, if makeopts or + menuselect.makeopts changed, only a recompile of pjproject was done. -2016-03-07 13:21 +0000 [69810b306d] Richard Mudgett + Change-Id: I9b5d84c61384a3ae07fe30e85c49698378cc4685 - * chan_sip.c: Fix autokillid deadlock potential. +2016-11-01 19:48 +0000 [0904c1f4cc] Sebastian Gutierrez - This patch is part of a series to resolve deadlocks in chan_sip.c. + * chan_sip: add missing account code - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. + Added missing account to AMI event of sip show peers - * Fix clearing autokillid in __sip_autodestruct() even though we could - reschedule. + ASTERISK-26176 #close - ASTERISK-25023 + Change-Id: Ieb6c2c80a838a1b59c82103eba4c63ba238dc482 - Change-Id: I450580dbf26e2e3952ee6628c735b001565c368f +2016-11-02 09:15 +0000 [4de5454ef1] Joshua Colp -2016-03-09 16:32 +0000 [f484ddbdfe] Richard Mudgett + * app_dial: Fix incorrect device state when channel is picked up. - * chan_sip.c: Fix packet retransid deadlock potential. + Given the scenario where multiple channels are dialed using Dial() + but the caller is picked up using PickupChan() all outgoing channels + except the channel specified to PickupChan() would be marked + as ringing until the call had been hung up. - This patch is part of a series to resolve deadlocks in chan_sip.c. + When using the PickupChan application the channel executing the + application is swapped into place of another channel. As part + of this process the channel is answered. The Dial application + has explicit logic which checks if the channel is answered, + cancels all other outgoing channels, and bridges. This logic is + different than the normal logic that is executed when an outgoing + channel is answered. This different logic failed to publish dial + events stating that the other outgoing channels had been canceled. + As a result references to the outgoing channels were held onto by + the dial masquerade process until the call had been ended and + the channels had gone away. This would result in the channels + appearing in the "core show channels" list despite not being present + anymore and would also result in incorrect device state. - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. + This change makes it so that this logic also publishes + dial events stating that the other outgoing channels have been + canceled. - * Fix retrans_pkt() to call check_pendings() with both the owner channel - and the private objects locked as required. + ASTERISK-26549 - * Refactor dialog retransmission packet list to safely remove packet - nodes. The list nodes are now ao2 objects. The list has a ref and the - scheduled entry has a ref. + Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f - ASTERISK-25023 +2016-09-13 04:08 +0000 [9ac53877f6] Alexander Traud - Change-Id: I50926d81be53f4cd3d572a3292cd25f563f59641 + * rtp_engine: Allow more than 32 dynamic payload types. -2016-03-07 18:28 +0000 [67c79c326d] Richard Mudgett + Since adding all remaining rates of Signed Linear (ASTERISK-24274), SILK + (Gerrit 3136) and Codec 2 (ASTERISK-26217), no RTP Payload Type is left in the + dynamic range (96-127). RFC 3551 section 3 allows to reassign other ranges. + Consequently, when the dynamic range is exhausted, this change utilizes payload + types in the range between 35 and 63 giving room for another 29 payload types. - * chan_sip.c: Fix provisional_keepalive_sched_id deadlock. + ASTERISK-26311 #close - This patch is part of a series to resolve deadlocks in chan_sip.c. + Change-Id: I7bc96ab764bc30098a178b841cbf7146f9d64964 - Stopping a scheduled event can result in a deadlock if the scheduled event - is running when you try to stop the event. If you hold a lock needed by - the scheduled event while trying to stop the scheduled event then a - deadlock can happen. The general strategy for resolving the deadlock - potential is to push the actual starting and stopping of the scheduled - events off onto the scheduler/do_monitor() thread by scheduling an - immediate one shot scheduled event. Some restructuring may be needed - because the code may assume that the start/stop of the scheduled events is - immediate. +2016-11-02 05:05 +0000 [6a99f007d6] Tzafrir Cohen - ASTERISK-25023 + * autoconf: more variants for OSARCH linux-gnu - Change-Id: I98a694fd42bc81436c83aa92de03226e6e4e3f48 + There are quite a few odd GNU/Linux platforms. Just call all of them + linux-gnu. -2016-03-09 11:22 +0000 [76be7093cd] Richard Mudgett + Specifically this fixes building the Debian platforms mips64el and x32. + And maybe also others. - * chan_sip.c: Adjust how dialog_unlink_all() stops scheduled events. + ASTERISK-26546 #close - This patch is part of a series to resolve deadlocks in chan_sip.c. + Change-Id: I06ec4bd7f0ee1c84b6b24d81538223b07c4174b1 - * Make dialog_unlink_all() unschedule all items at once in the sched - thread. +2016-11-01 13:13 +0000 [f29b8d62bb] Richard Mudgett - ASTERISK-25023 + * bundled pjproject: Fix DNS write to freed memory. - Change-Id: I7743072fb228836e8228b72f6dc46c8cc50b3fb4 + PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS + patch. -2016-03-10 21:54 +0000 [52f0932e4c] Richard Mudgett + The patch below fixes a write to freed memory under cartain DNS lookup + conditions. - * chan_sip.c: Clear scheduled immediate events on unload. + 0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch - This patch is part of a series to resolve deadlocks in chan_sip.c. + ASTERISK-26516 + Reported by: Richard Mudgett - The reordering of chan_sip's shutdown is to handle any immediate events - that get put onto the scheduler so resources aren't leaked. The typical - immediate events at this time are going to be concerned with stopping - other scheduled events. + Change-Id: Ifdfae9ecf1e41b53080f33aab44ce1a220f349c5 - ASTERISK-25023 +2016-11-01 06:56 +0000 [6233e146c6] Joshua Colp - Change-Id: I3f6540717634f6f2e84d8531a054976f2bbb9d20 + * res_pjsip_sdp_rtp: Limit number of formats to defined maximum. -2016-03-15 14:51 +0000 [0987a11cce] Richard Mudgett + The res_pjsip_sdp_rtp module did not restrict the number of + formats added to a media stream in the SDP to the defined + limit. If allow=all was used with additional loaded codecs this + could result in the next media stream being overwritten some. - * sip/dialplan_functions.c: Fix /channels/chan_sip/test_sip_rtpqos crash. + This change restricts the module to limit it to the defined + maximum and also increases the maximum in our bundled pjproject. - This patch is part of a series to resolve deadlocks in chan_sip.c. + ASTERISK-26541 #close - Delaying destruction of the chan_sip sip_pvt structures caused the - /channels/chan_sip/test_sip_rtpqos unit test to crash. That test - registers a special test ast_rtp_engine with the rtp engine module. When - the unit test completes it cleans up by unregistering the test - ast_rtp_engine and exits. Since the delayed destruction of the sip_pvt - happens after the unit test returns, the destructor tries to call the rtp - engine destroy callback of the test ast_rtp_engine auto variable which no - longer exists on the stack. + Change-Id: I0dc5f59d3891246cafa2f3df5ec406f088559ee8 - * Change the test ast_rtp_engine auto variable to a static variable. Now - the variable can still exist after the unit test exits so the delayed - sip_pvt destruction can complete successfully. +2016-10-31 17:35 +0000 [8060cd1ec1] Kevin Harwell - ASTERISK-25023 + * codecs.conf.sample: Add sample and option descriptions for codec_opus - Change-Id: I61e34a12d425189ef7e96fc69ae14993f82f3f13 + codecs.conf.sample was missing codec opus's configuration options, descriptions, + and examples. This patch adds the configuration options and examples to + codecs.conf.sample that can be used with codec_opus. -2016-03-07 15:50 +0000 [9a7cfa2b61] Richard Mudgett + ASTERISK-26538 #close - * sched.c: Ensure oldest expiring entry runs first. + Change-Id: I1d89bb5e01d3e3b5bd78951b8dd0ff077a83dc8b - This patch is part of a series to resolve deadlocks in chan_sip.c. +2016-10-20 07:27 +0000 [c30d677333] Matt Jordan - * Updated sched unit test to check new behavior. + * res/stasis: Add CLI commands for displaying/debugging ARI apps - ASTERISK-25023 + This patch adds three new CLI commands: + - ari show apps: list the registered ARI applications + - ari show app: show detailed information about an ARI application + - ari set debug: dump events being sent to an ARI application - Change-Id: Ib69437327b3cda5e14c4238d9ff91b2531b34ef3 + Note that while these CLI commands live in the res_stasis module, we use + the 'ari' family for these commands. This was done as most users of + Asterisk aren't aware of the semantic differences between ARI and + res_stasis, and some 'ari' CLI commands already exist. -2016-03-15 13:31 +0000 [7964e260d3] Andrew Nagy + ASTERISK-26488 #close - * app_stasis: Don't hang up if app is not registered + Change-Id: I51ad6ff0cabee0d69db06858c13f18b1c513c9f5 - This prevents pbx_core from hanging up the channel if the app isn't - registered. +2016-11-01 08:32 +0000 [2526dff94d] Grachev Sergey - ASTERISK-25846 #close + * chan_sip: Incorrect display option Outbound reg. retry 403 - Change-Id: I63216a61f30706d5362bc0906b50b6f0544aebce -2016-03-07 18:56 +0000 [cb97198ca6] Richard Mudgett + If in sip.conf (general section) set option register_retry_403=no, + the command "sip show settings" return value: + Outbound reg. retry 403:0 + If in sip.conf (general section) set option register_retry_403=yes, + the command "sip show settings" return value: + Outbound reg. retry 403:-1 - * chan_sip.c: Simplify sip_pvt destructor call levels. + * In static char "sip show settings" for "Outbound.reg. retry 403" + option use AST_CLI_YESNO - Remove destructor calling destroy_it calling really_destroy_it - for no benefit. Just make the destructor the really_destroy_it - function. + ASTERISK-26476 #close - Change-Id: Idea0d47b27dd74f2488db75bcc7f353d8fdc614a + Change-Id: I3c14272f05f1067bd2aeaa8b3ef9cf8fcb12dcf9 -2016-03-04 18:25 +0000 [8be01398d9] Richard Mudgett +2016-11-01 04:18 +0000 [ed08811e64] Tzafrir Cohen - * chan_sip.c: Made sip_reinvite_retry() call sip_pvt_lock_full(). + * netsock.c: fix includes for HURD - Change-Id: I90f04208a089f95488a2460185a8dbc3f6acca12 + ASTERISK-25070 -2016-03-14 08:59 +0000 [4df7b3ae80] Joshua Colp + Change-Id: I43bf94d2d36d3d8a8d0df40cd6c027d65a462814 - * build: Add configure check for proto field of PJSIP TLS transport setting. +2016-11-01 04:00 +0000 [69fed26deb] Tzafrir Cohen - Older versions of PJSIP do not have the proto field on the TLS transport - setting structure. This change adds a configure check so even if it is - not present we will still be able to build. + * define PATH_MAX for HURD - Change-Id: Ibf3f47befb91ed1b8194bf63888baa6fee05aba9 + PATH_MAX is not guaranteed to be defined. In parctice, all but the HURD + define it to a constant. It is indeed not safe to assume there won't be + longer paths and Asterisk generally does err safely on such cases. -2016-03-12 16:02 +0000 [0af6b5de62] gtjoseph + So even for HURD we'll just pretend PATH_MAX is 4096. - * build_system: Split COMPILE_DOUBLE from DONT_OPTIMIZE + ASTERISK-25070 #close - I can't ever recall actually needing the intermediate files or the checking - that a double compile produces. What I CAN remember is every DONT_OPTIMIZE - build needing 3 invocations of gcc instead of 1 just to do the checks and - produce those intermediate files. + Change-Id: I53d10ba18c34c132bcb640a5fd8e0da1d9b22db3 - Having said that, Richard pointed out that the reason for the double compile - was that there were cases in the past where a submitted patch failed to compile - because the submitter never tried it with the optimizations turned on. +2016-10-31 16:12 +0000 [f27f837a9f] George Joseph - To get the best of both worlds, COMPILE_DOUBLE has been split into its own - option. If DONT_OPTIMIZE is turned on, COMPILE_DOUBLE will also be selected - BUT you can then turn it off if all you need are the debugging symbols. This - way you have to make an informed decision about disabling COMPILE_DOUBLE. + * pjproject_bundled: Fix compile of pjsua so it handles audio - To allow COMPILE_DOUBLE to be both auto-selected and turned off, a new feature - was added to menuselect. The element can now contain an "autoselect" - attribute which will turn the used member on but not create a hard dependency. - The cflags.xml implementation for COMPILE_DOUBLE looks like this... + In order for pjsua and its python binding to actually negotiate + audio for the testsuite tests, it needs g711 and resample. The + pj* libraries themselves do not. Unfortunately, pjproject relies + on a brand new libresample that most distros don't ship so we need + to use the libresample already bundled with pjproject. Only the pjsua + executable and the _pjsua.so python library are linked with it so it + shouldn't interfere with asterisk itself. - - COMPILE_DOUBLE - core - - - Change-Id: I24b0a4d0872acef00ed89b3c527a713ee4c2ccd4 + * vector: Prevent NULL argument to memcpy. -2016-03-11 16:03 +0000 [dcb25bb057] Walter Doekes + Headers declare that memcpy does not accept NULL argument for the first + two parameters. Add a conditional block to prevent memcpy and ast_free + from running on vectors with NULL element array. - * app_chanspy: Fix occasional deadlock with ChanSpy and Local channels. + ASTERISK-26526 #close - Channel masquerading had a conflict with autochannel locking. + Change-Id: I988a476bb5fcfcbd3f6d6c6b3e7769e4f9629b71 - When locking autochannel->channel, the channel is fetched from the - autochannel and then locked. During the fetch, the autochannel -- which - has no locks itself -- can be modified by someone who owns the channel - lock. That means that the value of autochan->channel cannot be trusted - until you hold the lock. +2016-10-29 10:19 +0000 [ad60927a40] Corey Farrell - In practice, this caused problems with Local channels getting - masqueraded away while the ChanSpy attempted to get info from that - channel. The old channel which was about to get removed got locked, but - the new (replaced) channel got unlocked (no-op). Because the replaced - channel was now locked (and would never get unlocked), it couldn't get - removed from the channel list in a timely manner, and would now cause - deadlocks when iterating over the channel list. + * astobj2: Declare private variable data_size for AO2_DEBUG only. - This change checks the autochannel after locking the channel for changes - to the autochannel. If the channel had been changed, the lock is - reobtained on the new channel. + Every ao2 object contains storage for a private variable data_size, + though the value is never read if AO2_DEBUG is disabled. This change + makes the variable conditional, reducing memory usage. - In theory it seems possible that after this fix, the lock attempt on the - old (wrong) channel can be on an already destroyed lock, maybe causing - a crash. But that hasn't been observed in the wild and is harder induce - than the current deadlock. + ASTERISK-26524 #close - Thanks go to Filip Frank for suggesting a fix similar to this and - especially to IRC user hexanol for pointing out why this deadlock was - possible and testing this fix. And to Richard for catching my rookie - while loop mistake ;) + Change-Id: If859929e507676ebc58b0f84247a4231e11da07f - ASTERISK-25321 #close +2016-10-28 14:55 +0000 [6feee22e09] Richard Mudgett - Change-Id: I293ae0014e531cd0e675c3f02d1d118a98683def + * bundled pjproject: Crashes while resolving DNS names. -2016-03-07 21:34 +0000 [fb28049de2] gtjoseph + PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS + patch. - * pjproject_bundled: Remove --with-external-pa from configure options. + The patches below fix the DNS lookup race condition crash caused by + attempting to send the same message twice for the single DNS lookup. - Not sure why it was there in the first place as we already specify - --disable-sound. + 0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch + 0006-r5473-svn-backport-Fix-pending-query.patch - Change-Id: Ia80a40e8b1e1acc287955ab11ba1fbd0c7d4cff9 + The patch below removes a cached DNS response from the hash table when + another thread is referencing the old entry. The table still contained + the entry when it was destroyed which can result in inexplicable crashes. -2016-03-06 14:38 +0000 [d2eb65f71e] gtjoseph + 0006-r5475-svn-backport-Remove-DNS-cache-entry.patch - * res_pjsip: Strip spaces from items parsed from comma-separated lists + ASTERISK-26344 #close + Reported by: Ian Gilmour - Configurations like "aors = a, b, c" were either ignoring everything after "a" - or trying to look up " b". Same for mailboxes, ciphers, contacts and a few - others. + ASTERISK-26387 #close + Reported by: Harley Peters - To fix, all the strsep(©, ",") calls have been wrapped in ast_strip. To - facilitate this, ast_strip, ast_skip_blanks and ast_skip_nonblanks were - updated to handle null pointers. + Change-Id: I17fde80359e66f65a91341ceca58d914d0f61cc4 - In some cases, an ast_strlen_zero() test was added to skip consecutive commas. +2016-10-28 16:59 +0000 [12bdde6a6c] George Joseph - There was also an attempt to ast_free an ast_strdupa'd string in - ast_sip_for_each_aor which was causing a SEGV. I removed it. + * pjproject_bundled: Fix issue where "/version.mak" wasn't found - Although this issue was reported for realtime, the issue was in the res_pjsip - modules so all config mechanisms were affected. + main/Makefile includes third-party/pjproject/build.mak but + doesn't set PJDIR beforehand so "include $(PJDIR)/version.mak" + evaluates to "/version.mak". Fix is to set PJDIR in main/Makefile + before the include. - ASTERISK-25829 #close - Reported-by: Mateusz Kowalski + Change-Id: I0f7c67d60209049056fe9c4b041bf0463aa95604 - Change-Id: I0b22a2cf22a7c1c50d4ecacbfa540155bec0e7a2 +2016-10-28 13:30 +0000 [9d8b9b6ca5] Matt Krokosz -2016-03-07 02:02 +0000 [f690c105f3] Rodrigo Ramírez Norambuena + * res_pjsip_outbound_publish: Fix crash when publishing device state. - * res_odbc_transaction: fix some format tab + While publishing device state between multiple instances of Asterisk, + a crash will sporadically occur under high CPS which looks to be a + race condition operating on the publisher queue. - Change-Id: I265e4ac47c629c9a63dd86b59df82a7ab3c64384 + ASTERISK-26506 -2016-02-17 22:58 +0000 [0ec9fe5421] Rodrigo Ramírez Norambuena + Change-Id: I28da25d346deb358eff1d563485cabc433ce1ed6 - * main/cli.c: Refactor function to print seconds formatted +2016-10-27 21:49 +0000 [d6ad867897] Corey Farrell - Refactor and created function ast_cli_print_timestr_fromseconds to print - seconds formatted: year(s) week(s) day(s) hour(s) second(s) + * Fix shutdown crash caused by modules being left open. - This function now is used in addons/cdr_mysql.c,cdr_pgsql.c, main/cli.c, - res_config_ldap.c, res_config_pgsql.c. + It is only safe to run ast_register_cleanup callbacks when all modules + have been unloaded. Previously these callbacks were run during graceful + shutdown, making it possible to crash during shutdown. - Change-Id: Ibeb8634102cd11d3f8623398b279cb731bcde36c + ASTERISK-26513 #close -2016-03-04 20:37 +0000 [471ff375fd] gtjoseph + Change-Id: Ibfa635bb688d1227ec54aa211d90d6bd45052e21 - * install_prereq: Add packages for bundled pjproject +2016-10-28 09:50 +0000 [badd38f031] Rusty Newton - RedHat/CentOS needs python-devel - Debian/Ubuntu needs automake, libsrtp-dev and python-dev + * SAC documentation: don't specify transports for endpoints and registrations - Ubuntu also needed libncurses5-dev for cmenuselect so while not - needed for pjproject, I adedd it anyway. + Removing explicit transport definition for endpoints and registrations. It + isn't necessary and isn't generally advised. - Change-Id: Idf5fa16e2d87c687439621507e122cb9461d7089 + ASTERISK-26514 #close -2016-02-24 17:25 +0000 [2b9849625c] gtjoseph + Change-Id: Ifdec5e631962438a4683600968dfa4bfd15909fb - * res_pjsip_caller_id: Anonymize 'From' when caller id presentation is prohibited +2016-10-18 09:06 +0000 [0646b48ece] Tzafrir Cohen - Per RFC3325, the 'From' header is now anonymized on outgoing calls when - caller id presentation is prohibited. + * chan_dahdi: remove by_name support - TID = trust_id_outbound - PRO = Set(CALLERID(pres)=prohib) - USR = endpoint/from_user - DOM = endpoint/from_domain - PAI = YES(privacy=off), NO(not sent), PRI(privacy=full) (assumes send_pai=yes) + Support for referring to DAHDI channels by logical names was added in + (FIXME: when? Asterisk 11? 1.8?) and was intended to be part of support + of refering to channels by name. - Conditions |Result - --------------------|---------------------------------------------------- - TID PRO USR DOM |PAI FROM - --------------------|---------------------------------------------------- - Y Y abc def.ghi |PRI "Anonymous" - Y Y abc |PRI "Anonymous" - Y Y def.ghi |PRI "Anonymous" - Y Y |PRI "Anonymous" + While technically usable, it has never been properly supported in + dahdi-tools, as using it would require many changes at the Asterisk + level. Instead logical mapping was added at the kernel level. - Y N abc def.ghi |YES - Y N abc |YES > - Y N def.ghi |YES "Caller Name" @def.ghi> - Y N |YES "Caller Name" @> + Thus it seems that refering to DAHDI channels by name is not really used + by anyone, and therefore should probably be removed. - N Y abc def.ghi |NO "Anonymous" - N Y abc |NO "Anonymous" - N Y def.ghi |NO "Anonymous" - N Y |NO "Anonymous" + Change-Id: I7d50bbfd9d957586f5cd06570244ef87bd54b485 - N N abc def.ghi |YES - N N abc |YES > - N N def.ghi |YES "Caller Name" @def.ghi> - N N |YES "Caller Name" @> +2016-10-26 18:48 +0000 [4f45d62653] George Joseph - ASTERISK-25791 #close - Reported-by: Anthony Messina + * pjproject_bundled: Remove usage of tar's --strip-components option - Change-Id: I2c82a5ca1413c2c00fb62ea95b0ae8e97af54dc9 + Older versions of tar don't support the --strip-components option so + instead of doing 'tar --strip-components=1 -C source', we now just + untar to the tarball's root directory (pjproject-) and + rename that directory to 'source'. -2016-03-03 17:34 +0000 [37472f7398] gtjoseph + Also fixed an issue where the pjproject source directory is a hard + coded absolute pathname. - * third_party/Makefile.rules: Replace unsupported != operator with $(shell ...) + ASTERISK-26510 #close + ASTERISK-22480 #close - Apparently the != operator is fairly new so I've replaced it with - the old $(shell ...) syntax. + Change-Id: I9ec92952507a91ff4e4d01e0149e09fd8e8f32b0 - Change-Id: I16b2e1878a4f91e7e9740abd427f9639f933c479 - Reported-by: Richard Mudgett +2016-10-26 21:40 +0000 [a6e5bae3ef] Corey Farrell -2016-01-23 15:50 +0000 [195100e770] gtjoseph + * Remove ASTERISK_REGISTER_FILE. - * loader: Retry dlopen when loading fails + ASTERISK_REGISTER_FILE no longer has any purpose so this commit removes + all traces of it. - Although we use the RTLD_LAZY flag when calling dlopen - the first time on a module, this only defers resolution - for function calls. Pointer references to functions are - determined at link time so dlopen expects them to be there. - Since we don't cross-module link, pointers to functions - in other modules won't be available and dlopen will fail. + Previously exported symbols removed: + * __ast_register_file + * __ast_unregister_file + * ast_complete_source_filename - Doing a "hardened" build also causes problems because it - typically sets "-z now" on the ld command line which - overrides RTLD_LAZY at run time. + This also removes the mtx_prof static variable that was declared when + MTX_PROFILE was enabled. This variable was only used in lock.c so it + is now initialized in that file only. - If the failing module isn't a GLOBAL_SYMBOLS module, then - dlopen will be called again after all the GLOBAL_SYMBOLS - modules have been loaded and they'll eventually resolve. + ASTERISK-26480 #close - If the calling module IS a GLOBAL_SYMBOLS module itself - and a third module depends on it, then there's an issue - because the second time through the dlopen loop, - GLOBAL_SYMBOLS modules aren't given any special treatment - and since the order in which dlopen is called isn't - deterministic, the dependent may again be tried before the - module it needs is loaded. + Change-Id: I1074af07d71f9e159c48ef36631aa432c86f9966 - Simple solution: Save modules that fail load_resource - because of a dlopen error in a list and retry them - immediately after the first pass. Keep retrying until - the failed list is empty or we reach a #defined max - retries. Error messages are suppressed until the final - pass which also gets rid of those confusing error messages - about module failures that are later corrected. +2016-10-27 08:07 +0000 [6993f3c9c3] Joshua Colp - Change-Id: Iddae1d97cd2f00b94e61662447432765755f64bb + * res_pjsip_caller_id: Fix crash on session timers UPDATE on inbound calls. -2016-03-01 16:18 +0000 [15c5743ac1] Kevin Harwell + The res_pjsip_caller_id module wrongly assumed that a + saved From header would always exist on sessions. This + is true until an inbound call is received and a session + timer causes an UPDATE to be sent. In this case there will + be no saved From header and a crash will occur. This change + makes it fall back to the From header of the outgoing request + if no saved From header is present. - * bridge.c: Crash during attended transfer when missing a local channel half + ASTERISK-26307 #close - It's possible for the transferer channel to get hung up early during the - attended transfer process. For instance, a phone may send a "bye" immediately - upon receiving a sip notify that contains a sip frag 100 (I'm looking at you - Jitsi). When this occurs a race begins between the transferer being hung up - and completion of the transfer code. + Change-Id: Iccc3bc8d243b5ede9b81abf960292930c908d4fa - If the channel hangs up too early during a transfer involving stasis bridging - for instance, then when the created local channel goes to look up its swap - channel (and associated datastore) it can't find it (since it is no longer in - the bridge) thus it fails to enter the stasis application. Consequently, the - created local channel(s) hang up as well. If the timing is just right then the - bridging code attempts to add the message link with missing local channel(s). - Hence the crash. +2016-10-26 07:51 +0000 [95062fe220] Joshua Colp - Unfortunately, there is no great way to solve the problem of the unexpected - "bye". While we can't guarantee we won't receive an early hangup, and in this - case still fail to enter the stasis application, we can make it so asterisk - does not crash. + * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS. - This patch does just that by locking the local channel structure, checking - that the local channel's peer has not been lost, and then continuing. This - keeps the local channel's peer from being ripped out from underneath it by - the local/unreal hangup code while attempting to set the stasis message link. + When executing the MailboxExists dialplan application and + MAILBOX_EXISTS dialplan function the passed in temporary voice + mailbox was not cleared, causing it to try to free garbage. - ASTERISK-25771 + ASTERISK-26503 #close - Change-Id: Ie6d6061e34c7c95f07116fffac9a09e5d225c880 + Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3 -2016-03-01 18:08 +0000 [0d2ccbca62] Kevin Harwell +2016-10-23 07:38 +0000 [aed6c219a3] Joshua Colp - * res_pjsip_refer.c: Delay sending the initial SIP Notify with frag 100 + * pjsip: Fix a few media bugs with reinvites and asymmetric payloads. - During the transfer process, some phones (okay it was the Jitsi softphone, - but maybe others are out there) send a "bye" immediately after receiving a - SIP Notify. When a "bye" is received early for some types of transfers the - transferer channel may no longer be available during late stage transfer - processing. + When channel format changes occurred as a result of an RTP + re-negotiation the bridge was not informed this had happened. + As a result the bridge technology was not re-evaluated and the + channel may have been in a bridge technology that was incompatible + with its formats. The bridge is now unbridged and the technology + re-evaluated when this occurs. - For instance, during an attended transfer involving stasis bridging at one - point the created local channel looks for an associated swap channel in - order to retrieve the stasis application name. If the transferer has hung - up then the local channel will fail to find it. The local channel then has - no way to know which stasis app to enter, so it fails and hangs up as well. - Thus the transfer does not complete as expected. + The chan_pjsip module also allowed asymmetric codecs for sending + and receiving. This did not work with all devices and caused one + way audio problems. The default has been changed to NOT do this + but to match the sending codec to the receiving codec. For users + who want asymmetric codecs an option has been added, asymmetric_rtp_codec, + which will return chan_pjsip to the previous behavior. - This patch delays the sending of the initial notify in order to give the - transfer process enough time to gather the necessary data for a successful - transfer. + The codecs returned by the chan_pjsip module when queried by + the bridge_native_rtp module were also not reflective of the + actual negotiated codecs. The nativeformats are now returned as + they reflect the actual negotiated codecs. - ASTERISK-25771 + ASTERISK-26423 #close - Change-Id: I09cfc9a5d6ed4c007bc70625e0972b470393bf16 + Change-Id: I6ec88c6e3912f52c334f1a26983ccb8f267020dc -2016-03-03 08:26 +0000 [6af7fc4c37] Joshua Colp +2016-10-26 06:32 +0000 [7925f60cd9] Joshua Colp - * res_pjsip_dtmf_info: NULL terminate the message body. + * res_pjsip_sdp_rtp: Fix address family of explicit media_address. - PJSIP does not ensure that when printing the message body the - buffer will be NULL terminated. This is problematic when searching - for the signal and duration values of the DTMF. + When an explicit media_address is provided the address family + in the SDP needs to be set to reflect it. - This change ensures the buffer is always NULL terminated. + ASTERISK-26309 - Change-Id: I52653a1a60c93092d06af31a27408d569cc98968 + Change-Id: Ib9350cc91c120eb2f96f0623d3907d12af67eb79 -2016-03-01 20:03 +0000 [b8b7c2e428] gtjoseph +2016-10-25 11:20 +0000 [802bbf8752] George Joseph - * alembic: Fix downgrade and tweak for sqlite + * test_astobj2_thrash: Fix multithreaded issues - Downgrade had a few issues. First there was an errant 'update' statement in - add_auto_dtmf_mode that looks like it was a copy/paste error. Second, we - weren't cleaning up the ENUMs so subsequent upgrades on postgres failed - because the types already existed. + The test uses 4 threads to grow, count, lookup and shrink 15K objects + in a container. If there's only 1 execution engine available, the test + will complete in <50ms. If each threads gets its own execution engine, + the test may timeout after 60 seconds because the count thread does a + locked ao2_callback on the whole container in a tight loop with only + a sched_yield to give up time. The lock contention makes the test + execution times wildly variable and mostly timeout. 2 execution + engines are OK, 3 results in about 33% failure rate and >=4 causes + a 80% failure rate. - For sqlite... sqlite doesn't support ALTER or DROP COLUMN directly. - Fortunately alembic batch_operations takes care of this for us if we - use it so the alter and drops were converted to use batch operations. + To fix, the sched_yield was changed to a usleep(500). - Here's an example downgrade: + Also, the number of buckets specified for the container was an even + number so that was changed to the next prime number greater than + (MAX_HASH_ENTRIES / 100). That's 151 currently. - with op.batch_alter_table('ps_endpoints') as batch_op: - batch_op.drop_column('tos_audio') - batch_op.drop_column('tos_video') - batch_op.add_column(sa.Column('tos_audio', yesno_values)) - batch_op.add_column(sa.Column('tos_video', yesno_values)) - batch_op.drop_column('cos_audio') - batch_op.drop_column('cos_video') - batch_op.add_column(sa.Column('cos_audio', yesno_values)) - batch_op.add_column(sa.Column('cos_video', yesno_values)) + Change-Id: I50cd2344161ea61bfe4b96d2a29a6ccf88385c77 - with op.batch_alter_table('ps_transports') as batch_op: - batch_op.drop_column('tos') - batch_op.add_column(sa.Column('tos', yesno_values)) - # Can't cast integers to YESNO_VALUES, so dropping and adding is required - batch_op.drop_column('cos') - batch_op.add_column(sa.Column('cos', yesno_values)) +2016-10-18 09:04 +0000 [2b9ad3a5f7] Alexei Gradinari - Upgrades from base to head and downgrades from head to base were tested - repeatedly for postgresql, mysql/mariadb, and sqlite3. + * chan_pjsip: segfault on already disconnected session - Change-Id: I862b0739eb3fd45ec3412dcc13c2340e1b7baef8 + On heavy loaded system the TCP/TLS incoming calls could be + disconnected by pjproject while these calls are being + processed by asterisk. -2016-03-02 15:55 +0000 [7b71bca8a4] gtjoseph + This patch uses functions pjsip_inv_add_ref/pjsip_inv_dec_ref + to inform pjproject that an INVITE session is in use. - * config_transport: Fix objects returned by ast_sip_get_transport_states + ASTERISK-26482 #close - ast_sip_get_transport_states was returning a container of internal_state - objects instead of ast_sip_transport_state objects. This was causing - transport lookups to fail, most noticably in res_pjsip_nat, which - couldn't find the correct external addresses. This was causing contacts - to go out with internal ip addresses. + Change-Id: Ia2e3e2f75358cdb530252a9ce158af3d5d9fdf33 - ASTERISK-25830 #close - Reported-by: Sean Bright +2016-10-10 11:49 +0000 [01d1d3763f] Badalyan Vyacheslav - Change-Id: I1aee6a2fd46c42e8dd0af72498d17de459ac750e + * cdr_radius,cel_radius: Fix old memleak in unload -2016-03-02 11:17 +0000 [0a3f0e85ac] Scott Griepentrog + - Call "rc_openlog" optional. If you do not call, + you will simply NULL instead of a name. - * CHAOS: cleanup possible null vars on msg alloc failure + - On the one PID can be only one syslog channel. + And it can already be run in logger.c - In message.c, if msg_alloc fails to init the string field, - vars may be null, so use a null tolerant cleanup. + - Calling rc_openlog we assigns a new name for + the channel syslog. This unexpected behavior for logger.c. - In res_pjsip_messaging.c, if msg_data_create fails, mdata - will be null, so use a null tolerant cleanup. + Most lesser evil, is to agree on a NULL name syslog + if the channel was not launched in logger.c. - ASTERISK-25323 + It also solves the problem of memory leaks. - Change-Id: Ic2d55c2c3750d5616e2a05ea92a19c717507ff56 + ASTERISK-26455 #close -2016-03-02 09:34 +0000 [60aa871be3] Scott Griepentrog + Change-Id: Ic17c38de67583e971d78fe18807d1a9faf8f0afd - * CHAOS: prevent crash on failed strdup +2016-10-24 10:55 +0000 [16c23b57c7] George Joseph - This patch avoids crashing on a null pointer - if the strdup() allocation fails. + * pjproject_bundled: Fixed various build issues - ASTERISK-25323 + * CFLAGS is now properly set when using older gcc. + * All third-party pjproject targets have been removed. This fixes + an issue with older libsrtp in some distros. + * Manually removing the source directory now causes a rebuild. + * EXTERNALS_CACHE_DIR is now properly checked. + * Whitespace fixes. - Change-Id: I3f67434820ba53b53663efd6cbb42749f4f6c0f5 + Change-Id: I98fec6847efc5602a9f41cb95096fd660a49fa60 -2016-02-29 18:11 +0000 [0bdbf0d882] Richard Mudgett +2016-10-24 14:13 +0000 [1d277e7cb6] Pascal Cadotte Michaud - * func_callerid.c: Update REDIRECTING reason documentation. + * typo: s/paranthesis/parenthesis/ in a comment - Change-Id: I6e8d39b0711110a4bceafa652e58b30465e28386 + Change-Id: I7c1f4eb051177ee22cbe97e063d4a3effe29be30 -2016-02-26 18:57 +0000 [25de01f301] Richard Mudgett +2016-09-19 06:13 +0000 [403c4f5833] Joshua Colp - * SIP diversion: Fix REDIRECTING(reason) value inconsistencies. + * pjsip: Support dual stack automatically. - Previous chan_sip behavior: + This change adds support for dual stack automatically. No + configuration is required and the IP address and version + in the SIP messages and SDP will be automatically changed + based on the transport over which the message is being + sent. RTP usage has also been changed to listen on both + IPv4 and IPv6 simultaneously to allow media to flow, and + to allow ICE support on both simultaneously. This also + allows failover between IPv6 and IPv4 to work as expected. - Before this patch chan_sip would always strip any quotes from an incoming - reason and pass that value up as the REDIRECTING(reason). For an outgoing - reason value, chan_sip would check the value against known values and - quote any it didn't recognize. Incoming 480 response message reason text - was just assigned to the REDIRECTING(reason). + ASTERISK-26309 #close - Previous chan_pjsip behavior: + Change-Id: I235a421d8f9a326606d861b449fa6fe3a030572d - Before this patch chan_pjsip would always pass the incoming reason value - up as the REDIRECTING(reason). For an outgoing reason value, chan_pjsip - would send the reason value as passed down. +2016-10-19 12:05 +0000 [3bd76dd679] Mark Michelson - With this patch: + * ARI: Add duplicate channel ID checking for channel creation. - 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. + This is similar to what is done for origination, but for the 14 and up + channel creation method. When attempting to create a channel, if a + channel ID is specified and a channel already exists with that ID, then + a 409 is returned. - 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). + Change-Id: I77f9253278c6947939c418073b6b31065489187c - 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 silly and just - going to cause you grief. +2016-10-17 14:18 +0000 [e459b8dadf] Mark Michelson - * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases. - e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the - 'cfu' value. + * ARI: Detect duplicate channel IDs - * Added missing malloc() NULL return check in res_pjsip_diversion.c - set_redirecting_reason(). + ARI and AMI allow for an explicit channel ID to be specified + when originating channels. Unfortunately, there is nothing in + place to prevent someone from using the same ID for multiple + channels. Further complicating things, adding ID validation to channel + allocation makes it impossible for ARI to discern why channel allocation + failed, resulting in a vague error code being returned. - * Fixed potential read from a stale pointer in res_pjsip_diversion.c - add_diversion_header(). The reason string needed to be copied into the - tdata memory pool to ensure that the string would always be available. - Otherwise, if the reason string returned by reason_code_to_str() was a - user's reason string then the string could be freed later by another - thread. + The fix for this is to institute a new method for channel errors to be + discerned. The method mirrors errno, in that when an error occurs, the + caller can consult the channel errno value to determine what the error + was. This initial iteration of the feature only introduces "unknown" and + "channel ID exists" errors. However, it's possible to add more errors as + needed. - Change-Id: Ifba83d23a195a9f64d55b9c681d2e62476b68a87 + ARI uses this feature to determine why channel allocation failed and can + return a 409 error during origination to show that a channel with the + given ID already exists. -2016-02-26 18:54 +0000 [8c8ef4efb0] Richard Mudgett + ASTERISK-26421 - * res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason. + Change-Id: Ibba7ae68842dab6df0c2e9c45559208bc89d3d06 - Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd +2016-10-19 17:53 +0000 [e03364c40a] snuffy -2016-02-29 20:41 +0000 [75ec137e91] Richard Mudgett + * Fix issue with CLI not returning to prompt after running "features show" - * res_pjsip_send_to_voicemail.c: Fix off-nominal double channel unref. + ASTERISK-26444 #close - * Fix double unref of other_party channel in off nominal path. + Change-Id: I91d645b7e6e5dba35f8c410df2be77a8c0e3acb8 - * This is unlikely to be a real problem. However, for safety, - in handle_incoming_request() keep the datastore ref with the - other_party channel ref until we are finished with the other_party - channel. +2016-10-04 18:24 +0000 [3e96d491d0] Michael Walton - Change-Id: I78f22547bf0bb99fb20814ceab75952bd857f821 + * res_rtp_asterisk: Add ice_blacklist option -2016-01-18 21:54 +0000 [3173e91bab] gtjoseph + Introduces ice_blacklist configuration in rtp.conf. Subnets listed in the + form ice_blacklist = , e.g. ice_blacklist = + 192.168.1.0/255.255.255.0, are excluded from ICE host, srflx and relay + discovery. This is useful for optimizing the ICE process where a system + has multiple host address ranges and/or physical interfaces and certain + of them are not expected to be used for RTP. Multiple ice_blacklist + configuration lines may be used. If left unconfigured, all discovered + host addresses are used, as per previous behavior. - * build-system: Allow building with static pjproject + Documention in rtp.conf.sample. - Background here: - http://lists.digium.com/pipermail/asterisk-dev/2016-January/075266.html + ASTERISK-26418 #close - From CHANGES: - * 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'. + Change-Id: Ibee88f80d7693874fda1cceaef94a03bd86012c9 - 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. +2016-10-18 16:30 +0000 [f14ef51ead] Mark Michelson - The default behavior remains building with the shared pjproject - installation, if any. + * CDR: Alter destruction pattern for CDR chains. - Building: + CDRs form chains. When the root of the chain is destroyed, it then + unreferences the next CDR in the chain. That CDR is destroyed, and it + then unreferences the next CDR in the chain. This repeats until the end + of the chain is reached. While this typically does not cause any sort of + problems, it is possible in strange scenarios for the CDR chain to grow + way longer than expected. In such a scenario, the destruction pattern + can result in a stack overflow. - All you have to do is include the --with-pjproject-bundled option on - the ./configure command line (and remove any existing --with-pjproject - option if specified). Everything else is automatic. + This patch fixes the problem by switching from a recursive pattern to an + iterative pattern for destruction. When the root CDR is destroyed, it is + responsible for iterating over the rest of the CDRs and unreferencing + each one. Other CDRs in the chain, since they are not the root, will + simply destroy themselves and be done. This causes the stack depth not + to increase. - Behind the scenes: + ASTERISK-26421 #close + Reported by Andrew Nagy - The top-level Makefile was modified to include 'third-party' in the - list of MOD_SUBDIRS. + Change-Id: I3ca90c2b8051f3b7ead2e0e43f60d2c18fb204b8 - The third-party directory was created to contain any third party - packages that may be needed in the future. Its Makefile automatically - iterates over any subdirectories passing on targets. +2016-10-18 11:51 +0000 [f31772ec20] Joshua Colp - The third-party/pjproject directory was created to house the pjproject - source distribution. Its Makefile contains targets to download, patch - configure, generate dependencies, compile libs, apps and python bindings, - sanitized build.mak and generate a symbols list. + * ari: Update model validator based on addition of asterisk_id. - When bootstrap.sh is run, it automatically includes the configure.m4 - file in third-party/pjproject. This file has a macro to download and - conifgure pjproject and get and set PJPROJECT_INCLUDE, PJPROJECT_DIR - and PJPROJECT_BUNDLED. It also tests for the capabilities like - PJ_TRANSACTION_GRP_LOCK by parsing preprocessor output as opposed to - trying to compile. Of course, bootstrap.sh is only run once and the - configure file is incldued in the patch. + ASTERISK-26470 - When configure is run with the new options, the macro in configure.m4 - triggers the download, patch, conifgure and tests. No compilation is - performed at this time. The downloaded tarball is cached in /tmp so - it doesn't get downloaded again on a distclean. + Change-Id: I9c386f7a1c7d969161b28f189eb6298bbc5b7541 - When make is run in the top-level Asterisk source directory, it will - automatically descend all the subdirectories in third_party just as it - does for addons, apps, etc. The top-level Makefile makes sure that - the 'third-party' is built before 'main' so that dependencies from the - other directories are built first. +2016-09-11 10:13 +0000 [18a6f250e2] Tzafrir Cohen - When main does build, a new shared library (libasteriskpj) is created that - links statically to the pjproject .a files and exports all their symbols. - The asterisk binary links to that, just as it does with libasteriskssl. + * menuselect: invalid test for GTK2 - When Asterisk is installed, the pjsua and pjsystest apps, and the pjproject - python bindings are installed in ASTDATADIR/third-party/pjproject. This - will facilitate testing, including running the testsuite which will be - updated to check that directory for the pjsua module ahead of the system - python library. + configuire.ac was only checking for the existence of pkg-config + and not the gtk2 package itself. Now it calls AST_PKG_CONFIG_CHECK + for gtk+-2.0. - Modules should continue to depend on pjproject if they use pjproject APIs - directly. They should not care about the implementation. No changes to any - res_pjsip modules were made. + ASTERISK-26356 #close - Change-Id: Ia7a60c28c2e9ba9537c5570f933c1ebcb20a3103 + Change-Id: I93e9d0166341f0e7f84b52955bb6f81da42f2ef6 -2016-02-22 16:59 +0000 [2dae4a1ccf] Richard Mudgett +2016-10-18 03:01 +0000 [a43ee21211] Alexander Traud - * chan_sip.c: Fix T.38 issues caused by leaving a bridge. + * cli: Auto-complete File not Module for core set debug. - chan_sip could not handle AST_T38_TERMINATED frames being sent to it when - the channel left the bridge. The action resulted in overlapping outgoing - reINVITEs. The testsuite tests/fax/sip/directmedia_reinvite_t38 was not - happy. + Since Asterisk 1.8, the command "core set debug" on the command-line interface + asks not for a file (.c) but a module name. This change shows modules (.so) on + the auto-completion via a tabulator or the question mark. Now, when you + partially type a module name, TAB or ?, you get the correct candidiates. - * Force T.38 to be remembered as locally bridged. Now when the channel - leaves the native RTP bridge after T.38, the channel remembers that it has - already reINVITEed the media back to Asterisk. It just needs to terminate - T.38 when the AST_T38_TERMINATED arrives. + ASTERISK-26480 - * Prevent redundant AST_T38_TERMINATED from causing problems. Redundant - AST_T38_TERMINATED frames could cause overlapping outgoing reINVITEs if - they happen before the T.38 state changes to disabled. Now the T.38 state - is set to disabled before the reINVITE is sent. + Change-Id: I1213f1dd409bd4ff8de08ad80cb0c73cafb1bae0 - ASTERISK-25582 #close +2016-08-12 11:22 +0000 [dce31f90ba] frahaase - Change-Id: I53f5c6ce7d90b3f322a942af1a9bcab6d967b7ce + * Binaural synthesis (confbridge): On/off setting for binaural synthesis. -2016-02-18 18:27 +0000 [bf29a4e2e6] Richard Mudgett + Adds setting to confbridge.conf (binaural_active) that determines if binaural + synthesis can be available in bridge_softmix. - * res_pjsip_t38.c: Back out part of an earlier fix attempt. + ASTERISK-26292 - This backs out item 4 of the 4875e5ac32f5ccad51add6a4216947bfb385245d - commit. Item 4 added the t38_bye_supplement. Unfortunately, the frame - that it puts into the bridge may or may not be processed by the time the - bridged peer is kicked out of the bridge. If it is processed then all is - well. However, if it is not processed then that channel is stuck in fax - mode until it hangs up or maybe if it joins another bridge for T.38 - faxing. + Change-Id: I59dfcb8e55fe1df4ef32045882fea5bb58fc71db - ASTERISK-25582 +2016-10-17 11:39 +0000 [2a808b2fa6] George Joseph - Change-Id: Ib20a03ecadf1bf8a0dcadfadf6c2f2e60919a9f7 + * pjproject_bundled: Add patch to address SSL crash -2016-02-22 13:54 +0000 [c7d45b84f9] Richard Mudgett + Addresses crashes when an attempt is made to operate on an SSL socket + after the socket has been closed. - * bridge core: Add owed T.38 terminate when channel leaves a bridge. + ASTERISK-26477 #close - The channel is now going to get T.38 terminated when it leaves the - bridging system and the bridged peers are going to get T.38 terminated as - well. + Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002 - ASTERISK-25582 +2016-10-13 14:09 +0000 [973e57d5ce] Leandro Dardini - Change-Id: I77a9205979910210e3068e1ddff400dbf35c4ca7 + * app_queue: Added initialization for "context" parameter -2016-02-19 16:01 +0000 [0e296563d7] Richard Mudgett + When using Asterisk Realtime Architecture, empty fields are skipped and the + default values are used. If the "context" parameter in queue was set and then + cleared from the database, the old value remains in memory and it continues + to be used. This change initialize the "context" parameter with an empty value, + allowing clearing the parameter. - * channel api: Create is_t38_active accessor functions. + ASTERISK-26462 #close - ASTERISK-25582 + Change-Id: I64be73d5044ce38dd02408bd0e53de965ef65905 - Change-Id: I69451920b122de7ee18d15bb231c80ea7067a22b +2016-10-15 20:05 +0000 [dd5129d84a] Matt Jordan -2016-02-19 19:06 +0000 [86f7336c91] Richard Mudgett + * res/ari: Add the Asterisk EID field to outgoing events - * bridge_channel: Don't settle owed events on an optimization. + This patch adds the Asterisk EID field to all outgoing ARI events. + Because this field should be added to all events as they are + transmitted, it is appended to the JSON message just prior to it being + handed off to the application message handler. This makes it somewhat + resilient to both new events being added to ARI, as well as other + potential event transport mechanisms. - Local channel optimization could cause DTMF digits to be duplicated. - Pending DTMF end events would be posted to a bridge when the local channel - optimizes out and is replaced by the channel further down the chain. When - the real digit ends, the channel would get another DTMF end posted to the - bridge. + ASTERISK-26470 #close - A -- LocalA;1/n -- LocalA;2/n -- LocalB;1 -- LocalB;2 -- B + Change-Id: Ieff0ecc24464e83f3f44e9c3e7bd9a5d70b87a1d - 1) LocalA has the /n flag to prevent optimization. - 2) B is sending DTMF to A through the local channel chain. - 3) When LocalB optimizes out it can move B to the position of LocalB;1 - 4) Without this patch, when B swaps with LocalB;1 then LocalB;1 would - settle an owed DTMF end to the bridge toward LocalA;2. - 5) When B finally ends its DTMF it sends the DTMF end down the chain. - 6) Without this patch, A would hear the DTMF digit end when LocalB - optimizes out and when B ends the original digit. +2016-10-13 02:06 +0000 [2b03017022] Moises Silva - ASTERISK-25582 + * chan_rtp: Set a sane default rtp engine for unicast. - Change-Id: I1bbd28b8b399c0fb54985a5747f330a4cd2aa251 + ASTERISK-26439 -2016-02-22 12:15 +0000 [128c96456c] Richard Mudgett + Change-Id: I7f5ee2eeba8906e9ecb3293dbe3a747770bb5011 - * channel.c: Route all control frames to a channel through the same code. - - Frame hooks can conceivably return a control frame in exchange for an - audio frame inside ast_write(). Those returned control frames were not - handled quite the same as if they were sent to ast_indicate(). Now it - doesn't matter if you use ast_write() to send an AST_FRAME_CONTROL to a - channel or ast_indicate(). - - ASTERISK-25582 +2016-10-16 17:25 +0000 [6651c66e68] George Joseph - Change-Id: I5775f41421aca2b510128198e9b827bf9169629b + * utils.c: Fix ast_set_default_eid for multiple platforms -2016-02-25 15:13 +0000 [4422905218] gtjoseph + ast_set_default_eid was searching for ethX, emX, enoX, ensX and even + pciD#U interface names. While this was a good attempt, it wasn't + inclusive enough to capture interfaces like enp6s0 or ens6d1, etc. - * sorcery: Refactor create, update and delete to better deal with caches + Rather than relying on interface names, we now simply find the first + interface returned by the OS that has a hardware address and that + address isn't all 0x00 or all 0xff. The code IS different for BSD, + Solaris and Linux based on what method is available for enumerating + interfaces. - The ast_sorcery_create, update and delete function have been refactored - to better deal with caches and errors. + Tested on: + FreeBSD9 + CentOS6 + Ubuntu14 + Fedora24 - The action is now called on all non-caching wizards first. If ANY succeed, - the action is called on all caching wizards and the observers are notified. - This way we don't put something in the cache (or update or delete) before - knowing the action was performed in at least 1 backend and we only call the - observers once even if there were multiple writable backends. + I was unable to test on Solaris at this time but the code for Solaris + is used elsewhere at Digium. - ast_sorcery_create was never adding to caches in the first place which - was preventing contacts from getting added to a memory_cache when they - were created. In turn this was causing memory_cache to emit errors if - the contact was deleted before being retrieved (which would have - populated the cache). + Change-Id: Iaa6db87ca78a9a375e47d70e043ae08c1448cb72 - ASTERISK-25811 #close - Reported-by: Ross Beer +2016-10-15 04:58 +0000 [e9315791b3] Michael Kuron - Change-Id: Id5596ce691685a79886e57b0865888458d6e7b46 -2016-02-25 15:39 +0000 [acf329a3c7] gtjoseph + * chan_sip: Only send video on outgoing channel if incoming channel supports it - * res_pjsip_mwi: Turn some NOTICEs and WARNINGs into debug 1s. + Previously, the settings videosupport=always and videosupport=yes behaved + identically and unconditionally caused a video offer to be sent in the SDP on + an outgoing call. This was a regression introduced with commit + 5a1d90e1fbfc4b48927aad55311f3b38efbf1f54 in Asterisk 1.6.1. - There are a few cases where we're emitting notices or warnings - for things that really need neither, like a client retrying to subscribe - to mwi when they're not conifgured for it. They get a 404 so there's no - need for non-debug messages. + This commit restores correct behavior: videosupport=always causes a video offer + to be sent unconditionally, while videosupport=yes will only offer video on an + outbound channel if the incoming channel it is bridged to also supports video. + That way, the device receiving the outgoing call can display the correct user + interface elements for audio or video and will not unnecessarily show a blank + video window on an audio-only call. - Change-Id: I05e38a7ff6c2f2521146f4be6a79731b9864e61f -2016-02-25 14:17 +0000 [7e3e1ddf7e] gtjoseph + ASTERISK-17470 #close - * res_sorcery_memory_cache: Fix SEGV in some CLI commands + Change-Id: I782f4409d436114dbc97061c3570c0cd24f7c3ae - A few of the CLI commands weren't checking for enough arguments - and were SEGVing. +2016-10-14 00:18 +0000 [aa39a87697] Corey Farrell - Change-Id: Ie6494132ad2fe54b4f014bcdc112a37c36a9b413 + * Fix issues with bundled pjproject cached download. -2016-02-22 19:31 +0000 [803a2fc2d5] Richard Mudgett + Previously when testing I had a preexisting makeopts in ASTTOPDIR. The + ordering of configure.ac causes --with-externals-cache to be processed + after third-party configure. In cases where the Asterisk clone is + cleaned it would cause pjproject to be downloaded to /tmp. This + moves processing of the externals cache and sounds cache to happen + before third-party configure. - * rtp_engine.h: Remove extraneous semicolons. + This also addresses a possible issue with the third-party Makefile. If + TMPDIR is set by the environment it would override the path given to + --with-externals-cache. - Change-Id: Ib462633d396fa941379dfef648dcd2245e350084 + ASTERISK-26416 -2016-02-23 14:57 +0000 [886ee09471] Richard Mudgett + Change-Id: Ifab7f35bfcd5a31a31a3a4353cc26a68c8c6592d - * chan_sip.c: Suppress T.38 SDP c= line if addr is the same. +2016-10-12 16:24 +0000 [9c49b96374] Richard Mudgett - Use the correct comparison function since we only care if the address - without the port is the same. + * Audit ast_json_pack() calls for needed UTF-8 checks. - Change-Id: Ibf6c485f843a1be6dee58a47b33d81a7a8cbe3b0 + Added needed UTF-8 checks before constructing json objects in various + files for strings obtained outside the system. In this case string values + from a channel driver's peer and not from the user setting channel + variables. -2016-02-16 08:14 +0000 [b7970cabfa] Christof Lauber + * aoc.c: Fixed type mismatch in s_to_json() for time and granularity json + object construction. - * res_config_sqlite3: Fix crashes when reading peers from sqlite3 tables + ASTERISK-26466 + Reported by: Richard Mudgett - Introduced realloaction of ast_str buf in sqlite3_escape functions in case - the returned buffer from threadstorage was actually too small. + Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096 - Change-Id: I3c5eb43aaade93ee457943daddc651781954c445 +2016-10-12 16:20 +0000 [774d5f7ef7] Richard Mudgett -2016-02-11 11:01 +0000 [ba8adb4ce3] gtjoseph + * json: Check party id name, number, subaddresses for UTF-8. - * res_pjsip/config_transport: Allow reloading transports. + * Updated unit test as ast_json_name_number() is now NULL tolerant. - The 'reload' mechanism actually involves closing the underlying - socket and calling the appropriate udp, tcp or tls start functions - again. Only outbound_registration, pubsub and session needed work - to reset the transport before sending requests to insure that the - pjsip transport didn't get pulled out from under them. + ASTERISK-26466 #close + Reported by: Richard Mudgett - In my testing, no calls were dropped when a transport was changed - for any of the 3 transport types even if ip addresses or ports were - changed. To be on the safe side however, a new transport option was - added (allow_reload) which defaults to 'no'. Unless it's explicitly - set to 'yes' for a transport, changes to that transport will be ignored - on a reload of res_pjsip. This should preserve the current behavior. + Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6 - Change-Id: I5e759850e25958117d4c02f62ceb7244d7ec9edf +2016-10-11 18:14 +0000 [1c4c6c082d] Richard Mudgett -2016-02-19 04:30 +0000 [c00082329e] Walter Doekes + * json: Add UTF-8 check call. - * chan_sip: Optionally supply fromuser/fromdomain in SIP dial string. + Since the json library does not make the check function public we + recreate/copy the function in our interface module. - Previously you could add [!dnid] to the SIP dial string to alter the To: - header. This change allows you to alter the From header as well. + ASTERISK-26466 + Reported by: Richard Mudgett - SIP dial string extra options now look like this: + Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99 - [![touser[@todomain]][![fromuser][@fromdomain]]] +2016-10-12 17:42 +0000 [6fe5202c2c] Richard Mudgett - INCOMPATIBLE CHANGE: If you were using an exclamation mark in your To: - header, that is no longer possible. + * aoc.c: Whitespace cleanup - ASTERISK-25803 #close + * In s_to_json() removed unnecessary ast_json_ref() to ast_json_null() + when creating the type json object. The ref is a noop. - Change-Id: I2457e9ba7a89eb1da22084bab5a4d4328e189db7 + Change-Id: I2be8b836876fc2e34a27c161f8b1c53b58a3889a -2016-02-07 17:34 +0000 [f8767a8804] gtjoseph +2016-10-12 16:22 +0000 [c3bf1632cd] Richard Mudgett - * res_pjproject: Add ability to map pjproject log levels to Asterisk log levels + * app_minivm.c: Fix malformed ast_json_pack() call. - Warnings and errors in the pjproject libraries are generally handled by - Asterisk. In many cases, Asterisk wouldn't even consider them to be warnings - or errors so the messages emitted by pjproject directly are either superfluous - or misleading. A good exampe of this are the level-0 errors pjproject emits - when it can't open a TCP/TLS socket to a client to send an OPTIONS. We don't - consider a failure to qualify a UDP client an "ERROR", why should a TCP/TLS - client be treated any differently? + Change-Id: I082b239022fac462666e52a14a44304748908dc0 - A config file for res_pjproject has bene added (pjproject.conf) and a new - log_mappings object allows mapping pjproject levels to Asterisk levels - (or nothing). The defaults if no pjproject.conf file is found are the same - as those that were hard-coded into res_pjproject initially: 0,1 = LOG_ERROR, - 2 = LOG_WARNING, 3,4,5 = LOG_DEBUG +2016-10-12 17:27 +0000 [9c54964dc5] Richard Mudgett - Change-Id: Iba7bb349c70397586889b8f45b8c3d6c6c8c3898 + * app_queue.c: Fix clearing of pause reason string. -2016-02-18 10:55 +0000 [14886643c6] Alexei Gradinari + The pause reason is not always cleared when it should be cleared. - * res_pjsip_outbound_publish: Fix processing 412 response + * Made set_queue_member_pause() always clear pause reason if not pausing + with a reason string. - When Asterisk receives a 412 (Conditional Request Failed) response - it has to recreate publish session. - There is bug in res_pjsip_outbound_publish.c - The function sip_outbound_publish_client_alloc is called with wrong object - while processing 412 (Conditional Request Failed) response. - This patch fixes it. + Change-Id: I993dad19626ec017478a230e980989438b778c53 - ASTERISK-25229 #close +2016-10-12 16:30 +0000 [3b3d06884c] George Joseph - Change-Id: I3b62f2debf6bb1e5817cde7b13ea39ef2bf14359 + * res_config_mysql: Fix several issues related to recent table changes -2016-02-18 11:15 +0000 [8055d080cd] Mark Michelson + Unlike any of the other database drivers, res_config_mysql checks that + the table definition matches the requirements for every insert and + update statement. Since all requirements are forced to 'char', any + column that isn't a char, like ps_contacts' expiration_time, + qualify_timeout, etc., will throw a warning. It's kinda harmless but + very misleading. Since no other driver does those checks on insert + or update, they've been removed from res_config_mysql. Also, all + the logic that actually attempted to ALTER the table to fix the issue + has been removed. With the move to alembic, the auto-alter + functionality is not only unnecessary, it's also dangerous. - * Fix failing threadpool_auto_increment test. + The other issue is that res_config_mysql calls the mysql_insert_id + function inside store_mysql. Presumably the intention was to return + the number of rows inserted DESPITE A NOTE IN THE CODE THAT THE VALUE + IS NON_PORTABLE AND MAY CHANGE. That value is then returned to + config realtime as the number of rows inserted. Guess what? The value + changed. It now only returns the number of rows inserted if there's an + auto increment column on the table, which ps_contacts doesn't have. + Otherwise it returns 0. So now, the insert worked but we tell config + realtime and sorcery that no rows were inserted. That call to + mysql_insert_id was removed and we now always return 1 if the insert + succeeded. We're only inserting 1 row at a time anyway. If the insert + fails, we still return -1. - The threadpool_auto_increment test fails infrequently for a couple of - reasons - * The threadpool listener was notified of fewer tasks being pushed than - were actually pushed - * The "was_empty" flag was set to an unexpected value. + ASTERISK-26362 #close + Reported-by: Carlos Chavez - The problem is that the test pushes three tasks into the threadpool. - Test expects the threadpool to essentially gather those three tasks, and - then distribute those to the threadpool threads. It also expects that as - the tasks are pushed in, the threadpool listener is alerted immediately - that the tasks have been pushed. In reality, a task can be distributed - to the threadpool threads quicker than expected, meaning that the - threadpool has already emptied by the time each subsequent task is - pushed. In addition, the internal threadpool queue can be delayed so - that the threadpool listener is not alerted that a task has been pushed - even after the task has been executed. + Change-Id: I83ce633efdb477b03c8399946994ee16fefceaf4 - From the test's point of view, there's no way to be able to predict - exactly the order that task execution/listener notifications will occur, - and there is no way to know which listener notifications will indicate - that the threadpool was previously empty. +2016-08-12 11:22 +0000 [dd6fc1bb7d] frahaase - For this reason, the test has been updated to only check the things it - can check. It ensures that all tasks get executed, that the threads go - idle after the tasks are executed, and that the listener is told the - proper number of tasks that were pushed. + * Binaural synthesis (confbridge): Adds libfftw3 as dependency. - Change-Id: I7673120d74adad64ae6894594a606e102d9a1f2c + Adds libfftw3 to the build chain that is is going to be used for binaural + synthesis by bridge_softmix. -2016-02-17 13:30 +0000 [30a49b8a6a] Richard Mudgett + ASTERISK-26292 - * cel.c: Fix mismatch in ast_cel_track_event() return type. + Change-Id: Iedc2f174e4ccb39ae5d9e698e339c6a17155867b - The return type of ast_cel_track_event() is not large enough to return all - 64 potential bits of the event enable mask. Fortunately, the defined CEL - events do not really need all 64 bits and the return value is only used to - determine if the requested CEL event is enabled. +2016-09-29 13:08 +0000 [20c3dba39e] Torrey Searle - * Made the ast_cel_track_event() return 0 or 1 only so the return value - can fit inside an int type instead of zero or a truncated 64 bit non-zero - value. + * res_fax: Fix a tight race condition causing fax to crash in audio fallback - Change-Id: I783d932320db11a95c7bf7636a72b6fe2566904c + When T.38 gets rejected and G711 failback occurs there is a period of + time where neither AST_FAX_TECH_T38 nor AST_FAX_TECH_AUDIO is set, + leading to a crash. -2016-02-16 23:37 +0000 [15aeb78c66] Rodrigo Ramírez Norambuena + Change-Id: Icc3f457b2292d48a9d7843dac0028347420cc982 - * app_queue: fix Calculate talktime when is first call answered +2016-10-06 09:58 +0000 [86e8716952] George Joseph - Fix calculate of average time for talktime is wrong when is completed the - first call beacuse the time for talked would be that call. + * app_dial: Add the "Q" option to set the cause on unanswered channels - ASTERISK-25800 #close + The "Q" option will set the cause on the unanswered channels when + another channel answers. It overrides the default of + ANSWERED_ELSEWHERE. - Change-Id: I94f79028935913cd9174b090b52bb300b91b9492 + NOTE: chan_sip does not support setting the cause on a CANCEL to + anything other than ANSWERED_ELSEWHERE. -2016-02-16 16:37 +0000 [62282bb8ce] gtjoseph + ASTERISK-26446 #close - * res_odbc: Fix exports.in for missing symbols + Change-Id: I71742e0919aaa16784c30a2b2e73fbeed7672e47 - res_odbc.exports.in was missing a few symbols. - Changed to wildcards. +2016-10-11 06:55 +0000 [4f7f8a7e95] Alexander Traud - Change-Id: Ieadd76df24e43ea92577f651d478a0f7b742c30c + * chan_sip: Support nat=auto_comedia or nat=force_rport,auto_comedia. -2016-02-16 12:20 +0000 [49203628f9] gtjoseph + In the SIP channel driver chan_sip, auto_comedia was expected to be used in + tandem with auto_force_rport. Or stated differently: Only when auto_force_rport + was chosen (the default), auto_comedia worked. This change allows auto_comedia + to be set independently of the state of (auto_)force_rport. For example, + nat=force_rport,auto_comedia is useful for IPv4/IPv6 Dual Stack deployments + when IPv6 clients are behind a Firewall. - * res_statsd: Fix exports.in for missing symbols + ASTERISK-26457 #close - res_statsd.export.in was missing the _va variations of the log - functions causing Asterisk to crash in res_pjsip if OPTIONAL_API - wasn't enabled. + Change-Id: Ib29d66c6dbb61648e371e01fc36c6978ddae5bc2 - ASTERISK-25727 #close - Reported-by: Gergely Dömsödi +2016-10-10 16:59 +0000 [17031f12fe] Badalyan Vyacheslav - Change-Id: I395729f9f51bdd33c5ca757f5f96ebedad74077b + * vector: After remove element recheck index -2016-02-15 21:31 +0000 [4f08e9fb64] gtjoseph + Small fix. It is necessary to double-check + the index that we just removed because there + is a new element. - * res_pjsip_config_wizard: Add command to export primitive objects + ASTERISK-26453 #close - 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. + Change-Id: Ib947fa94dc91dcd9341f357f1084782c64434eb7 - ASTERISK-24919 #close - Reported-by: Ray Crumrine +2016-09-29 12:52 +0000 [cc269766b8] Torrey Searle - Change-Id: Ica2a5f494244b4f8345b0437b16d06aa0484452b + * res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridge -2016-02-15 15:37 +0000 [be811c4be1] gtjoseph + If a bridge switched to P2P when a DTMF was in progress it + was possible for the DTMF to continue being sent indefinitely. - * res_pjsip_caller_id: Fix segfault when replacing rpid or pai header + Change-Id: I7e2a3efe0d59d4b214ed50cd0b5d0317e2d92e29 - If the PJSIP_HEADER dialplan function adds a PAI or RPID header and send_rpid - or send_pai is set, res_pjsip_caller_id attemps to retrieve, parse and modify - the header added by the dialplan function. Since the header added by the - dialplan function is generic string, there are no virtual functions to parse - the uri and we get a segfault when we try. Since the modify, was really only - an overwrite, we now just delete the old header if it was type PJSIP_H_OTHER - and recreate it. +2016-10-09 21:28 +0000 [fafdde322c] Corey Farrell - This raises a question for another time though: What should happen with - duplicate headers? Right now res_pjsip_header_funcs doesn't check for dups - so if it's session supplement is loaded after res_pjsip_caller_id's (or any - other module that adds headers), there'll be dups in the message. + * logger: Prevent output of verbose messages initiated from rasterisk. - ASTERISK-25337 #close + Remote asterisk consoles should only display verbose log messages + created by the daemon. The first patch for ASTERISK-26410 caused + a couple verbose messages to be printed when the rasterisk process + ended. - Change-Id: I5e296b52d30f106b822c0eb27c4c2b0e0f71c7fa + ASTERISK-26410 -2016-02-15 13:08 +0000 [13b6c02945] Mark Michelson + Change-Id: Ie2a1bb3753ad2724c0349ec1a336f52f7117b52a - * Fix creation race of contact_status structures. +2016-10-04 20:46 +0000 [7af7490e42] Michael Walton - It is possible when processing a SIP REGISTER request to have two - threads end up creating contact_status structures in sorcery. - contact_status is created using a "find or create" function. If two - threads call into this at the same time, each thread will fail to find - an existing contact_status, and so both will end up creating a new - contact status. + * audiohooks: Remove redundant codec translations when using audiohooks - During testing, we would see sporadic failures because the - PJSIP_CONTACT() dialplan function would operate on a different - contact_status than what had been updated by res_pjsip/pjsip_options. + The main frame read and write handlers in main/channel.c don't use the + optimum placement in the processing flow for calling audiohooks + callbacks, as far as codec translation is concerned. This change places + the audiohooks callback code: + * After the channel read translation if the frame is not linear before + the translation, thereby increasing the chance that the frame is linear + as required by audiohooks + * Before the channel write translation if the frame is linear at this + point + This prevents the audiohooks code from instantiating additional + translation paths to/from linear where a linear frame format is already + available, saving valuable CPU cycles - The fix here is two-fold: - 1) The "find or create" function for contact_status now has a lock - around the entire operation. This way, if two threads attempt the - operation simultaneously, the first to get there will create the object, - and the second will find the object created by the first thread. + ASTERISK-26419 - 2) res_sorcery_memory has had its create callback updated so that it - will not allow for objects with duplicate IDs to be created. + Change-Id: I6edd5771f0740e758e7eb42558b953f046c01f8f - Change-Id: I55b1460ff1eb0af0a3697b82d7c2bac9f6af5b97 +2016-10-10 10:59 +0000 [3ab7fae96b] Badalyan Vyacheslav -2016-02-15 12:52 +0000 [5c400a0fed] Joshua Colp + * res_pjsip_config_wizard: Memory leak in module_unload - * res_pjsip_pubsub: Move where the subscription is stored to after initialized. + Fixed a memory leak. It removes only the first element. + Added a useful feature in vector.h to remove all items + under the CMP through a callback function / macro. - A problem arose when testing the AMI subscription listing actions where it - was possible for a subscription that had not been fully initialized to be - listed. This was problematic as the underlying listing code would crash. + ASTERISK-26453 #close - This change makes it so the subscription tree is fully set up before it is - added to the list of subscriptions. This ensures that when the listing actions - get the subscription it is valid. + Change-Id: I84508353463456d2495678f125738e20052da950 - ASTERISK-25738 #close +2016-09-29 12:45 +0000 [9f62feca60] Ludovic Gasc (GMLudo) - Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48 + * res_calendar: Add support for fetching calendars when reloading -2016-02-09 17:34 +0000 [b37555cc94] gtjoseph + We use a lot res_calendar, we are very happy with that, especially + because you use libical, the almost alone opensource library that + supports really ical format with all types of recurrency. - * res_pjsip: Refactor load_module/unload_module + Nevertheless, some features are missed for our business use cases. - load_module was just too hairy with every step having to clean up all - previous steps on failure. + This first patch adds a new option in calendar.conf: + fetch_again_at_reload. Be my guest for a better name. - Some of the pjproject init calls have now been moved to a separate - load_pjsip function and the unload_pjsip function was enhanced to clean - up everything if an error happened at any stage of the load process. + If it's true, when you'll launch "module reload res_calendar.so", + Asterisk will download again the calendar. - In the process, a bunch of missing pj_shutdowns, serializer_pool_shutdowns - and ast_threadpool_shutdowns were also corrected. + The business use case is that we have a WebUI with a scheduler planner, + we know when the calendars are modified. - Change-Id: I5eec711b437c35b56605ed99537ebbb30463b302 + For now, we need to define 1 minute of timeout to have a chance that + our user doesn't wait too long between the modification and the real + test. But it generates a lot of useless HTTP traffic. -2016-02-09 22:42 +0000 [c4d9f46878] Badalyan Vyacheslav - * Resources/res_phoneprov: fix memory leak and heap-use-after-free + ASTERISK-26422 #close - * heap-use-after-free happens when we free "cfg" - but then use "value" which refers to it + Change-Id: I384b02ebfa42b142bbbd5b7221458c7f4dee7077 - * A memory leak occurs because in some cases - it is not released "defaults" +2016-10-09 21:53 +0000 [ca2f3e5b99] Badalyan Vyacheslav - ASTERISK-25721 #close - Reported by: Badalyan Vyacheslav - Tested by: Badalyan Vyacheslav + * cel_odbc: Fix memory leak on module unload - Change-Id: I3807d3f4726df6864430ec144cf6265d3f538469 + Change-Id: Ic7a1236eba2408090fdabb5f717b5fa455ead715 -2016-02-11 11:21 +0000 [e5fd972d24] Etienne Lessard (license #6394) +2016-10-03 11:30 +0000 [5fb848eebd] George Joseph - * func_iconv: Ensure output strings are properly terminated. + * bundled_pjproject: Add tests for programs used by the Makefile, et al. - ASTERISK-25272 #close - Reported by: Etienne Lessard - patches: - AST-25272.patch submitted by Etienne Lessard (license #6394) + Added tests for bzip2, tar, patch, sed and nm to configure.ac. - Change-Id: Id75ad202300960a1e91afe15e319d992936ecc17 + Set DOWNLOAD_TO_STDOUT to a working command line regardless of + whether the download program is wget, curl or fetch. -2016-02-10 16:16 +0000 [168c18737f] gtjoseph + Added a 'configure.m4' file to the third-party directory which takes + care of calling any third-party project setup. Had to move some + pjproject_bundled stuff up in configure.ac so it was called before + the third-party configure macro. - * res_pjsip: Handle pjsip_dlg_create_uas deprecation + The pjproject tarball is now downloaded to the externals_cache_dir if + it was specified on the ./configure command line - Pjproject has deprecated pjsip_dlg_create_uas in 2.5 and replaced it with - pjsip_dlg_create_uas_and_inc_lock which, as the name implies, automatically - increments the lock on the returned dialog. To account for this, configure.ac - now detects the presence of pjsip_dlg_create_uas_and_inc_lock and res_pjsip.c - has an #ifdef HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK to decide whether to use - the original call or the new one. If the new one was used, the ref count is - decremented before returning. + Removed regeneration of the pjproject aconfigure file. It was only + needed for an old patch that no longer applies. - ASTERISK-25751 #close - Reported-by Josh Colp + Converted the tests for symbols to explicit tests since we know that + they're now available in the bundled version. Saves a little time + during configure. - Change-Id: I1be776b94761df03bd0693bc7795a75682615ca8 + ASTERISK-26416 #close + Reported-by: Corey Farrell -2016-02-09 20:13 +0000 [fd668670b5] Rodrigo Ramírez Norambuena + Change-Id: Id1d94251c0155f8dd41b7de7067f35cfbaafbb9b + (cherry picked from commit e6b0053d7561032b7adbf6f3afaecf30f5046605) + (cherry picked from commit a0d02f38322c2c4d7743504003fd376d32a133db) - * res_config_pgsql: Show error message in reload if not connected. +2016-10-09 18:54 +0000 [73f75c246b] Joshua Colp - Change-Id: I9290115a1aaadb589eb1d02eaeb502eec01b31fa + * Revert "Packet-Loss Concealment (PLC) for supporting codecs." -2016-02-09 23:40 +0000 [a23d01e943] Badalyan Vyacheslav + This change introduced some fax test failures + that have not yet been addressed. So this is + not forgotten I'm submitting a change which + reverts it. - * Build: Added testing compiler to support the system sanitizes + This reverts: + d56fc3b36b7bb59b5506129b9895b6c3341350c9. - In older versions of the compiler was not sanitizes. - Compilers other than GCC can not support the Usan and TSAN - or have other options for *FLAGS. + ASTERISK-25629 - ASTERISK-25767 #close - Reported by: Badalyan Vyacheslav - Tested by: Badalyan Vyacheslav + Change-Id: Ibc2f23c38643f5a2c89cf8915ae2d805b81bc3d5 - Change-Id: Iefce6608221fa87884b82ae3cb5649b7b1804916 +2016-10-05 14:53 +0000 [c5e8f50169] George Joseph -2016-02-09 20:57 +0000 [c7186c7f0a] Badalyan Vyacheslav + * pjproject_bundled: Add MALLOC_DEBUG capability - * Build: Fix menuselect USAN conflicts + pjproject_bundled will now use the asterisk memory debugging APIs + if MALLOC_DEBUG is turned on in menuselect. - USAN can be used together with other sanitizers. + Because this required stubs for the executable programs and the python + bindings, some Makefile reorganization was needed to properly handle + the dependencies. As a result, the makefile now individually makes + each of the pjproject libraries separately instead of making them all + in 1 shot. The only visible change is that there are separate status + lines printed for each library instead oif 1 for all libs. Also, the + making of the pjproject dependency files was eliminated. They're not + needed for building unless you're actively modifying pjproject source + files and it makes the build process faster. Finally, any issues with + parallel builds should be resolved again making the build faster. - Reported by: Badalyan Vyacheslav - Tested by: Badalyan Vyacheslav + Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0 - Change-Id: I3bffa350d70965c3026651dba3a12414d0aaa45f +2016-10-04 16:59 +0000 [442b597929] George Joseph -2016-02-09 14:21 +0000 [68643f83cd] Corey Farrell + * alembic: Allow cdr, config and voicemail to exist in the same schema - * Simplify and fix conditional in FD_SET. + cdr, config and voicemail are all separate alembic trees. Because + alembic's default is to use a table named 'alembic_version' to store + the current tree revision, the 3 trees can't exist in the same schema + without stepping on each other. - FD_SET contains a conditional statement to protect against buffer - overruns. The statement was overly complicated and prevented use - of the last array element of ast_fdset. We now just verify the fd - is less than ast_FDMAX. + Now each tree uses 'alembic_version_' as the version table. + Each tree's env.py script now first checks for 'alembic_version'. If + it finds it AND its revision is in the tree's history, the script + renames it to 'alembic_version_'. Regardless, the script + then continues with the migration using 'alembic_version_' + and creates that table if it's not found. The result is that if an + existing 'alembic_version' table was found but it didn't belong to this + tree, it's left alone and 'alembic_version_' is used or + created. - Change-Id: I41895c0b497b052aef5bf49d75c817c48b326f40 + WARNING: If multiple trees are using the same schema, they MUST NOT + CRU or D any objects with names that might exist in the other trees. + An example would be 'yesno_values' type. If two trees perform + operations on it, one tree could pull it out from under the other. + Thankfully we currently don't share any names among cdr, config and + voicemail. -2016-02-09 07:11 +0000 [e40fddbeb5] Joshua Colp + NOTE: Since the env.py scripts in each tree were identical, a common + env.py has been placed in the ast-db-manage directory and a symlink + to it has been placed in each tree directory. - * tests/test_sorcery_memory_cache_thrash: Improve termination process. + ASTERISK-24311 #close + Reported-by: Dafi Ni - When terminating the threads thrashing a sorcery memory cache each - would be told to stop and then we would wait on them. During at - least one thrashing test this was problematic due to the specific - usage pattern in use. It would take some time for termination of the - thread to occur. + Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898 - This would occur due to contention between the threads retrieving - and the threads updating the cache. As the retrieving threads are - given priority it may be some time before the updating threads - are able to proceed. +2016-10-05 04:25 +0000 [c4268ec734] Alexander Traud - This change makes it so all threads are told to stop and then each - are joined to ensure they stop. This way all the threads should - stop at around the same time instead of waiting for one to stop, - the next to stop, then the next, and so on. As a result of this - the execution time for each thrash test is much closer to their - expected value than previously seen as well. + * chan_sip: Honor support of Symmetric Response (rport) for SIP requests. - Change-Id: I04a53470b0ea4170b8819180b0bd7475f3642827 -2016-01-29 17:56 +0000 [bbf3ace682] gtjoseph + In the SIP channel driver chan_sip, the default is "auto_force_rport". When no + NAT was detected, for example in case of IPv6, Asterisk uses the IP address + from the headers within the SIP-REGISTER for subsequent SIP signaling. When + the remote party specifies support for Symmetric Response (RFC 3581) via the + parameter "rport", Asterisk should not extract the port from the SIP headers + but reuse the port of the transport. This did not happen because of a typo. - * res_pjsip: Fix infinite recursion when loading transports from realtime + ASTERISK-26438 #close - Attempting to load a transport from realtime was forcing asterisk into an - infinite recursion loop. The first thing transport_apply did was to do a - sorcery retrieve by id for an existing transport of the same name. For files, - this just returns the previous object from res_sorcery_config's internal - container, if any. For realtime, the res_sourcery_realtime driver looks in the - database and finds the existing row but now it has to rehydrate it into a - sorcery object which means calling... transport_apply. And so it goes. + Change-Id: If6e7891848aaf96666dee5305695f7c6667cd5a6 - The main issue with loading from realtime (apart from the loop) was that - transport stores structures and pointers directly in the ast_sip_transport - structure instead of the separate ast_transport_state structure. This patch - separates those items into the ast_sip_transport_state structure. The pattern - is roughly the same as res_pjsip_outbound_registration. +2016-08-12 11:22 +0000 [c455823657] frahaase - Although all current usages of ast_sip_transport and ast_sip_transport_state - were modified to use the new ast_sip_get_transport_state API, the original - items are left in ast_sip_transport and kept updated to maintain ABI - compatability for third-party modules. They are marked as deprecated and - noted that they're now in ast_sip_transport_state. + * Binaural synthesis (confbridge): interleaved two-channel audio. - ASTERISK-25606 #close - Reported-by: Martin Moučka + Asterisk only supports mono audio at the moment. + This patch adds interleaved two-channel audio to Asterisk's channels. - Change-Id: Ic7a836ea8e786e8def51fe3f8cce855ea54f5f19 + ASTERISK-26292 -2016-02-07 13:00 +0000 [72bf53eea5] Rodrigo Ramírez Norambuena + Change-Id: I7a547cea0fd3c6d1e502709d9e7e39605035757a - * res_config_pgsql: Add message on cli failed command status +2016-09-16 18:54 +0000 [2a03575c30] Corey Farrell - In case failed of command "realtime show pgsql status" show a message the data - of connection to more clear information in error. + * astobj2: Add backtrace to log_bad_ao2. - Change-Id: Ia8e9e2400466606e7118f52a46e05df0719b6a29 + * Compile __ast_assert_failed unconditionally. + * Use __ast_assert_failed to log messages from log_bad_ao2 + * Remove calls to ast_assert(0) that happen after log_bad_ao2 was run. -2016-02-05 10:29 +0000 [b69729dde5] gtjoseph + Change-Id: I48f1af44b2718ad74a421ff75cb6397b924a9751 - * chan_misdn: Fix a few issues causing compile errors +2016-09-30 16:29 +0000 [79532bca75] Rodrigo Ramírez Norambuena - Change-Id: I54b48c24d7ca88ed80496fdfd142d08772a7ab98 + * Add text of cdr directory into README.md for ast-db-manage -2016-01-25 17:36 +0000 [1bc54aee80] Richard Mudgett + Change-Id: I68321c4bea50730c39fdb486e5f23aeadd1ad636 - * app_confbridge: Only use b_profile options from the conference. +2016-09-09 12:38 +0000 [806d08b675] Etienne Lessard - A user cannot set new bridge options after the conference is created by - the first user. Attempting to do so is documented as undefined behavior. + * app_queue: Update dynamic members ringinuse on reload. - This patch ensures that the bridge profile options used are from the - conference and not what a subsequent user may have tried to set. + Previously, when reloading the members of a queue, the members added statically + (i.e. defined in queues.conf) would see their "ringinuse" value updated but not + the members added dynamically. - Change-Id: I1b6383eba654679e5739d5a8de98199cf074a266 + This change makes dynamic members ringuse value to be updated on reload. -2016-02-04 16:17 +0000 [3b426a8b09] Mark Michelson + Note that it's impossible to add a dynamic member with a specific ringinuse + value. For both static and dynamic members, the ringinuse value can always be + changed later on with command like "queue set ringinuse" or with the AMI action + "QueueMemberRingInUse". So it's possible this commit could break a user workflow + if he was changing the ringinuse value of dynamic members via such commands and + was also relying on the fact that a queue reload would not update the dynamic + members ringinuse value. - * Check for OpenSSL defines before trying to use them. + ASTERISK-26330 - The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior - to OpenSSL version 1.0.1. A recent commit attempts to, by default, set - these options, which can cause problems on systems with older OpenSSL - installations. + Change-Id: I3745cc9a06ba7e02c399636f1ee9e58c04081f3f - This commit adds a configure script check for those defines and will not - attempt to make use of those if they do not exist. We will print a - warning urging the user to upgrade their OpenSSL installation if those - defines are not present. +2016-09-29 14:02 +0000 [d31ffb421c] Kevin Harwell - Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d -2016-02-03 14:25 +0000 [9b13ab6a63] gtjoseph + * Remove "format_ogg_opus: New format" - * pjsip/alembic: Add missing columns to system and registration + This reverts commit 40aa28131bc30b4516da2b20eb1a1e043920169c. - ps_systems needed disable_tcp_switch - ps_registrations needed line and endpoint + ASTERISK-26426 #close - ASTERISK-25737 #close + Change-Id: I81e55c3c512f1dd6f49896f0c6b97a07d74fd8f5 - Change-Id: Iaf9c2d69e62243d9fa53104c28c5339c47d4ac19 +2016-09-19 04:46 +0000 [8c5c95ad89] Corey Farrell -2016-02-04 11:39 +0000 [82e2938fa8] Mark Michelson + * core: Remove ABI effects of LOW_MEMORY. - * res_stasis_device_state: Fix refcounting error. + This allows asterisk to compiled with LOW_MEMORY to load modules built + without LOW_MEMORY. - Device state subscription lifetimes were governed by when the - subscription was established and unsubscribed from. However, it is - possible that at the time of unsubscription, there could be device state - events still in flight. When those device state events occur, the device - state callback could attempt to dereference a freed pointer. Crash. + ASTERISK-26398 #close - This change ensures that the lifetime of the device state subscription - does not end until the underlying stasis subscription has confirmed that - its final message has been sent. + Change-Id: I24b78ac9493ab933b11087a8b6794f3c96d4872d - Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2 +2016-09-27 16:10 +0000 [a77ebb2017] George Joseph -2016-01-27 10:44 +0000 [d83dba7099] Sean Bright + * download_externals: Fix issue with re-install - * res_rtp_asterisk: Allow ICE host candidates to be overriden + Needed to ignore an xmlstarlet return code for optional element. - During ICE negotiation the IPs of the local interfaces are sent to the remote - peer as host candidates. In many cases Asterisk is behind a static one-to-one - NAT, so these host addresses will be internal IP addresses. + Change-Id: I6a96f709b4b38c9a3f3dda4e8b07903787e16873 + Reported-by: Dan Jenkins - To help in hiding the topology of the internal network, this patch adds the - ability to override the host candidates by matching them against a - user-defined list of replacements. +2016-09-27 15:35 +0000 [2d2a8944be] Corey Farrell - Change-Id: I1c9541af97b83a4c690c8150d19bf7202c8bff1f + * logger: Output early verbose messages to console. -2016-02-03 12:05 +0000 [0de74fad55] Joshua Colp + Verbose messages should be printed to the console if the sublevel is + less than option_verbose. This fix ensures the welcome message with + copyright and license are printed at daemon and interactive rasterisk + startup. - * AST-2016-001 http: Provide greater control of TLS and set modern defaults. + ASTERISK-26410 #close - This change exposes the configuration of various aspects of the TLS - support and sets the default to the modern standards. + Change-Id: Ia44235e30ec328aba92ea2c8a837b094e65c9a03 - The TLS cipher is now set to the best values according to the - Mozilla OpSec team, different TLS versions can now be disabled, and - the cipher order can be forced to be that of the server instead of - the client. +2016-09-22 09:49 +0000 [c7ef1e0af3] George Joseph - ASTERISK-24972 #close + * codec_opus: Add download ability to menuselect - Change-Id: I0a10f2883f7559af5e48dee0901251dbf30d45b8 -2015-12-07 12:46 +0000 [e67b445e8d] Richard Mudgett + Updated codecs/codecs.xml to add codec_opus to the external + download list. - * AST-2016-003 udptl.c: Fix uninitialized values. + ASTERISK-26409 - Sending UDPTL packets to Asterisk with the right amount of missing - sequence numbers and enough redundant 0-length IFP packets, can make - Asterisk crash. + Change-Id: Ia07b36539f30e852125fb2b94147dc9774df31a4 + (cherry picked from commit 2cdab0e36eec4997ca3bd85aa09efc477038e31c) + (cherry picked from commit e9684f3acd0e8def0df582c1505dd39dd3fd1610) - ASTERISK-25603 #close - Reported by: Walter Doekes +2016-07-23 14:50 +0000 [5cc3c6679f] George Joseph - ASTERISK-25742 #close - Reported by: Torrey Searle + * codec_opus: Replace res_format_attr_opus with the one from codec_opus - Change-Id: I97df8375041be986f3f266ac1946a538023a5255 -2015-09-28 17:07 +0000 [a877e0d94b] Richard Mudgett + Preparation - * AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow. + ASTERISK-26409 - Setting the sip.conf timert1 value to a value higher than 1245 can cause - an integer overflow and result in large retransmit timeout times. These - large timeout times hold system file descriptors hostage and can cause the - system to run out of file descriptors. + Change-Id: I9f20e7cce00c32464d9a180e81283d49d199d0a3 + (cherry picked from commit 59f7662a93bf9c07204fb50e1020a0f5bfbbd5c9) - NOTE: The default sip.conf timert1 value is 500 which does not expose the - vulnerability. +2016-07-23 15:56 +0000 [40aa28131b] George Joseph - * The overflow is now detected and the previous timeout time is - calculated. + * format_ogg_opus: New format - ASTERISK-25397 #close - Reported by: Alexander Traud + Add Ogg/Opus playback support. - Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290 -2016-02-03 14:07 +0000 [dcbedf9ab1] gtjoseph + This uses libopusfile in order to be able to read .opus files and play + them back. - * logging: Remove/fix some message annoyances + Writing/recording support is not present at this time. - test_dlinklists doesn't need to NOTICE everyone that every macro worked. + ASTERISK-26409 - res_phoneprov doesn't need to VERBOSE everyone that a phoneprov extension or - provider was registered. + Change-Id: I8815d23345108d8ca7c0bd640f6a1ce6b4f56955 + (cherry picked from commit daee8bbd5209b4158bc1785eede845a26e6cbeaa) - res_odbc was missing a newline at the end of one message. +2016-09-24 19:05 +0000 [43901e9418] George Joseph - Change-Id: I6c06361518ef3711821795e535acd439782a995e + * build_tools: Add ability to download variants to download_externals -2016-02-02 10:52 +0000 [6522361871] Alexei Gradinari License #5691 + Some external packages have multiple variants that apply to different + builds of asterisk. The DPMA for instance has a "bundled" variant that + needs to be downloaded if asterisk was configured with + --with-pjproject-bundled. - * res_sorcery_realtime: Fix regex regression. + There are 2 ways to specify variants: - A regression was introduced where searching for realtime PJSIP objects - by regex by starting the regex with a leading "^" would cause no items - to be returned. + If you need the user to make the decision about which variant to + download, simply create multiple menuselect "member" entries like so... - This was due to a change which attempted to drop the requirement for a - leading "^" to be present due to how some CLI commands formulate their - regexes. However, the change, rather than simply eliminating the - requirement, caused any regexes that did begin with "^" to end up not - returning the expected results. + + external + xmlstarlet + bash + no + - This change fixes the problem by inspecting the regex and formulating - the realtime query differently depending on if it begins with "^". + + external + xmlstarlet + bash + no + - ASTERISK-25702 #close - Reported by Nic Colledge + Note that the second entry has "-" appended to the name. + You can then use the existing menuselect facilities to restrict which + members to enable or disable. Youy probably don't want the user to + enable multiple at the same time. - Patches: - realtime_retrieve_regex.patch submitted by Alexei Gradinari License #5691 + If you want to hide the details of the variants, the better way to + do it is to create 1 member with "variant" elements. - Change-Id: I055df608a6e6a10732044fa737a9fe8dca602693 + + external + xmlstarlet + bash + no + + + + + + + + -2016-02-02 04:05 +0000 [2a6f18cd55] Karsten Wemheuer + The condition must be a bash expression suitable for use with an "if" + statement. Any environment variable can be used plus those available + in makeopts. - * res_xmpp: Does not connect in component mode + In this case, if asterisk was configured with --with-pjproject-bundled + the bundled variant will be automatically downloaded. Otherwise the + normal version will be downloaded. - The module res_xmpp does not accept usernames in the form used in component - mode (XEP-0114). In component mode there is no @something in the name. - In component mode the connection is now not dropped anymore. + Change-Id: I4de23e06d4492b0a65e105c8369966547d0faa3e - If the xmpp server sends out a "stream" tag before handshake is finished, - the connection gets dropped in res_xmpp. Now this tag will be ignored and - the connection will be established. +2016-09-23 09:54 +0000 [5dd99465d3] Alessandro Crespi - After connecting there will be an exchange of presence states. This does - not work as expected in component mode. The responsible function - "xmpp_pak_presence" is left before the states get sent out. Sending - presence states in component mode is now moved to the top of the function. + * chan_sip: Resolve externhost not to IPv6; instead go for IPv4. - ASTERISK-25735 #close + For the channel driver chan_sip, you specify externhost=example.com in sip.conf + when your Asterisk is behind a NAT and your IP address is assigned dynamically. + Or stated differently: You do not have a static IP address to use "externaddr" + directly. This NAT support is quite handy but just about IPv4. Previously, + Asterisk resolved "externhost" to any IP version. When the first DNS answer + resolved to an IPv6, Asterisk sent an IPv6 in SIP/SDP for origin (o=) and + connection (c=). This happened in outgoing SIP-REGISTER and while answering + SIP-INVITE. If the remote peer is IPv4-only, it might not handle o=/c= with an + IPv6. This change makes sure, no IPv6 is resolved anymore for "externhost". - Change-Id: I70e036f931c3124ebb2ad1e56f93ed35cfdd9d5c -2016-02-01 13:04 +0000 [40da6434c1] gtjoseph + ASTERISK-18232 #close + Reported by: Jacek Kowalski + Tested by: Alexander Traud + patches: + changes.patch submitted by Alessandro Crespi - * build_system: Fix some warnings highlighted by clang + Change-Id: If68eedbeff65bd1c1d8a9ed921c02ba464b32dac - Fix some warnings found with clang. +2016-09-20 09:42 +0000 [d425971009] George Joseph - Change-Id: I5195b6189b148c2ee3ed4a19d015a6d4ef3e77bd + * chan_sip: Address runaway when realtime peers subscribe to mailboxes -2016-01-31 20:13 +0000 [52b29f9b4c] gtjoseph + Users upgrading from asterisk 13.5 to a later version and who use + realtime with peers that have mailboxes were experiencing runaway + situations that manifested as a continuous stream of taskprocessor + congestion errors, memory leaks and an unresponsive chan_sip. - * pjsip/alembic: Fix definition of qualify_timeout + A related issue was that setting rtcachefriends=no NEVER worked in + asterisk 13 (since the move to stasis). In 13.5 and earlier, when a + peer tried to register, all of the stasis threads would block and + chan_sip would again become unresponsive. After 13.5, the runaway + would happen. - A recent commit set qualify_timeout to Decimal which isn't supported. - This path corrects it to Float. + There were a number of causes... + * mwi_event_cb was (indirectly) calling build_peer even though calls to + mwi_event_cb are often caused by build_peer. + * In an effort to prevent chan_sip from being unloaded while messages + were still in flight, destroy_mailboxes was calling + stasis_unsubscribe_and_join but in some cases waited forever for the + final message. + * add_peer_mailboxes wasn't properly marking the existing mailboxes + on a peer as "keep" so build_peer would always delete them all. + * add_peer_mwi_subs was unsubscribing existing mailbox subscriptions + then just creating them again. - Change-Id: I038f5274ba8cb60f8518a5845ce448d49306aadf + All of this was causing a flood of subscribes and unsubscribes on + multiple threads all for the same peer and mailbox. -2016-01-29 07:39 +0000 [55a7367ad4] Stefan Engström + Fixes... + * add_peer_mailboxes now marks mailboxes correctly and build_peer only + deletes the ones that really are no longer needed by the peer. + * add_peer_mwi_subs now only adds subscriptions marked as "new" instead + of unsubscribing and resubscribing everything. It also adds the peer + object's address to the mailbox instead of its name to the subscription + userdata so mwi_event_cb doesn't have to call build_peer. - * chan_sip.c: AMI & CLI notify methods get different values of asterisk's own ip. + With these changes, with rtcachefriends=yes (the most common setting), + there are no leaks, locks, loops or crashes at shutdown. - When I ask asterisk to send a SIP NOTIFY message to a sip peer using either a) - AMI action: SIPnotify or b) cli command: sip notify , I expect - asterisk to include the same value for its own ip in both cases a) and b), - but it seems a) produces a contact header like Contact: - whereas b) produces a contact header like - . 0.0.0.0:8060 is my udpbindaddr in sip.conf + rtcachefriends=no still causes leaks but at least it doesn't lock, loop + or crash. Since making rtcachefriends=no work wasnt in scope for this + issue, further work will have to be deferred to a separate patch. - My guess is that manager_sipnotify should call - ast_sip_ouraddrfor(&p->sa, &p->ourip, p) the same way sip_cli_notify does, - because after applying this patch, both cases a) and b) produce - the contact header that I expect: + Side fixes... + * The ast_lock_track structure had a member named "thread" which gdb + doesn't like since it conflicts with it's "thread" command. That + member was renamed to "thread_id". - Reported by: Stefan Engström - Tested by: Stefan Engström + ASTERISK-25468 #close - Change-Id: I86af5e209db64aab82c25417de6c768fb645f476 -2016-01-28 12:44 +0000 [d2397f028f] Richard Mudgett + Change-Id: I07519ef7f092629e1e844f855abd279d6475cdd0 - * config_options.c: Fix warning message wording. +2016-09-22 01:40 +0000 [18a8ca06eb] Aaron An - Change-Id: I915ea437936320393afde0e7552cf0a980a6b2e4 + * channels/chan_pjsip: fix HANGUPCAUSE function bug. -2016-01-25 17:34 +0000 [af6b15976d] Richard Mudgett + HANGUPCAUSE not return 'SIP 200 Ok' when dialed channel answered. + This patch change the call order of ast_queue_control_data + and ast_queue_control in chan_pjsip_incoming_response. - * app_confbridge.c: Replace inlined code with existing function. + ASTERISK-26396 #close + Reported by: AaronAn + Tested by: AaronAn - Change-Id: Ida5594e9f8d7c1fc18eeb733a11f8fb96326da51 + Change-Id: Ide2d31723d8d425961e985de7de625694580be61 -2016-01-25 16:05 +0000 [7932336a3d] Richard Mudgett +2016-09-21 14:24 +0000 [a805d779e8] Joshua Colp - * app_confbridge: Add ability to get the muted conference state. + * core: Ensure presencestate subtype and message are NULL. - * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state. + When retrieving presence state information there is no + guarantee that the subtype and message passed in are + set to NULL. This change ensures they are. - * Added Muted header to AMI ConfbridgeListRooms action response list - events to indicate the muted conference state. + ASTERISK-26397 #close - * 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. + Change-Id: If38cd730e409e9a9b6eb9adef6591d15a9e61f86 - ASTERISK-20987 - Reported by: hristo +2016-09-21 10:48 +0000 [077caf566e] Joshua Colp - Change-Id: I4076bd8ea1c23a3afd4f5833e9291b49a0c448b1 + * res_odbc: Make pooling option deprecation notice more useful. -2016-01-26 17:59 +0000 [894045e7cf] Richard Mudgett + This changes the notice for the deprecation of the old + pooling options to point to the new option for doing + pooling. This gives a clearer direction as to what to + look into. - * app_confbridge.c: Update CONFBRIDGE and CONFBRIDGE_INFO documentation. + ASTERISK-26389 #close - Change-Id: Ic1f9e22ba1f2ff3b3f5cb017c5ddcd9bd48eccc7 + Change-Id: I2ca9cdfdcd75aec170a7db9d5ff69a4cd25b7c10 -2016-01-25 15:48 +0000 [12c93e8f81] Richard Mudgett +2016-09-21 08:46 +0000 [78b6190a11] Joshua Colp - * app_confbridge: Make non-admin users join a muted conference muted. + * odbc: Remove options that are no longer applicable. - ASTERISK-20987 #close - Reported by: hristo + The pooling, shared_connection, limit, and idlecheck options + are no longer used in res_odbc. - Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38 + ASTERISK-26389 -2016-01-27 13:08 +0000 [f19bf7a321] gtjoseph + Change-Id: I2fde7b467d01f9d1c82cc0a339bb4f7e1dd6bbe6 - * res_pjsip: Add res_pjproject dependency to samples +2016-08-16 15:21 +0000 [923edf2596] Corey Farrell - Since res_pjsip now depends on res_pjproject, this has been added to - basic-pbx modules.conf. + * logger: Simplify ast_callid handling code. - Change-Id: I42826597d5e10f08e518208860c44c96e52f1b2d -2016-01-27 10:29 +0000 [c53903d447] gtjoseph + Routines responsible for managing ast_callid's are overly complicated. + This is left-over code from when ast_callid was an AO2 object. Now that + it is an integer the code can be reduced. - * build_system: Prevent goals needing makeopts from running when it's missing + ast_callid handler code no longer prints it's own error message upon failure + to allocate threadstorage as ast_calloc would have already printed a + message. Debug messages that were printed when TEST_FRAMEWORK was + enabled have been also been removed. - The Makefile only optionally includes makeopts so when goals like uninstall that - dont depend on anything else are run after a distclean, rules like - 'rm -f "$(DESTDIR)$(ASTMODDIR)/"*' get run as 'rm -f ""/*' which attempts - to remove everything in the root directory. + Change-Id: I65a768a78dc6cf3cfa071e97f33ce3dce280258e - Although there's a rule defined for makeopts which prints a message and does - an 'exit 1', since '-include makepopts' was specified (with the -), the exit - was ignored letting the rest of the rules run. +2016-09-20 15:17 +0000 [5cb905a227] Corey Farrell - This patch makes makeopts required unless the goal has the string 'clean' in it. + * core: Fix LOW_MEMORY missing symbol ast_pbx_uuid_get. - ASTERISK-25730 #close - Reported-by: George Joseph + Move the function outside the conditional block that excludes + LOW_MEMORY. - Change-Id: I1bce59a7ea4f48e7a468e22b2abbb13c63417ac7 + ASTERISK-26273 #close -2016-01-25 09:35 +0000 [1dfd104a27] Joshua Colp + Change-Id: Ic290fa128222c410c3531107e30efacabc8493b4 - * config: Allow options to register when documentation is unavailable. +2016-09-20 09:22 +0000 [00f1d05d34] Corey Farrell - The config options framework is strict in that configuration options must - be documented unless XML documentation support is not available. In - practice this is useful as it ensures documentation exists however in - off-nominal cases this can cause strange problems. + * logger: Always enable verbose for console channel. - If it is expected that a config option has a non-zero or non-empty - default value but the config option documentation is unavailable - this reasonable expectation will not be met. This can cause obscure - crashes and weirdness depending on how the code handles it. + Previous versions of Asterisk did not require verbose to be specified in + logger.conf for the console channel, if it was requested by command line + or asterisk.conf it just worked. This change causes Asterisk to always + enable verbose in the console channel level mask. Verbose is displayed + on consoles if requested by command line, option_verbose or 'core set + verbose'. - This change tweaks the behavior to ensure that the config option - is still allowed to register, apply default values, and be set when - devmode is not enabled. If devmode is enabled then the option can - NOT be set. + This also delays initialization of the logger until after threadstorage + is initialized. Initializing too early can cause messages to be printed + multiple times to the console (stdout). - This also does not remove the initial documentation error message that - is output on load when registering the configuration option. + ASTERISK-26391 #close - ASTERISK-25725 #close + Change-Id: I52187d67c2fcb3efd5561bf04b3e5e23e5ee8a04 - Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8 +2016-09-20 10:16 +0000 [74f562a8e2] Corey Farrell -2016-01-25 10:23 +0000 [a706ad44e6] Mark Michelson + * logger: Fix default console settings. - * Stasis: Use custom structure when setting variables. + When logger.conf is missing or invalid we should be printing notices, + warnings and errors to the console. The logmask was incorrectly + calculated. - A recent change to queue channel variable setting to the Stasis control - queue caused a regression. When setting channel variables, it is - possible to give a NULL channel variable value in order to unset the - variable (i.e. remove it from the channel variable list). The change - introduced a call to ast_variable_new(), which is not tolerant of NULL - channel variable values. + Change-Id: Ibaa9465a8682854bc1a5e9ba07079bea1bfb6bb3 - This new change switches from using ast_variable to using a custom - channel variable struct that is lighter weight and NULL value-tolerant. +2016-09-19 14:21 +0000 [0bc9912739] Walter Doekes - Change-Id: I784d7beaaa3c036ea936d103e7caf0bb1562162d + * asterisk.c: Non-root users also get the astcanary after core restart. -2016-01-25 16:56 +0000 [289daca9e8] Rusty Newton + Without this change, a 'core restart' would kill the astcanary forever + if you're not running as root. Both with and without this patch, the + scheduling priority was still SCHED_RR after restart. - * sounds/Makefile: Incremented core and extra sounds versions to 1.5 + Additionally, the astcanary is now spawned if you start with high + priority and Asterisk doesn't get a chance to lower it. For example + through: `chrt -r 10 sudo -u asterisk asterisk -c` - Core and extra sounds 1.5 was recently released! The tarballs contain - change descriptions however I figure more people will see this one so - I'll try to be a bit detailed. Approximately 60 sounds were moved from Extra - to Core for en, en_GB, fr and added for languages that didn't already - have Extra sound sets (it,ja,ru). + Also reap killed astcanary processes on core restart. - In addition all of the English and Russian sounds have been completely - re-recorded. + ASTERISK-26352 #close - Sounds moved and added: - activated,added,all-circuits-busy-now,astcc-followed-by-pound - at-tone-time-exactly,call-forwarding,call-fwd-no-ans,call-fwd-on-busy - ,call-fwd-unconditional,calling,call-waiting,cancelled, - cannot-complete-as-dialed,check-number-dial-again,conf-full,de-activated - ,disabled,do-not-disturb,enabled,enter-num-blacklist,entr-num-rmv-blklist - ,extension,feature-not-avail-line,for,from-unknown-caller,goodbye,hello - ,if-correct-press,im-sorry,info-about-last-call,is,is-in-use,is-set-to - ,location,number,number-not-answering,num-was-successfully,one-moment-please - ,please-try-again,pls-hold-while-try,pls-try-call-later,pm-invalid-option - ,privacy-to-blacklist-last-caller,removed,simul-call-limit-reached - ,something-terribly-wrong,sorry,sorry-youre-having-problems,speed-dial - ,speed-dial-empty,telephone-number,time,to-call-this-number,to-extension - ,to-listen-to-it,to-rerecord-it,unidentified-no-callback,with,you-entered - ,your + Change-Id: Iacb49f26491a0717084ad46ed96b0bea5f627a55 - There were also a few random fixes here and there to file names for a few - of the languages. +2016-09-19 09:40 +0000 [bffaf46690] Walter Doekes - ASTERISK-25068 #close + * asterisk.c: When astcanary dies on linux, reset priority on all threads. - Change-Id: I2b594344ec585d7dfd922b40c1af43b1508828b3 -2016-01-25 16:51 +0000 [b073244c51] Mark Michelson + Previously only the canary checking thread itself had its priority set + to SCHED_OTHER. Now all threads are traversed and adjusted. - * res_pjsip_pubsub: Prevent crash from AMI command on freed subscription. + ASTERISK-19867 #close + Reported by: Xavier Hienne - A test recently uncovered that running an ill-timed AMI command to show - inbound subscriptions could cause a crash since Asterisk will try to - operate on a freed subscription. + Change-Id: Ie0dd02a3ec42f66a78303e9c1aac28f7ed9aae39 - The fix for this is to remove the subscription tree from the list of - subscriptions at the time that we are sending our final NOTIFY request - out. This way, as the subscription is in the process of dying, it is - inaccessible from AMI. +2016-09-12 18:00 +0000 [2820b13393] Richard Mudgett - Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23 + * res_config_odbc.c: Fix buffer size limitation creating invalid SQL. -2016-01-25 11:03 +0000 [830f8933c2] Corey Farrell + Creating ODBC SQL queries resulted in queries too large to fit into the + supplied buffer. The resulting truncated buffer contained an invalid SQL + query. - * chan_sip: Fix buffer overrun in sip_sipredirect. + * Made SQL query generation code use a thread storage buffer that can + increase in size as needed. - sip_sipredirect uses sscanf to copy up to 256 characters to a stacked buffer - of 256 characters. This patch reduces the copy to 255 characters to leave - room for the string null terminator. + * Fixed bad multi-line warning messages. - ASTERISK-25722 #close + ASTERISK-26263 #close + Reported by: Jeppe Ryskov Larsen - Change-Id: Id6c3a629a609e94153287512c59aa1923e8a03ab + Change-Id: I23f3cdd43c2dac80bed3ded4dd77d18cb17f21ae -2016-01-23 16:45 +0000 [f299dc0d76] Rodrigo Ramírez Norambuena +2016-09-14 06:53 +0000 [0376af9519] Joshua Colp - * app_queue: Add Lastpause field of queue member + * rtp: Only accept the first payload for a format in SDP. - Add time when started a the last pause for a queue member for - QueueMemberStatus ami event. + When receiving an SDP offer with multiple payloads for + the same format we would generate an answer with the first + payload, but during the payload crossover operation + (to set the payloads for receiving) we would remove all + payloads but the last. This would result in incoming + traffic being matched against the wrong format and outgoing + traffic being sent using the wrong payload. - Also show accumulate time in seconds when started a pause for a queue - member to CLI command 'queue show'. + This change makes it so that once a format has a payload + number put into the mapping all subsequent ones are ignored. + This ensures there is only ever one payload in the mapping + and that it is the payload placed into the answer SDP. - ASTERISK-16394 #close + ASTERISK-26365 #close - Change-Id: I4b12aa3b2efa8d02939db3e13712510b4879865c + Change-Id: I1e8150860a3518cab36d00b1fab50f9352b64e60 -2016-01-23 12:34 +0000 [8c664da0ff] Rodrigo Ramírez Norambuena +2016-09-14 08:42 +0000 [9d894ee0a1] Joshua Colp - * app_queue: fix some tab format + * res_pjsip_multihomed: Change Contact port to listening port. - Change-Id: I2734392b131f1fb0949515d538f83f30fbc15d8c + The res_pjsip_multihomed module determines what interface and transport + a request is going out on and updates the SIP message accordingly with + the address information. This currently incorrectly updates the Contact + header for connectionful protocols to the ephemeral connection port, + instead of the bound address for the listening socket which can actually + accept the connection back. If the remote side attempts to connect back on + the epehemeral port it will fail. -2016-01-23 11:41 +0000 [2fb45c7801] Rodrigo Ramírez Norambuena + This change makes it so the port is updated to the bound port on + connectionful protocols and is maintained on UDP (as there can be + multiple of those). - * cdr_pgsql.cl: REFACTOR Macro LENGTHEN_BUF + ASTERISK-26374 #close - Remove repeated code on macro of assigned buffer to SQL vars. + Change-Id: I50f8dab65b9f75117d73ba5f6bbcf6c9871854ab - Add table and connection name to log error message when is not possible - allocate memory. +2016-09-07 14:48 +0000 [47c527df0a] George Joseph - Change-Id: I1fbf37d286a032d38fdda72a9f736356956c9ffe + * pjproject_bundled: Prevent SERVFAIL from marking name server bad -2016-01-22 15:08 +0000 [959f7436cc] Mark Michelson + A name server that returns "Server Failure" is indicating only that + the server couldn't process that particular request. We should NOT + assume that the name server is incapable of serving other requests. - * Stasis: Fix potential memory leak of control data. + Here's the scenario we've been encountering... - When queuing tasks onto the Stasis control queue, you can pass an - arbitrary data pointer and a function to free that data. All ARI - commands that use the Stasis control queue made the assumption that the - destructor function would be called in all paths, whether the task was - queued successfully or not. However, this was not correct. If a task was - queued onto a control structure that was already completed, the - allocated data would not be freed properly. + * 2 local name servers configured in resolv.conf. + * An OPTIONS request causes a request for A and AAAA records to go out + to both nameservers. + * The A responses both come back successfully resolved. + * Because of an issue at some upstream nameserver, the AAAA responses + for that particular query come back as "SERVFAIL" from both local + name servers. + * Both local servers are marked as bad and no further queries can be + sent until the 60 second ttl expires. Only previously cached results + can be used. + * In this case, 60 seconds is just enough time for another OPTIONS + request to go out to the same host so the cycle repeats. - This patch corrects this by making sure that all return paths call the - data destructor. + We could set the bad ttl really low but that also affects REFUSED and + NOTAUTH which probably DO signal a real server issue. Besides, even + a really low bad ttl would be an issue on a pbx. - Change-Id: Ibf06522094f8e5c4cce652537dc5d7222b1c4fcb + Although we use our own resolver in 14 and master and don't have this + issue there, Teluu has merged this patch upstream so it's appropriate + to cherry-pick to 14 and master to keep pjproject consistent. -2016-01-21 10:58 +0000 [a45eacebf3] Mark Michelson - * Stasis: Use control queue to prevent crash. + Change-Id: Ie03ba902288e274aff23f9b9bb2786e1e8be09e0 - A crash occurred when attempting to set a channel variable on a channel - that had already been hung up. This is because there is a small window - between when a control is grabbed and when the channel variable is set - that the channel can be hung up. +2016-09-12 07:37 +0000 [d3ddf4b0fd] Tzafrir Cohen - The fix here is to queue the setting of the channel variable onto the - control queue. This way, the manipulation of the channel happens in a - thread where it is safe to be done. + * cdr_mysql: fix UTC support - In this change, I also noticed that the setting of bridge roles on - channels was being done outside of the control queue, so I also changed - those operations to be done in the control queue. + * Make 'cdrzone=UTC' work properly. + * Fix the documentation of cdr_mysql.conf: it's cdrzone and not timezone - ASTERISK-25709 #close - Reported by Mark Michelson + ASTERISK-26359 #close - Change-Id: I2a0a4d51bce6fba6f1d9954e40935e42f366ea78 + Change-Id: I2a6f67b71bbbe77cac31a34d0bbfb1d67c933778 -2016-01-22 11:48 +0000 [7866806fc3] Richard Mudgett +2016-06-27 14:26 +0000 [07b95f7c65] Tzafrir Cohen - * logger.c: Fix buffer overrun found by address sanitizer. + * sd_notify (systemd status notifications) support - The null terminator of the tail struct member was not being allocated - when no logger.conf config file is installed. + sd_notify() is used to notify systemd of changes to the status of the + process. This allows the systemd daemon to know when the process + finished loading (and thus only start another program after Asterisk has + finished loading). - ASTERISK-25714 #close - Reported by: Badalian Vyacheslav + To use this, use a systemd unit with 'Type=notify' for Asterisk. - Change-Id: I45770fdd08af39506a3bc33ba279c4f16e047a30 + This commit also adds the function ast_sd_notify(), a wrapper around + sd_notify that does nothing if not built with systemd support. -2015-12-23 15:07 +0000 [9714da7aa4] Mark Michelson + Also adds support for libsystemd detection in the configure script. - * res_odbc: Remove connection management + Change-Id: Ied6a59dafd5ef331c5c7ae8f3ccd2dfc94be7811 - Asterisk by default will create a single database connection and share - it among all threads that attempt to access the database. In previous - versions of Asterisk, this was tolerable, because the most used channel - driver, chan_sip, mostly accessed the database from a single thread. - With PJSIP, however, many threads may be attempting to perform database - operations, and there is the potential for many more database accesses, - meaning the concurrency is a horrible bottleneck if only one connection - is shared. +2016-09-09 06:35 +0000 [bc81765bb4] Timo Teräs - Asterisk has a connection pooling facility built into it, but the - implementation has flaws. For one, there is a strict limit on the number - of simultaneous connections that could be made to the database. Anything - beyond the maximum would result in a failed operation. Attempting to - predict what the maximum should be is nearly impossible even for someone - intimately familiar with Asterisk's threading model. In addition, use of - transactions in the dialplan can cause some severe bugs if connection - pooling is enabled. + * Fix showing of swap details when sysinfo() is available - This commit seeks to fix the concurrency problem by removing all - connection management code from Asterisk and leaving that to the - underlying unixODBC code instead. Now, Asterisk does not share a single - connection, nor does it try to maintain a connection pool. Instead, all - Asterisk ever does is request a connection from unixODBC and allow - unixODBC to either allocate those connections or retrieve them from a - pool. + If sysinfo() is available, but not sysctl() or swapctl() the + printing code for swap buffer sizes is incorrectly omitted. + The above condition happens with musl c-library. - Doing this has a bit of a ripple effect. For one, since connections are - not long-lived objects, several of the safeguards that previously - existed have been removed. We don't have to worry about trying to use a - connection that has gone stale. In every case, when we request a - connection, it has just been made and we don't need to perform any - sanity checks to be sure it's still active. + Fix #if rule to consider defined(HAVE_SYSINFO). And also + remove the redundant || defined(HAVE_SYSCTL) which was + incorrectly there to start with. Now swap information is + displayed only if an actual libc function to get it is + available. - Another major player affected by this change is transactions. - Transactions and their respective connections were so tightly coupled - that it was almost pornographic. This code change moves - transaction-related code to its own file separate from the core ODBC - functionality. This way, the core of ODBC does not even have to know - that transactions exist. + This also fixes warnings previously seen with musl libc: - In making this large change, I had to look at a lot of code and - understand it. When making this change, I discovered several places - where the behavior is definitely not ideal, but it seemed outside the - scope of this change to be fixing it. Instead, any place where I saw - some sort of room for improvement has had a XXX comment added explaining - what could be altered to improve it. + [CC] asterisk.c -> asterisk.o + asterisk.c: In function 'handle_show_sysinfo': + asterisk.c:773:6: warning: variable 'totalswap' set but not used + [-Wunused-but-set-variable] + int totalswap = 0; + ^~~~~~~~~ + asterisk.c:770:11: warning: variable 'freeswap' set but not used + [-Wunused-but-set-variable] + uint64_t freeswap = 0; + ^~~~~~~~ - Change-Id: I37a84def5ea4ddf93868ce8105f39de078297fbf + Change-Id: I1fb21dad8f27e416c60f138c6f2bff03fb626eca -2016-01-22 11:18 +0000 [d3969d09ae] Rodrigo Ramírez Norambuena +2016-09-14 07:59 +0000 [89764f7ae9] Joshua Colp - * app_queue.c: remove include for core_unreal.h not used in code. + * rtp: Preserve timestamps on video frames. - Change-Id: Idc2ae8a6bd869a66544916906744a5678622262d + Currently when receiving video over RTP we store only + a calculated samples on the frame. When starting the video + it can take some time for this calculation to actually yield + a value as it requires constant changing timestamps. As well + if a video frame passes over multiple RTP packets this calculation + will fail as the timestamp is the same as the previous RTP + packet and the number of samples calculated will be 0. -2016-01-21 16:40 +0000 [5dde111719] Corey Farrell + This change preserves the timestamp on the frame and allows + it to pass through the core. When sending the video this timestamp + is used instead of a new one being calculated. - * Build System: Add support for checking alembic branches. + ASTERISK-26367 #close - * Add 'check-alembic' target to root Makefile. - * Create build_tools/make_check_alembic to do the actual checks. + Change-Id: Iba8179fb5c14c9443aee4baf670d2185da3ecfbd - ASTERISK-25685 +2016-09-14 09:51 +0000 [5f54ac3a80] Joshua Colp - Change-Id: Ibb3cae7d1202ac23dc70b0f3b5801571ad46b004 + * res_pjsip_transport_management: Convert time in log message to seconds. -2016-01-19 18:20 +0000 [04078f43b5] Richard Mudgett + ASTERISK-26375 #close - * res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case. + Change-Id: I46496af5cae41413e76d44d2068a7431279f09dc - ASTERISK-25712 #close - Reported by: Richard Mudgett +2016-09-13 05:34 +0000 [6ba68b486e] Steve Davies - Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f + * chan_sip: Fix session timeout on retransmit of non-UDP packets -2016-01-13 16:49 +0000 [5615db3714] Richard Mudgett + Change-Id I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 Enable Session-Timers for + SIP over TCP (and TLS) also disables SIP retransmits in chan_sip for non-UDP + connections, allowing the TCP layer to handle the retransmits. Unfortunately, + this caused sessions to be terminated with a retransmit timeout becasue it + stopped at the point of the first retrans call. - * res_pjsip: Add CLI "pjsip dump endpt [details]" + This patch waits for the 64*T1 timer to expire instead. - Dump the res_pjsip endpt internals. + ASTERISK-19968 - In non-developer mode we will not document or make easily accessible the - "details" option even though it is still available. The user has to know - it exists to use it. Presumably they would also be aware of the potential - crash warning below. + Change-Id: I844f26801aada10bc94e9bebe6e151f0a8443204 - Warning: PJPROJECT documents that the function used by this CLI command - may cause a crash when asking for details because it tries to access all - active memory pools. +2016-09-13 06:08 +0000 [e3487b9360] Joshua Colp - Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb + * res_pjsip: Don't assume a request will have any addresses. -2016-01-18 03:49 +0000 [b259ac95ac] Diederik de Groot + When performing DNS resolution the failover code present in + res_pjsip currently assumes that a request will always have + at least one viable address. In practice this is not true. + A domain may be used that has no records. - * main/asterisk.c: ast_el_read_char + The code now checks that at least one address exists on the + request which prevents looping. - Make sure buf[res] is not accessed at res=-1 (buffer underrun). - Address Sanitizer will complain about this quite loudly. + ASTERISK-26364 #close - ASTERISK-24801 #close + Change-Id: Ic0761b0264864acd85915c94d878a81624940f4c - Change-Id: Ifcd7f691310815a31756b76067c56fba299d3ae9 +2016-09-12 12:25 +0000 [7d7b23f04f] Richard Mudgett -2016-01-18 19:27 +0000 [dd5c063934] gtjoseph + * app_queue: Fix CLI "queue show" and AMI Queues action output truncation. - * res_pjproject: Add module providing pjproject logging and utils + The output of CLI "queue show" and AMI Queues action is truncated and + "failed to extend from 240 to 327" messages are generated if the queue + member and interface names are lengthy. - res_pjsip_log_forwarder has been renamed to res_pjproject - and enhanced as follows: + * Increase the string buffer size from 240 to 512 in order to accommodate + for more information fields added to the output since v1.8. - As a follow-on to the recent 'Add CLI "pjsip show buildopts"' patch, - a new ast_pjproject_get_buildopt function has been added. It - allows the caller to get the value of one of the buildopts. + ASTERISK-26360 #close + Reported by: Richard Mudgett - The initial use case is retrieving the runtime value of - PJ_MAX_HOSTNAME to insure we don't send a hostname greater - than pjproject can handle. Since it can differ between - the version of pjproject that Asterisk was compiled against - and the version of pjproject that Asterisk is running against, - we can't use the PJ_MAX_HOSTNAME macro directly in Asterisk - source code. + Change-Id: Id99c03cf5362453b80491a4b3b0434cb67aa966d - Change-Id: Iab6e82fec3d7cf00c1cf6185c42be3e7569dee1e +2016-09-12 03:28 +0000 [740292e6ae] Walter Doekes -2016-01-18 17:16 +0000 [3b9cba4294] Matt Jordan + * chan_sip: Allow target refresh (Contact update) on re-INVITE. - * funcs/func_cdr: Correctly report high precision values for duration and billsec + Previously, the Contact was stored only on initial INVITE and on any + 18X and 200. That meant that after re-INVITEs from *us* the Contact + could get updated, but after re-INVITEs from the *peer*, it did not. - When CDRs were refactored, func_cdr's ability to report high precision values - for duration and billsec (the 'f' option) was broken. This was due to func_cdr - incorrectly interpreting the duration/billsec values provided by the CDR engine - in milliseconds, as opposed to seconds. Since the CDR engine only provides - duration and billsec in seconds, and does not expose either attribute with - sufficient precision to merely pass back the underlying value, this patch fixes - the bug by re-calculating duration and billsec with microsecond precision based - on the start/answer/end times on the CDR. + This changeset fixes this inconsistency, properly allowing target + refreshes through re-INVITES (RFC3261, 12.2). - ASTERISK-25179 #close + If your strictrtp setting allows it, this change allows you to switch + the source IP of a connected/calling device mid-call with a simple + re-INVITE from the new IP. - Change-Id: I8bc63822b496537a5bf80baf6102c06206bee841 + ASTERISK-26358 #close -2016-01-20 07:52 +0000 [479cc99acd] Rodrigo Ramírez Norambuena + Change-Id: Ibb8512054ab27c8c3d2514022568fde943bf2435 - * README: Update year in copyright +2016-08-31 15:22 +0000 [82ec58aa91] Richard Mudgett - Change-Id: I56240f537fb3205672cdb2a74f0591ae7bb73dbc + * sip_to_pjsip.py: Map legacy_useroption_parsing. -2016-01-19 17:15 +0000 [9fa76ba215] Joshua Colp + Map the sip.conf general section legacy_useroption_parsing to the + new pjsip.conf global ignore_uri_user_options. - * test_threadpool: Wait for each task to complete and fix memory leak. + ASTERISK-26316 + Reported by: Kevin Harwell - This change makes the thread_timeout_thrash unit test wait for - each task to complete. This fixes the problem where the test would - prematurely end when all threads were gone and a new one had to be - started to handle the last task. It also increases the thrasing as - it is now more likely for each task to encounter the above scenario. + Change-Id: I78108a31995db19d41f4e1a07b3324692c5363fc - This also fixes a memory leak where the data for each task was not - being freed. +2016-08-29 18:08 +0000 [ba362822f3] Richard Mudgett - ASTERISK-25611 #close + * res_pjsip: Add ignore_uri_user_options option. - Change-Id: I5017d621a4dc911f509074c16229b86bff2fb3c6 + This implements the chan_sip legacy_useroption_parsing option but with a + better name. -2016-01-18 19:44 +0000 [c9f7269b2e] Richard Mudgett + * Made the caller-id number and redirecting number strings obtained from + incoming SIP URI user fields always truncated at the first semicolon. + People don't care about anything after the semicolon showing up on their + displays even though the RFC allows the semicolon. - * taskprocessor.c: Increase CLI "core ping taskprocessor" timeout. + ASTERISK-26316 #close + Reported by: Kevin Harwell - Change-Id: I4892d6acbb580d6c207d006341eaf5e0f8f2a029 + Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62 -2016-01-18 19:43 +0000 [6e2a867716] Richard Mudgett +2016-09-09 06:26 +0000 [56caf5402c] Walter Doekes - * taskprocessor.c: Fix some taskprocessor unrefs. + * contrib: Let safe_asterisk script continue without /dev/tty9. - You have to call ast_taskprocessor_unref() outside of the taskprocessor - implementation code. Taskprocessor use since v12 has become more - transient than just the singleton uses in earlier versions. + If you use the safe_asterisk script, it uses hardcoded defaults before + running configurable values from /etc/asterisk/startup.d. The hardcoded + default has TTY=9. Some containerized environments don't have such a + TTY, and safe_asterisk would stop. - Change-Id: If7675299924c0cc65f2a43a85254e6f06f2d61bb + The custom configuration from /etc/asterisk/startup.d/* isn't read until + after it stopped, so changing TTY in a custom config did not help. -2016-01-19 14:16 +0000 [a4dcbdf50f] Richard Mudgett + This changeset changes safe_asterisk to continue if the TTY setting was + untouched and /dev/tty9 and /dev/vc/9 aren't found. - * Fix alembic branches on master. + Change-Id: I2c7cdba549b77f418a0af4cb1227e8e6fe4148fc - Change-Id: I64ed21fec50eb833641ca49d92184f6aaabd86e8 +2016-09-09 05:39 +0000 [901e612739] Joshua Colp -2016-01-05 17:12 +0000 [35a3e8cc7f] Corey Farrell + * res_pjsip: Only invoke unidentified endpoint logic when unidentified. - * Refactor init_logger_chain locking. + The code was incorrectly invoking the unidentified logic when + an endpoint had actually been identified, causing log messages + to be output. - This removes logchannels locking from init_logger_chain, puts the - responsibility on the caller. Adds locking around the one call that was - missing it. + ASTERISK-26349 #close - ASTERISK-24833 + Change-Id: Id8104fc9e3d138d5e8b6f6977ecc08765fd17d4f - Change-Id: I6cc42117338bf9575650a67bcb78ab1a33d7bad8 +2016-08-29 22:26 +0000 [2a50c29101] Aaron An -2016-01-18 22:10 +0000 [378fed4900] Rodrigo Ramírez Norambuena + * res/res_pjsip: Add preferred_codec_only config to pjsip endpoint. - * app_queue: Fix preserved reason of pause when Asterisk is restared + This patch add config to pjsip by endpoint. + ;preferred_codec_only=yes + ; Respond 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. - When the Asterisk is restared is not preseved reason paused of members. - This patch fixed this cases, retain data on astdb and set when Asterisk - is started. + ASTERISK-26317 #close + Reported by: AaronAn + Tested by: AaronAn - ASTERISK-25732 #close + Change-Id: Iad04dc55055403bbf5ec050997aee2dadc4f0762 - Report by: Rodrigo Ramírez Norambuena +2016-08-16 15:34 +0000 [28b2aeba0b] Mark Michelson - Change-Id: Id3fb744c579e006d27cda4a02334ac0e4bed9eb5 + * res_pjsip: Do not crash on ACKs from unknown endpoints. -2016-01-18 19:01 +0000 [130aa1427e] gtjoseph + The endpoint identification PJSIP module is intended to identify which + endpoint an incoming request is from. If an endpoint is not identified, + then an artificial endpoint is used in its place when proceeding. - * pjsip_loging_refactor: Rename res_pjsip_log_forwarder to res_pjproject + The problem is that the ACK request type is an exception to the rule. + The artificial endpoint is not used when processing an ACK. This results + in the possibility of having a NULL endpoint being used further on. - Change-Id: I5387821f29e5caa0cba0b7d62b0fc0d341e7e20b + The reason ACK is an exception is an attempt not to spam security logs + with unidentified requests. Presumably, you've already logged the + unidentified request on the preceeding INVITE. -2016-01-16 13:18 +0000 [eaf2b5052e] Daniel Journo + Up until Asterisk 13.10, retrieving a NULL endpoint in this fashion + didn't cause an issue. A new change in 13.10 added endpoint ACL checking + shortly after endpoint identification. Because we are accessing a NULL + endpoint, this ACL check resulted in a crash. - * Update version number in features.conf.sample + The fix here is to be sure to retrieve the artificial endpoint for all + request types. ACKs still do not generate unidentified request security + events. - Update the version number in the comments from Asterisk 12 to Asterisk 12+ - - Change-Id: Ie692ac8cda3c993c3bf10f27f51a1cca3317ec7b + ASTERISK-26264 #close + Reported by nappsoft -2016-01-13 15:58 +0000 [c60d6c0162] Daniel Journo + AST-2016-006 - * pjsip/alembic: Fix qualify_timeout column definition + Change-Id: Ie0c795ae2d72273decb972dd74b6a1489fb6b703 - Corrects the qualify_timeout column type from Integer to Decimal +2016-08-23 06:35 +0000 [82a3d659dc] Corey Farrell (license 5909) - ASTERISK-25686 #close - Reported-by: Marcelo Terres + * chan_sip: Don't allocate new RTP instances on top of old ones. - Change-Id: I757d0e3c011ee9be6cd5abd48bc92441a405d3c8 + In some scenarios dialog_initialize_rtp can be called multiple times on + the same dialog. This can cause RTP instances to be leaked along with + multiple file descriptors for each instance. -2016-01-15 19:52 +0000 [480ccfcc97] Corey Farrell + This change makes it so the existing RTP instances are destroyed and + not overwritten, stopping the memory leak. - * main/config: Clean config maps on shutdown. + ASTERISK-26272 #close + patches: + ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909) - ASTERISK-25700 #close + Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73 - Change-Id: I096da84f9c62c6095f68bcf98eac4b7c7868e808 +2016-09-06 11:46 +0000 [f369dbb705] Richard Mudgett -2016-01-14 14:42 +0000 [a5b38b604c] Kevin Harwell + * res_pjsip_messaging.c: Misc cleanups and fixes. - * bridge_basic: don't cache xferfailsound during an attended transfer + * Eliminated RAII_VAR in get_outbound_endpoint(). - The xferfailsound was read from the channel at the beginning of the transfer, - and that value is "cached" for the duration of the transfer. Therefore, changing - the xferfailsound on the channel using the FEATURE() dialplan function does - nothing once the transfer is under way. + * Simplify update_to() coding. However, this function can only be a NoOp + because the To string can only be a URI and not a name-address formatted + string. - This makes it so the transfer code instead gets the xferfailsound configuration - options from the channel when it is actually going to be used. + * Simplify update_from() coding. Also fixed a code path modifying the + from string when the caller could still want to use the original string. - This patch also fixes a potential memory leak of the props object as well as - making sure the condition variable gets initialized before being destroyed. + * Fixed msg_data_create() incompletely removing the "pjsip:" to then add + back the "sip:" string if needed. The code didn't handle the "pjsip:sip:" + case because it left the colon after pjsip in the string. - ASTERISK-25696 #close + Change-Id: I68a09a665f6d4daa9eaa59069045ab69122e28db - Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4 +2016-09-07 16:00 +0000 [2e5da0c715] Joshua Colp -2015-07-10 10:37 +0000 [d36c4d0b01] Richard Mudgett + * res_pjsip: Allow global headers to be overridden. - * taskprocessor.c: Simplify ast_taskprocessor_get() return code. + Currently when you add global headers from the dialplan both + the header in the dialplan and the globally configured header + are added to the resulting SIP INVITE. This change makes it + so the headers in the dialplan take precedence and are the + only ones added. - Change-Id: Id5bd18ef1f60ef8be453e677e98478298358a9d1 + Change-Id: I36f864298f38db3632ad503edc11267cb8ffb3ad -2016-01-13 18:20 +0000 [0a878020dc] Richard Mudgett +2016-08-10 15:14 +0000 [ac02bbd9a0] Mark Michelson - * astmm.c: Add more stats to CLI "memory show" commands. + * ConfBridge: Make some announcements asynchronous. - * Add freed regions totals to allocations and summary. + Confbridge announcements tend to block a channel while they are being + played. In some circumstances, this is warranted since you want that + particular channel not to hear the announcement (Example: "John Doe has + entered the conference"). For others it makes less sense. - * Add totals for all allocations and not just the selected allocations. + This change first introduces methods for playing sounds asynchronously + into the conference. This is very similar to how synchronous sounds are + played, except the channel initiating the playback does not wait for the + sound to complete before moving on. - Change-Id: I61d5a5112617b0733097f2545a3006a344b4032a + Asynchronous announcements are used for two circumstances: + * Sounds played for a user after they have left the bridge + * Sounds that play first to a single user and then the rest of the + conference (if the channel and conference use the same language) -2016-01-14 16:00 +0000 [84b30c5e18] Kevin Harwell + ASTERISK-26289 #close + Reported by Mark Michelson - * bridge_basic: don't play an attended transfer fail sound after target hangs up + Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a - If the attended transfer destination answers (picks call up or goes to - voicemail) and then hangs up on the transferer then transferer hears the - fail sound. +2016-07-19 09:41 +0000 [7a12355dbd] Matt Jordan - This patch makes it so the fail sound is not played when the transfer - destination/target hangs up after answering. + * chan_sip: Allow Preferred sRTP. - ASTERISK-25697 #close + Following the Encrypt-all-the-things paradigm: - Change-Id: I97f142fe4fc2805d1a24b7c16143069dc03d9ded + The user enters his SIP-URI and password. Thanks to DNS-NAPTR, the phone + determines SIP-over-TLS as preferred transport. In SIP/SDP, the phone starts + the call with a crypto attribute, but not as RTP/sAVP but the RTP/AVP profile + (sRTP is preferred aka optional; not mandatory). If the VoIP server does not + support sRTP and TLS, the phone shows an open padlock icon. -2016-01-14 14:36 +0000 [c7caee6c4b] Corey Farrell + This paradigm is supported by several VoIP/SIP clients on default. Some + implementations even cannot be changed to RTP/sAVP. Therefore here, this + change allows Preferred sRTP for ingress. For egress, please, create a dial + plan which starts with RTP/SAVP, and when rejected tries again with RTP/AVP. - * Remove *.gcna / *.gcno files from added module sources. + ASTERISK-20234 #close + Reported by: tootai + Tested by: tootai, Alexander Traud + patches: + srtp_patches.diff submitted by Matt Jordan - Asterisk uses a Makefile macro to associate additional sources with a - module. This macro is responsible for creating clean targets but - previously left behind *.gcna and *.gcno files. + Change-Id: I42cb779df3a9c7b3dd03a629fb3a296aa4ceb0fd - ASTERISK-25683 #close - Reported by yaron nahum +2016-09-07 05:59 +0000 [baa7dba180] Joshua Colp - Change-Id: Idc0823fe80a25c42cefae901fde875e9fc38d8ea + * res_resolver_unbound: Fix config documentation. -2016-01-14 09:26 +0000 [68cad96ffd] Rusty Newton + The code was referencing the config section as 'globals' + instead of 'general'. This change swaps it over to 'general'. - * func_channel: Add help text for undocumented CHANNEL function arguments + Change-Id: I9dfe7788f41c4a6754c77e103880dc1a747de7fe - Adding help text documentation for: - * hangupsource - * appname - * appdata - * exten - * context - * channame - * uniqueid - * linkedid +2016-09-06 15:25 +0000 [e769c19a31] Matt Jordan - ASTERISK-24097 #close - Reported by: Steven T. Wheeler - Tested by: Rusty Newton + * res/res_stasis_playback: Cancel the entire playlist when a stop occurs - Change-Id: Ib94b00568b0433987df87d5b67ea529b5905754d + Prior to this patch, a stop issued by a delete of a Playback resource + (indicated by the control frame AST_CONTROL_STREAM_STOP) would only stop + the current media URI playing. Subsequent URIs specified by a playback + operation would then proceed on, even though we had just indicated to + the User that the Playback was finished *and* after they had just + 'deleted' the resource. Whoops. -2016-01-10 16:22 +0000 [8182146e85] Daniel Journo + This patch corrects it by bailing out of the sequence of URIs to play if + one of them is terminated with an AST_CONTROL_STREAM_STOP indication. - * pjsip: Add option global/regcontext + ASTERISK-26341 #close - 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. + Change-Id: I2da9ec43545ba46cdfffe287c7e4907eae7fca42 - ASTERISK-25670 #close - Reported-by: Daniel Journo +2016-08-01 20:55 +0000 [6caf6bcdad] George Joseph - Change-Id: Ib1530c5b45340625805c057f8ff1fb240a43ea62 + * build: Add download capability for external packages -2016-01-12 11:14 +0000 [022423b98b] Joshua Colp + The DPMA and g729a, silk, siren7 and siren14 codecs hosted at + http://downloads.digium.com/pub/telephony/ are now listed in the + "External" sections of the "Resource Modules" and "Codec Translators" + pages in menuselect. Any that are selected will automatically be + downloaded and installed when "make install" is run. Their LICENSE and + README (if avaialble) files will be installed to + ASTVARLIBDIR/documentation/thirdparty/. - * app: Queue hangup if channel is hung up during sub or macro execution. + Example use with codecs: - This issue was exposed when executing a connected line subroutine. - When connected or redirected subroutines or macros are executed it is - expected that the underlying applications and logic invoked are fast - and do not consume frames. In practice this constraint is not enforced - and if not adhered to will cause channels to continue when they shouldn't. - This is because each caller of the connected or redirected logic does not - check whether the channel has been hung up on return. As a result the - the hung up channel continues. + The codecs/codecs.xml file is a menuselect style xml file that lists + the codecs to be included. Their support levels are 'external', which + triggers the download and install, and defaultenabled is no. Also + because codec_g729a is actually in a directory named codec_g729 on the + download server, the newly added 'member_data' element is used to + override the default of the directory name being the package name. You + can use the 'directory_name' attribute to keep default base URL + (http://downloads.digium.com/pub/telephony/) but use the new directory, + or you use the 'remote_url' attribute to specify a full URL to the + download directory. In this case, you must still follow the same + subdirectory naming conventions as that used for the packages located + at 'http://downloads.digium.com/pub/telephony'. - This change makes it so when the API to execute a subroutine or - macro is invoked the channel is checked to determine if it has hung up. - If it has then a hangup is queued again so the caller will see it - and stop. + A new configure option '--with-externals-cache' was added and like + '--with-sounds-cache' it allows the installer to cache tarballs so + they're not downloaded every time. - ASTERISK-25690 #close + To assist with the download and install process, each external package + now has a manifest.xml file that, among other things, contains a package + version and checksums for each file in the tarball. The manifest is + saved to both the cache directory and ASTMODDIR and together with the + manifest.xml on the downloads site, tells the install scripts whether + a download and/or update is needed. - Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea + bash and xmlstarlet are required for downloader operation. If they're + not installed, the external items in menuselect will be unavailable. -2016-01-13 07:20 +0000 [79a7321a47] Sean Bright + Change-Id: Id3dcf1289ffd3cb0bbd7dfab3cafbb87be60323a - * res_musiconhold: Prevent multiple simultaneous reloads. +2016-08-18 14:45 +0000 [7bb7f7b9d5] Alexei Gradinari - There are two ways in which the reload() function in res_musiconhold can be - called from the CLI: + * res_pjsip_session: segfault on already disconnected session - * module reload res_musiconhold.so - * moh reload + On heavy loaded system the TCP/TLS incoming calls could be + disconnected by pjproject while these calls are being + processed by asterisk which could use the session's memory pools. + If the session in the disconnected state then the session memory + pools were already freed, so we get segfault. - In the former case, the module loader holds a lock that prevents multiple - concurrent calls, but in the latter there is no such protection. + This patch adds a lifetime control on an INVITE session to pjproject. + The lifetime of the session is manipulated by calling + pjsip_inv_add_ref/pjsip_inv_dec_ref. + This patch uses these functions to inform pjproject that the + session is in use. - This patch changes the 'moh reload' CLI command to invoke the module loader - directly, rather than call reload() explicitly. + This patch adds check if the session state is not disconnected + and also checks if the memory pool is not NULL. - ASTERISK-25687 #close + This patch also places tasks 'session_end' and 'session_end_completion' + into session's serializer to avoid race condition. - Change-Id: I408968b4c8932864411b7f9ad88cfdc7b9ba711c -2016-01-12 14:25 +0000 [1fffe71f77] Richard Mudgett + ASTERISK-26291 #close - * res_pjsip_log_forwarder.c: Add CLI "pjsip show buildopts". + Change-Id: I4d28b1fb3b91f0492a911d110049d670fdc3c8d7 - PJPROJECT has a function available to dump the compile time - options used when building the library. +2016-09-06 02:41 +0000 [d80b28560c] Walter Doekes - * Add CLI "pjsip show buildopts" command. + * chan_sip: Don't refuse calls with "optional crypto"; fall back to RTP. - * Update contrib/scripts/autosupport to get pjproject information. + Certain SNOM phones send so-called "optional crypto" in their SDP body. + Regular SRTP setup looks like this: - Change-Id: Id93a6a916d765b2a2e5a1aeb54caaf83206be748 + m=audio 64620 RTP/SAVP 8 0 9 99 3 18 4 101 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... -2016-01-12 10:36 +0000 [01c5e2a07e] Mark Michelson + SNOM-style "optional crypto" looks like this: - * res_sorcery_realtime: Remove leading ^ requirement. + m=audio 61438 RTP/AVP 8 0 9 99 3 18 4 101 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... - res_sorcery_realtime's search-by-regex callback performed a check to - ensure that the passed-in regex began with a caret (^). If it did not, - then no results would be returned. + A crypto line is supplied, but the m-line does not have SAVP. - This callback only started to become used when "like" support was added - to PJSIP CLI commands. The CLI command for listing objects would pass an - empty regex ("") to the sorcery backend if no "like" statement was - present. For most sorcery backends, this resulted in returning all - objects. However, for realtime, this resulted in returning no objects. + When res_srtp.so is *not* loaded, then chan_sip.so treats the optional + crypto as regular RTP, but when res_srtp.so *is* loaded, it refuses the + incoming call with the following message: - This commit seeks to fix the regression by removing the requirement from - res_sorcery_realtime for the passed-in-regex to begin with a caret. + WARNING: process_sdp: Failed to receive SDP offer/answer with + required SRTP crypto attributes for audio - ASTERISK-25689 #close - Reported by Marcelo Terres + For platforms that want to start providing SRTP this presents a + compatibility problem. - Change-Id: I22b4dc5d7f3f11bb29ac2e42ef94682e9bab3b20 + This changeset lets chan_sip handle the SDP as if no crypto-line was + supplied: i.e. accept the call as regular RTP, just like it did before + res_srtp was loaded. -2016-01-07 11:57 +0000 [a41aab477a] gtjoseph + Now you'll get this informative warning instead: - * pjsip_sdp_rtp: Add option endpoint/bind_rtp_to_media_address + WARNING: Ignoring crypto attribute in SDP because RTP transport is + insecure - On a system with multiple ip addresses in the same subnet, if a - transport is bound to a specific ip address and endpoint/media_address - is set, the SIP/SDP will have the correct address in all fields but - the rtp stream MAY still originate from one of the other ip addresses, - most probably the "primary" ip address. This happens because - res_pjsip_sdp_rtp/create_rtp always calls ast_instance_new with - the "all" ip address (0.0.0.0 or ::). + ASTERISK-23989 #close + Reported by: Olle Johansson - The new option causes res_pjsip_sdp_rtp/create_rtp to call - ast_rtp_instance_new with the endpoint's media_address (if specified) - instead of the "all" address. This causes the packets to originate from - the specified address. + Change-Id: I91a15ae05a0296e398d6b65f53bb11afde1d80e2 - ASTERISK-25632 - ASTERISK-25637 - Reported-by: Olivier Krief - Reported-by: Dan Journo +2016-09-03 16:04 +0000 [730cb3b0b7] Matt Jordan - Change-Id: I3dfaa079e54ba7fb7c4fd1f5f7bd9509bbf8bd88 + * apps/app_dial: Fix crash on non-connect call paths for Privacy/Screening option -2016-01-08 16:59 +0000 [7760029f19] Kevin Harwell + In any scenario in which the callee is not connected to the caller, the + current code in app_dial will crash due to raising a Dial End Stasis + Message after the callee channel has been hung up. This patch corrects + the error by simply moving the explicit hangup of the callee (peer) + channel until after the dial end message. - * pbx: Deadlock between contexts container and context_merge locks + ASTERISK-25691 #close - Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5) - introduced the possibility of a deadlock. Due to the mentioned modifications - ast_change_hints now needs to keep both merge/delete and state callbacks from - occurring while it executes. Unfortunately, sometimes ast_change_hints can be - called with the contexts container locked. When this happens it's possible for - another thread to grab the context_merge_lock before the thread calling into - ast_change_hints does and then try to obtain the contexts container lock. This - of course causes a deadlock between the two threads. The thread calling into - ast_change_hints waits for the other thread to release context_merge_lock and - the other thread is waiting on that one to release the contexts container lock. + Change-Id: I816a414014424d0d8c80e2a3cbef13ef8c63798d - Unfortunately, there is not a great way to fix this problem. When hints change, - the subsequent state callbacks cannot run at the same time as a merge/delete, - nor when the usual state callbacks do. This patch alleviates the problem by - having those particular callbacks (the ones run after a hint change) occur in a - serialized task. By moving the context_merge_lock to a task it can now safely be - attempted or held without a deadlock occurring. +2016-09-03 16:02 +0000 [6e1a3b924e] Matt Jordan - ASTERISK-25640 #close - Reported by: Krzysztof Trempala + * apps/app_dial: Set the DIALSTATUS to NOANSWER on privacy option 5 - Change-Id: If2210ea241afd1585dc2594c16faff84579bf302 + If the callee selects option '5' using the Dial application's privacy + (P) option, the DIALSTATUS is erroneously set to ANSWER. This option + reflects the callee sending the caller to VoiceMail one time; the call + is definitely *not* ANSWERed in such a scenario. With this patch, the + DIALSTATUS is instead set to NOANSWER, which is the same DIALSTATUS that + is set when the 'send to VoiceMail every time' option is set. -2016-01-10 17:08 +0000 [e9c2c1dc67] Corey Farrell + ASTERISK-25691 - * devicestate: Cleanup engine thread during graceful shutdown. + Change-Id: Iaf0c9f0fa00545e7366443875e2bb7d9a89a1358 - ASTERISK-25681 #close +2016-08-30 16:40 +0000 [68c7694abb] Richard Mudgett - Change-Id: I64337c70f0ebd8c77f70792042684607c950c8f1 + * res_pjsip_registrar.c: Reduce stack usage in find_aor_name(). -2016-01-10 13:51 +0000 [90c0dcaee4] Corey Farrell + Change-Id: I8aebad1fdcf303bd115b59a4b57fbbd5b2267f09 - * manager: Cleanup manager_channelvars during shutdown. +2016-08-29 18:06 +0000 [35ce4d25c7] Richard Mudgett - ASTERISK-25680 #close + * pjsip_configuration.c: Ignore repeated identify by methods. - Change-Id: I3251d781cbc3f48a6a7e1b969ac4983f552b2446 + Change-Id: Ied0c06043d1dfef8fdc9c9a808cf89b118119838 -2016-01-10 13:27 +0000 [a868a381f0] Corey Farrell +2016-08-30 17:26 +0000 [c1e438fdf7] Richard Mudgett - * res_calendar: Cleanup scheduler context at unload. + * config_global.c: Comments and a default expression adjustment. - ASTERISK-25679 #close + Change-Id: Ia6a58f8c73a30da6874b3f94364dce162d6f1ad3 - Change-Id: I839159bf6882cccc1b23494c7aa2bc2a2624613f +2016-08-31 15:14 +0000 [edcf09e47c] Richard Mudgett -2016-01-08 11:49 +0000 [a1c43022d2] Joshua Colp + * sip_to_pjsip.py: Map canreinvite as directmedia alias. - * res_rtp_asterisk: Revert DTLS negotiation changes. + Change-Id: I48b8e150f96a3d2a24d8fc25fbe4f5aff9f4a6b2 - Due to locking issues within pjnath these changes are being - reverted until pjnath can be changed. +2016-08-31 15:37 +0000 [47336a0bdd] Richard Mudgett - ASTERISK-25645 + * sip_to_pjsip.py: Fix typo converting outboundproxy registration. - Revert "res_rtp_asterisk.c: Fix DTLS negotiation delays." + Change-Id: I6f30e5f9fcf8469ba0079fbf884047d54c2c0b15 - This reverts commit 24ae124e4f7310cfa64c187b944b2ffc060da28d. +2016-08-31 15:13 +0000 [dba02575fc] Richard Mudgett - Change-Id: I2986cfb2c43dc14455c1bcaf92c3804f9da49705 + * sip_to_pjsip.py: Fix comment typo and tabs. - Revert "res_rtp_asterisk: Resolve further timing issues with DTLS negotiation" + Change-Id: If35174614545727817d329c60ba4456c028941b5 - This reverts commit 965a0eee46d24321f74c244e23c5a5f45e67e12b. +2016-08-31 15:56 +0000 [4aaa27e532] Richard Mudgett - Change-Id: Ie68fafde27dad4b03cb7a1e27ce2a8502c3f7bbe + * Sample configs: Eliminate false multiline comment block starts. -2016-01-09 17:57 +0000 [220ba979cf] gtjoseph + Change-Id: Ie627def9604ae30abd80754f9e6f09874825aec6 - * Revert "pjsip_location: Delete contact_status object when contact is deleted" +2016-09-02 11:36 +0000 [c3b965a2c0] Richard Mudgett - This reverts commit 0a9941de9d24093b5ff44096d1d7406f29d11e45. + * format_cap.c: Fix CLI "core show channeltype Surrogate" crash. - Matt, + * Make ast_format_cap_get_names() NULL tolerant. - This patch causes another problem and should not have been needed. - Before this patch, persistent_endpoint_contact_deleted_observer WAS - deleting the contact_status when ast_sip_location_delete_contact was - called. By deleting it yourself in ast_sip_location_delete_contact - it was gone before the observer could run and the observer therefore - was throwing an error and not sending stasis/AMI/statsd messages. + ASTERISK-26331 #close + Reported by: CGI.NET - So, I don't think this was the cause of your original issue. I also - had verified the contact AMI and statsd lifecycle and it was working. - I'll double check now though. + Change-Id: Id67e93936dc8ec2a33a9d33655843d43b59285a3 - ASTERISK-25675 - Reported-by: Daniel Journo +2016-08-26 17:22 +0000 [e875e1c12a] Corey Farrell - Change-Id: Ib586a6b7f90acb641b0c410f659743ab90e84f1a + * sorcery: Create function ast_sorcery_lockable_alloc. -2016-01-09 18:04 +0000 [26e0e113dc] Corey Farrell + Create an alternative to ast_sorcery_generic_alloc which uses astobj2 + shared locking. Use this new method for the 'struct ast_sip_aor' allocator. - * pbx_dundi: Run cleanup on failed load. + Change-Id: I3f62f2ada64b622571950278fbb6ad57395b5d6f - During failed startup of pbx_dundi no cleanup was performed. Add a call - to unload_module before returning AST_MODULE_LOAD_DECLINE. +2016-08-18 13:28 +0000 [131baf70d6] Corey Farrell - ASTERISK-25677 #close + * named_locks: Use ao2_weakproxy to deal with cleanup from container. - Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29 + This allows standard ao2 functions to be used to release references to + an ast_named_lock. This change can cause less frequent locking of the + global named_locks container. The container is no longer locked when a + named_lock reference is being release except when this causes the + named_lock to be destroyed. -2016-01-09 13:28 +0000 [dc2c000fd5] Corey Farrell + Change-Id: I644e39c6d83a153d71b3fae77ec05599d725e7e6 - * res_crypto: Perform cleanup at shutdown. +2016-08-26 13:18 +0000 [0c5b6e9ff5] Corey Farrell - This change causes res_crypto to unregister CLI at shutdown while still - preventing the module from being unloaded. + * astobj2: Support using a separate object for locking. - ASTERISK-25673 #close + Create ao2_alloc_with_lockobj function to support shared locking. - Change-Id: Ie5d57338dc2752abfc0dd05d0eec86413f2304fc + Change-Id: Iba687eb9843922be7e481e23a32c0700ecf88a80 -2016-01-06 19:10 +0000 [0bca2a5c26] Richard Mudgett +2016-08-31 12:23 +0000 [48fd4c815c] Michael Kuron - * res_pjsip: Create human friendly serializer names. + * app_mp3: Use correct buffer size and the same sample rate as the channel - PJSIP name formats: - pjsip/aor/- -- registrar thread pool serializer - pjsip/default- -- default thread pool serializer - pjsip/messaging -- messaging thread pool serializer - pjsip/outreg/- -- outbound registration thread pool - serializer - pjsip/pubsub/- -- pubsub thread pool serializer - pjsip/refer/- -- REFER thread pool serializer - pjsip/session/- -- session thread pool serializer - pjsip/websocket- -- websocket thread pool serializer + Previously, the buffer used for MP3 streamed from HTTP servers had a size of + 1 MB. For 8 kHz mono audio at 16 bit resolution, such a buffer covers about 1 + minute. Only when the buffer is full does audio start to play. + For MP3 files streamed from a server, that is usually not a big deal as long as + the connection to the server is fast enough to supply that much data within a + second or two. For MP3 live streams however, it takes 1 minute to download 1 + minute of audio, so without this change, app_mp3 wasn't really usable for MP3 + live streams. + This commit changes the buffer size so that it covers 6 seconds of an MP3 file + streamed from a server and 0.5 seconds of an MP3 live stream. The latter is + identified by the use of a .m3u file extension. - Change-Id: Iff9df8da3ddae1132cb2ef65f64df0c465c5e084 + app_mp3 so far only supported 8 kHz audio. + Now it always runs at the sample rate of the channel. -2016-01-06 19:09 +0000 [f0f5fbbc01] Richard Mudgett + ASTERISK-26085 #close - * Sorcery: Create human friendly serializer names. + Change-Id: Id1ee274733cd804a0edecf7450329b72f1235af0 - Sorcery name formats: - sorcery/- -- Sorcery thread pool serializer +2016-08-31 05:33 +0000 [91993ebaa5] Jean Aunis - Change-Id: Idc2e5d3dbab15c825b97c38c028319a0d2315c47 + * resource_channels.c: add hangup reason "answered_elsewhere". -2016-01-06 19:09 +0000 [b1c7ae9afc] Richard Mudgett + In ARI, the channels API allows to hangup a channel with a hangup reason. + This commit adds a new reason "answered_elsewhere". + When using a SIP channel, this will eventually allow Asterisk to add a proper + "Reason" header to a CANCEL message. - * Stasis: Create human friendly taskprocessor/serializer names. + ASTERISK-26321 - Stasis name formats: - subm:- -- Stasis subscription mailbox task processor - subp:- -- Stasis subscription thread pool serializer + Change-Id: Ia97675bd4acd6a7f58eb467953dfb94559f6583d - Change-Id: Id19234b306e3594530bb040bc95d977f18ac7bfd +2016-08-26 10:39 +0000 [faf9bdebb7] Alexei Gradinari -2016-01-07 16:15 +0000 [3e857bb347] Richard Mudgett + * res_pjsip: qualify/unqualify added/deleted realtime endpoints - * taskprocessor.c: New API for human friendly taskprocessor names. + If the PJSIP endpoint's AOR with the permanent contact + was deleted from the realtime storage the res_pjsip module + continues trying to qualify this contact. + The error 'Unable to find an endpoint to qualify contact' + appeares every 'qualify_frequency' seconds. + This patch deletes this contact in this case. - * Add new API call to get a sequence number for use in human friendly - taskprocessor names. + The PJSIP endpoint's AOR with the permanent contact + is never qualified if it is added to realtime storage + after asterisk started. + This patch adds qualifying for the AOR's permanent contacts + on the first handling of this AOR. - * Add new API call to create a taskprocessor name in a given buffer and - append a sequence number. + ASTERISK-26319 #close - Change-Id: Iac458f05b45232315ed64aa31b1df05b875537a9 + Change-Id: Ib93dded9121edb113076903d1aa95402f799f8fe -2016-01-06 17:19 +0000 [84c245d38c] Richard Mudgett +2016-08-22 17:08 +0000 [c98a047ee6] Mark Michelson - * taskprocessor.c: Fix CLI "core show taskprocessors" output format. + * res_pjsip: Default endpoints to the "offline" status. - Update the CLI "core show taskprocessors" output format to not be - distorted because UUID names are longer than previously used taskprocessor - names. - - Change-Id: I1a5c82ce3e8f765a0627796aba87f8f7be077601 - -2016-01-07 21:07 +0000 [7d86979ea0] Richard Mudgett + A recent change attempted to optimize startup by not updating contact + status. Instead, code responsible for qualifying contacts updates the + status as it becomes known. The code even accounts for contacts/AORs + that are not set to be qualified. - * taskprocessor.c: Fix CLI "core show taskprocessors" unref. + The problem, though, is when there are no contacts associated with an + endpoint. A common case is when an endpoint is set to register its + contacts but has not done so yet. In this case, prior to registration, + the endpoint's device state will appear to be "not in use" and hints + associated with that device will appear to be "idle". In actuality, the + device state and hint should both appear as "unavailable". The reason + for the failure is that the optimization change made all persistent + endpoint states set to "unknown". - Change-Id: I1d9f4e532caa6dfabe034745dd16d06134efdce5 + The fix here is to change the hard-coded "unknown" to be "offline" + instead. The default state will be offline until the qualifying code + determines that the contact is actually online. This way, if there are + no contacts at all, then the state stays as offline, and device state + and hints appear correctly. -2016-01-06 19:00 +0000 [1fb39aa8a0] Richard Mudgett + ASTERISK-26269 #close + Reported by nappsoft - * ccss.c: Replace space in taskprocessor name. + Change-Id: Ie99b84169393983453076f5e9c0d35ff313a456a - The CLI "core ping taskprocessor" command does not work very - well with taskprocessor names that have spaces in them. You - have to put quotes around the name so using tab completion - becomes awkward. +2016-08-29 07:07 +0000 [5e0758575c] Etienne Lessard - Change-Id: I29e806dd0a8a0256f4e2e0a7ab88c9e19ab0eda0 + * pbx.c: Prevent infinite recursion in manager_show_dialplan_helper. -2016-01-07 20:44 +0000 [71bb7b9c40] Richard Mudgett + Previously, if context A was including context B and context B was including + context A, i.e. if there was a circular dependency between contexts, then + calling manager_show_dialplan_helper could lead to an infinite recursion, + resulting in a crash. - * taskprocessor.c: Sort CLI "core show taskprocessors" output. + This commit applies the same solution as the one implemented in the + show_dialplan_helper function. The manager_show_dialplan_helper and + show_dialplan_helper functions contain lots of code in common, but the former + was missing the "infinite recursion avoidance" code. - Change-Id: I71e7bf57c7b908c8b8c71f1816348ed7c5a5d51e + ASTERISK-26226 #close -2016-01-05 16:54 +0000 [b025e1982f] Richard Mudgett + Change-Id: I1aea85133c21787226f4f8442253a93000aa0897 - * taskprocessor.c: Add CLI "core ping taskprocessor" missing unlock. +2016-08-25 07:06 +0000 [c21e6764f1] Joshua Colp - Change-Id: I78247e0faf978bf850b5ba4e9f4933ab3c59d17b + * app_queue: Ensure member is removed from pending when hanging up. -2015-12-16 11:25 +0000 [c5e16fe33a] Mark Michelson + When dialing channels it is possible that they may not ever + leave the not in use state (Local channels in particular) by + the time we cancel them. If this occurs but we know they were + dialed we explicitly remove them from the pending members + container so that subsequent call attempts occur. - * Alembic: Add PJSIP global keep_alive_interval. + ASTERISK-26299 #close - The keep_alive_interval option was added about a year ago, but no - alembic revision was created to add the appropriate column to the - database. + Change-Id: I6ad0d17c36480c92cebf840626228ce3f7e4bd65 - This commit fixes the problem and adds the column. This was discovered - by running the testsuite with automatic conversion to realtime enabled. +2016-08-26 14:34 +0000 [a7487e9261] George Joseph - Change-Id: If3ef92a7c4f4844d08f8aae170d2178aec5c4c1a + * pjproject_bundled: Disable srtp use by pjmedia -2016-01-07 03:21 +0000 [6745cd6529] Diederik de Groot + The reason for the disable is that while Asterisk works fine with older + libsrtp versions, newer versions of pjproject won't compile with them. + Debian 6 for instance, has libsrtp 1.4.4 which is older than what + pjproject is expecting. - * include/asterisk/time.h: Renamed global declaration:tv + We don't use most of pjmedia but we DO use it for SDP negotiation. + Luckily disabling srtp in pjmedia doesn't interfere with it's ability + to negitiate a secure channel. The proper crypto attributes are + negotiated in both directions. - Renamed global declaration:tv to dummy_tv_var_for_types, - which would oltherwise cause 'shadow' warnings when 'tv' - was declared as a local variable elsewhere. + ASTERISK-26279 #close - Added comment to note that dummy_tv_var_for_types is never - really exported and only used as a place holder. + Change-Id: Id25a92cdf3df97a26c53cffae65b6b82de33c8e2 - ASTERISK-25627 #close +2016-08-26 08:41 +0000 [858fa5eb2c] Alexander Traud - Change-Id: I9a6e17995006584f3627efe8988e3f8aa0f5dc28 + * channel: No hung-up on failing security requirements. -2016-01-07 15:37 +0000 [1afc8432dc] Mark Michelson + In your Diaplan, if you specify + same => n,Set(CHANNEL(secure_bridge_media)=1) + same => n,Set(CHANNEL(secure_bridge_signaling)=1) + only the SIP channel driver chan_sip supports this. All other channels drivers + like res_pjsip fail. In case of failure, the original sRTP source code released + the whole channel, even if not hung-up, yet. This change does not release the + channel but instead hangs-up the channel. - * PJSIP: Prevent deadlock due to dialog/transaction lock inversion. + ASTERISK-26306 - A deadlock was observed where the monitor thread was stuck, therefore - resulting in no incoming SIP traffic being processed. + Change-Id: I0489f0cb660fab6673b0db8af027d116e70a66db - The problem occurred when two 200 OK responses arrived in response to a - terminating NOTIFY request sent from Asterisk. The first 200 OK was - dispatched to a threadpool worker, who locked the corresponding - transaction. The second 200 OK arrived, resulting in the monitor thread - locking the dialog. At this point, the two threads are at odds, because - the monitor thread attempts to lock the transaction, and the threadpool - thread loops attempting to try to lock the dialog. +2016-08-20 09:04 +0000 [f35501b8c9] Alexander Traud - In this case, the fix is to not have the monitor thread attempt to hold - both the dialog and transaction locks at the same time. Instead, we - release the dialog lock before attempting to lock the transaction. + * sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations. - There have also been some debug messages added to the process in an - attempt to make it more clear what is going on in the process. + When using the migration script sip_to_pjsip.py, and your sip.conf is + configured with bindaddr=::, two transports are written to pjsip.conf, one for + 0.0.0.0 (IPv4) and one for [::] (IPv6). That way, PJProject listens on the IPv4 + and IPv6 wildcards; a IPv4/IPv6 Dual Stack configuration on a single interface + like in chan_sip. - ASTERISK-25668 #close - Reported by Mark Michelson + Furthermore, the script internal functions "build_host" and "split_hostport" + did not parse Literal IPv6 addresses as expected (like [::1]:5060). This change + makes sure, even such addresses are parsed correctly. - Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a + ASTERISK-26309 -2016-01-07 09:39 +0000 [5d8c42c6d3] Corey Farrell + Change-Id: Ia4799a0f80fc30c0550fc373efc207c3330aeb48 - * ast_format_cap_append_by_type: Resolve codec reference leak. +2016-08-04 20:11 +0000 [ea929d766d] Richard Mudgett - This resolves a reference leak caused by ASTERISK-25535. The pointer - returned by ast_format_get_codec is saved so it can be released. + * res_pjsip: Cache global config options. - ASTERISK-25664 #close + We may check a global config option hundreds of times a second or more. + Asking sorcery for the global configuration from the config files backend + involves several allocations and container traversals. Using realtime + without a memory cache is a lot worse because you have to lookup in the + realtime database each time to reconstitute the sorcery object. With a + memory cache for realtime, there is about the same amount of overhead as + for config files. Either way, it is still fairly expensive to access the + sorcery object that much. - Change-Id: If9941b1bf4320b2c59056546d6bce9422726d1ec + * Cache the global config options so we can access them faster. You must + now always perform a res_pjsip reload to change the global options. -2016-01-07 03:33 +0000 [7856762f2f] Diederik de Groot + Change-Id: Ice16c7a4cbca4614da344aaea21a072b86263ef7 - * main: Use ast_strdup instead of strdup +2016-08-23 11:02 +0000 [5eb6cb969f] Richard Mudgett - Fix compile error in main/utils.c because strdup was used in dummy_start + * res_fax: Fix deadlock in ast_channel_get_t38_state(). - Change-Id: Id61a6cf4f3cbf235450441e10e7da101a6335793 + ast_channel_get_t38_state() calls ast_channel_queryoption() with + AST_OPTION_T38_STATE. If the passed in channel is a local channel then a + deadlock can happen if a channel lock is held when called. -2016-01-06 07:12 +0000 [64b2046f3d] Walter Doekes + * Made ast_channel_get_t38_state() callers not hold a channel lock before + calling. - * Add sipp-sendfax.xml and spandspflow2pcap.py to contrib/scripts. + * Update ast_channel_get_t38_state() doxygen to note that no channel locks + can be held when calling the function. - The spandspflow2pcap.py creates pcap files from fax.log files, generated - through 'fax set debug on' when receiving a fax. An example fax.log is - included as spandspflow2pcap.log. + ASTERISK-26203 #close + Reported by: Etienne Lessard - The sipp-sendfax.xml SIPp scenario can be used to replay that fax with a - recent version of SIPp. + ASTERISK-24822 #close + Reported by: David Brillert - ASTERISK-25660 #close + ASTERISK-22732 #close + Reported by: Richard Mudgett - Change-Id: I4de8f28b084055b482ab8a5b28d28b605b0ed526 + Change-Id: I49fd76fa9af628b4198009b5c0b82c8b03681214 -2016-01-04 04:26 +0000 [084563e136] Aaron An +2016-08-23 10:39 +0000 [277a2d667a] Richard Mudgett - * cel/cel_radius: Fix wrong pointer. + * res_fax: Fix deadlock setting FAXMODE channel variable. - The macro ADD_VENDOR_CODE defined in the cel_radius.c should use the parameter - y not the address of y. + ASTERISK-25980 added the FAXMODE channel variable to res_fax.c. + Unfortunately, it also introduced a deadlock potential because + set_channel_variables() which sets FAXMODE can be called during a + masquerade. The ast_channel_get_t38_state() which gets the value used to + set FAXMODE cannot be called with the channel locked. As a result, local + channels can deadlock because of how they must acquire the locks necessary + to operate. - I capture the radius UDP packet via tcpdump, and the AV pairs are not correct, - then i review the source code and compare it with cdr/cdr_radius.c. Fix it and - it works. + The intent of FAXMODE is for dialplan to know how a fax was transferred + after the fax completes. However, the previous patch sets FAXMODE to the + channel's current T.38 state AFTER the fax has completed and where T.38 + may have already disconnected. - ASTERISK-25647 #close - Reported by: Aaron An - Tested by: Aaron An + * Set FAXMODE based upon T.38 negotiations exchanged either with the fax + applications or the fax framehooks. - Change-Id: I72889bccd8fde120d47aa659edc0e7e6d4d019f0 + ASTERISK-26203 + Reported by: Etienne Lessard -2016-01-04 20:23 +0000 [36f1eaf0b5] Corey Farrell + ASTERISK-24822 + Reported by: David Brillert - * main/pbx: Move hangup handler routines to pbx_hangup_handler.c. + ASTERISK-22732 + Reported by: Richard Mudgett - This is the sixth patch in a series meant to reduce the bulk of pbx.c. - This moves hangup handler management functions to their own source. + Change-Id: Id525747254b64c1efe8b1b5973d52ff9719c2ae1 - Change-Id: Ib25a75aa57fc7d5c4294479e5cc46775912fb104 +2016-08-22 12:31 +0000 [edca14c8a5] Richard Mudgett -2015-12-21 11:07 +0000 [90b06d1a3c] Martin Tomec + * res_fax.c: Fix deadlock in fax_gateway_indicate_t38(). - * app_queue: Add member flag "in_call" to prevent reading wrong lastcall time + fax_gateway_indicate_t38() calls ast_indicate_data() which cannot be + called with any channel locks already held. A deadlock can happen if the + function is operating on a local channel. - Member lastcall time is updated later than member status. There was chance to - check wrapuptime for available member with wrong (old) lastcall time. - New boolean flag "in_call" is set to true right before connecting call, and - reset to false after update of lastcall time. Members with "in_call" set to true - are treat as unavailable. + * Made fax_gateway_indicate_t38() unlock the channel before calling + ast_indicate_data() since fax_gateway_indicate_t38() is always called with + the channel locked. - ASTERISK-19820 #close + * Made fax_gateway_indicate_t38() return void since nothing cared about + its return value. - Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500 + ASTERISK-26203 + Reported by: Etienne Lessard -2016-01-04 19:46 +0000 [3507494b8a] Corey Farrell + ASTERISK-24822 + Reported by: David Brillert - * main/pbx: Move dialplan application management routines to pbx_app.c. + ASTERISK-22732 + Reported by: Richard Mudgett - This is the sixth patch in a series meant to reduce the bulk of pbx.c. - This moves dialplan application management functions to their own source. + Change-Id: I701ff2d26c5fc23e0d5a48a3fd98759a9fd09407 - Change-Id: I444c10fb90a3cdf9f3047605d6a8aad49c22c44c +2016-08-23 11:16 +0000 [141cd42880] Richard Mudgett -2016-01-04 18:20 +0000 [54a8f1a396] Corey Farrell + * res_fax.c: Add chan locked precondition comments. - * main/pbx: Move switch routines to pbx_switch.c. + Change-Id: Ic10ae434536bbf7fb7055d6ab36cc50b8748a4e7 - This is the fifth patch in a series meant to reduce the bulk of pbx.c. - This moves ast_switch functions to their own source. +2016-08-23 10:42 +0000 [b86771d1bf] Richard Mudgett - Change-Id: Ic2592a18a5c4d8a3c2dcf9786c9a6f650a8c628e + * ast_framehook_detach() must be called with the channel locked. -2016-01-04 18:00 +0000 [c3c8b8e41d] Corey Farrell + The framehook container could become corrupted if the channel lock is not + held before calling. - * main/pbx: Move timing routines to pbx_timing.c. + Change-Id: If0a1c7ba0484ed3a191106a7516526b905952584 - This is the fourth patch in a series meant to reduce the bulk of pbx.c. - This moves pbx timing functions to their own source. +2016-08-22 15:01 +0000 [5744f434f0] Richard Mudgett - Change-Id: I05c45186cb11edfc901e95f6be4e6a8abf129cd6 + * ast_framehook_attach() must be called with the channel locked. -2015-12-30 10:49 +0000 [6d18fe151c] gtjoseph + The framehook container could become corrupted if the channel lock is not + held before calling. - * voicemail: Move app_voicemail / res_mwi_external conflict to runtime + Change-Id: I1a6b957a1f7b899eb29a186915f8cccab886a438 - The menuselect conflict between app_voicemail and res_mwi_external - makes it hard to package 1 version of Asterisk. There no actual - build dependencies between the 2 so moving this check to runtime - seems like a better solution. +2016-08-17 02:51 +0000 [93b7533d74] chris de rock - The ast_vm_register and ast_vm_greeter_register functions in app.c - were modified to return AST_MODULE_LOAD_DECLINE instead of -1 if there - is already a voicemail module registered. The modules' load_module - functions were then modified to return DECLINE instead of -1 to the - loader. Since -1 is interpreted by the loader as AST_MODULE_LOAD_FAILURE, - the modules were incorrectly causing Asterisk to stop so this needed - to be cleaned up anyway. + * app_macro: Consider '~~s~~' as a macro start extension. - Now you can build both and use modules.conf to decide which voicemail - implementation to load. + As described in issue ASTERISK-26282 the AEL parser creates macros with + extension '~~s~~'. app_macro searches only for extension 's' so the + created extension cannot be found. with this patch app_macro searches for + both extensions and performs the right extension. - The default menuselect options still build app_voicemail and not - res_mwi_external but if both ARE built, res_mwi_external will load - first and become the voicemail provider unless modules.conf rules - prevent it. This is noted in CHANGES. + ASTERISK-26282 #close - Change-Id: I7d98d4e8a3b87b8df9e51c2608f0da6ddfb89247 + Change-Id: I939aa2a694148cc1054dd75ec0c47c47f47c90fb -2016-01-04 16:15 +0000 [5ee5c3739e] Corey Farrell +2016-08-24 04:44 +0000 [d2e03c252d] Eugene - * main/pbx: Move variable routines to pbx_variables.c. + * chan_iax2: Set plaintext auth to deprecated as per ASTERISK-22820 - This is the third patch in a series meant to reduce the bulk of pbx.c. - This moves channel and global variable routines to their own source. + Starting from draft 2 of RFC 5456 (October 23, 2006) plaintext auth + is not supported in IAX2 protocol. Please refer to section 8.6.13 of + RFC 5456. - Change-Id: Ibe8fb4647db11598591d443a99e3f99200a56bc6 + But plaintext auth is still supported by Asterisk implementation of IAX2. + This support should be dropped. -2015-12-04 17:22 +0000 [f88b952093] Richard Mudgett + Patch, based on asterisk-dev discussion, adds deprecation warning on + startup if 'auth' is set to 'plaintext', changes default values of + 'auth' from 'md5, plaintext' to 'md5'. - * app_dial: Immediately exit dial if the caller is already hung up. + Patch is safe in terms of backwards compatibility, will work even if + remote peers have auth=plaintext and we have defaults. - If a caller hangs up before dial is executed within an AGI then the AGI - has likely eaten all queued frames before executing the dial in DeadAGI - mode. With the caller hung up and no pending frames from the caller's - read queue, dial would not know that the call has hung up until a called - channel answers. It is rather annoying to whoever just answered the - non-existent call. + auth=plaintext setting will remain deprecated in Asterisk 14 and 15, + and IAX2 plaintext support will be removed in Asterisk 16. - Dial should not continue execution in DeadAGI mode, hangup handlers, or - the h exten. + ASTERISK-22820 #close - * Added a check early in dial to abort dialing if the caller has hungup. + Change-Id: I5d2f3830cb57645604818f87518916e8a5c317bf - ASTERISK-25307 #close - Reported by: David Cunningham +2016-08-24 14:42 +0000 [e40aa40aca] George Joseph - Change-Id: Icd1bc0764726ef8c809f76743ca008d0f102f418 + * res_rtp_multicast: Fix SEGV in ast_multicast_rtp_create_options -2016-01-02 10:26 +0000 [e9dd16364e] Matt Jordan + ast_multicast_rtp_create_options now checks for NULL or empty options - * main/cdr: Allow setting properties on a finalized CDR if it is the last one + Change-Id: Ib845eae46a67a9787e89a87ebd1027344e5e0362 - Prior to this patch, we explicitly disallowed setting any properties on a - finalized CDR. This seemed like a good idea at the time; in practice, it was - more restrictive. +2016-07-19 13:14 +0000 [2e79f52d71] Alexander Traud - There are weird and strange scenarios where setting a property on a finalized - CDR is definitely wrong. For example, we may Fork a CDR, finalizing the - previous one, then change a property. In said case, the old CDR is supposed - to now be 'immutable' (so to speak), and should not be updated. From the - perspective of the code, a forked CDR that is finalized is just finalized. - Hence why we decided these should not be updated. + * codecs: Add Codec 2 mode 2400. - In practice, it is much more common to want to set a property on a CDR in - the h extension or in a hangup handler. Disallowing a common scenario to make - an esoteric behaviour work isn't good. This patch fixes this by allowing - callers to set a property IF we are the last CDR in the chain. This preserves - the finalized CDR if it was forked, while allowing the more common case to - function. + ASTERISK-26217 #close - ASTERISK-25458 #close + Change-Id: I1e45d8084683fab5f2b272bf35f4a149cea8b8d6 - Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9 +2016-08-10 15:14 +0000 [ded22c712a] Mark Michelson -2016-01-02 10:23 +0000 [153547a9b1] Matt Jordan + * ConfBridge: Rework announcer channel methodology - * main/cdr: Set the end time on a CDR if endbeforehexten is Yes + NOTE: This patch was submitted earlier and reverted because of a failing + test. The test has been patched so that it adjusts for the changes here, + so this is being resubmitted for review. - Prior to this patch, the CDR engine attempted to set the end time on a CDR - that was executing hangup logic and with endbeforehexten set to Yes by - calling a function that inspects the properties on the Party A snapshot to - determine if we are ready to set the end time. That always failed. This is - because a Party A snapshot is not updated for CDRs that are executing hangup - logic with endbeforehexten=Yes. + One feature that confbridge has is the ability to play sounds to all + participants in the conference. Prior to this commit, the algorithm for + this was as follows: - Instead of calling a function that looks at the Party A snapshot, we just - simply set the end time on the CDR. This is safe to call multiple times, and is - safe to call at this point as we know that (a) we are executing hangup logic, - and (b) we are supposed to set the end time at this point. + * Grab the playback lock + * Push the conference announcer channel into the bridge + * Play back the sound + * Pull the conference announcer channel from the bridge + * Release the playback lock - ASTERISK-25458 + The issue here is that the act of adding the playback channel to the + bridge and removing it for each announcement is expensive. Amongst the + expenses: - Change-Id: I0c27b493861f9c13c43addbbb21257f79047a3b3 + * The announcer channel is imparted into the bridge, meaning a new + thread is spun up for each playback. + * When the announcer is added or removed from the bridge, it results + in the BRIDGEPEER channel variable being set on all channels in the + bridge. This requires keeping the bridge locked and locking each + individual channel in order to set it. + * There's also just the general overhead of adding the channel and + removing it from the bridge. The bridge potentially has to reconfigure + every single time -2015-12-30 20:51 +0000 [f9bfc2450e] Corey Farrell + With this commit, the paradigm for playing back announcements has + shifted. - * main/pbx: Move custom function routines to pbx_functions.c. + * The announcer channel is now added to the bridge when the conference + is allocated, and it is hung up when the conference is destroyed. + * A taskprocessor is used to queue playbacks onto the announcer channel. + This keeps the behavior from before where playbacks do not overlap. + * The announcer channel is no longer placed into the bridge as + departable. Since we are not constantly removing the channel from + the bridge, it is safe to add the channel using an independent thread + and simply hang the channel up when it is time for the conference to + be destroyed. - This is the second patch in a series meant to reduce the bulk of pbx.c. - This moves custom function management routines to their own source. + The use of the taskprocessor for playbacks opens up the interesting + possibility of having asynchronous announcements played. In this commit, + however, the behavior is still exactly the same as it previously was. - Change-Id: I34a6190282f781cdbbd3ce9d3adeac3c3805e177 + ASTERISK-26289 + Reported by Mark Michelson -2016-01-01 05:25 +0000 [3fd528dddf] Rodrigo Ramírez Norambuena + Change-Id: Ica9fa4907c2f3728cdd1cf0bc564ef4eb40754a0 - * Happy new year 2016. +2016-08-23 05:54 +0000 [065d810d3f] Joshua Colp - Change-Id: I22d3c90f6f27df82e915bbf81c1d91221f7a945e + * Revert "ConfBridge: Rework announcer channel methodology" -2015-12-13 13:09 +0000 [9cdf3ec19d] Matt Jordan + This reverts commit 5aa877305223faab5a1119276a934893ab9dc138. - * res_pjsip_history: Add a module that provides PJSIP history for debugging + Change-Id: I9ab45776e54a54ecf1bac9ae62d976dec30ef491 - This patch adds a new module, res_pjsip_history, that provides a slightly - better way of debugging SIP message traffic on a busy Asterisk system. The - existing mechanisms all rely on passively dumping a SIP message to the CLI. - While this is perfectly fine for logging purposes and well controlled - environments, on many installations, the amount of SIP messages Asterisk - receives will quickly swamp the CLI. This makes it difficult to view/capture - those messages that you want to diagnose in real time. +2016-08-19 10:21 +0000 [41ee14bfae] Alexei Gradinari - This patch provides another way of handling this. When enabled, the module - will store SIP message traffic in memory. This traffic can then be queried - at leisure. + * compilation failed with -Werror=maybe-uninitialized - In order to make the querying useful, a CLI command has been implemented, - 'pjsip show history', that supports a basic expression syntax similar to - SQL or other query languages. A small number of useful fields have been - added in this initial patch; additional fields can easily be added in - later improvements. Those fields are: - - number: The entry index in the history - - timestamp: The time the message was recieved - - addr: The source/destination address of the message - - sip.msg.request.method: The request method - - sip.msg.call-id: The Call-ID header + The compilation failed for devmode + --enable DONT_OPTIMIZE + --enable BETTER_BACKTRACES + --enable DO_CRASH + --enable TEST_FRAMEWORK - Note - this is a resurrection of the module initially proposed on Review Board - here: https://reviewboard.asterisk.org/r/4053/ + res_pjsip/pjsip_configuration.c: In function dtls_handler: + res_pjsip/pjsip_configuration.c:974:20: error: + back may be used uninitialized in this function [-Werror=maybe-uninitialized] + int size = strlen(front); + ^ + cc1: all warnings being treated as errors - Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36 + Change-Id: I7f082ead0312792a577ec7c73015ba64dabca580 -2015-12-28 19:18 +0000 [5e67e51c6a] gtjoseph +2016-08-20 14:51 +0000 [eb0c9c476f] David M. Lee - * main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c + * res_odbc_transaction: add dep on generic_odbc - We joked about splitting pbx.c into multiple files but this first step was - fairly easy. All of the pbx_builtin dialplan applications have been moved - into pbx_builtins.c and a new pbx_private.h file was added. load_pbx_builtins() - is called by asterisk.c just after load_pbx(). + When res_odbc_transaction depended on res_odbc, it got the generic_odbc + headers and libs implicitly. Now that it no longer depends on res_odbc, + its dependency on generic_odbc must be explicit. - A few functions were renamed and are cross-exposed between the 2 source files. + Change-Id: I9db88f7af7388437f49903d3008ba8d4890d5911 - Change-Id: I87066be3dbf7f5822942ac1449d98cc43fc7561a +2016-08-20 11:18 +0000 [12752c64cc] Alexander Traud -2015-12-28 14:02 +0000 [a05bb258b1] Joshua Colp + * pjproject_bundled: Allow IPv4/IPv6 (Dual Stack) configurations. - * test_time: Provide a timeout when waiting. + PJProject supports a lot of platforms even Windows, some with different defaults + when it comes to IPv6. In many Linux platforms like Ubuntu 16.04 LTS, + "/proc/sys/net/ipv6/bindv6only" is set to 0 (false). Different than in Windows. - The test_timezone_watch unit test is written to expect a - condition to be signaled when the inotify daemon thread runs. - There exists a small window where the test_timezone_watch - thread can signal the inotify daemon thread while it is not - reading on the underlying file descriptor. If this occurs - the test_timezone_watch thread will wait indefinitely for a - signal that will never arrive. + Because of this, if configured with just an IPv6 address/transport, PJProject + listens to both IPv4 and IPv6. However, this is not supported by the PJProject + team. As consequence, you end-up with IPv4-mapped IPv6 addresses in SDP, + incompatible with IPv4-only clients. Technically, you end-up with an IPv6-only + server which accepts incoming connections on IPv4. - This change adds a timeout to the condition so it will return - regardless after a period of time. + If you try to configure two transports, one with IPv4 and one with IPv6 on the + same interface, as expected by the PJProject team, the IPv4 transport is not + able to bind because the IPv6 transport listens to both already. - Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390 + One solution would be to change "/proc/sys/net/ipv6/bindv6only" system-wide. + Then, you are able to configure two transports, one for each IP version on the + same interface. That way, you get a server which works with IPv4 clients and + IPv6 clients at the same time over the same interface. -2015-12-24 20:26 +0000 [96b32e0321] Matt Jordan + Here, this change sets this parameter directly within PJProject to match the + expectations of the PJProject team in any case. This allows IPv4/IPv6 Dual Stack + servers out of the box like in chan_sip. This change was accepted by the + PJProject team as and is expected + to arrive in the next version, PJProject 2.6.0. Until then, this change is + incorporated in the bundled PJProject of Asterisk. - * tests/test_stasis_endpoints: Remove expected duplicate events + ASTERISK-26309 - The cache_clear test was written to expect duplicate Stasis messages - sent from the technology endpoint to the all caching topic. This patch - fixes the test to no longer expect these duplicate messages. + Change-Id: I3335d8718f79f4b2feae91b5b005a3ce684a63ae - ASTERISK-25137 +2016-08-19 18:19 +0000 [55ccdf93c3] Corey Farrell - Change-Id: I58075d70d6cdf42e792e0fb63ba624720bfce981 + * Fix checks for allocation debugging. -2015-12-24 22:19 +0000 [3bddcc0219] Dade Brandon + MALLOC_DEBUG should not be used to check if debugging is actually + enabled, __AST_DEBUG_MALLOC should be used instead. MALLOC_DEBUG only + indicates that debugging is requested, __AST_DEBUG_MALLOC indicates it + is active. - * res_http_websocket.c: prevent avoidable disconnections caused by write errors + Change-Id: I3ce9cdb6ec91b74ee1302941328462231be1ea53 - Updated ast_websocket_write to encode the entire frame in to one - write operation, to ensure that we don't end up with a situation - where the websocket header has been sent, while the body can not - be written. +2016-08-19 14:09 +0000 [8061d9f66f] Corey Farrell - Previous to August's patch in commit b9bd3c14, certain network - conditions could cause the header to be written, and then the - sub-sequent body to fail - which would cause the next successful - write to contain a new header, and a new body (resulting in - the peer receiving two headers - the second of which would be - read as part of the body for the first header). + * Fix naming mismatch of allocator functions. - This was patched to have both write operations individually fail - by closing the websocket. + Allocator functions that take file/line/func parameters are prefixed + with single-underscore when MALLOC_DEBUG is not defined, + double-underscore when it is defined. This change updates all + allocators that accept file/line/func to have the same prototype in + either ABI mode. The parameter order of __ast_vasprintf and + __ast_asprintf in utils.h have been changed to match that of astmm.h. - In a case available to the submitter of this patch, the same - body which would consistently fail to write, would succeed - if written at the same time as the header. + End-use allocator macro's have been removed from astmm.h and moved to an + unconditional part of utils.h. - This update merges the two operations in to one, adds debug messages - indicating the reason for a websocket connection being closed during - a write operation, and clarifies some variable names for code legibility. + Change-Id: I823bb6ce2b5675b3a4735948f10a3b420e9a023a - Change-Id: I4db7a586af1c7a57184c31d3d55bf146f1a40598 +2016-08-17 08:10 +0000 [c1b6a79686] Torrey Searle -2015-05-27 13:22 +0000 [22db16fa81] gtjoseph + * res_ari: Add http prefix to generated docs - * endpoint/stasis: Eliminate duplicate events on endpoint status change + updated the uri handler to include the url prefix of the http server + this enables res_ari to add it to the uris when generating docs - When an endpoint is created, its messages are forwarded to both the tech - endpoint topic and the all endpoints topic. This is done so that various - parties interested in endpoint messages can subscribe to just the tech - endpoint and receive all messages associated with that particular technology, - as opposed to subscribing to the all endpoints topic. Unfortunately, when the - tech endpoint is created, it also forwards all of its messages to the all - topic. This results in duplicate messages whenever an endpoint publishes its - messages. + Change-Id: I279335a2625261a8492206c37219698f42591c2e + (cherry picked from commit 6f448f32fe9b7379e2630fab7b06205f901f2ded) - This patch resolves the duplicate message issue by creating a new function - for Stasis caching topics, stasis_cp_sink_create. In most respects, this acts - as a normal caching topic, save that it no longer forwards messages it receives - to the all endpoints topic. This allows it to act as an aggregation "sink", - while preserving the necessary caching behaviour. +2016-08-19 03:59 +0000 [02a82f758e] Alexander Traud - ASTERISK-25137 #close - Reported-by: Vitezslav Novy + * sip_to_pjsip: Add cert_file. - ASTERISK-25116 #close - Reported-by: George Joseph - Tested-by: George Joseph + When using the migration script sip_to_pjsip.py, cert_file was not migrated to + pjsip.conf. A previous change regarding this contained a copy/paste error. - Change-Id: Ie47784adfb973ab0063e59fc18f390d7dd26d17b + ASTERISK-22374 -2015-12-27 22:38 +0000 [6b08f01c60] Corey Farrell + Change-Id: I0fa72e9412117d53b4284fc6b83fa5b2b95ba03b - * Remove res_jabber file that was left behind. +2016-08-18 09:21 +0000 [1a9555f036] Alexander Traud - Change-Id: I9d88fac0394d5bbaff0900a2ee911c4e4478846b + * sip.conf: tlsclientmethod is using sslv23 as default. -2015-12-26 09:24 +0000 [d4b10cfb3e] Ward van Wanrooij + When 'tlsclientmethod' is not specified in sip.conf, chan_sip uses the OpenSSL + SSLv23_method. This was documented incorrectly in the file sip.conf.sample. - * chan_sip: option 'notifyringing' change and doc fix + SSLv23_method got its name in the 90s. Today, with OpenSSL 1.0.2, this method + enables (just) the secure TLSv1.0 and TLSv1.2. Or stated differently, that + function should have been called 'secure_method' or 'automatic_method' back in + the 90s. - In the sample sip.conf this is written with regard to notifyringing: - ;notifyringing = no ; Control whether subscriptions already INUSE get sent - RINGING when another call is sent (default: yes) + Consequently please, specify 'tlsclientmethod=tlsv1' in your sip.conf only if + you face a server which has problems like not falling back to TLSv1.0 + automatically. - However, this setting changes whether or not any RINGING indications are sent - to subscriptions. There is no separate configurable setting that allows - to control whether INUSE subscriptions also get sent RINGING. This is however - a useful option, to see (using BLF) if somebody else is able to handle an - incoming call or if everybody is busy. + ASTERISK-24425 - This patch corrects the documentation for notifyringing (so the documentation - matches the functionality) and make notifyringing a tri-state option, by adding - the value 'notinuse' (in addition to 'yes' and 'no'). When notifyringing = - notinuse, only subscriptions that are not INUSE are sent the RINGING signal. + Change-Id: I502ce6146b4504cadfd3973af8d6ec3994f54fa3 - The default setting for notifyringing remains set to yes, so the default - behaviour is not affected. +2016-08-16 15:57 +0000 [53a2f7dc88] Jason Parker (license 4993) - ASTERISK-25558 + * res_format_attr_g729: Add annexb=no format parameter to SDPs - Change-Id: I88f7036ee084bb3f43b74f15612695c6708f74aa + Historically, Asterisk has always specified annexb=no for the g729 format. + However, when using res_pjsip no format attribute was specified. This patch + makes it so the SDP now contains a format attribute line with annexb=no. -2015-12-25 09:56 +0000 [6dc21bbf00] Dade Brandon + Note, that this means only g729a is negotiated. Even for pass through support. + According to rfc7261 the type of annex used (a or b) is dependent upon the + answerer. However, Asterisk being a back to back user agent makes this tricky + to support at this time, thus we only allow annex 'a' for now. - * chan_sip.c: fix websocket_write_timeout default value + ASTERISK-26228 #close + patches: + res_format_attr_g729.c submitted by Jason Parker (license 4993) - websocket_write_timeout was not being set to its default value - during sip config reload, which meant that prior to this commit, - 1) the default value of 100 was not used, unless an invalid value - (or 1) was specified in sip.conf for websocket_write_timeout, and - 2) if the websocket_write_timeout directive was removed from sip.conf - without a full restart of asterisk, then the previous value would - continue to be used indefinitely. + Change-Id: I76bc20cc0a01af01536e9915afef319c269c22d0 - This essentially lead to a 0ms write timeout (the first write attempt - in ast_careful_fwrite must have succeeded) in websocket write requests - from chan_sip, unless websocket_write_timeout was explicitely set in sip.conf. +2016-08-18 17:02 +0000 [7ea133f2ab] Kevin Harwell - Changes to websocket_write_timeout still only apply to new websocket - sessions, after the sip reload -- timeouts on existing sessions are - not adjusted during sip reload. + * rest-api: Swagger scripts were not replacing format variable in file brief - Change-Id: Ibed3816ed29cc354af6564c5ab3e75eab72cb953 + Given resource paths did not have 'json' substituted in for the '{format}'. For + some auto generated documentation/comment strings it resulted in something like + the following: -2015-12-23 17:40 +0000 [8eb5da0679] Richard Mudgett + "... REST handler for /api-docs/sounds.{format}" - * bridge_basic.c: Fix GOTO_ON_BLINDXFR + This patch makes sure the resource api's path is properly substituted. - Use of GOTO_ON_BLINDXFR would not work at all. The target location would - never be executed by the transferring channel. + ASTERISK-25472 #close - * Made feature_blind_transfer() call ast_bridge_set_after_go_on() with - valid context, exten, and priority parameters from the transferring - channel. + Change-Id: Ie3e950a35db4043e284019d6c9061f3b03922e23 - * Renamed some feature_blind_transfer() local variables for clarity. +2016-08-18 15:15 +0000 [c7ffd6111d] George Joseph - ASTERISK-25641 #close - Reported by Dmitry Melekhov + * res_odbc: Correct the dependency relationship with res_odbc_transaction - Change-Id: I19bead9ffdc4aee8d58c654ca05a198da1e4b7ac + The MODULEINFO dependencies between these 2 modules was reversed. + res_odbc should depend on res_odbc_transaction, not the other way + around. -2015-12-24 12:19 +0000 [2df4ad647c] Matt Jordan + ASTERISK-25984 #close - * res/res_pjsip_location: Delete contact_status object when contact is deleted + Change-Id: Ifcfbb49c0b51cf6640a5446d47cd6c48caf1331f - In 450579e908, a change was made that removed the deletion of the - 'contact_status' object when a 'contact' object is deleted in sorcery. - This unfortunately means that the 'contact_status' object persists, even when - something has explicitly removed a contact. The result is that the state of - the contact will not be regenerated if that contact is re-created, and the - stale state will be reported/used for that contact. It also results in - no ContactStatusChanged events being generated for either ARI or AMI. +2016-08-18 12:04 +0000 [966527249e] Kevin Harwell - This patch restores the deletion logic that was removed. Doing so now - results in the expected events being generated again. + * sip_to_pjsip: Set correct tls transport method - Change-Id: I28789a112e845072308b5b34522690e3faf58f07 + A recent update had a copy/paste error where the unused variable 'val' was + being passed to the set_value function instead of the 'method' value itself. -2015-12-24 10:18 +0000 [b8876711f3] Kevin Harwell + This patch passes in the right variable. - * res_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef + ASTERISK-22374 - Change-Id: I19b49112e1b630bd04e859f14ccf96f8ebd6b151 + Change-Id: I895b7b3779ce4442bc58b8ec40d59dd29bb43f06 -2015-12-20 21:33 +0000 [ca394161cf] Dade Brandon +2016-08-10 15:14 +0000 [5aa8773052] Mark Michelson - * app_amd: Correct maximum_number_of_words functionality & documentation + * ConfBridge: Rework announcer channel methodology - - The maximum_number_of_words was previously documented as being - the number of words that when exceeded, would result in the AMD - application returning that the audio represents a machine. + One feature that confbridge has is the ability to play sounds to all + participants in the conference. Prior to this commit, the algorithm for + this was as follows: - This was inconsistent with its actual functionality - it was - a number of words that when REACHED, would result in determination - as a machine. + * Grab the playback lock + * Push the conference announcer channel into the bridge + * Play back the sound + * Pull the conference announcer channel from the bridge + * Release the playback lock - This update corrects the functionality to match the previously - documented functionality. This is a backwards incompatible change - in configuration file, and has been added to UPGRADE.txt as a result. + The issue here is that the act of adding the playback channel to the + bridge and removing it for each announcement is expensive. Amongst the + expenses: - The sample configuration file and application defaults have been updated - so that the default value is now 2, which reflects the same default - functionality as previous versions. + * The announcer channel is imparted into the bridge, meaning a new + thread is spun up for each playback. + * When the announcer is added or removed from the bridge, it results + in the BRIDGEPEER channel variable being set on all channels in the + bridge. This requires keeping the bridge locked and locking each + individual channel in order to set it. + * There's also just the general overhead of adding the channel and + removing it from the bridge. The bridge potentially has to reconfigure + every single time - - Update documentation for silence_threshold, which previously implied - that it was measuring time, rather than noise averages in the sample. + With this commit, the paradigm for playing back announcements has + shifted. - - Update the comments in amd.conf.sample. + * The announcer channel is now added to the bridge when the conference + is allocated, and it is hung up when the conference is destroyed. + * A taskprocessor is used to queue playbacks onto the announcer channel. + This keeps the behavior from before where playbacks do not overlap. + * The announcer channel is no longer placed into the bridge as + departable. Since we are not constantly removing the channel from + the bridge, it is safe to add the channel using an independent thread + and simply hang the channel up when it is time for the conference to + be destroyed. - ASTERISK-25639 #close - Change-Id: I4b1451e5dc9cb3cb06d59b6ab872f5275ba79093 + The use of the taskprocessor for playbacks opens up the interesting + possibility of having asynchronous announcements played. In this commit, + however, the behavior is still exactly the same as it previously was. -2015-12-17 19:05 +0000 [648ca2b1b8] Dade Brandon + ASTERISK-26289 + Reported by Mark Michelson - * res_rtp_asterisk: Resolve further timing issues with DTLS negotiation + Change-Id: Ic5cd2c4b98a1eaa1715eb7a5b35d62f1a76d78a5 - Resolves an edge case dtls negotiation delay for certain networks which - somehow manage to drop the rtcp side's packet when these are both sent - ast_rtp_remote_address_set, causing it to have to time-out and restart - the handshake. +2016-08-18 08:19 +0000 [e55d1e47aa] Alexander Traud - Move dtls pending bio flush in to it's own function, and call it from - ast_rtp_on_ice_complete, when we're rtp->ice, rather than when - ast_rtp_remote_address_set. + * sip_to_pjsip: Map the TLS method correctly. - Keep the existing flush from the recent change to res_rtp_remote_address_set - if ice is not being used. + When using the migration script sip_to_pjsip.py and tlsclientmethod is not set + in sip.conf, the default value of chan_sip (sslv23) is copied to pjsip.conf, to + overwrite the default of the PJProject (tlsv1). This makes sure, res_pjsip is + offering/using not just TLSv1.0 but TLSv1.2 as well. - ASTERISK-25614 #close - Reported-by: XenCALL - Tested by: XenCALL + ASTERISK-22374 - Change-Id: Ie2caedbdee1783159f375589b6fd3845c8577ba5 + Change-Id: Ie530a3dae9926ae14f3920a21be1e2edb15bda4f -2015-12-05 10:01 +0000 [902309fd04] Joshua Colp +2016-08-18 08:17 +0000 [da14c439a3] Alexander Traud - * res_sorcery_memory_cache: Add support for a full backend cache. + * sip_to_pjsip: Add compactheaders, timerb, timert1, and useragent. - This change introduces the configuration option 'full_backend_cache' - which changes the cache to be a full mirror of the backend instead - of a per-object cache. This allows all sorcery retrieval operations - to be carried out against it and is useful for object types which - are used in a "retrieve all" or "retrieve some" pattern. + When using the migration script sip_to_pjsip.py, no section of type=system or + type=general were created. Therefore the keys compactheaders, timerb, timert1, + and useragent were not migrated to pjsip.conf. - ASTERISK-25625 #close + ASTERISK-22374 - Change-Id: Ie2993487e9c19de563413ad5561c7403b48caab5 + Change-Id: I318a453843227ea36bf130d392d4abd7bd26b5a1 -2015-12-17 10:25 +0000 [a2431f83ef] Joshua Colp +2016-08-18 08:16 +0000 [675721a7ab] Alexander Traud - * rtp_engine: Ignore empty filenames in DTLS configuration. + * sip_to_pjsip: Map (session-)timers correctly. - When applying an empty DTLS configuration the filenames in the - configuration will be empty. This is actually valid to do and - each filename should simply be ignored. + When using the migration script sip_to_pjsip.py, session-timers=accept and + session-timers=refuse were mapped to wrong values. - Change-Id: Ib761dc235638a3fb701df337952f831fc3e69539 + ASTERISK-22374 -2015-12-17 08:10 +0000 [d2c8614122] Joshua Colp + Change-Id: Ie4e90d5f6a29aff07837b7fe5bc8aea5fb6fc092 - * chan_sip: Enable WebSocket support by default. +2016-08-18 08:15 +0000 [acc5237e91] Alexander Traud - Per the documentation the WebSocket support in chan_sip is - supposed to be enabled by default but is not. This change - corrects that. + * sip_to_pjsip: Write username even without authname. - Change-Id: Icb02bbcad47b11a795c14ce20a9bf29649a54423 + When using the migration script sip_to_pjsip.py, now the (mandatory) username is + written to pjsip.conf, even if there was no (optional) authname in the register + string in sip.conf. -2015-12-14 12:04 +0000 [d17d9a9288] Joshua Colp + ASTERISK-22374 - * json: Audit ast_json_* usage for thread safety. + Change-Id: Ie53e1997104cd2674821688b8a8247249f5e156f - The JSON library Asterisk uses, jansson, is not thread - safe for us in a few ways. To help with this wrappers for JSON - object reference count increasing and decreasing were added - which use a global lock to ensure they don't clobber over - each other. This does not extend to reference count manipulation - within the jansson library itself. This means you can't safely - use the object borrowing specifier (O) in ast_json_pack and - you can't share JSON instances between objects. +2016-08-18 08:14 +0000 [3eb02235f5] Alexander Traud - This change removes uses of the O specifier and replaces them - with the o specifier and an explicit ast_json_ref. Some cases - of instance sharing have also been removed. + * sip_to_pjsip: Parse register even with transport. - ASTERISK-25601 #close + When using the migration script sip_to_pjsip.py and the register string + started with a transport in sip.conf - like tls://... - register was not parsed + correctly and therefore not migrated correctly to pjsip.conf. - Change-Id: I06550d8b0cc1bfeb56cab580a4e608ae4f1ec7d1 + ASTERISK-22374 -2015-12-16 11:28 +0000 [cfb34adb83] Mark Michelson + Change-Id: I44c12104eea2bd8558ada6d25d77edfecd92edd2 - * Alembic: Increase column size of PJSIP AOR "contact". +2016-08-18 08:13 +0000 [9907e2b1c1] Alexander Traud - When running the PJSIP AMI "show_endpoint" test with automatic - conversion to realtime, the test would fail. This was because the AOR - "contact" column was sized at 40, and the configured contact was larger - than that. + * sip_to_pjsip: Write local_net, contact_acl, contact_deny, and contact_permit. - This commit increases the size of the contact column to 255 characters. + When using the migration script sip_to_pjsip.py, those keys got missing. These + keys might appear several times and the function "merge_value" tried to collect + those. However, because these keys have different names in sip.conf and + pjsip.conf, "merge_value" was not able to find the new key name in sip.conf. + This change lets "merge_value" search with the old key name in sip.conf and + write with the new key name in pjsip.conf. - Change-Id: Ia65bc7fd37699b7c0eaef9629a1a31eab9a24ba1 + ASTERISK-22374 -2015-12-14 13:53 +0000 [32ec83f37f] server-pandora + Change-Id: Ie53c5278ae6f1cb8fa7e96c5289877d46981d9d2 - * res_rtp_asterisk.c: Fix DTLS negotiation delays. +2016-08-18 08:11 +0000 [c0e0075718] Alexander Traud - - Trigger pending DTLS packets to send out, once the RTP instance's remote - address is set. - - Avoids locking the DTLS structure unnecessarily by only doing this if - DTLS is passive. - - Add DTLS locks around the structurally sensitive calls in the SSL - portion of __rtp_recvfrom, since dtls_srtp_check_pending does not lock - inside of itself, and we're dealing with the SSL BIO in at least two - threads. + * sip_to_pjsip: Map externhost/ip to Transports. - WebRTC channels may receive a DTLS handshake before - ast_rtp_remote_address_set is called, which causes there to be a pending - response to send out. Previous to 1ad827, this was handled by calling - dtls_srtp_check_pending on receipt of any RTP packet - a STUN or RTP - packet could trigger the pending handshake response. Since that was - rightfully removed, whenever the DTLS handshake is received before the - remote address is set, we would have to wait until another SSL packet - arrives. + When using the migration script sip_to_pjsip.py, the externhost or externip of + sip.conf were erroneously written to Endpoints instead to Transports. - As of Chrome M47's optimizations to their handshake process, WebRTC - conversations between Chrome M47+ and Asterisk, where Asterisk is passive, - experience a 1 second delay without this patch, because the SSL handshake - is received before ICE negotation stores the remote_address, and the next - SSL packet isn't received until after a 1 second timeout in Chrome, which - causes a new handshake request. + ASTERISK-22374 - ASTERISK-25614 #close + Change-Id: I2c5873386cfc388899fa9cf2368639dd12f1b8e4 - Change-Id: I547f1be7e302dbf71f6553dd8cbc0657b1d0b908 +2016-08-18 08:04 +0000 [a937c2ccb1] Alexander Traud -2015-12-08 13:04 +0000 [52ca6fb94a] sungtae kim + * sip_to_pjsip: Add defaultexpiry, maxexpiry, and minexpiry. - * AMI: Fixed OriginateResponse message + When using the migration script sip_to_pjsip.py, defaultexpiry, maxexpiry, and + minexpiry were not migrated to pjsip.conf. - When the asterisk sending OriginateResponse message, - it doesn't set the "Uniqueid". - And it didn't support correct response message for - Application originate. + ASTERISK-22374 - ASTERISK-25624 #close + Change-Id: I007fbf543dcadc96fc3ed71c54da502bcb209b7b - Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d +2016-08-18 08:03 +0000 [163cc2d68f] Alexander Traud -2015-12-14 15:25 +0000 [eccdf2250b] Richard Mudgett + * sip_to_pjsip: Write media_encryption. - * Fix sscanf() format string type mismatch. + When using the migration script sip_to_pjsip.py, encryption=yes got missing and + media_encryption=sdes was not written to pjsip.conf, because of a typo. - ASTERISK-25615 - Reported by: George Joseph + ASTERISK-22374 - Change-Id: Ieff35307254ca193f3d473cff2e396ca57c7ce0b + Change-Id: I0fc3e55dc512a57603ae0fef41baacccf2a35c05 -2015-12-14 06:26 +0000 [3e7522533c] Carlos Oliva +2016-08-18 08:02 +0000 [d8b5970749] Alexander Traud - * app_queue: update RT members when the 1st call joins a queue with no agents + * sip_to_pjsip: Write cos and tos. - If a call enters on a queue and the members on that queue are updated in - realtime (ex: using mysql inserting a new agent) the queue members are - never refreshed and the call will stay in the queue until other event occurs. - This happens only if this is the first call of the queue and there is no - agents servicing. - This patch prevent this issue, ensuring realtime members are updated if - there is one call in the queue and no available agents + When using the migration script sip_to_pjsip.py, both tos_sip and cos_sip got + missed, because of a typo. Therefore, cos and tos were not written to + pjsip.conf. Furthermore, that revealed a misuse of an internal function, caused + by a copy-and-paste error. - ASTERISK-25442 #close + ASTERISK-22374 - Change-Id: If1e036d013a5c1d8b0bf60d71d48fe98694a8682 + Change-Id: Id245ebadf70ab9776eb280c026288540af3af5c2 -2015-12-13 13:13 +0000 [9a96a86e2d] Matt Jordan +2016-08-18 07:55 +0000 [38491401b5] Alexander Traud - * main/utils: Don't emit an ERROR message if the read end of a pipe closes + * sip_to_pjsip: Add cert_file and ca_list_path. - An ERROR or WARNING message should generally indicate that something has gone - wrong in Asterisk. In the case of writing to a file descriptor, Asterisk is not - in control of when the far end closes its reading on a file descriptor. If the - far end does close the file descriptor in an unclean fashion, this isn't a bug - or error in Asterisk, particularly when the situation can be gracefully - handled in Asterisk. + When using the migration script sip_to_pjsip.py, cert_file and ca_list_path were + not migrated to pjsip.conf. - Currently, when this happens, a user would see the following somewhat cryptic - ERROR message: + ASTERISK-22374 - "utils.c: write() returned error: Broken pipe" + Change-Id: I4612877d190b7f86a48698cefbf5c4db6c265825 - There's a few problems with this: - (1) It doesn't provide any context, other than 'something broke a pipe' - (2) As noted, it isn't actually an error in Asterisk - (3) It can get rather spammy if the thing breaking the pipe occurs often, such - as a FastAGI server - (4) Spammy ERROR messages make Asterisk appear to be having issues, or can even - mask legitimate issues +2016-08-16 15:36 +0000 [534063fd67] George Joseph - This patch changes ast_carefulwrite to only log an ERROR if we actually had one - that was reasonably under our control. For debugging purposes, we still emit - a debug message if we detect that the far side has stopped reading. + * res_pjsip: Add contact_user to endpoint - Change-Id: Ia503bb1efcec685fa6f3017bedf98061f8e1b566 + contact_user, when specified on an endpoint, will override the user + portion of the Contact header on outgoing requests. -2015-12-12 11:08 +0000 [3e6637feb5] gtjoseph + Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4 - * pjsip/config_transport: Check pjproject version at runtime for async ops +2016-08-17 14:13 +0000 [0b4fa65532] Richard Mudgett - pjproject < 2.5.0 will segfault on a tls transport if async_operations - is greater than 1. A runtime version check has been added to throw - an error if the version is < 2.5.0 and async_operations > 1. + * res_pjsip_session.c: Fix unbound srv failover tests. - To assist in the check, a new api "ast_compare_versions" was added - to utils which compares 2 major.minor.patch.extra version strings. + Commit 1b666549f33d69dc080b212bf92126f3bc3a18b2 broke the srv failover + functionality if a TCP connection gets disconnected. Under these + conditions, session_inv_on_state_changed() gets a + PJSIP_EVENT_TRANSPORT_ERROR and restarts the INVITE transaction on a new + transport. Unfortunately, session_inv_on_tsx_state_changed() also gets + the same PJSIP_EVENT_TRANSPORT_ERROR event and unconditionally terminates + the session. - ASTERISK-25615 #close + * Made session_inv_on_tsx_state_changed() complete terminating the session + on PJSIP_EVENT_TRANSPORT_ERROR only if the session state is still + PJSIP_INV_STATE_DISCONNECTED. - Change-Id: I8e88bb49cbcfbca88d9de705496d6f6a8c938a98 - Reported-by: George Joseph - Tested-by: George Joseph + ASTERISK-26305 #close + Reported by: Richard Mudgett -2015-12-10 11:44 +0000 [ceebdfce40] Jonathan Rose + Change-Id: If736e766b5c55b970fa38ca6c8a885caf27b897d - * chan_sip: Add TCP/TLS keepalive to TCP/TLS server +2016-08-11 12:10 +0000 [046069011b] Tzafrir Cohen - Adds the TCP Keep Alive option to TCP and TLS server sockets. Previously - this option was only being set on session sockets. - http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ - According to the link above, the SO_KEEPALIVE option is useful for knowing - when a TCP connected endpoint has severed communication without indicating - it or has become unreachable for some reason. Without this patch, keep - alive is not set on the socket listening for incoming TCP sessions and - in Komatsu's report this resulted in the thread listening for TCP becoming - stuck in a waiting state. + * followme: initialize all config items on reload - ASTERISK-25364 #close - Reported by: Hiroaki Komatsu + Some configuration directives were not initialized on reload, and hence + were not reset to default if they were removed from followme.conf. - Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36 -2015-12-07 13:07 +0000 [fcaebb0e43] Corey Farrell + ASTERISK-26288 #close - * app_meetme: Set default value for audio_buffers. + Change-Id: Ief829e16374ad1e0ecfd63e6ee4923b5a1d1c150 - The default value was never set for audio_buffers, causing bad - audio quality. This ensures the default is always set. +2016-08-17 06:12 +0000 [57f4e4428a] Alexander Traud - ASTERISK-25569 #close + * BuildSystem: Detect ca_list_path capabilities in external PJProject. - Change-Id: I2d2ee3e644120b0f9f6ea6ab9286d7d590942a44 -2015-12-09 09:48 +0000 [5790700497] Tyler Cambron + Since Asterisk 13.8, pj_ssl_cert_load_from_files2 got detected only in the + bundled PJProject but not in an external PJProject. Therefore, ca_list_path + could not be used in pjsip.conf. With this change, pj_ssl_cert_load_from_files2 + is detected again to enable ca_list_path again. - * res_chan_stats: Fix bug to send correct statistics to StatsD + ASTERISK-26303 #close - Fixed a bug that originally would show a negative number of - active calls occuring in Asterisk. A gauge is persistent so - incrementing and decrementing it results in a more consistent - performance. Also changed to the call to StatsD to use - ast_statsd_log_string() so that a "+" could be sent to StatsD. + Change-Id: I4a4a0cdc5cdff33730911fb4cfc0498c069043d0 - ASTERISK-25619 #close +2016-08-16 12:24 +0000 [a5c0cf4922] George Joseph - Change-Id: Iaaeff5c4c6a46535366b4d16ea0ed0ee75ab2ee7 -2015-12-08 17:49 +0000 [a987434564] gtjoseph + * ari: Add documentation that path parameters are case-sensitive - * res_pjsip: Add existence and readablity checks for tls related files + Added to api.wiki.mustache so that the generated object pages + have the notation in the table header as well as under each method + that has path parameters. - Both transport and endpoint now check for the existence and readability - of tls certificate and key files before passing them on to pjproject. - This will cause the object to not load rather than waiting for pjproject - to discover that there's a problem when a session is attempted. + ASTERISK-25492 #close - NOTE: chan_sip also uses ast_rtp_dtls_cfg_parse but it's located - in build_peer which is gigantic and I didn't want to disturb it. - Error messages will emit but it won't interrupt chan_sip loading. + Change-Id: I36c46c6dc0c9ac350470394a999a1b19ef3fcdaf - ASTERISK-25618 #close +2016-08-15 15:29 +0000 [824a4e84d1] Corey Farrell - Change-Id: Ie43f2c1d653ac1fda6a6f6faecb7c2ebadaf47c9 - Reported-by: George Joseph - Tested-by: George Joseph + * Refactor usage pattern of xmldoc info tag. -2015-12-02 12:42 +0000 [be693539c3] Eugene Voityuk + This updates func_channel.c and main/message.c to use a generic xpointer + include instead of including info from each channel driver. Now the + name attribute of info is CHANNEL or CHANNEL_EXAMPLES to be included in + documentation for func_channel. Setting the name attribute of info to + MessageToInfo or MessageFromInfo causes it to be included in the + MessageSend application and AMI action. - * chan_sip.c: Start ICE negotiation when response is sent or received. + Change-Id: I89fd8276a3250824241a618009714267d3a8d1ea - The current logic for ICE negotiation starts it - when receiving an SDP with ICE candidates. This is - incorrect as ICE negotiation can only start when each - call party have at least one pair of local and remote - candidate. Starting ICE negotiation early would result - in negotiation failure and ultimately no audio. +2016-06-15 17:10 +0000 [957df73301] Evgeniy Tsybra - This change makes it so ICE negotiation is only started - when a response with SDP is received or when a response - with SDP is sent. + * chan_sip: Fix lastrtprx always updated - ASTERISK-24146 + Packets are read regulary, when there is no data in buffer fr->frametype + is AST_FRAME_NULL. There was no check of frametype and lastrtprx always + updated and, therefore, rtptimeout did not work at all. - Change-Id: I55a632bde9e9827871b09141d82747e08379a8ca + ASTERISK-25270 #close -2015-12-08 01:57 +0000 [59a91c350a] Filip Jenicek + Change-Id: If3b5ca0dbb822582a86eb7d01dcae4e83448c41d - * chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c) +2016-08-10 14:41 +0000 [e85adbd947] Alexei Gradinari - Asterisk may crash when calling ast_channel_get_t38_state(c) - on a locked channel which is being hung up. + * core: Entity ID is not set or invalid - ASTERISK-25609 #close + The Exchanging Device and Mailbox States could not working + if the Entity ID (EID) is not set manually and can't be obtained + from ethernet interface. - Change-Id: Ifaa707c04b865a290ffab719bd2e5c48ff667c7b -2015-12-08 11:03 +0000 [28ab03fbf7] gtjoseph + This patch replaces debug message to warning + and addes missing description about option 'entityid' to + asterisk.conf.sample. - * res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls + With this patch the asterisk also: + (1) decline loading the modules which won't work without EID: + res_corosync and res_pjsip_publish_asterisk. + (2) warn if EID is empty on loading next modules: + pbx_dundi, res_xmpp - See ASTERISK-25615. - If the transport protocol is tls and async_operations > 1, pjproject - will segfault if more than one operation is attempted on the same socket. - Until this is fixed upstream, a check has been added to throw an error - if a tls transport config has async_operations set to > 1. + Starting with v197 systemd/udev will automatically assign "predictable" + names for all local Ethernet interfaces. + This patch also addes some new ethernet prefixes "eno" and "ens". - ASTERISK-25615 + ASTERISK-26164 #close - Change-Id: I76b9a5b2a5a0054fe71ca5851e635f2dca7685a6 - Reported-by: George Joseph - Tested-by: George Joseph + Change-Id: I72d712f1ad5b6f64571bb179c5cb12461e7c58c6 -2015-12-08 08:39 +0000 [55dd7125b3] Alexander Traud +2016-08-04 20:00 +0000 [13450c80ce] Richard Mudgett - * codec_resample: Increase buffer for Opus Codec with FEC. + * res_sorcery_config.c: Cleanup ao2 container usage idioms. - ASTERISK-25599 #close + Change-Id: Iad24b335fb121a2bc7f1d048ab7420569edcba5a - Change-Id: Idbd187f711b2ec63dda949ca0f79aa0c1a0a0b6e +2016-08-04 15:57 +0000 [d526aa5cbe] Richard Mudgett -2015-12-08 03:46 +0000 [64f899e5f3] Alexander Traud + * sorcery.c: Minor optimizations. - * translate: Avoid a warning message when doing FEC within Opus Codec. + * Remove some unused parameters from internal functions: + sorcery_wizard_create() + sorcery_wizard_update() + sorcery_wizard_delete() - ASTERISK-25616 #close + * Created the struct sorcery_observer_invocation ao2 object without a lock + since it is not needed in sorcery_observer_invocation_alloc(). - Change-Id: Ibe729aaf2e6e25506cff247cec5149ec1e589319 + * Cleanup generic ao2 container sorcery object id hash, sort, and cmp + functions. -2015-12-04 15:36 +0000 [65c8147952] Richard Mudgett + Change-Id: Iff71d75f52bc1b8cee955456838c149faaa4f92e - * chan_sip: Fix crash involving the bogus peer during sip reload. +2016-08-01 11:04 +0000 [45e143576f] Richard Mudgett - A crash happens sometimes when performing a CLI "sip reload". The bogus - peer gets refreshed while it is in use by a new call which can cause the - crash. + * sorcery.c: Tweak some container declaration formatting. - * Protected the global bogus peer object with an ao2 global object - container. + * Tweak sorcery_object_type_alloc() formatting. + * Tweak ast_sorcery_init() formatting. - ASTERISK-25610 #close + Change-Id: Ib02430023f15268cd7a2ea53f2c331213e4d3944 - Change-Id: I5b528c742195681abcf713c6e1011ea65354eeed +2016-08-11 23:30 +0000 [eca3d2698a] Corey Farrell -2015-11-13 07:58 +0000 [48c065e46d] Christof Lauber + * pbx.c: Additional fixes to ast_context_remove_extension_callerid2. - * chan_sip: Support parsing of Q.850 reason header in SIP BYE and CANCEL requests. + Do not check registrar of the first extension head. We should only check + the registrar when we match the priority. - Current support for reason header did work only in SIP responses. - According to RFC3336 the reason header might appear in any SIP request. - But it seems to make most sence in BYE and CANCEL so parasing is done - there too (if use_q850_reason=yes). + Additionally fix a couple calls to strcmp which used the input callerid + instead of the clean version ex.cidmatch. - Change-Id: Ib6be7b34c23a76d0e98dfd0816c89931000ac790 + ASTERISK-26233 -2015-12-06 16:35 +0000 [75c800eb28] Matt Jordan + Change-Id: I17ea6881a18f40840ae9c1f5394aab1fbb3769f1 - * Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state" +2016-08-13 22:02 +0000 [9202ca34a8] Matt Jordan - This reverts commit f42d22d3a1ca5c8ea73df99a50c6a28caa8f8749. + * app_dial: Improve documentation - Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks - in core_unreal/chan_local. Local channels attempt to reach across both their - peer and the peer's bridge to inspect T.38 state. Given the propensity of - Local channel chains, managing the locking situation in such a scenario is - practically infeasible. + * Add some helpful and other embedded paragraph tags - Change-Id: I932107387c13aad2c75a7a4c1e94197a9d6d8a51 + * Document some of the lesser known channel variables set by Dial -2015-12-04 16:23 +0000 [4be231e82f] gtjoseph + * Add examples for some common Dial uses, along with some more + challenging but useful options - * res_pjsip/contacts/statsd: Make contact lifecycle events more consistent + Change-Id: Ib2fb9301e8e044d14fbb2815ec64161f19bbfbc1 - It will never be perfect or even pretty, mostly because of the differences - between static and dynamic contacts. +2016-08-13 20:16 +0000 [e9fe08ea37] Matt Jordan - Created: + * manager: Add tags to relate interrelated events/actions together - Can't use the contact or contact_status alloc functions - because the objects come and go regardless of the actual state. + Change-Id: Idbac539205aa732bf786c4f765577d8e9ff28ba4 - Can't use the contact_apply_handler, ast_sip_location_add_contact or - a sorcery created handler because they only get called for dynamic - contacts. Similarly, permanent_uri_handler only gets called for - static contacts. +2016-08-13 20:15 +0000 [a93cd39ac1] Matt Jordan - So, Matt had it right. :) ast_res_pjsip_find_or_create_contact_status is - the only place it can go and not have duplicated code. Both - permanent_uri_handler and contact_apply_handler call find_or_create. + * manager: Add tags to relate Bridge related events,actions, and apps - Removed: + Change-Id: I67e6b79fa3102e494b5fe6cc7510472249080e85 - Can't use the destructors for the same reason as above. The only - place to put this is in persistent_endpoint_contact_deleted_observer - which I believe is the "correct" place but even that will handle only - dynamic contacts. This doesn't called on shutdown however. There is - no hook to use for static contacts that may be removed because of a - config change while asterisk is in operation. +2016-08-13 20:14 +0000 [d8a7594ffd] Matt Jordan - I moved the cleanup of contact_status from ast_sip_location_delete_contact - to the handler as well. + * manager: Add tags to relate AoC events and actions - Status Change and RTT: + Change-Id: Iea89a36222712148c1775c05ed0ad1049d67a70e - Although they worked fine where they were (in update_contact_status) I - moved them to persistent_endpoint_contact_status_observer to make it - more consistent with removed. There was logic there already to detect - a state change. +2016-08-13 20:13 +0000 [243f0cf99a] Matt Jordan - Finally, fixed a nit in permanent_uri_handler rmudgett reported - eralier. + * manager: Add tags to relate UserEvent actions/apps/events - ASTERISK-25608 #close + Change-Id: I80f8a981f62f50e74609c69c49edcaca6c95efa4 - Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d - Reported-by: George Joseph - Tested-by: George Joseph +2016-08-12 15:53 +0000 [3269cf4c17] Matt Jordan -2015-11-21 06:08 +0000 [63c6d39a3e] Alexander Traud + * res_agi: Improve documentation - * res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8. + * Groups of AGI commands that have similar functionality now reference + each other, and all reference the AGI application for ease of wiki + reference. - ASTERISK-25584 #close + * The documentation for the AGI application has been improved, in + particular noting the various AGI types and how they are invoked. - Change-Id: Iae00071b4ff1ae76f24995aeac4d00284fd14f91 + * A warning message has been added to DeadAGI, noting that it is + deprecated. -2015-11-28 08:46 +0000 [f42d22d3a1] Matt Jordan + Change-Id: I479ccdee8a7393f01b18692c3d4ab7e6bdd1875d - * bridges/bridge_t38: Add a bridging module for managing T.38 state +2016-08-12 13:53 +0000 [a19f4affe8] Matt Jordan - When 4875e5ac32 was merged, it fixed several issues with a direct media bridge - transitioning to handling a T.38 fax. However, it uncovered a race condition - caused by the bridging core. When a channel involved in a T.38 fax leaves a - bridge, the frame queued by the channel driver that should inform the far side - that it is no longer in a T.38 fax may not make it across the bridge. The - bridging framework is *extremely* aggressive in tearing down the bridge, and - control frames that are currently in flight *may* get dropped. + * manager: Add links between related events - This patch adds a new module to the bridging framework, bridge_t38. This module - maintains some notion of the T.38 state for the two channels in a bridge. When - the bridge detects that it is being torn down or when one of the two channels - leaves, it informs the respective channel(s) that they should stop faxing. This - ensures that channels switch back to audio if they survive and are ejected out - of a bridge while faxing. + This patch adds some see-also references between related AMI events. It + focuses primarily on those events that are guaranteed to come in pairs, + such as DTMFBegin/DTMFEnd, as well as those that occur during the life + cycle of an Asterisk channel, such as Newchannel/Hangup. - ASTERISK-25582 + Change-Id: Iaab600477052018d0f8c03d0c624c0856e9ff1f3 - Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0 +2016-08-12 11:15 +0000 [ddab42e296] Matt Jordan -2015-11-21 05:35 +0000 [dcc01bc0a7] Alexander Traud + * func_channel: Reorganize documentation - * res_format_attr_opus: Update to latest RFC 7587. + * Following the example of the PJSIP channel driver, the channel + technology specific documentation has been moved to the respective + channel drivers that provide that functionality. This has the benefit + of locating the documentation of items with those modules that provide + it. - Beside that, the format-attribute module sends only non-default values in the - line fmtp, now. This avoids unnecessary overhead in SDP messages. Furthermore, - previously the parameter stereo was not parsed when being the first parameter. + * Examples of using the CHANNEL function for both standard items as well + as for PJSIP have been added. - ASTERISK-25583 #close + * The 'max_forwards' standard item has been documented. - Change-Id: Iae85ba3e5960bfd5d51cf65bcffad00dd4875a73 -2015-12-02 14:11 +0000 [69457b8d61] Jonathan Rose + Change-Id: Ifaa79a232c8ac99cf8da6ef6cc7815d398b1b79b - * Fix crash in audiohook translate to slin +2016-08-15 07:17 +0000 [922b74169f] Joshua Colp - This patch fixes a crash which would occur when an audiohook was - applied to a channel using an audio codec that could not be translated - to signed linear (such as when using pass-through codecs like OPUS or - when the codec translator module for the format in use is not loaded). + * manager: Clarify that dialplan manipulation actions are under system class. - ASTERISK-25498 #close - Reported by: Ben Langfeld + ASTERISK-26246 #close - Change-Id: Ib6ea7373fcc22e537cad373996136636201f4384 -2015-12-03 12:07 +0000 [5959186017] gtjoseph + Change-Id: Id673b9786389f9d2a87f638ce1a25161f5f31657 - * res_pjsip: Use a MD5 hash for static Contact IDs +2016-08-11 22:12 +0000 [9debe1ca26] Corey Farrell - When 90d9a70789 was merged, it mostly tested dynamic contacts created as - a result of registering a PJSIP endpoint. Contacts generated in this - fashion typically have a long alphanumeric string as their object identifier, - which maps reasonably well for StatsD. Unfortunately, this doesn't work in the - general case. StatsD treats both '.' and ':' characters as special characters. - In particular, having a ':' appear in the middle of a StatsD metric will - result in the metric being rejected. + * Run mandatory cleanup when startup fails. - This causes some obvious issues with SIP URIs. + Errors during startup result in an exit. These error branches should be + calling ast_run_atexit(0) to ensure mandatory cleanup is run. - The StatsD API should not be responsible for escaping the metric name passed - to it. The metric is treated as a single long string, and it would be - challenging to know what to escape in the string passed to the function. - Likewise, we don't want to escape the metric in PJSIP, as that involves - overhead that is wasted when either res_statsd isn't loaded or enabled. + ASTERISK-26267 #close - This patch takes an alternative approach. The Contact ID has been changed - to be "aor@@uri_hash" instead of "aor@@uri". This (a) won't contain any of the - aforementioned special characters, (b) can be done on Contact creation, - which has minimal impact on run-time performance, and (c) also conforms to an - earlier commit that changed the ID for dynamic contacts. + Change-Id: If226f2326ae2df7add20040696132214cf2bb680 - The downside of this is that StatsD users will have to map SHA1 hashes back to - the Contacts that are emitting the statistics. To that end, the CLI commands - have been updated to include the first 10 characters of the MD5 hash, which - should be enough to match what is shown in Graphite (or some other StatsD - backend). +2016-08-11 11:24 +0000 [d7534e016b] George Joseph - ASTERISK-25595 #close + * res_pjsip_caller_id: Copy header name to short header name - Change-Id: Ic674a3307280365b4a45864a3571c295b48a01e2 - Reported-by: Matt Jordan - Tested-by: George Joseph + When compact_headers was set, we were sending a zero-length header name + for PAI and RPID because we always forced the short header name length + to 0. We did this because we cloned the header from "From" and wanted + to clear "f" from the sname. By cloning however, we bypass pjproject's + automatic logic that sets sname to name if there's no compact form of + the header, which there isn't for PAI and RPID. So now we force sname + to be the same as name right after we set name. -2015-11-30 22:19 +0000 [bd265a90be] gtjoseph + res_pjsip_diversion needed the same treatment for the Diversion header. - * res_pjsip: Update logging to show contact->uri in messages + ASTERISK-26241 #close - An earlier commit changed the id of dynamic contacts to contain - a hash instead of the uri. This patch updates status change - logging to show the aor/uri instead of the id. This required - adding the aor id to contact and contact_status and adding - uri to contact_status. The aor id gets added to contact and - contact_status in their allocators and the uri gets added to - contact_status in pjsip_options when the contact_status is - created or updated. + Change-Id: I633ec139630cd83809aae00336cee4a10077e467 - ASTERISK-25598 #close +2016-08-11 11:13 +0000 [225fd1003f] Matt Jordan - Reported-by: George Joseph - Tested-by: George Joseph + * app_queue: Prevent crash when a call is forwarded to an invalid location - Change-Id: I56cbec1d2ddbe8461367dd8b6da8a6f47f6fe511 + When a call forward attempt is made from a Queue member, the current + code will hang up the forwarding channel in an off-nominal condition + prior to raising the Stasis events informing the rest of Asterisk that + the call was forwarded. This will result in a slew of dreaded FRACKs, + most likely leading to a crash. -2015-12-01 16:11 +0000 [b5281b74e0] Jonathan Rose + This patch modifies the code such that we don't hang up the forwarding + channel even in an off-nominal condition until we've safely raised the + Stasis messages. - * Unset BRIDGEPEER when leaving a bridge + ASTERISK-25797 #close - Currently if a channel is transferred out of a bridge, the BRIDGEPEER - variable (also BRIDGEPVTCALLID) remain set even once the channel is - out of the bridge. This patch removes these variables when leaving - the bridge. + Change-Id: Ife5abed351691fd79105321636eaa8ea8dcdba38 - ASTERISK-25600 #close - Reported by: Mark Michelson +2016-08-11 12:18 +0000 [aeb859dba9] George Joseph - Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da + * res_pjsip: Fail global load if debug or default_from_user are empty -2015-11-30 14:22 +0000 [59ba84e5cd] Richard Mudgett + If debug was specified in the global configuration but left blank, + the logger would treat it as a wildcard and log all hosts. If + default_from_user was empty, a crash would result. - * res_sorcery_memory_cache.c: Fix off nominal ref leak. + The global apply handler now checks for empty strings. - Change-Id: If83d63cf11cbc6df9b15251848b01feb570ade49 + ASTERISK-26239 #close + ASTERISK-26238 #close -2015-11-30 16:42 +0000 [ef77439e39] Richard Mudgett + Change-Id: Ie75727f5cd5808845d92cc81f5713842fb203336 - * sched.c: Make not return a sched id of 0. +2016-08-01 15:07 +0000 [2275494e80] Richard Mudgett - According to the API doxygen a sched ID of 0 is valid. Unfortunately, 0 - was never returned historically and several users incorrectly coded usage - of the returned sched ID assuming that 0 was invalid. + * res_pjsip res_pjsip_mwi: Misc fixes and cleanups. - ASTERISK-25476 + * Eliminated RAII_VAR() usage in + ast_sip_persistent_endpoint_update_state(). - Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20 + * Added a missing allocation failure check to + persistent_endpoint_find_or_create(). -2015-11-25 12:23 +0000 [145d10a5d0] Richard Mudgett + * Made persistent_endpoint_find_or_create() create the new object without + a lock as it isn't needed. - * Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions) + * Cleaned up some ao2 container allocation idioms. - chan_sip.c: - * Initialize mwi subscription scheduler ids earlier because of ASTOBJ to - ao2 conversion. + * Reordered res_pjsip_mwi.c load_module() and unload_module() - * Initialize register scheduler ids earlier because of ASTOBJ to ao2 - conversion. + Change-Id: If8ce88fbd82a0c72a37a2388f74f77237a6a36a8 - chan_skinny.c: - * Fix more scheduler usage for the valid 0 id value. +2016-08-04 18:03 +0000 [d4ffbccef6] Richard Mudgett - ASTERISK-25476 + * location.c: Misc fixes and cleanups. - Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95 + * Eliminated most RAII_VAR() usage. -2015-11-24 12:44 +0000 [fa20729032] Richard Mudgett + * Added several missing allocation failure checks. - * Audit improper usage of scheduler exposed by 5c713fdf18f. + * Made ast_sip_for_each_contact() allocate the wrapper ao2 object without + a lock as it is not needed. - channels/chan_iax2.c: - * Initialize struct chan_iax2_pvt scheduler ids earlier because of - iax2_destroy_helper(). + Change-Id: Ie20913365156c95dd79e5d471cfd25e99ae880bc - channels/chan_sip.c: - channels/sip/config_parser.c: - * Fix initialization of scheduler id struct members. Some off nominal - paths had 0 as a scheduler id to be destroyed when it was never started. +2016-08-11 12:01 +0000 [36b2a40533] George Joseph - chan_skinny.c: - * Fix some scheduler id comparisons that excluded the valid 0 id. + * autohints: Update CHANGES and extensions.conf.sample - channel.c: - * Fix channel initialization of the video stream scheduler id. + Make it clear that we're talking about device state hints and add + an entry to the sample config. - pbx_dundi.c: - * Fix channel initialization of the packet retransmission scheduler id. + Change-Id: Iaef58ffb960191a21b713e8e0b51ce1fcd47e433 - ASTERISK-25476 +2016-08-02 13:53 +0000 [4a5da6c9b4] Richard Mudgett - Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8 + * taskprocessor.c: Tweak high water checks. -2015-12-01 07:55 +0000 [b24f2f4c2e] Alexander Traud + * The high water check in ast_taskprocessor_alert_set_levels() would + trigger immediately if the new high water level is zero and the queue was + empty. - * codec_resample: Increase buffer for Opus Codec. + * The high water check in taskprocessor_push() was off by one. - ASTERISK-25599 #close + Change-Id: I687729fb4efa6a0ba38ec9c1c133c4d407bc3d5d - Change-Id: I1f88a88c59fb4e1e62bbdbb100c7152d48e73f10 +2016-08-03 16:24 +0000 [5ba6357be2] Richard Mudgett -2015-11-30 11:13 +0000 [e5723d2776] gtjoseph + * res_pjsip: Make aor named lock a mutex. - * dns: Change lookup failures from LOG_ERROR to debug 1. + The named aor lock was always being locked for writes so a rwlock adds no + benefit and may be slower because rwlocks are biased toward read locking. - dns.c and dns_system_resolver.c were spitting out errors for lookup - failures for things like not finding a SRV record even though - there was an A record. Those have been changed to debug messages. - Logging not finding ANY record is left to the higher level caller. + Change-Id: I8c5c2c780eb30ce5441832257beeb3506fd12b28 - Also, dns_system_resolver was using Windows line endings so I - converted them to Unix style. The actual log changes are on lines - 156 and 159. +2016-07-29 17:41 +0000 [b6e03a5ff3] Richard Mudgett - Change-Id: I65be16ea15304b96f9dcb4d289dbd3e2286fc094 + * pjsip_distributor.c: Add missing allocation failure check. -2015-11-25 10:42 +0000 [270f7be54f] Alexander Traud + Change-Id: I932ab2cea845e534d9ff318035b6de39972d3b28 - * Build System: Support include-what-you-use. +2016-08-11 10:50 +0000 [ac0454f9fa] David M. Lee - ASTERISK-25591 #close + * Fixed compile flags for non-module libs - Change-Id: I8d3efa0826142ece9cbed2fd0d46f3b607fee6ae + The non-module libs libasteriskssl.dylib and libasteriskpj.dylib have + long been missing the AST_NOT_MODULE compile flag. This was mostly + okay, until a recent fix to improve compiler warnings when the + AST_MODULE_SELF_SYM is missing broke the build on OS X/macOS/whatever + they are calling it these days. -2015-11-08 23:49 +0000 [f2a84b500d] Rodrigo Ramírez Norambuena + Change-Id: I2cb51c890824f001280a5114f2e775f97c163516 - * app_queue: Show reason of pause on CLI +2016-08-11 10:50 +0000 [b3c2f1164b] Kevin Harwell - Add value of pause reason when is paused on CLI command "queue show" + * alembic: add auth_username to endpoint's identify_by enum - ASTERISK-25581 #close + A new identify_by option was added recently, auth_username. However, this + setting was not added as an allowable choice in the database enumeration + value. - Report by: Rodrigo Ramírez Norambuena + This patch updates the current enumeration, adding in the new setting. - Change-Id: I887028a40cd97b350da9a3bb2719616b7fec9864 + ASTERISK-26268 #close -2015-11-27 07:39 +0000 [7cb8f2f33e] Niklas Larsson + Change-Id: Ib4788e8485e4cd40172ec0abbf5810a147ab8bf8 - * CHANGES: Fix a typo +2016-08-08 14:50 +0000 [41aba83ff6] Richard Mudgett - Change-Id: Iceb3d9bb78140c376174a7bee197dfcf8ef9cda7 + * res_srtp: Move SDP SRTP code from the core to res_srtp. -2015-11-25 15:26 +0000 [9014f1f4a5] Kevin Harwell + A patch made to the master branch (Now the 14 branch) inadvertently made + libsrtp a required dependency in order to compile Asterisk. Rather than + create dummy defines to substitute for the defines supplied by libsrtp + when libsrtp is not available, most of the code in sdp_srtp.c is moved + into res_srtp.c. This gets more code out of Asterisk's core that isn't + used when SRTP is not available. This also makes another inadvertent + required dependency on libsrtp by Asterisk's core unlikely. - * fastagi: record file closed after sending result + ASTERISK-26253 #close + Reported by: Ben Merrills - The fastagi record-file testsuite test sometimes fails reporting an empty - recorded file. This was happening because Asterisk was sending the agi result - notification prior to actually closing the file and the data, being buffered, - had not been written to the file yet when the test attempts to check the file - size. + Change-Id: I0a46cde81501c0405399c2588633ae32706d1ee7 - This patch makes it so the record file stream is closed prior to sending the - agi result notification. +2016-08-06 10:57 +0000 [820879415f] Alexei Gradinari - ASTERISK-25593 #close + * pjsip: Fix deadlock with suspend taskprocessor on masquerade - Change-Id: I6b2b3be3ae37f7c7b18e672c419a89b3b8513cde + If both channels which should be masqueraded + are in the same serializer: + 1st channel will be locked waiting condition 'complete' + 2nd channel will be locked waiting condition 'suspended' -2015-11-25 13:29 +0000 [03759c5587] Walter Doekes + On heavy load system a chance that both channels will be in + the same serializer 'pjsip/distibutor' is very high. - * main: Slight refactor of main. Improve color situation. + To reproduce compile res_pjsip/pjsip_distributor.c with + DISTRIBUTOR_POOL_SIZE=1 - Several issues are addressed here: - - main() is large, and half of it is only used if we're not rasterisk; - fixed by spliting up the daemon part into a separate function. - - Call ast_term_init from rasterisk as well. - - Remove duplicate code reading/writing asterisk history file. - - Attempt to tackle background color issues and color changes that - occur. Tested by starting asterisk -c until the colors stopped - changing at odd locations. - - Remove unused term_prep() and term_prompt() functions. + Steps to reproduce: + 1. Party A calls Party B (bridged call 'AB') + 2. Party B places Party A on hold + 3. Party B calls Voicemail app (non-bridged call 'BV') + 4. Party B attended transfers Party A to voicemail using REFER. + 5. When asterisk masquerades calls 'AB' and 'BV', + a deadlock is happened. - ASTERISK-25585 #close + This patch adds a suspension indicator to the taskprocessor. + When a session suspends/unsuspends the serializer + it sets the indicator to the appropriate state. + The session checks the suspension indicator before + suspend the serializer. - Change-Id: Ib641a0964c59ef9fe6f59efa8ccb481a9580c52f + ASTERISK-26145 #close -2015-11-24 13:54 +0000 [91346b9fb7] David M. Lee + Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b - * Fixed some typos +2016-08-09 12:07 +0000 [d4170df40a] Kevin Harwell - Fixes some minor typos in the CHANGES file, plus an embarrasing typo in - the StatsD API. + * alembic/sqlalchemy: auto increment only allowed on a single column - Change-Id: I9ca4858c64a4a07d2643b81baa64baebb27a4eb7 + The extensions table defined two columns (id and priority) as primary key + autoincrement columns. However only one is allowed when defining the primary + key. -2015-11-24 13:07 +0000 [fb45130476] Corey Farrell + This patch removes the autoincrement attribute from the priority column since + it does not need to be as such and really should not have been on there in the + first place. - * res_pjsip_notify: Fix CLI usage info + This patch also removes 'context', 'exten', and 'priority' from the primary key + index and creates a new combined unique contraint index on them. - The usage info for 'pjsip send notify' previously referenced the - chan_sip configuration sip_notify.conf. Fix this to reference - the correct configuration pjsip_notify.conf. + ASTERISK-26183 #close - ASTERISK-25590 #close + Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b - Change-Id: I3898271a8e8a8b1db201741e790ebe2c6bf5cdea +2016-08-10 11:47 +0000 [8d42ff784d] George Joseph -2015-11-18 09:43 +0000 [ee9c114747] Matt Jordan + * res_resolver_unbound: Allow compilation with libunbound version < 1.5 - * res/res_endpoint_stats: Add module to emit endpoint StatsD statistics + libunbound at version 1.4.20 (which CentOS still uses) declared all + of their string function parameters as as 'char *'. 1.4.21 changed + them all to 'const char *'. Thankfully 1.4.21 also introduced the + UNBOUND_VERSION_MAJOR define so configure now checks for that and + sets HAVE_UNBOUND_CONST_PARAMS. res_resolver_unbound then checks + that and casts away the 'const' if it's not set. - This patch adds a module that emits StatsD statistics about Asterisk - endpoints. This includes: - * A GAUGE statistic for endpoint states, tracking how many endpoints are in - a particular state. - * A GAUGE statistic for each endpoint, counting the number of channels - currently associated with an endpoint. + Tested compile and testsuite on CentOS6 (1.4.20), Ubuntu14 (1.4.22) and + Fedora24 (1.5.4). There are a few failing tests to be addressed though. - ASTERISK-25572 + ASTERISK-26283 #close - Change-Id: If7e1333c5aeda8d136850b30c2101c0ee1c97305 -2015-11-23 14:27 +0000 [9ca652f1b9] Richard Mudgett + Change-Id: Ib708b19b706c5d0ba7b7d5473e6df339d9ae4148 - * res_sorcery_realtime.c: Fix crash from NULL sorcery object type. +2016-08-07 09:58 +0000 [c315460abb] Matt Jordan - If the sorcery object type is not found a NULL is returned. - Unfortunately, sorcery_realtime_filter_objectset() will crash after - complaining about not finding the object type and saying to expect errors. + * channels/chan_pjsip: Add PJSIP_SEND_SESSION_REFRESH - * Use ao2_cleanup() instead of ao2_ref() to prevent the crash. + This patch adds a new PJSIP specific dialplan function, + PJSIP_SEND_SESSION_REFRESH. When invoked on a PJSIP channel, the media + session will be refreshed via either an UPDATE or re-INVITE request. + When used in conjunction with the PJSIP_MEDIA_OFFER dialplan function, + the formats in use on a PJSIP channel can be re-negotiated and changed + dynamically after call setup. - ASTERISK-25165 - Reported by Corey Farrell + ASTERISK-26277 #close - Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97 + Change-Id: Ib98fe09ba889aafe26d58d32f0fd1323f8fd9b1b + (cherry picked from commit eec60dd77394f0519895fc6abce3a6f90f6470f1) -2015-11-18 10:07 +0000 [75d90a9951] Matt Jordan +2016-08-09 16:19 +0000 [8fe9f1f7f1] Mark Michelson - * res_pjsip/pjsip_options: Add StatsD statistics for PJSIP contacts + * res_rtp_asterisk: Cache local RTCP address. - This patch adds the ability to send StatsD statistics related to the - state of PJSIP contacts. This includes: - * A GUAGE statistic measuring the count of contacts in a particular state. - This measures how many contacts are reachable, unreachable, etc. - * The RTT time for each contact, if those contacts are qualified. This - provides StatsD engines useful time-based data about each contact. + When an RTCP packet is sent or received, res_rtp_asterisk generates a + Stasis event that contains the RTCP report as well as the local and + remote addresses that the report pertains to. - ASTERISK-25571 + The addresses are determined using ast_find_ourip(). For the local + address, this will typically result in a lookup of the hostname of the + server, and then a DNS lookup of that hostname. If you do not have the + host in /etc/hosts, then this results in a full DNS lookup, which can + potentially block for some time. - Change-Id: Ib8378d73afedfc622be0643b87c542557e0b332c + This is especially problematic when performing RTCP reads, since those + are done on the same thread responsible for reading and writing media. -2015-11-13 10:34 +0000 [482f2fc5ff] Matt Jordan + This patch addresses the issue by performing a lookup of the local + address when RTCP is allocated. We then use this cached local address + for the Stasis events when necessary. - * res/res_pjsip_outbound_registration: Add registration statistics for StatsD + ASTERISK-26280 #close + Reported by Mark Michelson - This patch adds outbound registration statistics for StatsD. This includes - the following: - * A GUAGE metric for the overall count of outbound registrations. - * A GUAGE metric for each state an outbound registration can be in. As the - outbound registrations change state, the overall count of how many - outbound registrations are in the particular state is changed. + Change-Id: I3dd61882c2e57036f09f0c390cf38f7c87e9b556 - These statistics are particularly useful for systems with a large number of - SIP trunks, and where measuring the change in state of the trunks is useful - for monitoring. +2016-08-08 19:14 +0000 [827457dca0] Corey Farrell - ASTERISK-25571 + * Produce friendly error when AST_MODULE_SELF_SYM is not defined. - Change-Id: Iba6ff248f5d1c1e01acbb63e9f0da1901692eb37 + Modules must define AST_MODULE_SELF_SYM to be used as the name of a + generated function. This produces a friendly error when it's not + defined. -2015-11-18 10:05 +0000 [97d7b344de] Matt Jordan + ASTERISK-26278 #close - * res_statsd: Add functions that support variable arguments + Change-Id: Ib9d35a08104529c516d636771365e02c6e77a45b - Often, the metric names of statistics we are generating for StatsD have some - dynamic component to them. This can be the name of a particular resource, or - some internal status label in Asterisk. With the current set of functions, - callers of the statsd API must first build the metric name themselves, then - pass this to the API functions. This results in a large amount of boilerplate - code and usage of either fixed length static buffers or dynamic memory - allocation, neither of which is desireable. +2016-08-08 12:53 +0000 [403b63571c] Alexei Gradinari - This patch adds two new functions to the StatsD API that support a printf - style format specifier for constructing the metric name. A dynamic string, - allocated in threadstorage, is used to build the metric name. This eases - the burden on users of the StatsD API. + * res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack - Change-Id: If533c72d1afa26d807508ea48b4d8c7b32f414ea + The PJSIP taskprocessors could be overflowed on startup + if there are many (thousands) realtime endpoints + configured with unsolicited mwi. + The PJSIP stack could be totally unresponsive for a few minutes + after boot completed. -2015-11-20 21:08 +0000 [726ee873a6] Matt Jordan + This patch creates a separate PJSIP serializers pool for mwi + and makes unsolicited mwi use serializers from this pool. + This patch also adds 2 new global options to tune taskprocessor + alert levels: 'mwi_tps_queue_high' and 'mwi_tps_queue_low'. - * chan_pjsip: Handle T.38 faxes with direct media bridges + This patch also adds new global option 'mwi_disable_initial_unsolicited' + to disable sending unsolicited mwi to all endpoints on startup. + If disabled then unsolicited mwi will start processing + on next endpoint's contact update. - When a channel is in a direct media bridge, a re-INVITE may arrive that forces - Asterisk to re-negotiate the media to a T.38 fax. When this occurs, the bridge - must change its technology to a simple bridge, and re-INVITE the media back - to Asterisk. + ASTERISK-26230 #close - Generally, this logic mostly already exists in Asterisk. However, prior to this - patch, there were a few bugs: - (1) The T.38 framehook currently prevents a channel capable of T.38 faxes from - ever entering into a direct media bridge. This applies even when the only - media being passed over the channel is audio. This patch fixes this bug - by having the framehook specify that it defers caring about any frame type. - This allows the channels to enter into a direct media bridge, which will - be broken when a re-INVITE is received. - (2) When a re-INVITE is received, nothing instructed the bridging layer to - re-inspect the allowed bridging technology. This now occurs when either - a re-INVITE is received from a peer, or when a response is received from - the far end (that is, when the T.38 state changes to either - T38_PEER_REINVITE or T38_LOCAL_REINVITE). - (3) chan_pjsip needs to do a small amount of work to prevent a direct media - bridge from being chosen when a T.38 session is in progress. When a T.38 - session supplement has a t38 datastore - which is added when we detect - we should start thinking about T.38 on a channel - we now refuse a native - RTP bridge. - (4) When a BYE request is received, we don't terminate the T.38 session. If - the other side of a T.38 fax survives the hangup (due to the 'g' flag - in Dial, for example), we don't currently re-INVITE the media on the - other channel back to audio. This patch now has res_pjsip_t38 intercept - BYE requests and inform the far side that the T.38 session is terminated. - This naturally causes the correct re-INVITEs to be sent. + Change-Id: I4c8ecb82c249eb887930980a800c9f87f28f861a - ASTERISK-25582 +2016-08-06 01:37 +0000 [0749f6e6f3] Rodrigo Ramírez Norambuena - Change-Id: Iabd6aa578e633d16e6b9f342091264e4324a79eb + * res_odbc: Show only when there a fail attempt of connection in CLI -2015-10-22 09:44 +0000 [9315a93757] Matt Jordan + When is executed CLI command "odbc show all" every time is show + information about variable last_negative_connect. If not there a fail + attempt of connection will show date like "1969-12-31 21:00:00". - * main/cli: Use proper string methods to check existence of context/exten/app + This patch fix there situation for to show only this information when + exists a fail attempt before. - Because the context, extension, and application are stored in stringfields, - checking for them being NULL doesn't work so well. This patch uses the - appropriate string library call, ast_strlen_zero, to see if there is a value - in the context/exten/app values. + Change-Id: I7c058b0be6f7642e922de75ee6b82c7276c9f113 - Change-Id: Ie09623bfdf35f5a8d3b23dd596647fe3c97b9a23 +2016-08-05 22:06 +0000 [b156a291af] Rodrigo Ramírez Norambuena -2015-11-20 21:07 +0000 [d2b141c79f] Matt Jordan + * cdr_adaptive_odbc: Fix DNSs mixed config quote quoted_identifiers - * res/res_pjsip_t38: Add debug statements + When haved more than once DNSs config and one of their dont set + quoted_identifiers and before this is with configurated with + quoted_identifiers resulting a truncate statement for a reference null + for quote character identifier. - This patch adds some debug statements to res_pjsip_t38. These statements help - to determine which SDP negotiation callbacks are being executed, and, when - a particular callback exits, why a callback may not have applied its logic - to the local or remote SDP. + This patch initializes quoted flag before build SQL Query - Change-Id: I61b3fb9183b7ebbb5da8e9f48b59a5d9d7042d77 + Example config for this bugfix case in cdr_adaptive_odbc.conf file -2015-11-19 09:40 +0000 [1bca90fcbe] Matt Jordan + [first] + connection=asterisk-server1 + table=cdr + quoted_identifiers=" - * res/res_pjsip_outbound_registration: Apply configuration on object type load + [second] + connection=asterisk-server2 + table=cdr - When Asterisk is configured to use a dynamic sorcery backend (such as - res_sorcery_astdb) with 'registration' objects, it will fail to create the - internal state objects associated with the registration objects on module - load. This is due to nothing actually querying for the specific objects - and calling their sorcery apply handler during module load. + [third] + connection=asterisk-server3 + table=cdr + quoted_identifiers=` - This patch fixes that by calling get_registrations in the sorcery observer's - object_type_loaded handler. Doing this causes the sorcery backends to be - asked for the current state of all registration objects, which causes the - apply handler to be called and the internal run-time state to be created. + Change-Id: Ibd95667b468e10d4a19a2b9d88b9934ec7207e1d - ASTERISK-25575 #close +2016-08-05 15:34 +0000 [9042ad40f2] Alexei Gradinari - Change-Id: Ie9306e797098c6d4da7bcf4a5434a15891508b23 + * app_voicemail: Add taskprocessor alert level options. -2015-11-11 06:29 +0000 [8ccb1d2bed] Alexander Traud + On heavy loaded system with IMAP or DB storage, + 'app_voicemail' taskprocessor queue could reach 500 scheduled tasks. + It could happen when the IMAP or DB server dies or is unreachable. + It could happen on startup when there are many (thousands) + realtime endpoints configured with unsolicited mwi. + If the taskprocessor queue reaches the high water level + then the alert is triggered and pjsip stops processing new requests + until the queue reaches the low water level to clear the alert. - * translate: Provide translation modules the result of SDP negotiation. + This patch adds 2 new 'general' configuration options + to tune taskprocessor alert levels: + 'tps_queue_high' - Taskprocessor high water alert trigger level. + 'tps_queue_low' - Taskprocessor low water clear alert level - Previously, a trancoding module did not have access to the joint but cached - format. Therefore, the module did not have access to the attributes negotiated - via SDP (line fmtp). Now, a translation module receives the joint format. + ASTERISK-26229 #close - ASTERISK-25545 #close + Change-Id: I766294fbffedf64053c0d9ac0bedd3109f043ee8 - Change-Id: Id6878a989b50573298dab115d3371ea369e1a718 +2016-08-04 10:16 +0000 [54869e4823] Joshua Colp -2015-11-19 01:03 +0000 [92ea46ba94] Alexander Traud + * res_pjsip_outbound_publish: Use a serializer shutdown group for unload. - * res_format_attr_h264: Do not reset string buffer. + This change replaces the custom unload process for the outbound + publish module with the common serializer shutdown group. - When no parameter is present, Asterisk does not generate the line fmtp, as - expected. However, because a buffer was reset, even rtpmap and fmtp of previous - media codecs got removed. Now, Asterisk does not reset other codecs in case of - no parameter for H.264. + ASTERISK-25217 #close - ASTERISK-25573 #close + Change-Id: I280a0384d860c486202d87d2d674394cca77ffb6 - Change-Id: I93811331f4a28c45418a9e14ee46c0debd47a286 +2016-08-04 10:27 +0000 [e711e57106] Kevin Harwell -2015-11-18 02:25 +0000 [8c14b91651] Alec Davis + * resource_channels: Sync with ARI stubs - * app_bridgeaddchan: ability to barge into existing call + This file was out of sync with the current ARI definitions. - To be able to barge into a call by dialling a prefix+extension that maps - to the extensions device. + Change-Id: Ie7cb7d6d3c2eeb9cc9d683ca87b43b117e713d0a - Senario is that DECT headset users may be away from their desks and need - to transfer the call, the goal is that from any phone they dial a prefix - then their extension and are added to the bridge that they are in, from - there they can drop the headset call, as it's also on the handset, - and transfer the caller. +2016-08-03 15:41 +0000 [29b0f733a0] Corey Farrell - The dialplan would look like, where prefix=73, extension = 8512; - exten => _738512,1,BridgeAdd(SIP/cisco0001) + * Add missing checks during startup. - ASTERISK-25551 #close - Reported By: Alec Davis + This ensures startup is canceled due to allocation failures from the + following initializations. + * channel.c: ast_channels_init + * config_options.c: aco_init - Change-Id: I8eb5096a02168dcc8d7aeea416ef36ba4ed10540 + ASTERISK-26265 #close -2015-11-05 15:37 +0000 [05addf3d8f] Tyler Cambron + Change-Id: I911ed08fa2a3be35de55903e0225957bcdbe9611 - * StatsD: Add sample rate compatibility +2016-08-03 09:47 +0000 [90b30b21ac] Joshua Colp - Implemented support for the StatsD sample rate parameter, - which is a parameter for determining when to send computed - statistics to a client. + * astconfigparser: Really handle case where line is simply a comment. - Valid sample rate values are: - Less than or equal to 0.0 will never be sent. - Between 0.0 and 1.0 will randomly be sent. - Greater than or equal to 1.0 will always be sent. + The regular expression would match causing the code that handled + the line if it was merely a comment to never get executed. - ASTERISK-25419 - Reported By: Ashley Sanders + Change-Id: I3e4022481037ebcba9905587fe8c764b4ce21819 - Change-Id: I11d315d0a5034fffeae1178e650aa8264485ed52 +2016-08-01 11:08 +0000 [73bce50ef8] Joshua Colp -2015-11-17 14:53 +0000 [3dbaf696e9] Richard Mudgett + * sorcery: Use more compatible regex for local expressions. - * res_pjsip_outbound_registration.c: Be tolerant of short registration timeouts. + This changes the use of an empty regex for both res_sorcery_config + and res_sorcery_memory to "." instead. This is a more compatible + regular expression which also works on FreeBSD. - Change-Id: Ie16f5053ebde0dc6507845393709b4d6a3ea526d + ASTERISK-26206 #close -2015-11-17 14:53 +0000 [eaf898ac88] Richard Mudgett + Change-Id: Ia9166dd176f1597555ba22b6931180d0626c1388 - * res_pjsip_outbound_registration.c: Fix 423 response handling. +2016-08-02 03:08 +0000 [3ff964c6b6] Alexander Traud - Receiving a 423 Interval Too Brief response after authentication for an - outbound registration attempt results in assuming that the registrar has - rejected the registration permanently. If there are no configured retries - for fatal responses then the outbound registration is stopped for that - endpoint. + * res_pjsip: SIP/SDP origin (o=) contained square brackets on IP6 transports. - For registrations, PJSIP/PJPROJECT intercepts the handling of 423 - responses and does not include any authentication in the updated - registration request. When the updated request is challenged then the - Asterisk code assumes that we were challenged again because the peer - rejected the authentication we sent earlier. + ASTERISK-26256 #close - * Made registration challenges keep track of the CSeq number to determine - if the received challenge response was for the request we thought we sent. - If the response's CSeq number differs from the CSeq number we last sent - with authentication then authenticate again because it is a challenge to a - different request. + Change-Id: I3fd68df561f81fdb8c6c497d465b50c12422f058 - Change-Id: I81b4bd36d1be095bab606e34b8b44e6302971b09 +2016-08-01 16:13 +0000 [f6276441b1] George Joseph -2015-11-18 00:20 +0000 [4013f9d577] Alec Davis + * menuselect: Add an opaque "member_data" string to the acceptable xml - * app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked! + Change-Id: Id5ac43b95c8d7395f3be37f983632169db3d1afe - commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525) - refer ASTERISK-24958 +2016-07-29 13:13 +0000 [1cd79d6ee5] Mark Michelson - above commit removed ast_channel_lock(qe->chan); - but failed to remove corresponding ast_channel_unlock(qe->chan); + * Remove SILK payload mappings from Asterisk core. - ASTERISK-25561 #close - Reported Alec Davis + SILK is a bit of a hog when it comes to using up our limited number of + dynamic payload types in the RTP engine. By freeing up four slots, it + allows for other codecs to potentially take the place. - Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a + Now, codec_silk.so will dynamically use the payload slots in the RTP + engine when it loads. -2015-11-16 16:10 +0000 [6919daab61] gtjoseph + A better fix would be make RTP dynamic payload types actually + dynamic. However, at this stage of Asterisk 14 development, this is a + risky move that would be imprudent. - * dns: Fix pointer increment in dns_parse_answer_ex + Change-Id: I5774e09408f9a203db189529eabdc0d3f4c1e612 - When dns_parse_answer_ex was iterating over the answers it - wasn't incrementing the answer pointer correctly after the first - answer. The result was that no answers after the first - were being returned. For results where multiple records should - have been sorted by priority, weight, etc., there was nothing - to sort so the only the first record was returned even if it - wouldn't have been the correct record based on the sort. +2016-07-29 04:48 +0000 [a7ae48441f] Joshua Colp - ASTERISK-25565 #close - Reported-by: Daniel Tryba - Tested-by George Joseph + * astconfigparser: Handle case where line is simply a comment. - Change-Id: I8622604fefdcd3c11e2c5609a6382e53b1467b0b + Change-Id: I2dea5815363f4d787d709228a04f33baee383ef5 -2015-11-13 14:03 +0000 [ed13732188] Mark Michelson +2016-07-28 14:10 +0000 [89a0a1eb45] Corey Farrell - * Confbridge: Add a user timeout option + * pbx.c: Fix handling of '-' in extension name and callerid - This option adds the ability to specify a timeout, in seconds, for a - participant in a ConfBridge. When the user's timeout has been reached, - the user is ejected from the conference with the CONFBRIDGE_RESULT - channel variable set to "TIMEOUT". + This adds a two strings to ast_exten. name to go with exten and + cidmatch_display to go with cidmatch. The new fields contain input used + to add the extension in the first place. The existing fields now + contain stripped input that excludes insignificant spaces and dashes. + These stripped fields should always be used for comparisons. The + unstripped fields should normally be used for display, but displaying + stripped values will not cause runtime errors. - The rationale for this change is that there have been times where we - have seen channels get "stuck" in ConfBridge because a network issue - results in a SIP BYE not being received by Asterisk. While these - channels can be hung up manually via CLI/AMI/ARI, adding some sort of - automatic cleanup of the channels is a nice feature to have. + Note the actual string is only stored twice if it contains dashes. If + no dashes are found then both 'char *' fields point to the same memory. + So this change has a minimum effect on memory usage. - ASTERISK-25549 #close - Reported by Mark Michelson + The existing functions ast_get_extension_name and + ast_get_extension_cidmatch return unstripped values as they did before + this change. Other similar bugs likely still exist where unstripped + extensions are saved outside pbx.c then passed back in. - Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98 + ASTERISK-26233 #close -2015-11-16 13:56 +0000 [a83e426e91] Matt Jordan + Change-Id: I6cd61ce57acc1570ca6cc14960c4c3b0a9eb837f - * res/res_pjsip: Fix off nominal crash with requests that fail and have a timer +2016-07-27 17:17 +0000 [68ebf86e2f] Richard Mudgett - When a request is sent using pjsip_endpt_send_request and fails, a condition - exists where the request wrapper, which is an AO2 object, may be de-ref'd - more times than it should. This occurs when the request's callback is called, - and, in the callback, the timer on the PJSIP heap is cancelled. When that - occurs, the request wrapper's lifetime is decremented. When - pjsip_endpt_send_request fails, we unilaterally decrement the lifetime of - the request wrapper again, even though we've already cancelled the reference - associated with the timer. + * pbx.c: Allow dangerous functions when adding a hint to dialplan. - This patch checks the return result of pj_timer_heap_cancel_if_active before - removing the reference associated with the timer. We now only decrement it - in this case if a timer is cancelled as a result of the function call. + We can allow dangerous functions when adding a hint since altering + dialplan is itself a privileged activity. Otherwise, we could never + execute dangerous functions. - Change-Id: I21332343a1a019c1117076f9bf2df27be2850102 + ASTERISK-25996 #close + Reported by: Andrew Nagy -2015-11-14 07:02 +0000 [a1fcf6f7b2] Joshua Colp + Change-Id: I4929ff100ad1200a0198262d069a34f2296e77ba - * hashtab: Add NULL check when destroying iterator. +2016-07-21 10:36 +0000 [b5bc2fdda8] Alexei Gradinari - The hashtab API is pretty NULL tolerant which has resulted - in remaining callers not doing much checks themselves. - Unfortunately the function to destroy an iterator does not - do a NULL check and will result in a crash if passed NULL. - This change fixes that. + * pjproject: fixed a few bugs - ASTERISK-25552 #close + This patch fixes the issue in pjsip_tx_data_dec_ref() + when tx_data_destroy can be called more than once, + and checks if invalid value (e.g. NULL) is passed to. - Change-Id: Ic1bf8eec3639e5a440f1c941d3ae3893ac6ed619 + This patch updates array limit checks and docs + in pjsip_evsub_register_pkg() and pjsip_endpt_add_capability(). -2015-11-13 14:32 +0000 [436023a322] Richard Mudgett + Change-Id: I4c7a132b9664afaecbd6bf5ea4c951e43e273e40 - * res_pjsip_rfc3326.c: Fix crash when channel goes away. +2016-07-17 18:28 +0000 [b4f1c6380e] George Joseph - If an authenticated incoming caller does not respond to our 200 OK INVITE - response with an ACK then PJSIP will hangup the call. Unfortunately, - there is a chance that the session's channel will go away between one use - of the channel pointer and another when building the BYE request because - the BYE is being built by the monitor thread and not the call's serializer - thread. + * pjproject_bundled: Update for pjproject 2.5.5 - * Added a check to ensure that the thread trying to add the Reason header - is the call's serializer thread. This ensures that the channel will not - go away on us. + Add more --disable-* switches to Makefile.rules including + --disable-opus which was causing bundled pjproject to fail with + "undefined reference" errors in libasteriskpj. - Change-Id: I866388d2b97ea2032eaae3f3ab3f1ca6cbd2df89 + Changed PJ_ENABLE_EXTRA_CHECK to 1. -2015-11-13 14:19 +0000 [e8881e1770] Mark Michelson + Removed 2 obsolete patches and added a new one. + The new one was merged by Teluu on 6/27/2016. - * Taskprocessors: Increase high-water mark + ASTERISK-26148 #close - In practical tests, we have seen certain taskprocessors, specifically - Stasis subscription taskprocessors, cross the recently-added high-water - mark and emit a warning. This high-water mark warning is only intended - to be emitted when things have tanked on the system and things are - heading south quickly. In the practical tests, the Stasis taskprocessors - sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in - any danger at all. + Change-Id: Ib8af6c6a9d31f7238ce65b336134c2efdc855063 - As such, this ups the high-water mark to 500 tasks instead. It also - redefines the SIP threadpool request denial number to be a multiple of - the taskprocessor high-water mark. +2016-07-27 10:33 +0000 [feb1a43412] David M. Lee - Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce + * Portably sscanf tv_usec -2015-11-11 07:00 +0000 [fd23d423d8] Alexander Traud + In a timeval, tv_usec is defined as a suseconds_t, which could be + different underlying types on different platforms. Instead of trying to + scanf directly into the timeval, scanf into a long int, then copy that + into the timeval. - * format: Register format-attribute module with cached formats. + Change-Id: I29f22d049d3f7746b6c0cc23fbf4293bdaa5eb95 - In Asterisk 13, cached formats are created before their corresponding format- - attribute module is registered. Cached formats are involved when a local - extension is called. Therefore, ast_format_generate_sdp_fmtp did not work - on local extensions. This change affects the Opus Codec, H.263 (Plus), H.264, - and format-attribute modules provided externally. +2016-07-27 12:36 +0000 [1d364ac54f] Kevin Harwell - ASTERISK-25160 #close + * rtp_engine: Failed assertion and wrong name given for codec - Change-Id: I1ea1f0483e5261e2a050112e4ebdfc22057d1354 + Fixed an assert check that would trigger when the passed in value was negative. + The negative value was being cast to an unsigned value. This resulted in the + check failing. -2015-11-12 11:17 +0000 [40b58a5d2b] Mark Michelson + Also fixed another problem when loading formats in the engine. When setting the + mime type the format's name was being passed in instead of the codec's name. - * res_pjsip distributor: Don't send 503 response to responses. + Change-Id: I1a201cd419ba4d8e9a40d337e36b6fbe1737192c - When the SIP threadpool is backed up with tasks, we send 503 responses - to ensure that we don't try to overload ourselves. The problem is that - we were not insuring that we were not trying to send a 503 to an - incoming SIP response. +2016-07-27 09:56 +0000 [8802e55c26] David M. Lee - This change makes it so that we only send the 503 on incoming requests. + * Replace strdupa with more portable ast_strdupa - Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404 + The strdupa function is a GNU extension, and not widely portable. We + have an ast_strdupa function used within Asterisk which is preferred. + I pulled the definition up from menuselect.c into the menuselect.h + header file so it can be shared across menuselect. -2015-11-11 17:11 +0000 [264c74aa22] Mark Michelson + Change-Id: I9593c97f78386b47dc1e83201e80cb2f62b36c2e - * res_pjsip: Deny requests when threadpool queue is backed up. +2016-07-21 22:44 +0000 [737471f131] Richard Mudgett - We have observed situations where the SIP threadpool may become - deadlocked. However, because incoming traffic is still arriving, the SIP - threadpool's queue can continue to grow, eventually running the system - out of memory. + * dsp.c: Add fax and DTMF detection unit tests. - This change makes it so that incoming traffic gets rejected with a 503 - response if the queue is backed up too much. + * Add fax amplitude and frequency sweep tests. + * Add DTMF amplitude and twist unit tests. - Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816 + Change-Id: I8d77c9a1eec89e440d715f998c928687e870c3f7 -2015-11-12 06:24 +0000 [a159747660] Joshua Colp +2016-07-21 11:56 +0000 [a8cd5d255a] Richard Mudgett - * format_cap: Don't append the 'none' format when appending all. + * dsp.c: Added descriptive comments to Goertzel calculations. - When appending all formats of a type all the codecs are iterated - and added. This operation was incorrectly adding the ast_format_none - format which is special in that it is supposed to be used when no - format is present. It shouldn't be appended. + * Added doxygen to describe some struct members and what is going on in + the code. - ASTERISK-25535 + Change-Id: I2ec706a33b52aee42b16dcc356c2bd916a45190d - Change-Id: I7b00f3bdf4a5f3022e483d6ece602b1e8b12827c +2016-07-13 13:48 +0000 [6dfb34cf13] Richard Mudgett -2015-11-11 04:16 +0000 [d982b99e71] Steve Davies + * dsp.c: Fix incorrect format reference typo. - * Further fixes to improper usage of scheduler + Change-Id: Ia131da3ec29acf385cb43a586a29ecc975eb3896 - When ASTERISK-25449 was closed, a number of scheduler issues mentioned in - the comments were missed. These have since beed raised in ASTERISK-25476 - and elsewhere. +2016-07-25 21:18 +0000 [327136088e] Richard Mudgett - This patch attempts to collect all of the scheduler issues discovered so - far and address them sensibly. + * dsp.c: Correct DTMF twist dsp.conf documentation. - ASTERISK-25476 #close + Change-Id: Idf97e3a72f1edc5fca58f2fa7b20785922be0cae - Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b +2016-07-22 04:43 +0000 [1e7168aee0] Joshua Colp -2015-11-11 11:04 +0000 [2954354404] Joshua Colp + * astconfigparser.py: Update with realtime fixes. - * threadpool: Handle worker thread transitioning to dead when going active. + When configuring SIP URIs in the pjsip.conf file it is + necessary to escape the semicolon so the parser does not + treat it as a comment. This change allows this to work in + the astconfigparser implementation. - This change adds handling of dead worker threads when moving them - to be active. When this happens the worker thread is removed from - both the active and idle threads container. If no threads are able - to be moved to active then the pool grows as configured. + A secondary bug where some data was lost if a configuration + option included a "=" in its value was also fixed. - A unit test has also been added which thrashes the idle timeout - and thread activation to exploit any race conditions between the - two. + A bug where sections would be considered equal despite + being different has also been fixed. - ASTERISK-25546 #close + Change-Id: If229f656ef22050b50e7b34e90c4bffe796431f8 - Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143 +2016-07-21 22:28 +0000 [49461f37b7] Richard Mudgett -2015-11-10 09:24 +0000 [525c7ab780] Alexander Traud + * dsp.c: Fix erroneous fax tone detection. - * rtp_engine: Init a format-attribute module to its RFC defaults. + The Goertzel calculations get less accurate the lower the signal level + being worked with becomes because there is less resolution remaining. + If it is too low we can erroneously detect a tone where none really + exists. The searched for fax frequencies not only need to be so much + stronger than the background noise they must also be a minimum strength. - Previously, format-attribute modules relied on an existing fmtp line in SDP - negotiation. However, fmtp is optional for several formats like the Opus Codec. - Now, the format-attribute module is called with an empty fmtp, which allows the - module to initialise itself to RFC defaults. Furthermore now, Asterisk is able - to differentiate between internally and externally created formats. + * Add needed minimum threshold test to tone_detect(). - ASTERISK-25537 #close + * Set TONE_THRESHOLD to allow low volume frequency spread detection. - Change-Id: I28f680cef7fdf51c0969ff8da71548edad72ec52 + ASTERISK-26237 #close + Reported by: Richard Mudgett -2015-11-09 18:19 +0000 [be93036a4e] Corey Farrell + Change-Id: I84dbba7f7628fa13720add6a88eae3b129e066fc - * Remove ABI compatibility stub functions. +2016-07-24 18:27 +0000 [b4c5dcad01] George Joseph - ABI compatibility stubs existed for ast_app_separate_args and ast_verbose, - this is not needed in master. + * menuselect: Various menuselect enhancements - Change-Id: I07b4d2c16079da3c2c6efa55df4a74368e0bd453 + * Add 'external' as a support level. + * Add ability for module directories to add entries to the menu + by adding members to the /.xml file. + * Expand the description field to 3 lines in the ncurses implementation. + * Allow the description field to wrap in the newt implementation. + * Add description field to the gtk implementation. -2015-11-10 07:51 +0000 [02a124eda5] Corey Farrell + Change-Id: I7f9600a1984a42ce0696db574c1051bc9ad7c808 - * Remove execute permission from dns_system_resolver.c +2016-07-24 16:51 +0000 [9db420c69d] Joshua Colp - Change-Id: I3185735db42064bab00d3e073aed703385a00bf4 + * ari: Update version. -2015-11-09 03:01 +0000 [cf79b62778] Alexander Traud + New functionality has been added so the version has been + bumped to one over the 13 version. - * ast_format_cap_get_names: To display all formats, the buffer was increased. + Change-Id: I5d30077f62640c0ac83599b4e9a9b657bf184f69 - ASTERISK-25533 #close +2016-07-23 08:51 +0000 [8852a4c3db] George Joseph - Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a + * asterisk.c: Add auto generation and persistence of UUID -2015-11-09 07:04 +0000 [e85f0c81af] Alexander Traud + Upcoming features will require the generation and persistence + of a UUID. - * ast_format_cap: Avoid format creation on module load, use cache instead. + Change-Id: I3ec0062427e133217db6ef496a4216f427c3b92d - Since Asterisk 13, formats are immutable and cached. However while loading a - module like chan_sip, some formats were created instead using cached ones. +2016-07-22 14:44 +0000 [76781a0964] Mark Michelson - ASTERISK-25535 #close + * Fix sqlalchemy error regarding identifier length. - Change-Id: I479cdc220d5617c840a98f3389b3bd91e91fbd9b + sqlalchemy was complaining: -2015-11-06 07:54 +0000 [7dd8f89a50] Walter Doekes + sqlalchemy.exc.IdentifierError: Identifier + 'ps_contacts_qualifyfreq_exptime' exceeds maximum length of 30 + characters - * func_callerid: Document that CALLERID(pres) is available. + This fixes the problem by changing the index name to be + "ps_contacts_qualifyfreq_exp" instead. - CALLERPRES() says that it's deprecated in favor of CALLERID(num-pres) - and CALLERID(name-pres). But for channel driver that don't make a - distinction between the two (e.g. SIP), it makes more sense to get/set - both at once. This change reveals the availability of CALLERID(pres), - CONNECTEDLINE(pres), REDIRECTING(orig-pres), REDIRECTING(to-pres) and - REDIRECTING(from-pres). + ASTERISK-26227 #close + Reported by Mark Michelson - ASTERISK-25373 #close + Change-Id: I0ed784f87504be2a59ee8d3242ef6f625d5ed1a9 - Change-Id: I5614ae4ab7d3bbe9c791c1adf147e10de8698d7a -2015-11-06 07:52 +0000 [39daf9f066] Walter Doekes +2016-07-19 06:16 +0000 [9be69c1636] Alexander Traud - * docs: Fix a few typo's in app docs (more then, resourse). + * chan_sip: Enable Session-Timers for SIP over TCP (and TLS). - Change-Id: Iba57efadf6c0b822e762c7a001bc89611d98afd7 + Asterisk defaults to timers=accept/refresher=uas. In that scenario, only in that + scenario, Sessions-Timers (RFC 4028) had no effect via TCP. This change enables + Session-Timers for SIP over TCP (and for SIP over TLS). -2015-11-06 14:19 +0000 [d82a4b098f] gtjoseph + 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 dropped calls. Consequently even with this change, + you might be better-off going for session-timers=refuse in your sip.conf. - * dns: Use ntohl for ans->ttl in dns_parse_answer_ex + ASTERISK-19968 #close - dns_parse_answer_ex was not converting ans->ttl from network - by order to host byte order which was causing certain ttls - it to go negative. In turn this was causing answer edit checks - to fail. + Change-Id: I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 - ASTERISK-25528 #close - Reported-by: Daniel Tryba - Tested-by: George Joseph +2016-07-19 13:39 +0000 [8fb807009f] Alexander Traud - Change-Id: I31505132d6321c46d2f39fd06c20ee808a864037 + * codecs: Add iLBC 20. -2015-11-06 07:36 +0000 [74e7333317] Walter Doekes + Asterisk already supported iLBC 30. This change adds iLBC 20. Now, Asterisk + defaults to iLBC 20 but falls back to iLBC 30, when the remote party requests + this. - * xmldoc: Improve xmldoc wrapping of 'core show ...' output. + ASTERISK-26218 #close + ASTERISK-26221 #close + Reported by: Aaron Meriwether - Previously, the wrapping did both lookahead and lookback, which, - together with color escape sequences, caused some lines to be wrapped - way earlier than other lines. This led to inconsistent output. + Change-Id: I07f523a3aa1338bb5217a1bf69c1eeb92adedffa - This simplifies the wrapping code and makes it more sane: if maxcolumns - is hit, we simply jump back to the last space and wrap there. +2016-07-15 16:16 +0000 [4286a369a1] Richard Mudgett - ASTERISK-25527 #close + * res_pjsip: Whitespace and comment cleanup. - Change-Id: I56d01c6f9a812642b1b05535c98d4db48d17c957 + Change-Id: I11139a4a95df34e223ba622aa6227e33ab8f6c38 -2015-11-06 06:57 +0000 [9d6e917349] Sean Bright (license #5060) +2016-07-21 22:34 +0000 [68de3a9e51] Corey Farrell - * res_pjsip_sdp_rtp: Enable Opus to be negotiated via SIP/SDP. + * pbx.c: Remove duplicate code. - In SIP/SDP, Opus has two channels always (see RFC 7587 section 7). The actual - amount of channels is negotiated in-band. Therefore now, the Opus codec and its - attribute rtpmap are registered with two channels. + Merge code found in both branches of a conditional in + ast_add_extension2_lockopt. - ASTERISK-24779 #close - Reported by: PowerPBX - Tested by: Alexander Traud - patches: - asterisk-24779.patch submitted by Sean Bright (license #5060) + The updated code initializes peer_table and peer_label_table of the + extension before linking it to the context. - Change-Id: Ic7ac13cafa1d3450b4fa4987350924b42cbb657b + Change-Id: Ic759e27cdc9906c6877df41d28ee9c5be8f41c20 -2015-11-03 16:19 +0000 [a2c2a8e1bb] Jonathan Rose +2016-07-21 16:35 +0000 [15bf6a87dc] George Joseph - * taskprocessor: Add high water mark warnings + * Create Asterisk-14: Update CHANGES and UPGRADE files - If a taskprocessor's queue grows large, this can indicate that there - may be a problem with tasks not leaving the processor or else that - the number of available task processors for a given type of task is - too low. This patch makes it so that if a taskprocessor's task queue - grows above 100 queued tasks that it will emit a warning message. - Warning messages are emitted only once per task processor. + Change-Id: I35b5f6657670cfa8985796fa1e1fe86ad299efdc - ASTERISK-25518 #close - Reported by: Jonathan Rose +2016-07-21 09:05 +0000 [1b4922466b] George Joseph - Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c + * chan_sip: Prevent deadlock when issuing "sip show channels" -2015-11-02 20:11 +0000 [cd5ae02812] Corey Farrell + sip_show_channels locks the dialogs container first then locks each + sip_pvt so it can spit out the details. The rest of sip dialog + processing locks the sip_pvt first then locks the dialogs container + if it needs to. Both lock in the order they need but deadlocks can + result. To fix, sip_show_channels and sip_show_channelstats have + been converted to use an iterator rather than ao2_callback. This way + the container is locked only while getting the next entry and is + unlocked when the callback is called. - * Increase account code maximum length to 80. + ASTERISK-23013 #close - This increases the maximum length of account code's to match - extensions. This ensures it is always possible to set an - accountcode to ${EXTEN} without truncation. + Change-Id: Id9980419909e811f89484950ed46ef117b9eb990 - ASTERISK-23904 - Reported by: Ben Merrills +2016-07-15 19:28 +0000 [a36a174c4b] Corey Farrell - Change-Id: If122602304ce03362722eb213a3111b32da5eeb9 + * pbx: Create pbx_sw.c for management of 'struct ast_sw'. -2015-11-03 14:36 +0000 [379c041038] Tyler Cambron + This changes context switches from a linked list to a vector, makes + 'struct ast_sw' opaque to pbx.c. - * StatsD: Add res_statsd compatibility + Although ast_walk_context_switches is maintained the procedure is no + longer efficient except for the first call (inc==NULL). This + functionality is replaced by two new functions implemented by vector + macros. + * ast_context_switches_count (AST_VECTOR_SIZE) + * ast_context_switches_get (AST_VECTOR_GET) - Added a new api to res_statsd.c to allow it to receive a - character pointer for the value argument. This allows for a - '+' and a '-' to easily be sent with the value. + As with ast_walk_context_switches callers of these functions are + expected to have locked contexts. Only a few places in Asterisk walked + the switches, they have been converted to use the new functions. - ASTERISK-25419 - Reported By: Ashley Sanders + Change-Id: I08deb016df22eee8288eb03de62593e45a1f0998 - Change-Id: Id6bb53600943d27347d2bcae26c0bd5643567611 +2016-07-21 10:28 +0000 [81ea024d93] Alexei Gradinari -2015-11-04 14:31 +0000 [9c293b5104] Matt Jordan + * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice. - * main/dial: Protect access to the format_cap structure of the requesting channel + This patch removed call of pjsip_tx_data_dec_ref in send_notify + if send_request failed. + The pjsip_dlg_send_request deletes the message on error by itself. - When a dial attempt is made that involves a requesting channel, we previously - were not: - a) Protecting access to the native format capabilities structure on the - requesting channel. That is inherently unsafe. - b) Reference bumping the lifetime of the format capabilities structure. + It seems this patch fixes next issues: + ASTERISK-26199 + ASTERISK-26166 + ASTERISK-26174 - In both cases, something else could sneak in, blow away the format - capabilities, and we'd be holding onto an invalid format_cap structure. When - the newly created channel attempts to construct its format capabilities, things - go poorly. + Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a - This patch: - a) Ensures that we get a reference to the native format capabilities while - the requesting channel is locked - b) Holds a reference to the native format capabilities during the creation - of the new channel. +2016-07-13 05:24 +0000 [1d2173c7ae] Alexander Traud - ASTERISK-25522 #close + * res_srtp: Enable AES-256 and AES-GCM. - Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f + ASTERISK-26190 #close -2015-10-30 22:57 +0000 [b0bf189908] Corey Farrell + Change-Id: I11326d80edd656524a51a19450e586c583aa0a0b - * Fix cli display of build options. +2016-07-18 22:46 +0000 [8f6e9ffcc6] Corey Farrell - A previous commit reduced the AST_BUILDOPTS compiler define to - only include options that affected ABI. This included some options - that were previously displayed by cli "core show settings". This - change corrects the CLI display while still restricting buildopts.h - to ABI effecting options only. + * Add conditional support for noreturn functions. - ASTERISK-25434 #close - Reported by: Rusty Newton + This adds support for tagging functions with the noreturn attribute. + If DO_CRASH is enabled then ast_do_crash never returns. If AST_DEVMODE + and DO_CRASH are enabled then failed assertions never return. This can + resolve a large number of false positives with static analyzers. - Change-Id: Id07af6bedd1d7d325878023e403fbd9d3607e325 + ASTERISK-26220 #close -2015-11-03 10:58 +0000 [63e02b45c6] Matt Jordan + Change-Id: Icfb61e5fe54574eced4c3e88b317244f467ec753 - * pjsip_configuration: On delete, remove the persistent version of an endpoint +2016-07-19 13:18 +0000 [3d62f317dd] Richard Mudgett - When an endpoint is deleted (such as through an API), the persistent endpoint - currently continues to lurk around. While this isn't harmful from a memory - consumption perspective - as all persistent endpoints are reclaimed on - shutdown - it does cause Stasis endpoint related operations to continue - to believe that the endpoint may or may not exist. + * chan_dahdi.c: Fix deadlock potential in fax redirection. - This patch causes the persistent endpoint related to a PJSIP endpoint to be - destroyed if the PJSIP endpoint is deleted. + The dahdi_handle_dtmf() and my_handle_dtmf() have the potential to + deadlock if an incoming fax happens during the Playback or similar + application. - Change-Id: I85ac707b4d5e6aad882ac275b0c2e2154affa5bb -2015-11-03 11:15 +0000 [d33a1682e3] Matt Jordan + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. - * res_pjsip/location: Destroy contact_status objects on contact deletion + ASTERISK-26216 #close + Reported by: Richard Mudgett - The contact_status Sorcery objects are currently not destroyed when a contact - is deleted. This causes the contact's last known RTT/status to be 'sticky' - when the contact itself may no longer exist. This patch causes the - contact_status objects associated with both dynamic and static contacts to - be destroyed if the AoR holding those contacts is also destroyed (or via - other paths where a contact may be deleted.) + Change-Id: I9144b84ade5f96690996624ec8a2d40c56af40aa - Change-Id: I7feec8b9278cac3c5263a4c0483f4a0f3b62426e +2016-07-13 18:49 +0000 [db4979fa79] Richard Mudgett -2015-11-03 08:15 +0000 [e26a06c1da] Matt Jordan + * chan_sip.c: Fix deadlock potential in fax redirection. - * main/stasis_endpoints: Fix ContactStatusChange JSON for roundtrip_usec field + The sip_read() has the potential to deadlock if an incoming fax happens + during the Playback or similar application. - The JSON packing for the ContactStatusChange event forgot to include the - roundtrip_usec field. As a result, the field never showed up in any event, - even when the data was available. This patch corrects that error by properly - packing the JSON blob with the data. + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. - Change-Id: I8df80da659a44010afbd48f645967518ff5daa17 + * Made always eat the fax detection frame whether there is a fax extension + or not. -2015-11-02 20:24 +0000 [40574a2ea3] Corey Farrell + ASTERISK-26216 + Reported by: Richard Mudgett - * chan_sip: Allow websockets to be disabled. + Change-Id: I6d3f5cccd4b77c3aa6ffc1a54c0f6bde61c9278e - This patch adds a new setting "websockets_enabled" to sip.conf. - Setting this to false allows chan_sip to be used without causing - conflicts with res_pjsip_transport_websocket. +2016-07-13 18:48 +0000 [3db468ea9e] Richard Mudgett - ASTERISK-24106 #close - Reported by: Andrew Nagy + * chan_pjsip.c: Fix deadlock potential in fax redirection. - Change-Id: I04fe8c4f2d57b2d7375e0e25826c91a72e93bea7 + The chan_pjsip_cng_tone_detected() has the potential to deadlock if an + incoming fax happens during the Playback or similar application. -2015-11-02 17:19 +0000 [f80a0ae49b] Mark Michelson + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. - * res_pjsip: Set threadpool max size default to 50. + * Made always eat the fax detection frame whether there is a fax extension + or not. - During a stress test of subscriptions, a huge blast of - subscription-related traffic resulted in the threadpool expanding to a - ridiculous number of threads. The balooning of threads resulted in an - increase of memory, which led to a crash due to being out of memory. + ASTERISK-26216 + Reported by: Richard Mudgett - An easy fix for the particular test was to limit the size of the - threadpool, thus reining in the amount of memory that would be used. It - was decided that there really is no downside to having a non-infinite - default value for the maximum size of the threadpool, so this change - introduces 50 threads as the maximum threadpool size for the SIP - threadpool. + Change-Id: I32aecbb4818af646dc5a619f0dc040e9b1f222e5 - ASTERISK-25513 #close - Reported by John Bigelow +2016-07-12 17:33 +0000 [9abbea162c] Richard Mudgett - Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be + * res_fax.c: Fix deadlock potential in FAXOPT(faxdetect) framehook. -2015-10-29 15:25 +0000 [c5093b21ad] Tyler Cambron + The fax_detect_framehook() has the potential to deadlock if an incoming + fax happens during the Playback or similar application. - * StatsD: Send stuff to the StatsD server and test + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. - Added code to allow the StatsD dialplan application to - send data to the server specified in statsd.conf. + * Made always eat the fax detection frame whether there is a fax extension + or not. - ASTERISK-25419 + * Made only detach the framehook if we detected a fax and not on other + possible frames. - Change-Id: I400db2f37c6ddf61515ff5a019646e36dcd0f922 + ASTERISK-26216 + Reported by: Richard Mudgett -2015-11-02 06:57 +0000 [014e3d426b] Matt Jordan + Change-Id: I99da35c26d1cd802626ffb4c1b4eb5b015581b6d - * pjsip_options: Schedule/unschedule qualifies on AoR creation/destruction +2016-07-12 17:24 +0000 [804fbd9c2b] Richard Mudgett - When an AoR is created or destroyed dynamically, the scheduled OPTIONS - requests that qualify the contacts on the AoR are not necessarily started - or destroyed, particularly for persistent contacts created for that AoR. - This patch adds create/update/delete sorcery observers for an AoR, which - schedule/unschedule the qualifies as expected. + * res_fax: Fix FAXOPT(faxdetect) timeout option. - Change-Id: Ic287ed2e2952a7808ee068776fe966f9554bdf7d + The fax detection timeout option did not work because basically the wrong + variable was checked in fax_detect_framehook(). As a result, the timer + would timeout immediately and disable fax detection. -2015-10-30 13:22 +0000 [80cf4960ff] Matt Jordan + * Fixed ignoring negative timeout values. We'd complain and then go right + on using the negative value. - * Makefile: Add a rule 'basic-pbx' that installs the Basic PBX configs + * Fixed destroy_faxdetect() in the off-nominal case of an incomplete + object creation. - This patch adds a rule for installing the Super Awesome Company based 'Basic - PBX' configuration files. As part of adding this rule, a bit of the content - that makes up installing the configuration files under the 'samples' target - was refactored into a make subroutine for usage by additional later config - make targets. + * Added more range checking to FAXOPT(gateway) timeout parameter. - Change-Id: I6c2e27906f73e2919a2b691da0be20ae70302404 -2015-10-29 08:28 +0000 [b522a5e30f] Joshua Colp + ASTERISK-26214 #close + Reported by: Richard Mudgett - * res_pjsip_pubsub: Fix assertion when UAS dialog creation fails. + Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976 - When compiled with assertions enabled one will occur when destroying - the subscription tree when UAS dialog creation fails. This is because - the code assumes that a dialog will always exist on a subscription - tree when in reality during this specific scenario it won't. +2016-07-18 16:16 +0000 [0d1744e132] Richard Mudgett - This change makes it so a dialog is not removed from the subscription - tree if it is not present. + * chan_dahdi: Add faxdetect_timeout option. - ASTERISK-25505 #close + The new option allows the channel driver's faxdetect option to timeout on + a call after the specified number of seconds into a call. The new feature + is disabled if the timeout is set to zero. The option is disabled by + default. - Change-Id: Id5c182b055aacc5e66c80546c64804ce19218dee - -2015-10-08 11:50 +0000 [fdfd0fb488] Tyler Cambron - - * StatsD: Add user input validation to the application - - Added code to accept user input and validate it before - allowing it to be sent to the StatsD server. - - ASTERISK-25419 - Reported By: Ashley Sanders + * Don't clear dsp_features after passing them to the dsp code in + my_pri_ss7_open_media(). We should still remember them especially for the + new faxdetect_timeout option. - Change-Id: I55c7ce44326a68ad6c5c1514b9575ac50f25bbc3 + ASTERISK-26214 + Reported by: Richard Mudgett -2015-10-26 11:42 +0000 [d343a25173] Alexander Traud + Change-Id: Ieffd3fe788788d56282844774365546dce8ac810 - * chan_sip: Do not send all codecs on INVITE. +2016-07-15 20:44 +0000 [e739888d99] Richard Mudgett - Since version 13, Asterisk sent all allowed codecs as callee, even when the - caller did not request/support them. In case of dynamic RTP payloads, this led - to the same ID for different codecs, which is not allowed by SIP/SDP. Now, the - intersection between the requested and the supported codecs is send again. + * res_pjsip: Add fax_detect_timeout endpoint option. - ASTERISK-24543 #close + The new endpoint option allows the PJSIP channel driver's fax_detect + endpoint option to timeout on a call after the specified number of + seconds into a call. The new feature is disabled if the timeout is set + to zero. The option is disabled by default. - Change-Id: Ie90cb8bf893b0895f8d505e77343de3ba152a287 + ASTERISK-26214 + Reported by: Richard Mudgett -2015-10-19 07:11 +0000 [88f3dbaec9] Rodrigo Ramírez Norambuena + Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d - * install_prereq: Update repositories before install on Debian systems +2016-07-19 04:48 +0000 [6fca2b3bf0] Alexander Traud - When to install packages the indexed local is more old of the - version of software on the repository they have been upgraded by security - update then get the package will give 404 not found. + * Makefile: Retain XML Declaration and DTD in docs. - The patch prevent by update local index to repository for aptitude before - install. + Since Asterisk 12, the documentation got an XML Stylesheet. Because of a typo, + the XML Declaration and DTD were overwritten by this. - ASTERISK-25495 #close + ASTERISK-26212 #close - Reporte by: Rodrigo Ramírez Norambuena + Change-Id: If5ee4625068042e98ab3fcb22a25e2f15d0c68bd - Change-Id: I645959e553aac542805ced394cac2dca964051fa +2016-07-18 18:40 +0000 [cf1188a1be] Corey Farrell -2015-10-24 13:08 +0000 [4328d320c2] gtjoseph + * Unit tests: Use AST_TEST_DEFINE in conditional code only. - * build: GCC 5.1.x catches some new const, array bounds and missing paren issues + If AST_TEST_DEFINE is not conditional to TEST_FRAMEWORK it produces dead + code. This places all existing unit tests into a conditional block if + they weren't already. - Fixed 1 issue in each of the affected files. + ASTERISK-26211 #close - ASTERISK-25494 #close - Reported-by: George Joseph - Tested-by: George Joseph + Change-Id: I8ef83ee11cbc991b07b7a37ecb41433e8c734686 - Change-Id: I818f149cd66a93b062df421e1c73c7942f5a4a77 +2016-07-18 09:22 +0000 [e9daa34261] Alexei Gradinari -2015-10-20 16:02 +0000 [a8aee0bbdb] gtjoseph + * res_pjsip_mwi: remove unneeded check on endpoint's contacts. - * res_pjsip: Add "like" processing to pjsip list and show commands + The function create_mwi_subscriptions_for_endpoint checks + if there is active contacts by retrieving aors and contacts. - Add the ability to filter output from pjsip list and show commands - using the "like" predicate like chan_sip. + This function is used to create all unsolicited mwi subscriptions + on startup and is used when contact added. - For endpoints, aors, auths, registrations, identifyies and transports, - the modification was a simple change of an ast_sorcery_retrieve_by_fields - call to ast_sorcery_retrieve_by_regex. For channels and contacts a - little more work had to be done because neither of those objects are - true sorcery objects. That was just removing the non-matching object - from the final container. Of course, a little extra plumbing in the - common pjsip_cli code was needed to parse the "like" and pass the regex - to the get_container callbacks. + In both cases it's not necessary to check if there are contacts. + The contacts are needed when asterisk sends mwi. - Some of the get_container code in res_pjsip_endpoint_identifier was also - refactored for simplicity. + ASTERISK-26200 #close - ASTERISK-25477 #close - Reported by: Bryant Zimmerman - Tested by: George Joseph + Change-Id: I98e43bdc97f3c0829951cd9bf5f3c6348c6ac1fa - Change-Id: I646d9326b778aac26bb3e2bcd7fa1346d24434f1 +2016-07-18 05:13 +0000 [cb5e3445be] Alexander Traud -2015-10-21 12:22 +0000 [691c0e0b31] Kevin Harwell + * res_rtp_asterisk: Count a roll-over of the sequence number even on lost packets. - * res_pjsip_outbound_registration: registration stops due to fatal 4xx response + With this change, the initial RTP sequence number is randomly chosen not between + 0 and 65535 (0xffff) but 0 and 32767 (0x7fff). This assures, the roll-over + counter (ROC) synchronization is not lost for sRTP, when the very first RTP + packets get lost; see http://srtp.sourceforge.net/faq.html#Q6 - During outbound registration it is possible to receive a fatal (any permanent/ - non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due - to a problem with the registrar itself. Upon receiving the failure response - Asterisk terminates outbound registration for the given endpoint. + ASTERISK-26207 #close - This patch adds an option, 'fatal_retry_interval', that when set continues - outbound registration at the given interval up to 'max_retries' upon receiving - a fatal response. + Change-Id: I9a527e3aa3ce8f3becc5131d7ba32b57b5845464 - ASTERISK-25485 #close +2016-07-18 04:14 +0000 [6428580e7f] Alexander Traud - Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2 + * Makefile: Suppress echoing of target 'config' again. -2015-10-22 17:07 +0000 [5dd9e1938a] Mark Michelson + ASTERISK-26038 #close - * format_cap: Detect vector allocation failures. + Change-Id: I5746cf639f3fdc6332e8a97cf01f979e30bf403f - A crash was seen on a system that ran out of memory due to Asterisk not - checking for vector allocation failures in format_cap.c. With this - change, if either of the AST_VECTOR_INIT calls fail, we will return a - value indicating failure. +2016-07-15 02:59 +0000 [e2e8713b84] Corey Farrell - Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8 + * pbx: Create pbx_ignorepat.c for management of 'struct ast_ignorepat'. -2015-10-02 15:32 +0000 [7f9823ff57] Mark Michelson + This changes context ignore patterns from a linked list to a vector, + makes 'struct ast_ignorepat' opaque to pbx.c. - * res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog. + Although ast_walk_context_ignorepats is maintained the procedure is no + longer efficient except for the first call (inc==NULL). This + functionality is replaced by two new functions implemented by vector + macros. + * ast_context_ignorepats_count (AST_VECTOR_SIZE) + * ast_context_ignorepats_get (AST_VECTOR_GET) - A certain situation can result in our attempting to send a NOTIFY on a - destroyed dialog. Say we attempt to send a NOTIFY to a subscriber, but - that subscriber has dropped off the network. We end up retransmitting - that NOTIFY until the appropriate SIP timer says to destroy the NOTIFY - transaction. When the pjsip evsub code is told that the transaction has - been terminated, it responds in kind by alerting us that the - subscription has been terminated, destroying the subscription, and then - removing its reference to the dialog, thus destroying the dialog. + As with ast_walk_context_ignorepats callers of these functions are + expected to have locked contexts. Only a few places in Asterisk walked + the ignorepats, they have been converted to use the new functions. - The problem is that when we get told that the subscription is being - terminated, we detect that we have not sent a terminating NOTIFY - request, so we queue up such a NOTIFY to be sent out. By the time that - queued NOTIFY gets sent, the dialog has been destroyed, so attempting to - send that NOTIFY can result in a crash. + Change-Id: I78f2157d275ef1b7d624b4ff7d770d38e5d7f20a - The fix being introduced here is actually a reintroduction of something - the pubsub code used to employ. We hold a reference to the dialog and - wait to decrement our reference to the dialog until our subscription - tree object is destroyed. This way, we can send messages on the dialog - even if the PJSIP evsub code wants to terminate earlier than we would - like. +2016-07-17 07:43 +0000 [d56fc3b36b] Alexander Traud - In doing this, some NULL checks for subscription tree dialogs have been - removed since NULL dialogs are no longer actually possible. + * translate: Enables native Packet-Loss Concealment (PLC) for supporting codecs. - Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5 + ASTERISK-25629 #close -2015-09-29 14:53 +0000 [e9e4bc9ece] Mark Michelson + Change-Id: I66c0086e6c17764b8141ec60a3e2aaefe088eb78 - * res_pjsip_pubsub: Ensure dialog lock balance. +2016-07-14 13:51 +0000 [be36bd7ca5] Corey Farrell - When sending a NOTIFY, we lock the dialog and then unlock the dialog - when finished. A recent change made it so that the subscription tree's - dialog pointer will be set NULL when sending the final NOTIFY request - out. This means that when we attempt to unlock the dialog, we pass a - NULL pointer to pjsip_dlg_dec_lock(). The result is that the dialog - remains locked after we think we have unlocked it. When a response to - the NOTIFY arrives, the monitor thread attempts to lock the dialog, but - it cannot because we never released the dialog lock. This results in - Asterisk being unable to process incoming SIP traffic any longer. + * pbx: Create pbx_include.c for management of 'struct ast_include'. - The fix in this patch is to use a local pointer to save off the pointer - value of the subscription tree's dialog when locking and unlocking the - dialog. This way, if the subscription tree's dialog pointer is NULLed - out, the local pointer will still have point to the proper place and the - dialog lock will be unlocked as we expect. + This changes context includes from a linked list to a vector, makes + 'struct ast_include' opaque to pbx.c. - Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a + Although ast_walk_context_includes is maintained the procedure is no + longer efficient except for the first call (inc==NULL). This + functionality is replaced by two new functions implemented by vector + macros. + * ast_context_includes_count (AST_VECTOR_SIZE) + * ast_context_includes_get (AST_VECTOR_GET) -2015-09-28 16:36 +0000 [b96267f7a3] Mark Michelson + As with ast_walk_context_includes callers of these functions are + expected to have locked contexts. Only a few places in Asterisk walked + the includes, they have been converted to use the new functions. - * res_pjsip_pubsub: Prevent crashes on final NOTIFY. + const have been applied where possible to parameters for ast_include + functions. - The SIP dialog is removed from the subscription tree when the final - NOTIFY is sent. However, after the final NOTIFY is sent, the persistence - update function still attempts to access the cseq from the dialog, - resulting in a crash. + Change-Id: Ib5c882e27cf96fb2aec67a39c18b4c71c9c83b60 - This fix removes the subscription persistence at the same time that the - dialog is removed from the subscription tree. This way, there is no - attempt to update persistence when the subscription is being destroyed. +2016-07-14 03:25 +0000 [d3348c51b5] Corey Farrell - Change-Id: Ibb46977a6cef9c51dc95f40f43446e3d11eed5bb + * features.c: Remove unneeded adsi.h include. -2015-09-17 17:28 +0000 [386cd7b2b0] Mark Michelson + adsi.h is no longer used by features.c since parking was moved to a + module. - * res_pjsip_pubsub: Remove serializer when sending final NOTIFY. + Change-Id: I2248b8a455225a17cb6ddaafd6c20c511a1eaf59 - There have been crashes seen where a taskprocessor's listener is NULL - unexpectedly. +2016-06-30 15:58 +0000 [273052f404] Mark Michelson - Looking at backtraces, the problem was specifically seen in PJSIP - serializers. + * Update support for SILK format. - Subscriptions make the mistake of removing a serializer from a dialog - during subscription tree destruction. Since subscription trees are - reference-counted, guaranteeing the circumstances behind the destruction - are not possible. This makes it so that the dialog serializer can be - removed while not holding the dialog lock. This makes it possible for - the distributor to get a pointer to the dialog serializer and have that - serializer get freed out from under it. + This commit adds scaffolding in order to support the SILK audio format + on calls. Roughly, this is what is added: - The fix for this is to remove the serializer from a subscription dialog - when sending the final NOTIFY. This guarantees that the serializer is - removed with the dialog lock held. By doing this, we guarantee that if - the distributor gains access to the dialog's serializer, it will not be - possible for the serializer to get freed by another thread. + * Cached silk formats. One for each possible sample rate. + * ast_codec structures for each possible sample rate. + * RTP payload mappings for "SILK". - Change-Id: I21f5dac33529f65cec45679bdace60670800ff66 + In addition, this change overhauls the res_format_attr_silk file in the + following ways: -2015-09-02 09:14 +0000 [0b63d011c9] Mark Michelson + * The "samplerate" attribute is scrapped. That's native to the format. + * There are far more checks to ensure that attributes have been + allocated before attempting to reference them. + * We do not SDP fmtp lines for attributes set to 0. - * res_pjsip_pubsub: Fix crash on destruction of empty subscription tree. + These changes make way to be able to install a codec_silk module and + have it actually work. It also should allow for passthrough silk calls + in Asterisk. - If an old persistent subscription is recreated but then immediately - destroyed because it is out of date, the subscription tree will have no - leaf subscriptions on it. This was resulting in a crash when attempting - to destroy the subscription tree. + Change-Id: Ieeb39c95a9fecc9246bcfd3c45a6c9b51c59380e - A simple NULL check fixes this problem. +2016-07-14 07:45 +0000 [31967dacdf] Richard Miller (license 5685) - Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac + * app_queue: Only remove queue member from pending when state changes. -2015-09-01 15:47 +0000 [ac0194dad6] Mark Michelson + It is possible for a not in use state change to occur multiple + times causing a queue member to be removed from the pending call + container prematurely. - * res_pjsip_pubsub: Solidify lifetime and ownership of objects. + The first not in use state change will remove the queue member + from the container. At this moment the member may be called and + placed in the pending container. After this another not in use + state change can be received which will remove it from the + container. Despite being called at this point the code will + incorrectly see that there are no pending calls to it. - There have been crashes and general instability seen in the pubsub code, - so this patch introduces three changes to increase the stability. + This change only removes it from the pending container if the + state has actually changed. - First, the ownership model for subscriptions has been modified. Due to - RLS, subscriptions are stored in memory as a tree structure. Prior to my - patch, the PJSIP subscription was the owner of the subscription tree. - When the PJSIP subscription told us that it was terminating, we started - destroying the subscription tree along with all of the individual leaf - subscriptions that belong to the tree. The problem with this model is - that the two actors in play here, the PJSIP subscription and the - individual leaf subscriptions, need to have joint ownership of the - subscription tree. So now, the PJSIP subscription and the individual - leaf subscriptions each have a reference to the subscription tree. This - way, we will not actually free memory until no players are left that - care. The PJSIP subscription is a bigger stakeholder, in that if the - PJSIP subscription's reference to the subscription tree is removed, the - subscription tree instructs the leaf subscriptions to shut down and drop - their references to the subscription tree when possible. The individual - leaf subscriptions, upon being told to shut down, can drop their stasis - subscriptions or whatever they use to learn of new state, and then drop - their reference to the subscription tree once they are ready to die. + ASTERISK-26133 #close + patches: + app_queue.diff submitted by Richard Miller (license 5685) - Second, the lifetime of a PJSIP subscription's reference to our - subscription tree has been altered. As I learned from doing a deep dive, - the PJSIP evsub code can tell Asterisk multiple times that the - subscription has been terminated, and not all of these times - are especially helpful. I have altered the message flow that we use for - SIP subscriptions such that we will always drop the PJSIP subscription's - reference to the subscription tree when we send the NOTIFY that - terminates a SIP subscription. This also means that we will now queue - NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so - that we can have predictable state changes from the PJSIP evsub code. + Change-Id: Ie5a7f17a44f98e9159e9b85009ce3f8393aa78c0 - Third, the synchronization of operations has been improved. PJSIP can - call into our code from a serializer thread (e.g. upon receiving an - incoming request) or from the monitor thread (e.g. when a subscription - times out). Because of this, there is the possibility of competing - threads stepping on each other. PJSIP attempts to do some - synchronization on its own by always keeping the dialog lock held when - it calls into us. However, since we end up pushing tasks into the - serializer, the result was that serialized operations were not grabbing - the dialog lock and could, as a result, step on something that was being - attempted by a different thread. Now we ensure that serialized - operations grab the dialog lock, then check for extenuating - circumstances, then proceed with their operation if they can. +2016-07-14 02:40 +0000 [f3608b50d7] Corey Farrell - Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5 + * pbx: Fix leak of timezone for time based includes. -2015-10-19 15:28 +0000 [1ce62b2545] Richard Mudgett + Create include_free to run ast_destroy_timing and ast_free, use that in + all places that freed an ast_include structure. This fixes a couple of + paths that previously did not run ast_destroy_timing. - * strings.c: Fix __ast_str_helper() to always return a terminated string. + ASTERISK-26196 #close - Users of functions which call __ast_str_helper() such as the ones listed - below are likely to not check the return value for failure so ensuring - that the string is always nil terminated is a good safety measure. + Change-Id: I1671bd111bef0dc113e8bf8f77f89fcfc395d838 - ast_str_set_va() - ast_str_append_va() - ast_str_set() - ast_str_append() +2016-07-13 17:45 +0000 [63ac4c9487] Kevin Harwell - Change-Id: I36ab2d14bb6015868b49329dda8639d70fbcae07 + * translate: explicit format destination not properly set -2015-10-19 15:27 +0000 [a04d946eaa] Richard Mudgett + If the destination format's name differed from the codec name then the + translator's explict_dst field would be improperly set. In some circumstances + it would end up setting it to a newly created format that has the same name + as the codec when it actually needed to be the given destination codec. - * Add missing failure checks to ast_str_set_va() callers. + This could cause the translation path to use the wrong format. For instance, + if an endpoint had specified 'myulaw' as a format the translator could end up + using a 'ulaw' format (with whatever/default settings) instead. If the format + attribute settings differed between the two then there may unexpected results + during processing. - Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f + This patch removes the name check when building the translation path. This + should make it always set the translator's explicit_dst to the given destination + format as long as the sample rate and types match. -2015-10-21 11:44 +0000 [64c172deba] Joshua Colp + Change-Id: Iaf8a03831d68e657d89569d54b505074efbefab5 - * res_pjsip: Move URI validation to use time. +2016-07-08 11:46 +0000 [2f26512fd8] Richard Mudgett - In a realtime based system with a limited number of threadpool threads - it is possible for a deadlock to occur. This happens when permanent - endpoint state is updated, which will cause database queries to be done. - These queries may result in URI validation being done which is done - synchronously using a PJSIP thread. If all PJSIP threads are in use - processing traffic they themselves may be blocked waiting to get the - permanent endpoint container lock when identifying an endpoint. + * stasis_endpoint.c: Fix contactstatus_to_json(). - This change moves URI validation to occur at use time instead of - configuration time. While this comes at a cost of not seeing a problem - until you use it it does solve the underlying deadlock problem. + The roundtrip_usec json member is optional. If it isn't present then + don't put it into the converted json structure where ast_json_pack() + will choke on it. - ASTERISK-25486 #close + Change-Id: I39bb2f86154ef54591270c58bfda8635070f9ea0 - Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a +2016-07-11 10:22 +0000 [bc1ff41be7] Richard Mudgett -2015-10-21 08:08 +0000 [f9cbac7321] Alexander Traud + * pjsip_options.c: Fix container operation. - * format: Update the maximum packetization time for iLBC 30. + aor_observer_deleted() needs to operate on all contacts found for the + deleted AOR instead of only the first one found. This is really only a + problem if there is more than one contact for the AOR. - In September 2006, the maximum packetization time (ptime) were set to such a - low value, packetization was disabled for many codecs actually. This was fixed - for many codecs but not for iLBC 30. This enables packetization for iLBC which - can be enabled for example via allow=ilbc:60,gsm,alaw,ulaw in the file sip.conf. + Change-Id: Id24ac0d5e8c931330231fb45dd2a331a84339dc1 - ASTERISK-7803 +2016-07-11 10:21 +0000 [eabcfeeaa3] Richard Mudgett - Change-Id: I2ef90023d35efb7cb8fe96ed74f53f6846ffad12 -2015-10-21 09:51 +0000 [f3b2b3d1b3] Alexander Traud + * pjsip_configuration.c: Misc cleanups. - * chan_sip: Fix autoframing=yes. + * Fix some whitespace in various routines. - With Asterisk 13, the structures ast_format and ast_codec changed. Because of - that, the paketization timing (framing) of the RTP channel moved away from the - formats/codecs. In the course of that change, the ptime of the callee was not - honored anymore, when the optional autoframing was enabled. + * Rename i to iter in persistent_endpoint_update_state(). - ASTERISK-25484 #close + * Fix off-nominal copy/paste message wording in + persistent_endpoint_contact_deleted_observer() - Change-Id: Ic600ccaa125e705922f89c72212c698215d239b4 + Change-Id: Id8e34f5d09e7eebac3af22501c44c1110a3e29d8 -2015-10-20 22:24 +0000 [b425850f8b] Matt Jordan +2016-07-13 13:45 +0000 [f73ddde7d4] Corey Farrell - * rest-api-templates: Wikify error code response reasons + * chan_sip: Fix reference leak in mwi_event_cb - Error response code descriptions may contain wiki markup that need to be - escaped. Without this patch, Confluence will reject the document being sent - and the responsible script will raise an exception. + Cleanup the peer reference when stasis_subscription_final_message is + true. Also free peer_name even if peer exists, after reload a new + peer_name will be allocated. - Change-Id: I21fcb66fee7f6332381f2b99b1b0195dff215ee5 + ASTERISK-26193 #close -2015-10-20 12:06 +0000 [7be6194d6f] Matt Jordan + Change-Id: If7ecd52facdc5c227f701c760841e3f6ca53cc69 - * funcs/func_holdintercept: Actually add the HOLD_INTERCEPT function +2016-07-13 11:30 +0000 [fd54d69feb] Corey Farrell - When ab803ec342 was committed, it accidentally forgot to actually *add* the - HOLD_INTERCEPT function. This highlights two interesting points: - * Gerrit forces you to put the patch as it is going to into the repo up for - review, which Review Board did not. Yay Gerrit. - * No one apparently bothered to use this feature, or else they don't know about - it. I'm going to go with the latter explanation. + * threadpool: Fix leak in ast_threadpool_serializer_group error path. - ASTERISK-24922 + ast_threadpool_serializer_group leaks a reference to ser when listener + is allocated but tps is not. Although listener takes the reference to + ser cleanup functions are not run without tps. - Change-Id: Ida38278f259dd07c334a36f9b7d5475b5db72396 + ASTERISK-26191 #close -2015-10-19 14:14 +0000 [77780790e0] Jonh Wendell + Change-Id: Ie3ccf69a3f1e676c2ef62a77067c0cb57dc9a585 - * main/cdr: Allow modules to modify CDR fields before dispatching them +2016-06-22 07:13 +0000 [85212f2799] Eugene Voityuk ,Alexander Traud - This patch adds the functions + * res_rtp_asterisk: Enable Forward Secrecy (PFS) for DTLS. - ast_cdr_modifier_register() - ast_cdr_modifier_unregister() + Since July 2014, TLS based protocols (SIP over TLS, Secure WebSockets, HTTPS) + support PFS thanks to ASTERISK-23905. In July 2015, the same feature was added + for DTLS. The source code from main/tcptls.c should have been re-used to ease + security audits. Therefore, this change rolls back the change from July 2015 and + re-uses the code from July 2014. This has the additional benefits to work under + CentOS 7 and enabling not just ECDHE but DHE based cipher suites as well. - That work much like ast_cdr_register() and ast_cdr_unregister(). + ASTERISK-25659 #close + Reported by: StefanEng86, urbaniak, pay123 + Tested by: sarumjanuch, traud + patches: + res_rtp_asterisk.patch submitted by sarumjanuch + dtls_centos_step_1.patch submitted by traud + dtls_centos_step_2.patch submitted by traud - Modules registered will be given a chance to modify (or to do whatever - they want) CDR fields just before they are passed to registered engines. + Change-Id: I537cadf4421f092a613146b230f2c0ee1be28d5c - Thus, for instance, if a module change the "userfield" field of a CDR, - the modified value will be passed to every registered CDR backend for - logging. +2016-06-24 19:55 +0000 [0d487b53b1] Matt Jordan - ASTERISK-25479 #close + * res/res_pjsip_session: Check for presence of an active negotiator - Change-Id: If11d8fd19ef89b1a66ecacf1201e10fcf86ccd56 -2015-10-19 19:59 +0000 [b9bd249a85] Matt Jordan + It is possible in a hypothetical situation for a session refresh to be + invoked on a PJSIP when the negotiatior on the INVITE session has not + yet been established. While this shouldn't occur with existing uses of + ast_sip_session_refresh, the crashes that occur due to improperly + calling PJSIP functions that expect a non-NULL negotiatior are + avoidable. PJSIP will create the negotiator in pjsip_inv_reinvite; this + means that simply checking for the presence of the negotiator before + passing it to other PJSIP functions that use it is allowable. As such, + this patch adds checks for the presence of the negotiator before calling + PJSIP functions that assume it is non-NULL. - * contrib/scripts/autosupport: Update for Asterisk 13 + Change-Id: I1028323e7e01b0a531865e5412a71b6f6ec4276d - This patch adds some minor tweaks for autosupport to update it for Asterisk 13. - This includes: - * Finally removing most references to Zaptel - * Adding support for some additional 'core' commands, and fixing nomenclature - that generally hasn't been used for some time - * Adding some PJSIP/SIP commands to gather endpoints/peers and active channels +2015-10-19 18:55 +0000 [c49833653b] Matt Jordan - Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1 - (cherry picked from commit 9fc9777fa34753fb38991d42d8dbed516e907ca2) + * res/res_pjsip_pubsub: Add additional debug statements -2015-10-18 18:22 +0000 [92fa8d1e0e] Rodrigo Ramírez Norambuena + When something very sad and wrong occurs, it's challenging sometimes to + figure out why. This patch adds some additional debug statements on + off-nominal paths to try and make debugging easier. - * app_queue: Added reason pause of member + Change-Id: I7bffb73cc733b6f80193a23340881db4a102b640 - In app_queue added value Paused Reason on QueueMemberStatus when a member - on queue is paused and the reason was set. +2015-10-19 18:55 +0000 [f12311ee69] Matt Jordan - ASTERISK-25480 #close - Reporte by: Rodrigo Ramírez Norambuena + * res/res_corosync: Raise a Stasis message on node join/leave events - Change-Id: Ia5db503482f50764c15e2020196c785f59d4a68e + When res_corosync detects that a node leaves or joins, it currently is + informed of this via Corosync callbacks. However, there are a few + limitations with the information presented: + (1) While we have information that Corosync is aware of - such as the + Corosync nodeid - that information is really only useful inside of + Corosync or res_corosync. There's no way to translate a Corosync + nodeid to some other internally useful unique identifier for the + Asterisk instance that just joined or left the cluster. + (2) While res_corosync is notified of the instance joining or leaving + the cluster, it has no mechanism to inform the Asterisk core or + other modules of this event. This limits the usefulness of res_corosync + as a heartbeat mechanism for other modules. -2015-10-16 22:01 +0000 [b19860c03a] Corey Farrell + This patch addresses both issues. - * res_ari_events: Fix memory leak in mustache template. + First, it adds the notion of a cluster discovery message both within the + Stasis message bus, as well as the binary event messages that + res_corosync uses to transmit data back and forth within the cluster. + When Asterisk joins the cluster, it sends a discovery message to the other + nodes in the cluster, which correlates the Corosync nodeid along with + the Asterisk EID. res_corosync now maintains a hash of Corosync nodeids + to Asterisk EIDs, such that it can map changes in cluster state with the + Asterisk instance that has that nodeid. Likewise, when an Asterisk + instance receives a discovery message from a node in the cluster, it now + sends its own discovery message back to the originating node with the + local Asterisk EID. This lets Asterisk instances within the cluster + build a complete picture of the other Asterisk instances within the + cluster. - ASTERISK-25308 fixed a memory leak in res_ari_events.c, but - this file is regenerated by a template and the template was - not fixed. + Second, it publishes the discovery messages onto the Stasis message bus. + Said messages are published whenever a node joins or leaves the cluster. + Interested modules can subscribe for the ast_cluster_discovery_type() + message under the ast_system_topic() and be notified when changes in + cluster state occur. - Change-Id: Ied4c6deae89d21f87f9cf99676b1d055aa83b38b + Change-Id: I9015f418d6ae7f47e4994e04e18948df4d49b465 -2015-10-14 14:15 +0000 [d799bcf361] mdu113 +2016-07-13 08:57 +0000 [a3f4141f6f] Alexander Traud - * res_config_pgsql.c: Fix deadlock loading realtime configuration. + * BuildSystem: Avoid obsolete warning with pthread.m4 on autoconf. - On v13, loading several thousand PJSIP endpoints on Asterisk start causes - a deadlock most of the time. + Updated the macro-set autoconf/ax_pthread.m4 to its latest upstream version. - Thanks to mdu113 for discovering that there was a call to pgsql_exec() not - protected by the pgsql_lock reentrancy lock. + ASTERISK-26046 #close - {quote} - I believe a code path exists that attempts to use pgsql connection without - locking pgsql_lock. I believe what happens during that deadlock that I - see is two concurrent threads are both attempting to send query to pgsql, - one of the thread is using a code path without locking pgsql_lock. If - they managed to send queries at the same time, it seems postgres ignores - one of the queries and replies only to the one of them. If it happens so - that the thread holding the lock didn't receive the reply it will wait for - it (and hold the lock) forever (or at least for very long time), thus - completely blocking all access to db. - {quote} + Change-Id: I11abc11d17acd2b6a8a5a5be8ae8e0949dab9cc7 - * Added missing reentrancy locking around pgsql_exec() in find_table(). +2016-07-11 20:07 +0000 [886f2cab23] George Joseph - * Moved unlock of pgsql_lock in unload_module() to avoid locking inversion - between the psql_tables list lock and the pgsql_lock. + * rest_api/channels: Fix multiple issues with create and dial - ASTERISK-25455 #close - Reported by: mdu113 - Patches: - res_config_pgsql.c-connlock2.diff (license #5543) patch uploaded by mdu113 + * We weren't properly subscribing to the channel and it's originator + on create. + * We weren't doing a publish_dial after calling ast_call on dial. + * We weren't calling depart_bridge when a channel left the dial bridge. - Change-Id: Id9e7cdf8a3b65ff19964b0cf942ace567938c4e2 + The first 2 issues were causing events to not be generated and the third + was actually causing channels to not get properly destroyed when hung up. -2015-10-13 14:13 +0000 [13229037d1] Olle Johansson (License 5267) + Together these 3 issues were causing the new + rest_apichannels/create_dial_bridge tests to fail. - * channels/chan_sip: Set cause code to 44 on RTP timeout + As a result of the fixes, the cdr state machine had to be slightly + tweaked to allow bridge leave events without asserting and the tests + themselves had to be updated to account for the channels now cleaning + themselves up. - To quote Olle: + Change-Id: Ibf23abf5a62de76e82afb4461af5099c961b97d8 - "When issuing a hangup due to RTP timeouts the cause code is not set. I have - selected 44 based on Cisco's implementation..." +2016-07-11 10:25 +0000 [b85446d039] Richard Mudgett - ASTERISK-25135 #close - Reported by: Olle Johansson - patches: - rtp-timeout-cause-1.8.diff uploaded by Olle Johansson (License 5267) + * res_pjsip: Fix statsd regression. - Change-Id: Ia62100c55077d77901caee0bcae299f8dc7375fc + The ASTERISK-25904 change-id I8fad8aae9305481469c38d2146e1ba3a56d3108f + patch introduced several regressions when the newly created "Updated" + state goes out for each endpoint registration refresh. -2015-10-12 11:21 +0000 [984f100dab] Richard Mudgett + 1) It restarted any OPTIONS RTT ping cycle. - * config.c: Fix off-nominal memory leak. + 2) It would interfere with a currently active ping and throw off that + ping's resulting RTT calculation. - Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0 + 3) It cleared the RTT time each time the endpoint was refreshed. -2015-10-12 11:20 +0000 [9951255775] Richard Mudgett + 4) The cleared RTT time was sent out as a statsd update each time. - * config.c: Fix potential memory corruption after [section](+). + 5) It created two AMI events for each update. - The memory corruption could happen if the [section](+) is the last section - in the file with trailing comments. In this case process_text_line() has - left *last_cat is set to newcat and newcat is destroyed. + * Revert the original patch and reimplement it. Now the current contact + status state is re-sent instead of the state being momentarily toggled + every time the endpoint refreshes its registration. The statsd events are + not created for the re-sent refresh because they are sent after every + OPTIONS ping. - Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93 + ASTERISK-26160 #close + Reported by: Matt Jordan -2015-10-12 11:21 +0000 [c1ed11ee31] Richard Mudgett + Change-Id: Ie072be790fbb2a8f5c1c874266e4143fa31f66d1 - * config.c: Fix #include after [section](+). +2016-07-10 19:08 +0000 [4ad333bb0e] Joshua Colp - An #include right after a [section](+) would associate any variable - assignments before a new section in the #include with the wrong section. + * func_odbc: Fix connection deadlock. - * Fix section association by setting the current section to the appended - section. + The func_odbc module was modified to ensure that the + previous behavior of using a single database connection + was maintained. This was done by getting a single database + connection and holding on to it. With the new multiple + connection support in res_odbc this will actually starve + every other thread from getting access to the database as + it also maintains the previous behavior of having only + a single database connection. - * Fix '+' and '!' section flag interaction corner case depending upon - which flag came first. If the '!' came first then it would be ignored. - If the '!' came after then it would affect the appended section. The '!' - will now no longer be ignored. + This change disables the func_odbc specific behavior if + the res_odbc module is running with only a single database + connection active. The connection is only kept for the + duration of the request. - ASTERISK-25461 #close - Reported by: Sean Pimental + ASTERISK-26177 #close - Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3 + Change-Id: I9bdbd8a300fb3233877735ad3fd07bce38115b7f -2015-10-10 15:20 +0000 [a12eb89ea4] Ivan Poddubny +2016-07-12 03:50 +0000 [110b01a0bc] Alexander Traud - * Build: Add menuselect options for using compiler sanitizers + * BuildSystem: Allow own CFLAGS on ./configure. - This patch adds menuselect options for building Asterisk with - various sanitizers provided by gcc and clang. + Before this change, make failed with the error + Unknown value '' found in build_tools/menuselect-deps for NATIVE_ARCH + when CFLAGS were supplied to the configure script. This was introduced with + which disabled BUILD_NATIVE when + CFLAGS were supplied. Those who need different -march= values, please, go for + ./configure + make menuselect.makeopts or make menuselect + ./menuselect/menuselect --disable BUILD_NATIVE - When one of *SANITIZER flags is set in menuselect, the appropriate - option is added to CFLAGS ad LDFLAGS for the build. + ASTERISK-25289 #close - Information on sanitizers in the project wiki: - https://github.com/google/sanitizers/wiki + Change-Id: Ic6365d5a97bb9b3556858f06432a8d1cfa83eebc - GCC Manual: - https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html +2016-07-11 13:42 +0000 [44f16af7cc] Richard Mudgett - Clang Compiler User's Manual: - http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation + * ast_expr2: Fix off-nominal memory leak. - ASTERISK-24718 #close - Reported by: Badalian Vyacheslav + Thanks to ibercom for pointing out a memory leak that was missed + in the earlier patch for the issue. - Change-Id: Iafa51b792b7bcb20e848b99d16cf362d08590fa0 + ASTERISK-26119 + Reported by: Alexei Gradinari -2015-10-08 16:43 +0000 [ca030845ff] Richard Mudgett + Change-Id: I9a151f5c4725d97fb82a9e938bc73dc659532b71 - * configure: Fix check for libunbound to require v1.5.0 as minimum. +2016-07-11 10:17 +0000 [8476a9332f] Alexander Traud - Versions of libunbound before v1.4.21 do not compile with Asterisk. - However, since v1.4.21 has a configure script bug that fails to detect the - ldns library (which is fixed in v1.4.22) and v1.4.22 is not an easily - detectable version we will require v1.5.0 as a minimum version of the - library to work with Asterisk. + * install_prereq: Checkout of libSRTP 1.5.x. - ASTERISK-25108 #close - Reported by: Richard Mudgett + Since 5th November 2014, the master branch of libSRTP changed the prefix of + several member names and is not compatible with the source code in Asterisk + anymore. Therefore instead, this change checks out the latest version of the + libSRTP 1.5.x branch. Furthermore now, libSRTP is compiled with OpenSSL as + backend. This makes AES-GCM and AES-IN possible. - Change-Id: Ieb228bfb01467573fc121c7356a9dde27128894d + ASTERISK-22131 #close -2015-10-08 11:50 +0000 [2fe9f09705] Tyler Cambron + Change-Id: I2e396cdc01da0ff610686e398ed210ca7408f7d6 - * StatsD: Write skeleton Asterisk application +2016-07-09 13:32 +0000 [ad30d60c69] Corey Farrell - Wrote the skeleton framework for the Asterisk StatsD dialplan - application. This includes a load function, unload function, a - callback for execution, and XML documentation. + * chan_sip: Fix reference leaks in error paths. - ASTERISK-25419 - Reported By: Ashley Sanders + * get_sip_pvt_from_replaces leaks sip_pvt_ptr on any error. + * build_peer leaks peer on failure to allocate the endpoint. - Change-Id: I9597730e134c6e82c8a55ef4d5334b62dd473363 + This patch fixes get_sip_pvt by using an RAII_VAR, build_peer is fixed + with an unref in the appropriate place. -2015-10-06 18:01 +0000 [34d7fa6c4a] Richard Mudgett + ASTERISK-26184 #close - * res_pjsip: Fix deadlock when sending out-of-dialog requests. + Change-Id: I728b424648ad041409f7d90880f4c28b3ce2ca12 - The struct send_request_wrapper has a pjsip lock associated with it that - is created non-recursive. There is a code path for the struct - send_request_wrapper lock that will attempt to lock it recursively. The - reporter's deadlock showed that the thread calling endpt_send_request() - deadlocked itself right after the wrapper object got created. +2016-07-07 12:44 +0000 [7408c51a48] Corey Farrell - Out-of-dialog requests such as MESSAGE, qualify OPTIONS, and unsolicited - MWI NOTIFY messages can hit this deadlock. + * REF_DEBUG: Prevent logging of container node objects. - * Replaced the struct send_request_wrapper pjsip lock with the mutex lock - that can come with an ao2 object since all of Asterisk's mutexes are - recursive. Benefits include removal of code maintaining the pjsip - non-recursive lock since ao2 objects already know how to maintain their - own lock and the lock will show up in the CLI "core show locks" output. + Using AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE can result in an unref being + recorded to the refs log for the node being replaced. This prevents + logging of those unrefs since they would produce errors in + refcounter.py. - ASTERISK-25435 #close - Reported by: Dmitriy Serov + ASTERISK-26181 #close - Change-Id: I458e131dd1b9816f9e963f796c54136e9e84322d + Change-Id: Ie4fded84e8a1a58b3a59ce59dfd7eb0da3ddc5d4 -2015-10-06 11:05 +0000 [cc131832aa] Stefan Engström +2016-07-04 16:38 +0000 [c832f100d9] Alexei Gradinari - * res/res_rtp_asterisk.c: Fix incorrect assignment of frame->subclass.frame_ending + * res_sorcery_realtime: fix bug when successful UPDATE is treated as failed - In ast_rtp_read, the value of the variable 'mark' which we try to assign to a - frame->subclass.frame_ending may be 0, 1 or (1<<23), but we should translate - it to 0 or 1. + If the SQL UPDATE statement changes nothing then SQLRowCount returns 0. + This value should be treated as success. + But the function sorcery_realtime_update treats it as failed. - ASTERISK-25451 #close - Change-Id: I53bdf5c026041730184a6a809009c028549ce626 + This bug was found using stress tests on PJSIP. + If there are 2 consecutive SIP REGISTER requests with the same contact data + during 1 second then res_pjsip_registrar adds contact location on 1st request + and tries to update contact location on 2nd. + The update fails and res_pjsip_registrar even removes correct contact location. -2015-10-07 01:24 +0000 [c944263e36] Ivan Poddubny + The test "object_update_uncreated" was removed from test_sorcery_realtime.c + because it's now a valid situation. - * func_presencestate: Return "not_set" when no data is set in AstDB + This patch also adds missing debug of extra SQL parameter. - Return AST_PRESENCE_NOT_SET when CustomPresence AstDB key does not - exist, i.e. when a new CustomPresence is added in the dialplan. + ASTERISK-26172 #close - ASTERISK-25400 #close - Reported by: Andrew Nagy + Change-Id: I05a7f3051455336c9dda29efc229decf86071303 - Change-Id: I6fb17b16591b5a55fbffe96f3994ec26b1b1723a +2016-07-07 10:38 +0000 [302be4809a] Joshua Colp -2015-10-06 20:43 +0000 [4bf395e81e] Matt Jordan + * chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled. - * res/res_rtp_asterisk: Fix assignment after ao2 decrement + Some T.38 implementations may send another re-invite after the initial + one which adds additional negotiation details (such as the max bitrate). + Currently this will fail when passthrough is being done in chan_sip as we + do nothing if T.38 is already active. - When we decide we will no longer schedule an RTCP write, we remove the - reference to the RTP instance, then assign -1 to the stored scheduler ID - in case something else comes along and wants to see if anything is scheduled. + Other handlers of T.38 inside of Asterisk (such as res_fax) handle this + scenario so this change adds support for it to chan_sip and res_pjsip_t38. + If a request to negotiate is received while T.38 is already enabled a + new re-INVITE is sent and negotiation is done again. - That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to - fix the regression introduced by 3cf0f29310, this improper assignment on a - potentially destroyed object started getting tripped on the build agents. + ASTERISK-26179 #close - Frankly, this should have been crashing a lot more often earlier. I can only - assume that the timing was changed just enough by both changes to start - actually hitting this problem. + Change-Id: I0298494d3da6df3219bbfa4be9aa04015043145c - As it is, simply moving the assignment prior to the ao2 deference is sufficient - to keep the RTP instance from being referenced when it is very, truly, - aboslutely dead. +2016-07-07 10:55 +0000 [fb96492ec4] Scott Griepentrog - (Note that it is still good practice to assign -1 to the scheduler ID when we - know we won't be scheduling it again, as the ao2 deref *may* not always destroy - the ao2 object.) + * PJSIP: provide valid tcp nodelay option for reuse - ASTERISK-25449 + When using TCP transport with chan_pjsip, the TCP_NODELAY + option value was allocated on the stack, then passed as a + pointer to the tcp transport configuration structure, and + later re-used on subsequently created sockets when it was + no longer valid. This patch changes the allocation to be + a static. - Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7 + ASTERISK-26180 #close + Reported by: Scott Griepentrog -2015-10-06 12:40 +0000 [3ec9cf7d6a] Florian Sauerteig + Change-Id: I3251164c7f710dbdab031282f00e30a9770626a0 - * chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers. +2016-07-06 09:29 +0000 [1c949eea6c] Alexei Gradinari - If a Via header containes an IPv6 address and a port number is ommitted, - as it is the standard port, we now leave the port empty and to not set it - to the value after the first colon of the IPv6 address. + * res_pjsip: Added "subscribe_context" to endpoint - ASTERISK-25443 #close + 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. - Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70 + ASTERISK-25471 #close -2015-10-05 16:53 +0000 [8fe9350b68] Richard Mudgett + Change-Id: I3fb7a15f5bc154079bd348c08b7ad1cdd2d5e514 - * chan_pjsip: Fix crash on reINVITE before initial INVITE completes. +2016-07-04 05:58 +0000 [32cb981d04] Alexander Traud - Apparently some endpoints attempt to send a reINVITE before completing the - initial INVITE transaction. In this case PJSIP responds appropriately to - the reINVITE with a 491 INVITE request pending. Unfortunately chan_pjsip - is using the initial INVITE transaction state to determine if an INVITE is - the initial INVITE or a reINVITE. Since the initial INVITE transaction - has not been confirmed yet chan_pjsip thinks the reINVITE is an initial - INVITE and starts another PBX thread on the channel. The extra PBX thread - ensures that hilarity ensues. + * BuildSystem: Avoid obsolete warning with libcurl.m4 on autoconf. - * Fix checks for a reINVITE on incoming requests to look for the presence - of a to-tag instead of the initial INVITE transaction state. + Updated the macro-set autoconf/libcurl.m4 to its latest upstream version. This + avoids a warning about an obsolete macro on AC_HELP_STRING, because Asterisk is + using AS_HELP_STRING everywhere else already. - * Made caller_id_incoming_request() determine what to do if there is a - channel on the session or not. After a channel is created it is too late - to just store the new party id on the session because the session's party - id has already been copied to the channel's caller id. + ASTERISK-26046 - ASTERISK-25404 #close - Reported by: Chet Stevens + Change-Id: I8299faf504ceaeee3e39930c59293809e116c631 - Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be +2016-06-22 17:26 +0000 [9f2c007254] Richard Mudgett -2015-10-05 21:34 +0000 [8cb614fe20] Matt Jordan + * res_pjsip_session.c: Don't send extra BYE if SDP invalid. - * Fix improper usage of scheduler exposed by 5c713fdf18f + When an answer SDP is invalid we were disconnecting the outgoing call and + sending two BYE requests. The first BYE was sent by PJPROJECT because of + the invalid SDP answer. The second BYE was sent by Asterisk because it + thought the canceled call was the result of the RFC5407 section 3.1.2 race + condition. - When 5c713fdf18f was merged, it allowed for scheduled items to have an ID of - '0' returned. While this was valid per the documentation for the API, it was - apparently never returned previously. As a result, several users of the - scheduler API viewed the result as being invalid, causing them to reschedule - already scheduled items or otherwise fail in interesting ways. + * Made not send the BYE on a canceled session if the SDP negotiation is + incomplete because PJPROJECT has already sent a BYE for the failed + negotiation. - This patch corrects the users such that they view '0' as valid, and a returned - ID of -1 as being invalid. + ASTERISK-25772 #close + Reported by: Dmitriy Serov - Note that the failing HEP RTCP tests now pass with this patch. These tests - failed due to a duplicate scheduling of the RTCP transmissions. + Change-Id: I44ad0bd0605e8eeb7035c890d6f97a1331f1a836 - ASTERISK-25449 #close +2016-06-27 17:19 +0000 [08d3b9a89e] Richard Mudgett - Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39 -2015-08-26 16:58 +0000 [c6b0d60264] Debian Amtelco + * res_pjsip_session.c: End call on initial invalid SDP negotiation. - * chan_pjsip: Add Referred-By header to the PJSIP REFER packet. + When an incoming call defers SDP negotiation and then sends us an invalid + SDP in the ACK, we need to send a BYE to disconnect the call. In this + case SDP negotiation has failed and we don't have valid media streams + negotiated. - Some systems require the REFER packet to include a Referred-By header. - If the channel variable SIPREFERREDBYHDR is set, it passes that value as the - Referred-By header value. Otherwise, it adds the current dialog’s local info. + ASTERISK-25772 - Reported by: Dan Cropp - Tested by: Dan Cropp + Change-Id: Ia358516b0fc1e6c4c139b78246f10b9da7a2dfb8 - Change-Id: I3d17912ce548667edf53cb549e88a25475eda245 +2016-06-23 15:13 +0000 [e6e12c752c] Richard Mudgett -2015-10-03 06:27 +0000 [89dec7675d] Ivan Poddubny + * res_pjsip.c: Register PJMEDIA error code decoder. - * manager: Fix GetConfigJSON returning invalid JSON + Registering the PJMEDIA error codes allows errors found when parsing an + incoming SDP to be easier to figure out. - When GetConfigJSON was introduced back in 1.6, it returned each - section as an array of strings: ["key=value", "key2=value2"]. - Afterwards, it was changed a few times and became - ["key": "value", "key2": "value2"], which is not a correct JSON. - This patch fixes that by constructing a JSON object {} instead of - an array []. + "Missing SDP rtpmap for dynamic payload type (PJMEDIA_SDP_EMISSINGRTPMAP)" + is much easier to understand than "Unknown error 220030". - Also, the keys "istemplate" and "tempates" that are used to - indicate templates and their inherited categories are now wrapped in - quotes. + ASTERISK-25772 - ASTERISK-25391 #close - Reported by: Bojan Nemčić + Change-Id: I44b2dcea656fedd7593171be9e845880a2c70ca0 - Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8 +2016-06-27 16:56 +0000 [5d2fc6bab7] Richard Mudgett -2015-09-30 17:28 +0000 [1b80dbeb60] Richard Mudgett + * res_pjsip_session.c: Remove unused parameter from handle_incoming(). - * res_sorcery_memory_cache.c: Fix deadlock with scheduler. + Change-Id: Iedd182d189ec947c42edc2c66c4bda3c22060daa - A deadlock can happen when a sorcery object is being expired from the - memory cache when at the same time another object is being placed into the - memory cache. There are a couple other variations on this theme that - could cause the deadlock. Basically if an object is being expired from - the sorcery memory cache at the same time as another thread tries to - update the next object expiration timer the deadlock can happen. +2016-06-22 18:02 +0000 [656ed73ac6] Richard Mudgett - * Add a deadlock avoidance loop in expire_objects_from_cache() to check if - someone is trying to remove the scheduler callback from the scheduler. + * res_pjsip: Add missing NULL checks when using pjsip_inv_end_session(). - ASTERISK-25441 #close + pjsip_inv_end_session() is documented as being able to return the + passed in tdata parameter set to NULL on success. - Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc + Change-Id: I09d53725c49b7183c41bfa1be3ff225f3a8d3047 -2015-10-01 14:30 +0000 [9c1ca287a4] Richard Mudgett +2016-06-30 15:17 +0000 [4f7b859726] Richard Mudgett - * res_sorcery_memory_cache.c: Replace inline code with function. + * features: Fix channel datastore access. - Make sorcery_memory_cache_close() call remove_all_from_cache() instead of - partially inlining it. + Found as a result of the testsuite tests/callparking test crashing. - ASTERISK-25441 + Several calls to ast_get_chan_featuremap_config() and + ast_get_chan_features_xfer_config() did not lock the channel before + calling so the channel's datastore list was accessed without the lock's + protection. Apparently another thread deleted a datastore on the + channel's list while the crashing thread was walking the list. Crash at + 0xdeaddead due to MALLOC_DEBUG's memory filler value as a result. - Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c + * Add missing channel locks to calls that were not already protected + as the doxygen for those calls indicates. -2015-10-01 14:27 +0000 [6554a3b25e] Richard Mudgett + Change-Id: Id273b3d305cc616406c353cbc841b2b7655efaa1 - * res_sorcery_memory_cache.c: Shutdown in a less crash potential order. +2016-06-30 08:25 +0000 [5ad7e1c09a] George Joseph - Basically you should shutdown in the opposite order of how you setup since - later setup pieces likely depend on earlier setup pieces. e.g., - Registering your external API with the rest of the system should be the - last thing setup and the first thing unregistered during shutdown. + * configure: Fix HAVE_PJSIP_EVSUB_GRP_LOCK not set with external pjproject - Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e + There was a typo in configure.ac preventing HAVE_PJSIP_EVSUB_GRP_LOCK + from getting set when using an external pjproject. -2015-09-30 17:27 +0000 [359394cc29] Richard Mudgett + ASTERISK-26099 #close + Reported-by: Ross Beer - * res_sorcery_memory_cache.c: Misc tweaks. + Change-Id: I709af70428e125fb5ccd44b171d25dd29141f0ae - Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160 +2016-06-29 15:31 +0000 [dab2a6b689] Matt Jordan -2015-09-30 17:27 +0000 [7942d1c2ff] Richard Mudgett + * hep.conf.sample: Default 'enabled' to 'no' - * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK. + Following the principle of least surprise, we should not be sending + massive numbers of PJSIP and RTCP HEP packets out into the ether to some + only-slightly-random IP address. Having 'enabled' set to 'no' in the + sample configuration file should prevent this from happening for those + who run 'make samples'. - Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c + ASTERISK-26159 #close -2015-09-30 13:42 +0000 [9f229d6a49] Joshua Colp + Change-Id: I1753a64ca83a3442a6ebdc31061f8185c062d9b1 - * res_rtp_asterisk: Move "Set role" warning to be debug. +2016-06-29 15:09 +0000 [9129ac8e73] Matt Jordan - In practice the set_role API callback can be invoked even - when no ICE is present on an RTP instance. This can occur - if ICE has not been enabled on it. + * pjproject/patches/config_site: Increase the max number of ICE candidates - ASTERISK-25438 #close + When negotiating ICE candidates with WebRTC capable endpoints, many + networks will result in a browser offering ICE candidates that exceeds + the default number of max candidates, 16. This patch bumps the max + candidates to 32, with the max checks at twice the number of candidates. + In practice, this has shown to be sufficient for browser/WebRTC + negotiation. - Change-Id: I0e17e4316f0f0d7f095c78c3d4fd73a913b6ba69 + Change-Id: Ifd8da8b315f5ae14814d4ce20e10d2e6355020e5 -2015-09-28 15:31 +0000 [9bc7386b7c] Richard Mudgett +2016-06-28 09:00 +0000 [4045e6d8ba] George Joseph - * sched.c: Add warning about negative time interval request. + * codecs: Fix ABI incompatibility created by adding format_name to ast_codec - Change-Id: Ib91435fb45b7f5f7c0fc83d0eec20b88098707bc + Adding format_name even to the end of ast_codec caused issued with + binary codec modules because the pointer would be garbage in asterisk + when they registered. So, the ast_codec structure was reverted and an + internal_ast_codec structure was created just for use in codec.c. A new + internal-only API was also added (__ast_codec_register_with_format) so + that codec_builtin could register codecs with the format_name in a + separate parameter rather than in the ast_codec structure. -2015-09-25 18:37 +0000 [12feec0bf7] Richard Mudgett + ASTERISK-26144 #close + Reported-by: Alexei Gradinari - * res/ari/config.c: Fix user sort compare function. + Change-Id: I6df1b08f6a6ae089db23adfe1ebc8636330265ba - Made use the ao2 sort compare template function and OBJ_SEARCH_xxx - identifiers. +2016-06-28 08:22 +0000 [651290a809] George Joseph - Change-Id: Ic53005dc5aafa7a36c72300dd89b75fb63c92f4c + * BuildSystem: Fix a few issues hightlighted by gcc 6.x -2015-09-25 17:26 +0000 [3f4fa245e5] Richard Mudgett + gcc 6.1.1 caught a few more issues. + Made sure the unit tests still pass for the func_env and stdtime + issues. - * res/ari/config.c: Optimize conf_alloc() object init. + ASTERISK-26157 #close - * Now conf_alloc() has more off nominal error checking. + Change-Id: I6664d8f34a45bc1481d2a854481c7878b0c1cf8e - * Eliminated RAII_VAR() use in conf_alloc(). +2016-06-28 10:33 +0000 [83f2c2573b] Matt Jordan - * Eliminated a dubius shortcut when destroying cfg->general in - conf_destructor() that would cause a crash if cfg->general failed to get - allocated. + * configs/basic-pbx/modules.conf: Remove 'bad' modules - * Add some ACO registration section comments. + This patch removes the following modules: + - pbx_functions: It never existed. + - res_pjsip_log_forwarder: It no longer exists. + - res_hep_pjsip: The base HEP module wasn't loaded, and most basic PBXs + aren't going to be installing HOMER + - res_pjsip_phoneprov_provider: The basic res_phoneprov module isn't + loaded, and we aren't configured to make use of the + module - Change-Id: Ia40c2b1b2d0777d641605118ae019c5a73865e1a + Change-Id: Id91f68cae7c9c8c3d370029fe1268cb51e4ff5a5 -2015-09-25 16:48 +0000 [aa00df62ee] Richard Mudgett +2016-06-22 11:19 +0000 [75818b4084] Joshua Colp - * res/ari/config.c: Fix conf_alloc() object init. + * siren: Add format attribute modules for Siren7 and Siren14. - Need to finish initializing the string fields in the ao2 object before - putting any default strings into them. + This change removes hardcoded SDP parsing and generation for + Siren7 and Siren14 from chan_sip and moves it to format attribute + modules so it can also be used by chan_pjsip. - ASTERISK-25383 #close - Reported by: yaron nahum + With this the fmtp lines for both are added with the bitrate + information. - Change-Id: I9f7f3a03f0c4991a01593abf8697b9a587c0ea84 + ASTERISK-26021 -2015-09-21 07:26 +0000 [2d7a4a3357] Matt Jordan + Change-Id: Ibb004eda37a14c0a35ef0613f6237977fc800037 - * main/logger: Add log formatters and JSON structured logs +2016-06-23 04:33 +0000 [6e87bf746a] Alexander Traud - When Asterisk is part of a larger distributed system, log files are often - gathered using tools (such as logstash) that prefer to consume information - and have it rendered using other tools (such as Kibana) that prefer a - structured format, e.g., JSON. This patch adds support for JSON formatted - logs by adding support for an optional log format specifier in Asterisk's - logging subsystem. By adding a format specifier of '[json]': + * BuildSystem: Avoid obsolete warning with AC_TYPE_SIGNAL on autoconf. - full => [json]debug,verbose,notice,warning,error + Removed the obsolete macro AC_TYPE_SIGNAL because Asterisk does not use K&R C + but requires ANSI C anyway. - Log messages will be output to the 'full' channel in the following - format: + ASTERISK-26046 - { - "hostname": Hostname or name specified in asterisk.conf - "timestamp": Date/Time - "identifiers": { - "lwp": Thread ID, - "callid": Call Identifier - } - "logmsg": { - "location": { - "filename": Name of the file that generated the log statement - "function": Function that generated the log statement - "line": Line number that called the logging function - } - "level": Log level, e.g., DEBUG, VERBOSE, etc. - "message": Actual text of the log message - } - } + Change-Id: I914c014385e1862102d90fe7650621def78db02e - ASTERISK-25425 #close +2016-06-22 15:04 +0000 [8c7017f76e] Corey Farrell - Change-Id: I8649bfedf3fb7bf3138008cc11565553209cc238 + * res_fax: Fix reference leak in fax_v21_session_new. -2015-09-27 20:45 +0000 [9402f80726] Matt Jordan + fax_v21_session_new created a session details object but only released + the allocation reference during error conditions. fax_session_new adds + it's own reference to details if needed so the caller is always + responsible for cleaning it's own reference. - * res/res_stasis: Fix accidental subscription to 'all' bridge topic + ASTERISK-26141 #close - When b99a7052621700a1aa641a1c24308f5873275fc8 was merged, subscribing to a - NULL bridge will now cause app_subscribe_bridge to implicitly subscribe to - all bridges. Unfortunately, the res_stasis control loop did not check that - a bridge changing on a channel's control object was actually also non-NULL. - As a result, app_subscribe_bridge will be called with a NULL bridge when a - channel leaves a bridge. This causes a new subscription to be made to the - bridge. If an application has also subscribed to the bridge, the application - will now have two subscriptions: - (1) The explicit one created by the app - (2) The implicit one accidentally created by the control structure + Change-Id: Ie7fc52a83b6596ce9ce2d5a2bd9f3e204f48fc88 - As a result, the 'BridgeDestroyed' event can be sent multiple times. This - patch corrects the control loop such that it only subscribes an application - to a new bridge if the bridge pointer is non-NULL. +2016-06-22 14:25 +0000 [6fa3ed0679] Alexei Gradinari - ASTERISK-24870 + * res_pjsip: improve realtime performance #2 - Change-Id: I3510e55f6bc36517c10597ead857b964463c9f4f + The patch removes updating all Endpoints' status on startup. + Instead, only non-qualified aors with static contact + and non-qualified non-expired contacts are retrieved from the realtime to + update the endpoint status to ONLINE. + The endpoint name was added to the contact object to simply find the endpoint + that created this contact. -2015-09-04 13:51 +0000 [d6472d96b3] Scott Griepentrog + The status of endpoints with qualified aors will be updated by 'qualify' + functions. - * Scripts: check file versions of Asterisk and dependencies + ASTERISK-26061 #close - To help in diagnosing mismatched modules and libraries, this - script scans for version, repository, and source information - and reports what is found. + Change-Id: Id324c1776fa55d3741e0c5457ecac0304cb1a0df - ASTERISK-25376 #close - Reported by: Ashley Sanders +2016-06-22 13:41 +0000 [d293ead077] George Joseph - Change-Id: Ib0642d0fb96712476f59760d6d137a24633fe2d6 + * res_rtp_asterisk: Fix a self-comparison identified by gcc 6 -2015-09-24 14:56 +0000 [7c7a7ddd27] Richard Mudgett + gcc 6 caught a previously unidentified self-comparison in + ice_candidate_cmp. Fixed it and re-ordered the predicates for better + short-circuiting. - * app_queue.c: Force COLP update if outgoing channel name changed. + ASTERISK-26140 #close - * When a call is answered and the outgoing channel name has changed then - force a connected line update because the channel is no longer the same. - The channel was masqueraded into by another channel. This is usually - because of a call pickup. + Change-Id: I3da713c568e24064430257b3502fbdafd35af7a7 - Note: Forwarded calls are handled in a controlled manner so the original - channel name is replaced with the forwarded channel. +2016-06-22 10:37 +0000 [c7309a5254] George Joseph - ASTERISK-25423 #close - Reported by: John Hardin + * chan_unistim: Fix memcpy in get_to_address - Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172 + A code block only enabled when HAVE_PKTINFO is not defined (FreeBSD) + was using a pointer to a pointer as the destination of a memcpy and a + '&' instead of '*' in the sizeof. -2015-09-24 14:20 +0000 [145608bd81] Richard Mudgett + ASTERISK-26138 #close - * app_queue.c: Factor out a connected line update routine. + Change-Id: Id4927ff256c0e470bdf7bcfc025146a2f656e708 - Replace inlined code with update_connected_line_from_peer(). +2016-06-20 13:21 +0000 [b6bd97eea2] Mark Michelson - ASTERISK-25423 - Reported by: John Hardin + * Fix Alembic upgrades. - Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3 + A non-existent constraint was being referenced in the upgrade script. + This patch corrects the problem by removing the reference. -2015-09-24 13:27 +0000 [1d394774b2] Richard Mudgett + In addition, the head of the alembic branch referred to a non-existent + revision. This has been fixed by referring to the proper revision. - * app_dial.c: Make 'A' option pass COLP updates. + This patch fixes another realtime problem as well. Our Alembic scripts + store booleans as yes or no values. However, Sorcery tries to insert + "true" or "false" instead. This patch introduces a new boolean type that + translates to "yes" or "no" instead. - While the 'A' option is playing the announcement file allow the caller and - peer to exchange COLP update frames. + ASTERISK-26128 #close - ASTERISK-25423 - Reported by: John Hardin + Change-Id: I51574736a881189de695a824883a18d66a52dcef - Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9 +2016-06-22 10:51 +0000 [3b4f5d1345] George Joseph -2015-09-24 12:59 +0000 [680b76eb25] Richard Mudgett + * test_res_pjsip_scheduler: Add 'depends' on pjproject in MODULEINFO - * app_dial.c: Force COLP update if outgoing channel name changed. + Since the file was missing the depends on pjproject, it wasn't + picking up the pjproject related include path. If there was no + system installed pjproject and pjproject-bundled was used, a compile + would fail because pjsip.h wasn't found. - * When a call is answered and the outgoing channel name has changed then - force a connected line update because the channel is no longer the same. - The channel was masqueraded into by another channel. This is usually - because of a call pickup. + ASTERISK-26139 #close - Note: Forwarded calls are handled in a controlled manner so the original - channel name is replaced with the forwarded channel. + Change-Id: I2ee64a999051452bc198c4e2c168c70769cd3757 - ASTERISK-25423 - Reported by: John Hardin +2016-06-22 10:55 +0000 [5f23aacda4] Alexander Traud - Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c + * BuildSystem: Avoid obsolete warning with AC_FUNC_SETVBUF_REVERSED on autoconf. -2015-09-24 12:37 +0000 [fdf0bcb04a] Richard Mudgett + Removed the obsolete macro AC_FUNC_SETVBUF_REVERSED because Asterisk does not + support the platform SVR2 from the year 1987 anymore. - * app_dial.c: Factor out a connected line update routine. + ASTERISK-26046 - Replace inlined code with update_connected_line_from_peer(). + Change-Id: I28161b037feb2d29ab46ed20e785928460226c22 - ASTERISK-25423 - Reported by: John Hardin +2016-06-21 06:52 +0000 [804005d251] Torrey Searle - Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091 + * res_rtp_asterisk: fix memory leak in dtls -2015-09-23 17:41 +0000 [c285879845] Richard Mudgett + ensure that cert bios get freed after creating the fingerprint - * app_dial.c: Remove some no-op code. + ASTERISK-26129 #close - Change-Id: Ice1884a94315d3cb7e3bbd47a9fba76a27276c54 + Change-Id: I44d23aea07dce80176ca1ff877c5ace9452ef451 -2015-09-23 14:02 +0000 [3eefa07a39] Mark Michelson +2016-06-21 17:42 +0000 [f572b26495] Richard Mudgett - * logger: Prevent duplicate dynamic channels from being added. + * res_pjproject.c: Replace inlined DEBUG_ATLEAST() with macro. - There was a problem observed where the "logger add channel" CLI command - would allow for a channel with the same name to be added multiple times. - This would result in each message being written out to the same file - multiple times. + Change-Id: I8799fb0a347ad76e747dafd0eacf1ea1086b9a8c - The problem was due to the difference in how logger channel filenames - are stored versus the format they are allowed to be presented when they - are added. For instance, if adding the logger channel "foo" through the - CLI, the result would be a logger channel with the file name - /var/log/asterisk/foo being stored. So when trying to add another "foo" - channel, "foo" would not match "/var/log/asterisk/foo" so we'd happily - add the duplicate channel. +2016-06-12 11:19 +0000 [b57cd01404] George Joseph - The fix presented here is to introduce two new methods in the logger - code: - * make_filename(): given a logger channel name, this creates the - filename for that logger channel. - * find_logchannel(): given a logger channel name, this calls - make_filename() and then traverses the list of logchannels in order - to find a match. + * res_pjsip_pubsub: Address SEGV when attempting to terminate a subscription - This change has made use of make_filename() and find_logchannel() - throughout to more consistently behave. + Occasionally under load we'll attempt to send a final NOTIFY on a + subscription that's already been terminated and a SEGV will occur + down in pjproject's evsub_destroy function. This is a result of a + race condition between all the paths that can generate a notify + and/or destroy the underlying pjproject evsub object: - ASTERISK-25305 #close - Reported by Mark Michelson + * The client can send a SUBSCRIBE with Expires: 0. + * The client can send a SUBSCRIBE/refresh. + * The subscription timer can expire. + * An extension state can change. + * An MWI event can be generated. + * The pjproject transaction timer (timer_b) can expire. - Change-Id: I892d52954d6007d8bc453c3cbdd9235dec9c4a36 + Normally when our pubsub_on_evsub_state is called with a terminate, + we push a task to the serializer and return at which point the dialog + is unlocked. This is usually not a problem because the task runs + immediately and locks the dialog again. When the system is heavily + loaded though, there may be a delay between the unlock and relock + during which another event may occur such as the subscription timer + or timer_b expiring, an extension state change, etc. These may also + cause a terminate to be processed and if so, we could cause pjproject + to try to destroy the evsub structure twice. There's no way for us to + tell that the evsub was already destroyed and the evsub's group lock + can't tolerate this and SEGVs. -2015-09-24 14:49 +0000 [f42084be09] Mark Michelson + The remedy is twofold. - * Do not swallow frames on channels leaving bridges. + * A patch has been submitted to Teluu and added to the bundled + pjproject which adds add/decrement operations on evsub's group lock. - When leaving a bridge, indications on a channel could be swallowed by - the internal indication logic because it appears that the channel is on - its way to be hung up anyway. One such situation where this is - detrimental is when channels on hold are redirected out of a bridge. The - AST_CONTROL_UNHOLD indication from the bridging code is swallowed, - leaving the channel in question to still appear to be on hold. + * In res_pjsip_pubsub: + * configure.ac and pjproject-bundled's configure.m4 were updated + to check for the new evsub group lock APIs. + * We now add a reference to the evsub group lock when we create + the subscription and remove the reference when we clean up the + subscription. This prevents evsub from being destroyed before + we're done with it. + * A state has been added to the subscription tree structure so + termination progress can be tracked through the asyncronous tasks. + * The pubsub_on_evsub_state callback has been split so it's not doing + double duty. It now only handles the final cleanup of the + subscription tree. pubsub_on_rx_refresh now handles both client + refreshes and client terminates. It was always being called for + both anyway. + * The serialized_on_server_timeout task was removed since + serialized_pubsub_on_rx_refresh was almost identical. + * Missing state checks and ao2_cleanups were added. + * Some debug levels were adjusted to make seeing only off-nominal + things at level 1 and nominal or progress things at level 2+. - The fix here is to modify the logic inside ast_indicate_data() to not - drop the indication if the channel is simply leaving a bridge. This way, - channels on hold redirected out of a bridge revert to their expected "in - use" state after the redirection. + ASTERISK-26099 #close + Reported-by: Ross Beer. - ASTERISK-25418 #close - Reported by Mark Michelson + Change-Id: I779d11802cf672a51392e62a74a1216596075ba1 - Change-Id: If6115204dfa0551c050974ee138fabd15f978949 +2016-06-21 07:05 +0000 [6eb0354f2d] Alexander Traud -2015-09-22 17:08 +0000 [06f4f80a63] Richard Mudgett + * res_rtp_asterisk: Use latest DTLS version available by underlying platform. - * app_page.c: Fix crash when forwarding with a predial handler. + Do not use DTLSv1_method() but DTLS_method() when available in OpenSSL of the + underlying platform. This change enables DTLS 1.2 since OpenSSL 1.0.2, for + WebRTC (DTLS-SRTP via SIP-over-WebSockets). This change enables AEAD-based + cipher-suites. - Page uses the async method of dialing with the dial API. When a call gets - forwarded there is no calling channel available. If the predial handler - was set then the calling channel could not be put into auto-service - for the forwarded call because it doesn't exist. A crash is the result. + ASTERISK-26130 #close - * Moved the callee predial parameter string processing to before the - string is passed to the dial API rather than having the dial API do it. - There are a few benefits do doing this. The first is the predial - parameter string processing doesn't need to be done for each channel - called by the dial API. The second is in async mode and the forwarded - channel is to have the predial handler executed on it then the - non-existent calling channel does not need to be present to process the - predial parameter string. + Change-Id: I41f24448d6d2953e8bdb97c9f4a6bc8a8f055fd0 - * Don't start auto-service on a non-existent calling channel to execute - the predial handler when the dial API is in async mode and forwarding a - call. +2016-06-21 10:53 +0000 [596d0b0bc3] Scott Griepentrog - ASTERISK-25384 #close - Reported by: Chet Stevens + * PJSIP: provide transport type with received messages - Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981 + The receipt of a SIP MESSAGE may occur over any transport including TCP + and TLS. When the message is received, the original URI is added to the + message in the field PJSIP_RECVADDR, but this is insufficient to ensure + a reply message can reach the originating endpoint. This patch adds the + PJSIP_TRANSPORT field populated with the transport type. -2015-09-04 12:25 +0000 [b99a705262] Matt Jordan + ASTERISK-26132 #close - * ARI: Add the ability to subscribe to all events + Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e - This patch adds the ability to subscribe to all events. There are two possible - ways to accomplish this: - (1) On initial WebSocket connection. This patch adds a new query parameter, - 'subscribeAll'. If present and True, Asterisk will subscribe the - applications to all ARI events. - (2) Via the applications resource. When subscribing in this manner, an ARI - client should merely specify a blank resource name, i.e., 'channels:' - instead of 'channels:12354'. This will subscribe the application to all - resources of the 'channels' type. +2016-06-21 08:01 +0000 [9e222efbf2] Alexander Traud - ASTERISK-24870 #close + * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf. - Change-Id: I4a943b4db24442cf28bc64b24bfd541249790ad6 + Some configure scripts used both AC_HELP_STRING and its replacement + AS_HELP_STRING. For consistency and to avoid obsolete warnings, those were + changed to AS_HELP_STRING. -2015-09-21 18:06 +0000 [c74101509d] Kevin Harwell + ASTERISK-26046 - * app_record: RECORDED_FILE variable not being populated + Change-Id: I8aad4fd2bdee40aa2a31ce3339a1eb33ff4f5b0f - The RECORDED_FILE variable is empty unless a '%d' is specified in the filename. - This patch makes it so the variable is always set to the filename. +2016-06-20 10:29 +0000 [e94aae00a7] Joshua Colp - ASTERISK-25410 #close + * res_pjsip_session: Handle race condition at shutdown with timer. - Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653 + When shutting down res_pjsip_session will get unloaded before res_pjsip. + The act of unloading unregisters all the PJSIP services and sets + their module IDs to -1. In some cases it is possible for a timer to + occur after this happens which calls into res_pjsip_session. The + res_pjsip_session module can then try to get the session from the + INVITE session using the module ID. Since the module ID is now -1 + this fails. -2015-09-21 08:16 +0000 [a29cf45c76] Elazar Broad + This change stores a copy of the module ID and uses it for the timer + callback scenario. If the module ID is -1 the callback immediately + returns but if the module ID is valid then it continues as normal. - * core/logging: Fix logging to more than one syslog channel + This works as the original ID of the module is guaranteed to still + be valid when used with the INVITE session. - Currently, Asterisk will log to the last configured syslog - channel in logger.conf. This is due to the fact that the - final call to openlog() supersedes all of the previous calls. - This commit removes the call to openlog() and passes the - facility to ast_log_vsyslog(), along with utilizing the - LOG_MAKEPRI macro to ensure that the message is routed to - the correct facility and with the correct priority. + ASTERISK-26127 #close - ASTERISK-25407 #close - Reported by: Elazar Broad - Tested by: Elazar Broad + Change-Id: I88df72525c4e9ef9f19c13aedddd3ac4a335c573 - Change-Id: Ie2a2416bc00cce1b04e99ef40917c2011953ddd2 -2015-09-04 12:24 +0000 [47813cc51c] Matt Jordan +2016-06-20 12:13 +0000 [0a30008224] Richard Mudgett - * res/res_stasis_device_state: Allow for subscribing to 'all' device state + * app_voicemail.c: Fix IMAP compile error. - This patch adds support for subscribing to all device state changes. This is - done either by subscribing to an empty device, e.g., 'eventSource=deviceState:', - or by the WebSocket connection specifying that it wants all state in the - system. + Fix compile error introduced by the patch for + ASTERISK-26045 - ASTERISK-24870 + Change-Id: I5b02876266f2824f4cec2b54d6ff4db5de5778d3 - Change-Id: I9cfeca1c9e2231bd7ea73e45919111d44d2eda32 +2016-06-17 13:51 +0000 [820ed3d4b3] Alexei Gradinari -2015-09-03 21:19 +0000 [5206aa9d30] Matt Jordan + * fix: memory leaks, resource leaks, out of bounds and bugs - * ARI: Add events for Contact and Peer Status changes + ASTERISK-26119 #close - This patch adds support for receiving events regarding Peer status changes - and Contact status changes. This is particularly useful in scenarios where - we are subscribed to all endpoints and channels, where we often want to know - more about the state of channel technology specific items than a single - endpoint's state. + Change-Id: Iecbf7d0f360a021147344c4e83ab242fd1e7512c - ASTERISK-24870 +2016-06-13 17:40 +0000 [11caa10cf5] Mark Michelson - Change-Id: I6137459cdc25ce27efc134ad58abf065653da4e9 + * ARI: Ensure announcer channels are destroyed. -2015-09-19 12:49 +0000 [9200ad03a3] Alexander Traud + Announcer channels were not being destroyed because the + stasis_app_control structure that referenced them was not being + destroyed. The control structure was not being destroyed because it was + not being unlinked from its container. It was not being unlinked from + its container because the after bridge callback for the announcer + channel was not being run. The after bridge callback was not being run + because the after bridge datastore was not being removed from the + channel on destruction. The channel was not being destroyed because the + hangup that used to destroy the channel was now only reducing the + reference count to one. The reference count of the channel was only + being reduced to one because the stasis_app_control structure was + holding the final reference... - * astfd: Adds a timestamp for each entry. + The control structure used to not keep a reference to the channel, so + that loop described above did not happen. - Now with menuselect "DEBUG_FD_LEAKS" and CLI "core show fd", a timestamp is - shown with each file descriptor. This helps to debug leaked UDP/TCP ports on - long-lived servers, for example. + The solution is to manually remove the control structure from its + container when the playback on a bridge is complete. - ASTERISK-25405 #close + ASTERISK-26083 #close + Reported by Joshua Colp - Change-Id: I968339e5155a512eba1032a5263f1ec8b5e1f80b + Change-Id: I0ddc0f64484ea0016245800b409b567dfe85cfb4 -2015-09-16 08:22 +0000 [42a897c4c3] Joshua Colp +2016-06-20 08:05 +0000 [f72ffc1ff9] Alexander Traud - * pbx: Update device and presence state when changing a hint extension. + * http: leverage 'bindaddr' for TLS in http.conf - When changing a hint extension without removing the hint first the - device state and presence state is not updated. This causes the state - of the hint to be that of the previous extension and not the current - one. This state is kept until a state change occurs as a result of - something (presence state change, device state change). + The internal HTTP/WebSocket server supports both TCP and TLS, which can be + activated separately via the file http.conf. The source code intends to re-use + the TCP parameter 'bindaddr' for TLS, even if 'tlsbindaddr' is not specified + explicitly. This did not work because of a typo. This change resolves this typo. - This change updates the hint with the current device and presence - state of the new extension when it is changed. Any state callbacks - which may have been added before the hint extension is changed are - also informed of the new device and presence state if either have - changed. + ASTERISK-26126 #close - ASTERISK-25394 #close + Change-Id: I5efb0409ae12044dfb3495b6b97b6d40a8c9c51f - Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f +2016-05-18 17:37 +0000 [3c80f84cd0] Richard Mudgett -2015-09-17 16:34 +0000 [d9723d242a] Scott Griepentrog + * res_pjsip_transport_management.c: Misc cleanups to survive shutdown. - * CHAOS: avoid crash if string create fails + * In unload_module(), reordered destroying things to minimize the window + that the global transports container could be used by other threads on + shutdown. When shutting down you need to stop things in the opposite + order of creation. - Validate string buffer allocation before using them. + * Put the global transports container into an AO2_GLOBAL_OBJ_STATIC to + eliminate the crash potential by other threads using the container on + shutdown. - ASTERISK-25323 + * Made struct monitored_transport.sip_received not use + ast_atomic_fetchadd_int() since it is used as a boolean value that is only + set TRUE. It was previously incremented for every received SIP message + and could theoretically overflow. - Change-Id: Ib9c338bdc1e53fb8b81366f0b39482b83ef56ce0 + * In monitored_transport_state_callback(), allocated the monitored + transport object without a lock since the lock was unused. -2015-09-11 01:52 +0000 [99aa7cb26e] Rodrigo Ramírez Norambuena + * In keepalive_global_loaded(), removed releasing the transports container + if the keepalive_thread could not be started. I set it up to be tried + again if the user reloads the configuration. - * dr_adaptive_odbc.c, cel_odbc.c, cel_pgsql.c: REFACTOR Macro LENGTHEN_BUF + Change-Id: I8d12d16ef564290fa6d25a32334bb5ce8fdf87ff - Remove repeated code on macro of assigned buffer to SQL vars +2016-01-05 19:08 +0000 [7c59f2126f] Richard Mudgett - Change-Id: Icb19ad013124498e172ea1d0b29ccd0ed17deef0 + * res_pjsip.c: Add check that timer actually got scheduled. -2015-09-17 04:52 +0000 [e4df271a3e] Walter Doekes + Change-Id: Iabaa2e5dccf0762c258101ea0eb1487cf6959ad1 - * chan_sip: Fix From header truncation for extremely long CALLERID(name). +2016-06-13 13:33 +0000 [51cc5c31c4] Richard Mudgett - The CALLERID(num) and CALLERID(name) and other info are placed into the - `char from[256]` in initreqprep. If the name was too long, the addr-spec - and params wouldn't fit. + * res_rtp_multicast.c: Fix warning message typo. - Code is moved around so the addr-spec with params is placed there first, - and then fitting in as much of the display-name as possible. + Change-Id: Ic9928208b9957e09866abe3d9649030942ec52b3 - ASTERISK-25396 #close +2016-02-11 18:15 +0000 [3d0632a9c2] Richard Mudgett - Change-Id: I33632baf024f01b6a00f8c7f35c91e5f68c40260 + * res_pjsip_session.c: Reorganize ast_sip_session_terminate(). -2015-09-17 16:59 +0000 [e1927915bc] Richard Mudgett + Change-Id: I68a2128bcba4830985d2d441e70dfd1ac5bd712b - * CHAOS: res_pjsip_diversion avoid crash if allocation fails +2016-06-08 06:15 +0000 [ac683f13c9] Alexander Traud - Validate ast_malloc buffer returned before using it in - set_redirecting_value(). + * core: Not the configured but granted number of possible file descriptors. - ASTERISK-25323 + With CLI "core show settings", simply the parameter maxfiles of the file + asterisk.conf was shown. If that parameter was not set, nothing was displayed + although the environment might have set a default number itself. Or if maxfiles + were not granted (completely), still maxfiles was shown. Now, the maximum number + of possible file descriptors in the environment is shown. - Change-Id: I15d2ed7cb0546818264c0bf251aa40adeae83253 + ASTERISK-26097 -2015-09-17 16:47 +0000 [729a4325da] Kevin Harwell + Change-Id: I2df5c58863b5007b34b77adbe28b885dfcdf7e0b - * app_queue: AgentComplete event has wrong reason +2016-06-10 10:39 +0000 [4eb8cf2684] Joshua Colp - When a queued caller transfers an agent to another extension sometimes the - raised AgentComplete event has a reason of "caller" and sometimes "transfer". - Since a transfer has taken place this should always be transfer. This occurs - because sometimes the stasis hangup event arrives before the transfer event - thus writing a different reason out. + * translate: Enables native Packet-Loss Concealment (PLC) for supporting codecs. - With this patch, when a hangup event is received during a transfer it will - check to see if the channel that is hanging up is part of a transfer. If so - it will return and let the subsequently received transfer event handler take - care of the cleanup. + This reverts commit 5bfef2a8b4674382f959b21a3b8e14cf1d942bab as it + caused fax test failures. - ASTERISK-25399 #close + ASTERISK-25629 - Change-Id: Ic63c49bd9a5ed463ea7a032fd2ea3d63bc81a50d + Change-Id: I79de974dc4f63a1cafe0d2509169fd9a6b3cbaf4 -2015-09-17 13:09 +0000 [87f04d5acf] Scott Griepentrog +2016-06-08 06:05 +0000 [0bf1a53db3] Alexander Traud - * PJSIP: avoid crash when getting rtp peer + * astfd: With RLIMIT_NOFILE only the current value is sensible. - Although unlikely, if the tech private is returned as - a NULL, chan_pjsip_get_rtp_peer() would crash. + With menuselect "DEBUG_FD_LEAKS" and CLI "core show fd", both the maximum max + and current max of possible file descriptors were shown. Both show the same + value always. Not to confuse users, just the current maximum is shown now. - ASTERISK-25323 + ASTERISK-26097 - Change-Id: Ie231369bfa7da926fb2b9fdaac228261a3152e6a + Change-Id: I49cf7952d73aec9e3f6a88942842c39be18380fa -2015-09-17 11:31 +0000 [63ede41227] Kevin Harwell +2016-06-07 18:45 +0000 [d338343dac] Joshua Colp - * app_queue: Crash when transferring + * cel: Ensure only one dial status per channel exists. - During some transfer scenarios involving queues Asterisk would sometimes - crash when trying to obtain a channel snapshot (could happen on caller or - member channels). This occurred because the underlying channel had already - disappeared when trying to obtain the latest snapshot. + CEL wrongly assumed that a channel would only have a single dial + event on it. This is incorrect. Particularly in a queue each + call attempt to a member will result in a dial event, adding + a new dial status in CEL without removing the old one. This + would cause the container to grow with only one dial status + being removed when the channel went away. The other dial status + entries would remain leaking memory. - This patch adds a reference to both the member and caller channels that - extends to the lifetime of the queue'd call, thus making sure the channels - will always exist when retrieving the latest snapshots. + This change fixes the memory leak by ensuring that only one dial + status will only ever exist for each channel. - ASTERISK-25185 #close - Reported by: Etienne Lessard + The behavior during the scenario where multiple events are received + has also been improved. For failure cases the first failure will + be the dial status. If an answer dial status is received, though, + it will take priority and the dial status for the channel will be + answer. - Change-Id: Ic397fa68fb4ff35fbc378e745da9246a7b552128 + Memory usage has also been decreased by storing the minimal + amount of information and the code has been cleaned up slightly. -2015-09-16 17:36 +0000 [e47396721f] Mark Michelson + ASTERISK-25262 #close - * res_pjsip_pubsub: Eliminate race during initial NOTIFY. + Change-Id: I5944eb923db17b6a0faa7317ff6abc9307c009fe - There is a slim chance of a race condition occurring where two threads - can both attempt to manipulate the same area. +2016-06-01 13:48 +0000 [1fd3a7849e] Mark Michelson - Thread A can be handling an incoming initial SUBSCRIBE request. Thread A - lets the specific subscription handler know that the subscription has - been established. + * ARI: Ensure proper channel state on operations. - At this point, Thread B may detect a state change on the subscribed - resource and queue up a notification task on Thread C, the subscription - serializer thread. + ARI was recently outfitted with operations to create and dial channels. + This leads to the ability to try funny stuff. You could create a channel + and then immediately try to play back media on it. You could create a + channel, dial it, and while it is ringing attempt to make it continue in + the dialplan. - Now Thread A attempts to generate the initial NOTIFY request to send to - the subscriber at the same time that Thread C attempts to generate a - state change NOTIFY request to send to the subscriber. + This commit attempts to fix this by adding a channel state check to + operations that should not be able to operate on outbound channels that + have not yet answered. If a channel is in an invalid state, we will send + a 412 response. - The result is that Threads A and C can step on the same memory area, - resulting in a crash. The crash has been observed as happening when - attempting to allocate more space to hold the body for the NOTIFY. + ASTERISK-26047 #close + Reported by Mark Michelson - The solution presented here is to queue the subscription establishment - and initial NOTIFY generation onto the subscription serializer thread - (Thread C in the above scenario). This way, there is no way that a state - change notification can occur before the initial NOTIFY is sent, and if - there is a quick succession of NOTIFYs, we can guarantee that the two - NOTIFY requests will be sent in succession. + Change-Id: I2ca51bf9ef2b44a1dc5a73f2d2de35c62c37dfd8 - Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815 +2016-06-08 11:27 +0000 [10019dc70c] Mark Michelson -2015-08-28 15:42 +0000 [077adf48b8] Alexander Traud + * test_http_media_cache: Fix failing test. - * translate: Fix transcoding while different in frame size. + The retrieve_cache_control_directives test has been failing occasionally + in Jenkins. The apparent failure occurs when attempting to validate the + expiration of the retrieved file. - When Asterisk translates between codecs, each with a different frame size (for - example between iLBC 30 and Speex-WB), too large frames were created by - ast_trans_frameout. Now, ast_trans_frameout is called with the correct frame - length, creating several frames when necessary. Affects all transcoding modules - which used ast_trans_frameout: GSM, iLBC, LPC10, and Speex. + After reproducing, the problem was pretty clear. At the beginning of the + test, the current time is retrieved. The seconds value of this timestamp + is X. When the file is retrieved, res_http_media_cache calculates the + expiration and in doing so retrieves the current time. In most cases, + since the test executes quickly, it will also retrieve a timestamp with + X seconds. However, if the test starts very near to when the timestamp + seconds are set to increment, res_http_media_cache may retrieve a + timestamp with X+1 seconds instead. - ASTERISK-25353 #close + The test attempted to account for this by allowing a tolerance of 1 + second when validating the expiration. However, the problem was that the + comparisons being used in the validation used > and < operations. This + meant that values that fell within the tolerance (because they equaled + the upper bound of the tolerance) would fail. - Change-Id: I2e229569d73191d66a4e43fef35432db24000212 + The solution is to use >= and <= operators in the expiration validation. -2015-09-10 17:19 +0000 [0a74c80300] Mark Michelson + However, I estimated that while the one second tolerance should be + fine on most machines, it would still be possible on a very slow machine + to end up falling outside the one second tolerance. So I have also + relaxed the tolerance of expiration validation to be three seconds + instead. - * scheduler: Use queue for allocating sched IDs. + The final change here is to add a debug message when validating + expiration so that we can see what values are being compared. - It has been observed that on long-running busy systems, a scheduler - context can eventually hit INT_MAX for its assigned IDs and end up - overflowing into a very low negative number. When this occurs, this can - result in odd behaviors, because a negative return is interpreted by - callers as being a failure. However, the item actually was successfully - scheduled. The result may be that a freed item remains in the scheduler, - resulting in a crash at some point in the future. + ASTERISK-25959 #close + Reported by Joshua Colp - The scheduler can overflow because every time that an item is added to - the scheduler, a counter is bumped and that counter's current value is - assigned as the new item's ID. + Change-Id: Ic1a0e10722c1c5d276d5a4d6a67136d6ec26c247 - This patch introduces a new method for assigning scheduler IDs. Instead - of assigning from a counter, a queue of available IDs is maintained. - When assigning a new ID, an ID is pulled from the queue. When a - scheduler item is released, its ID is pushed back onto the queue. This - way, IDs may be reused when they become available, and the growth of ID - numbers is directly related to concurrent activity within a scheduler - context rather than the uptime of the system. +2016-06-03 01:20 +0000 [56bdf048d2] Timo Teräs - Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2 + * Add support for OGG/Speex file format -2015-09-03 21:15 +0000 [45cf79665c] Matt Jordan + ASTERISK-18995 #close - * main/config_options: Check for existance of internal object before derefing + Change-Id: I98518bd28fc8f95668b3fe27d2cab45045ff3f7a - Asterisk can load and register an object type while still having an invalid - sorcery mapping. This can cause an issue when a creation call is invoked. - For example, mis-configuring PJSIP's endpoint identifier by IP address mapping - in sorcery.conf will cause the sorcery mechanism to be invalidated; however, a - subsequent ARI invocation to create the object will cause a crash, as the - internal type may not be registered as sorcery expects. +2016-06-09 10:33 +0000 [f0855358a6] George Joseph - Merely checking for a NULL pointer here solves the issue. + * cdr.c: Remove assert in base_process_dial_end - Change-Id: I54079fb94a1440992f4735a9a1bbf1abb1c601ac + Scenario: Caller blonde transfer + Bob calls Charlie who answers. + Bob puts Charlie on hold and calls Alice. + Before Alice answers, Bob transfers Charlie to Alice. -2015-08-21 21:50 +0000 [34aa96bef4] Rodrigo Ramírez Norambuena + Charlie's channel triggers an assert because he gets an "ANSWERED" + event even though he never dialed anything. With recent changes to dial + events, this is now a valid scenario so the assert needed to be removed. - * chan_sip.c: Validation on module reload + ASTERISK-26103 #close - Change validation on reload module because now used the cli function for - reload. The sip_reload() function never fail and ever return NULL for this - reason on reload() now use the call the sip_reload() and return - AST_MODULE_LOAD_SUCCESS. + Change-Id: I2679b517b696e7952ab7fb29403df9140e7d1de2 - This problem is dectected on reload by PUT method on ARI, getting always - 404 http code when the module is reloaded. +2016-06-09 10:37 +0000 [cdb7edbe7b] Mark Michelson - ASTERISK-25325 #close - Reporte by: Rodrigo Ramírez Norambuena + * chan_pjsip: Lock channel when checking for RTP changes. - Change-Id: I41215877fb2cfc589e0d4d464000cf6825f4d7fb + bridge_native_rtp can call into an RTP-capable channel driver in order + for the driver to update information about who the channel is + communicating with. For SIP channel drivers, this means deactivating + RTCP and sending a reinvite so that the endpoints can communicate + directly. -2015-08-21 17:39 +0000 [69824fdfbf] Richard Mudgett + bridge_native_rtp does the right thing and has the channel locked when + calling into the channel driver. chan_pjsip can't alter session + properties in this thread, though. chan_pjsip queues a task on the + session serializer in order to update properties there. - * res_pjsip_pubsub.c: Mark ast_sip_create_subscription() as not used. + The problem is that this queued task was not locking the channel. This + meant that the queued task could attempt to deactivate RTCP at the same + time that the channel thread was attempting to process an incoming RTCP + packet. This could lead to a crash. - Change-Id: I2b8db18eac36c01a5c7eb9467699124e203fd093 + This patch fixes the issue by locking the channel in the queued task + when altering RTP properties. -2015-09-09 12:24 +0000 [2526659432] Richard Mudgett + ASTERISK-26092 #close + Reported by Niklas Larsson - * res_pjsip_pubsub.c: Add some notification comments. + Change-Id: I3464e226a3c41f6b915f97891e07fa1599e2a159 - Change-Id: Ie62ff1f4b7adc1a12fa0303f53926af249b25e20 +2016-06-03 22:44 +0000 [04ec9c745e] Richard Mudgett -2015-08-21 18:01 +0000 [9b290dfe2f] Richard Mudgett + * res_pjsip_registrar.c: Eliminate rx REGISTER request race condition. - * res_pjsip_pubsub.c: Set dlg_status code instead of sending SIP response. + This patch fixes a race condition processing received REGISTER requests + and their retransmissions caused by REGISTER requests being processed by + two threads. The "sip_transaction Unable to register REGISTER transaction + (key exists)" message is a notable symptom of this issue. - We should not try to send a SIP response message because we may be - restoring a persistent subscription where we are not responding to a SIP - request. + This issue was more likely to happen before the pjsip/distributor + serializers were created. Instead of steps one and two below placing the + REGISTER messages into the same pjsip/distributor they were placed in + random pjsip/default serializers. - Change-Id: Id89167ef90320c5563f37e632db0dda6cb9e7dec + 1) REGISTER requests come in and get placed on the pjsip/distributor + serializer. -2015-08-21 17:40 +0000 [73eb132012] Richard Mudgett + 2) Before the first request is processed a retransmission comes in and is + placed on the same pjsip/distributor serializer. - * res_pjsip_pubsub.c: Fix off-nominal memory leak. + 3) The first request goes up the pjsip stack and is then shunted off to + the pjsip/aor/ serializer. - Fix off-nominal visited vector leak in build_resource_tree(). + 4) Before the first request is completed processing in the pjsip/aor/ + serializer, the second request goes up the pjsip stack and is also shunted + off to the pjsip/aor/ serializer. - Change-Id: If0399c7941c9c0b1038bcfb7b9a371760977831c + 5) The first request completes processing and sends out its response. -2015-08-21 15:26 +0000 [2b30fc2b2d] Richard Mudgett + 6) The second request completes processing and tries to send out its + response but pjlib complains that the REGISTER transaction key already + exists. - * res_pjsip_pubsub.c: Fix one byte buffer overrun error. + 7) Sadness ensues. - ast_sip_pubsub_register_body_generator() did not account for the null - terminator set by sprintf() in the allocated output buffer. + * The race is eliminated by removing the pjsip/aor/ serializer and + continuing the processing in the pjsip/distributor serializer. Now any + retransmissions queued in the pjsip/distributor serializer will be + processed after the first message is completely processed. - Change-Id: I388688a132e479bca6ad1c19275eae0070969ae2 + ASTERISK-26088 #close + Reported by: Richard Mudgett -2015-08-21 15:25 +0000 [08a182c8e6] Richard Mudgett + Change-Id: I842d714346088bf717ea27437f1dd85bff0bab5a - * res_pjsip_pubsub.c: Use ast_alloca() instead of alloca(). +2016-06-03 11:35 +0000 [dcfef53ee2] Richard Mudgett - Change-Id: Ia396096b4fedc2874649ca11137612c3f55e83e3 + * stasis: Add setting subscription congestion levels. -2015-08-21 11:04 +0000 [61f30db877] Richard Mudgett + Stasis subscriptions and message routers create taskprocessors to process + the event messages. API calls are needed to be able to set the congestion + levels of these taskprocessors for selected subscriptions and message + routers. - * res_pjsip_pubsub.c: Add missing error return in load_module(). + * Updated CDR, CEL, and manager's stasis subscription congestion levels + based upon stress testing. Increased the congestion levels to reduce the + potential for bursty call setup/teardown activity from triggering the + taskprocessor overload alert. CDRs in particular need an extra high + congestion level because they can take awhile to process the stasis + messages. - Change-Id: I15debd0f717f16ee2f78e7f56151c3b3b97b72fc + ASTERISK-26088 + Reported by: Richard Mudgett -2015-08-21 11:03 +0000 [b8f07527b2] Richard Mudgett + Change-Id: Id0a716394b4eee746dd158acc63d703902450244 - * res_pjsip/location.c: Use the builtin ao2_callback() match function instead. +2016-06-02 18:19 +0000 [4879cd875c] Richard Mudgett - Change-Id: I364906d6d2bad3472929986704a0286b9a2cbe3f + * sorcery: Add setting object type congestion levels. -2015-09-10 09:49 +0000 [f1a2e82d49] Mark Michelson + Sorcery creates taskprocessors for object types to process object observer + callbacks. An API call is needed to be able to set the congestion levels + of these taskprocessors for selected object types. - * res_pjsip: Copy default_from_user to avoid crash. + * Updated PJSIP's contact and contact_status sorcery object type observer + default congestion levels based upon stress testing. Increased the + congestion levels to reduce the potential for bursty register/unregister + and subscribe/unsubscribe activity from triggering the taskprocessor + overload alert. - The default_from_user retrieval function was pulling the - default_from_user from the global configuration struct in an unsafe way. - If using a database as a backend configuration store, the global - configuration struct is short-lived, so grabbing a pointer from it - results in referencing freed memory. + ASTERISK-26088 + Reported by: Richard Mudgett - The fix here is to copy the default_from_user value out of the global - configuration struct. + Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6 - Thanks go to John Hardin for discovering this problem and proposing the - patch on which this fix is based. +2016-06-02 16:08 +0000 [2cd67d5b07] Richard Mudgett - ASTERISK-25390 #close - Reported by Mark Michelson + * taskprocessors: Implement high/low water mark alerts. - Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c + When taskprocessors get backed up, there is a good chance that we are + being overloaded and need to defer adding new work to the system. -2015-09-10 08:39 +0000 [bd71dcd1da] Matt Jordan + * Implemented a high/low water alert mechanism for modules to check if the + system is being overloaded and take appropriate action. When a + taskprocessor is created it has default congestion levels set. A + taskprocessor can later have those congestion levels altered for specific + needs if stress testing shows that the taskprocessor is a symptom of + overloading or needs to handle bursty activity without triggering an + overload alert. - * res/res_pjsip_nat: Ignore REGISTER requests when looking for a Record-Route + * Add CLI "core show taskprocessor" low/high water columns. - We will only rewrite the Contact header if there is no Record-Route header in - the received request. If a malfunctioning proxy places a Record-Route header - into a REGISTER request, we will decide that we shouldn't update the IP/port - in the Contact header, and we will end up storing a contact with an AoR that - contains the NAT'd IP address. + * Fixed __allocate_taskprocessor() to not use RAII_VAR(). RAII_VAR() was + never a good thing to use when creating a taskprocessor because of the + nature of how its references needed to be cleaned up on a partial + creation. - While it is nice to have the proxy *not* send a Record-Route in a REGISTER - request, it's also a good idea to not process the header in a non-dialog - message. This patch updates the code to explicitly ignore the Record-Route - header in REGISTER requests. + * Made res_pjsip's distributor check if the taskprocessor overload alert + is active before placing a message representing brand new work onto a + distributor serializer. - ASTERISK-25387 #close + ASTERISK-26088 + Reported by: Richard Mudgett - Change-Id: I4bd3bcccc4003d460cc354d986b0dea2e433ef3f + Change-Id: I182f1be603529cd665958661c4c05ff9901825fa -2015-09-09 16:46 +0000 [5bd363010e] Alexander Anikin +2016-05-27 17:31 +0000 [c966a035e0] Richard Mudgett - * chan_ooh323: Add ProgressIndicator IE with inband info available + * res_pjsip_session: Use distributor serializer for incoming calls. - Add ProgressIndicator IE with inband info present to Progress and - Alerting Q.931 message + We must continue using the serializer that the original INVITE came in on + for the dialog. There may be retransmissions already enqueued in the + original serializer that can result in reentrancy and message sequencing + problems. - ASTERISK-25227 #close - Reported by: Alexandr Dranchuk + Outgoing call legs create the pjsip/outsess/ serializers for + their dialogs. - Change-Id: I326ad13cb1db9a72b3fd902bafed3c28a3684203 -2015-09-08 10:35 +0000 [fcea6910f6] Scott Griepentrog + ASTERISK-26088 + Reported by: Richard Mudgett - * pjsip: avoid possible crash req_caps allocation failure + Change-Id: I24d7948749c582b8045d5389ba3f6588508adbbc - Make certain that the pjsip session has not failed to - allocate the format capabilities structure, which can - otherwise cause a crash when referenced. +2016-05-27 16:28 +0000 [5b7b16a87f] Richard Mudgett - ASTERISK-25323 + * res_pjsip_pubsub.c: Recreate subscriptions using distributor serializer. - Change-Id: I602790ba12714741165e441cc64a3ecde4cb5750 + * Resolves potential reentrancy problems if system restarted in the middle + of subscription message transactions. -2015-09-04 16:33 +0000 [8e5ed27a16] David M. Lee + * Fixes memory leak recreating persistent subscriptions when the + subscription resource tree could not be created. - * res_rtp_asterisk: Add more ICE debugging + ASTERISK-26088 + Reported by: Richard Mudgett - In working through a recent ICE negotiation bug, I found the debug - logging in res_rtp_asterisk to be lacking. This patch adds a number of - debug and warning statements that were helpful. + Change-Id: I71e34d7ae8ed35a694f1030e820e2548c48697be - Change-Id: I950c6d8f13a41f14b3d6334b4cafe7d4e997be80 -2015-09-08 07:21 +0000 [3628e380b8] Joshua Colp +2016-05-27 12:50 +0000 [c2ae49249c] Richard Mudgett - * res_pjsip: Use hash for contact object identity instead of Contact URI. + * res_pjsip_pubsub.c: Use distributor serializer for incoming subscriptions. - In the wild it is possible for Contact URIs to be quite long as - parameters can exist on them. This can present a problem when storing - them in the AstDB as the URI is used as part of the object name and - there is a fixed length limit for the AstDB. This will cause - the contact to not get stored. + We must continue using the serializer that the original SUBSCRIBE came in + on for the dialog. There may be retransmissions already enqueued in the + original serializer that can result in reentrancy and message sequencing + problems. The "sip_transaction Unable to register SUBSCRIBE transaction + (key exists)" message is a notable symptom of this issue. - This change uses the MD5 hash of the Contact URI as part of the - object name instead. This has a fixed length which is guaranteed - to not exceed the AstDB length limit. + Outgoing subscriptions still create the pjsip/pubsub/ + serializers for their dialogs. - ASTERISK-25295 #close + ASTERISK-26088 + Reported by: Richard Mudgett - Change-Id: Ie8252a75331ca00b41b9f308f42cc1fbdf701a02 + Change-Id: I18b00bb74a56747b2c8c29543a82440b110bf0b0 -2015-09-07 13:19 +0000 [d2106c0b21] Alexander Anikin +2016-05-26 17:35 +0000 [2ff26e9746] Richard Mudgett - * chan_ooh323: call ast_rtp_instance_stop on ooh323_destroy + * pjsip_distributor.c: Consistently pick a serializer for messages. - Call ast_rtp_instance_stop on ooh323_destroy to free resources - allocated by rtp instance + Incoming messages that are not part of a dialog or a recognized response + to one of our requests need to be sent to a consistent serializer. Under + load we may be queueing retransmissions before we can process the original + message. We don't need to throw these messages onto random serializers + and cause reentrancy and message sequencing problems. - ASTERISK-25299 #close - Report by: Alexandr Dranchuk + * Created a pool of pjsip/distributor serializers that get picked by + hashing the call-id and remote tag strings of the received messages. - Change-Id: I455096bd7da016b871afe90af86067c2c7c9f33f + * Made ast_sip_destroy_distributor() destroy items in the reverse order of + creation. -2015-09-07 11:15 +0000 [ef3358d0c0] Matt Jordan + ASTERISK-26088 + Reported by: Richard Mudgett - * res/res_pjsip: Purge contacts when an AoR is deleted + Change-Id: I2ce769389fc060d9f379977f559026fbcb632407 - When an AoR is deleted by an external mechanism, such as through ARI, we - currently do not remove dynamic contacts that were created for that AoR as a - result of a received REGISTER request. As a result, re-creating the AoR will - cause the dynamic contact to be interpreted as a persistent contact, leading - to some rather strange state being created for the contacts/endpoints. +2016-06-02 12:51 +0000 [df2791da8f] Richard Mudgett - This patch adds a sorcery observer for the 'aor' object. When a delete is - issued on the underlying sorcery object, the observer is called, and all - contacts created and persisted in sorcery for that AoR are also removed. Note - that we don't want to perform this action when an AO2 object that is an AoR is - destroyed, as the AoR can still exist in the backing storage (and we would - thus be removing valid contacts from an AoR that still "exists".) + * pjsip_distributor.c: Ignore messages until fully booted. - ASTERISK-25381 #close + We should not be processing any incoming messages until we are fully + booted. We may not have dialplan or other needed configuration loaded + yet. - Change-Id: I6697e51ef6b2858b5d63401f35dc378bb0f90328 + ASTERISK-26089 #close + Reported by: Scott Griepentrog -2015-09-05 14:58 +0000 [86b02228f5] Matt Jordan + ASTERISK-26088 + Reported by: Richard Mudgett - * channels/pjsip/dialplan_functions: Add an option for extracting the SIP call-id + Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264 - This patch adds a new option to the CHANNEL function that allows for the - extraction of the SIP call-id. It is used in conjunction with the 'pjsip' - option, and will return the Call-ID of the INVITE request that established - the PJSIP channel. +2016-06-09 09:20 +0000 [d21a77b325] George Joseph - ASTERISK-25352 + * build: Fix ast_sockaddr initialization to be more portable - Change-Id: I278d1f8bcfe3a53c5aa1dadebc14e92b0abd476a + A change to glibc 2.22 changed the order of the sockadddr_storage + members which caused the places where we do an initialization of + ast_sockaddr with '{ { 0, 0, } }' to fail compilation. Those + initializers (which we shouldn't have been using anyway) have been + replaced with memsets. -2015-09-04 16:06 +0000 [27c89053b0] David M. Lee + Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4 - * Fix when remote candidates exceed PJ_ICE_MAX_CAND +2016-06-03 00:59 +0000 [72d190eb69] Timo Teräs - We were passing the wrong count into pj_ice_sess_create_check_list(), - causing the create to fail if we ever received more than PJ_ICE_MAX_CAND - candidates. + * Detect and use proper libraries for musl toolchains - Change-Id: I0303d8e1ecb20a8de9fe629a3209d216c4028378 + Change-Id: I8d9b212f70813404b82918a3f99439e500d4bfcb -2015-09-04 14:40 +0000 [993ae9a669] Mark Michelson +2016-06-03 00:57 +0000 [39b69ab537] Timo Teräs - * res_pjsip: Change default from user value. + * Fixes to include signal.h - When Asterisk sends an outbound SIP request, if there is no direct - reason to place a specific value for the username in the From header, - Asterisk would generate a UUID. For example, this would happen when - sending outbound OPTIONS requests when qualifying or when sending - outbound INVITE requests when originating (if no explicit caller ID were - provided). The issue is that some SIP providers reject these sorts of - requests with a "Name too long" error response. + POSIX defines signal.h. sys/signal.h should not be used as it is + c-library internal header which may or may not exist. Notably with + musl it generates warning of being incorrect. - This patch aims to fix this by changing the default outbound username in - From headers to "asterisk". This value can be overridden by changing the - default_from_user option in the global options if desired. + Change-Id: Ia56b0aa1d84b5c590114867b1b384a624f39a6fc - ASTERISK-25377 #close - Reported by Mark Michelson +2016-06-08 12:26 +0000 [7f5ca67e5f] Matt Jordan - Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190 + * res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loaded -2015-09-03 14:07 +0000 [7d981b787c] Jonathan Rose + A crash can occur in res_hep_pjsip or res_hep_rtcp if res_hep has not + loaded and does not have a configuration file. Previously when this + occurred, checks were put in to see if the configuration was loaded + successfully. While this is a good idea - and has been added to the + offending function in res_hep - the reality is res_hep_pjsip and + res_hep_rtcp have no business running if res_hep isn't also running. - * ParkAndAnnounce: Add variable inheritance + As such, this patch also adds a function to res_hep that returns whether + or not it successfully loaded. Oddly enough, ast_module_check returns + "everything is peachy" even if a module declined its load - so it cannot + be solely relied on. res_hep_pjsip and res_hep_rtcp now also check this + function to see if they should continue to load; if it fails, they + decline their load as well. - In Asterisk 11, the announcer channel would receive channel variables - from the channel being parked by means of normal channel inheritance. - This functionality was lost during the big res_parking project in - Asterisk 12. This patch restores that functionality. + ASTERISK-26096 #close - ASTERISK-25369 #close - Review: https://gerrit.asterisk.org/#/c/1180/ + Change-Id: I007e535fcc2e51c2ca48534f48c5fc2ac38935ea - Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e +2016-06-08 02:11 +0000 [784c18128b] Alexander Traud -2015-09-04 09:26 +0000 [7691035312] Scott Griepentrog + * chan_sip: No rtpmap for static RTP payload IDs in SDP. - * endpoint snapshot: avoid second cleanup on alloc failure + This saves around 100 bytes when G.711, G.722, G.729, and GSM are advertised in + SDP. This reduces the chance to hit the MTU bearer of 1300 bytes for SIP over + UDP, if many codecs are allowed in Asterisk. This new feature is enabled + together with the optional feature compactheaders=yes via the file sip.conf. - In ast_endpoint_snapshot_create(), a failure to init the - string fields results in two attempts to ao2_cleanup the - same pointer. Removed RAII_VAR to eliminate problem. + ASTERISK-25578 #close - ASTERISK-25375 #close - Reported by: Scott Griepentrog + Change-Id: I16491b1937862de26f84fa0ffe679a6bab925044 - Change-Id: If4d9dfb1bbe3836b623642ec690b6d49b25e8979 +2016-06-02 12:04 +0000 [31a5c28339] Joshua Colp -2015-09-04 05:33 +0000 [be31747db8] Martin Tomec + * res_odbc: Implement a connection pool. - * res/pjsip: Mark WSS transport as secure + Testing has shown that our usage of UnixODBC is problematic + due to bugs within UnixODBC itself as well as the heavy weight + cost of connecting and disconnecting database connections, even + when pooling is enabled. - Pjsip is refusing to use unsecure transport with "sips" in url. - WSS should be considered as secure transport. + For users of UnixODBC 2.3.1 and earlier crashes would occur due + to insufficient protection of the disconnect operation. This was + fixed in UnixODBC 2.3.2 and above. - ASTERISK-24602 #comment Partially fixed by setting WSS as secure + For users of UnixODBC 2.3.3 and higher a slow-down would occur + under heavy database use due to repeated connection establishment. + A regression is present where on each connection the database + configuration is cached again, with the cache growing out of + control. - Change-Id: Iddac406c6deba6240c41a603b8859dfefe1a5353 + The connection pool implementation present in this change helps + to mitigate these issues by reducing how much we connect and + disconnect database connections. We also solve the issue of + crashes under UnixODBC 2.3.1 by defaulting the maximum number of + connections to 1, returning us to the previous working behavior. + For users who may have a fixed version the maximum concurrent + connection limit can be increased helping with performance. -2015-09-01 10:16 +0000 [fbdb42c9fc] Guido Falsi + The connection pool works by keeping a list of active connections. + If the connection limit has not been reached a new connection is + established. If the connection limit has been reached then the + request waits until a connection becomes available before + continuing. - * Core/General: Add #ifdef needed on FreeBSD. + ASTERISK-26074 #close + ASTERISK-26054 #close - pthread_attr_init() defaults to PTHREAD_EXPLICIT_SCHED on FreeBSD - too. + Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff - ASTERISK-25310 #close - Reported by: Guido Falsi +2016-05-31 09:10 +0000 [80ff7912a1] Vasil Kolev - Change-Id: Iae6befac9028b5b9795f86986a4a08a1ae6ab7c4 -2015-09-02 17:26 +0000 [c15d8cc0ed] Mark Michelson + * chan_sip: bigger buffers for headers, better failure mode - * res_pjsip: Fix contact refleak on stateful responses. + Currently chan_sip can give weird messages if the contacts don't + fit in the From: or To: headers. This fix changes the from,to and + invite variables to use ast_str, allocates and deallocates them and + resizes them if needed. - When sending a stateful response, creation of the transaction can fail, - most commonly because we are trying to create a transaction from a - retransmitted request. When creation of the transaction fails, we end up - leaking a reference to a contact that was bumped when the response was - created. + ASTERISK-26069 #close - This patch adds the missing deref and fixes the reference leak. + Change-Id: I1b68fcbddca6f6cc7d7a92fe1cb0d5430282b2b3 - Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07 +2016-06-06 11:13 +0000 [60caebc738] Örn Arnarson -2015-09-02 12:41 +0000 [b51cf1e712] Joshua Colp + * apps/app_voicemail.c and main/say.c: Add support for Icelandic language - * pbx: Fix crash when issuing "core show hints" with long pattern match. + Icelandic has some weird grammar rules when dealing with dates and + numbers. There are different genders used depending on which number + you're dealing with, and only a handful of numbers do change depending + on the gender. There is also an implied gender in several cases. - When issuing the "core show hints" CLI command a combination of both - the hint extension and context is created. This uses a fixed size - buffer expecting that the extension will not exceed maximum extension - length. When the extension is actually a pattern match this constraint - does not hold true, and the extension may exceed the maximum extension - length. In this case extra characters are written past the end of the - fixed size buffer. + This patch was originally written for asterisk 1.6, and has been in use + for several years without crashes. I cleaned it up a bit and rewrote + what was necessary for Asterisk 13. - This change makes it so the construction of the combined hint extension - and context can not exceed the size of the buffer. + The functions were copied from other similar languages and modified + where appropriate. If i recall correctly, the German and Danish + functions were used as a base. - ASTERISK-25367 #close + ASTERISK-26087 + Reported by: Örn Arnarson + Tested by: Örn Arnarson - Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499 + Change-Id: Ib7d8bd7b0fede5767921ed821315b5b508c0e665 -2015-09-01 09:05 +0000 [beb568e51c] Mark Michelson +2016-06-07 05:45 +0000 [52120204c9] Alexander Traud - * res_pjsip_pubsub: re-re-fix persistent subscription storage. + * res_srtp: Instead of libSRTP use OpenSSL as random source. - A recent change to res_pjsip_pubsub switched to using pjsip_msg_print as - a means of writing an appropriate packet to persistent storage. While - this partially solved the issue, it had its own problems. - pjsip_msg_print will always add a Content-Length header to the message - it prints. Frequent restarts of Asterisk can result in persistent - subscriptions being written with five or more Content-Length headers. In - addition, sometimes some apparent corruption of individual headers could - be seen. + Since libSRTP 1.5, its Random Number Generator (RNG) is not maintained anymore. + Therefore, the symbol RAND_bytes is used instead of crypto_get_random. - This aims to fix the problem by not running a parsed message through an - interpreter but rather by taking the raw message and saving it. The - logic for what to save is going to be different depending on whether a - SUBSCRIBE was received from the wire or if it was pulled from - persistence. When receiving a packet from the wire, when using a - streaming transport, the rdata->pkt_info.packet may contain multiple SIP - messages or fragments. However, the rdata->msg_info.msg_buf will always - contain the current SIP message to be processed. When pulling from - persistence, though, the rdata->msg_info.msg_buf will be NULL since no - transport actually handled the packet. However, since we know that we - will always ever pull one SIP message from persistence, we are free to - save directly from rdata->pkt_info.packet instead. + ASTERISK-24436 #close - ASTERISK-25365 #close - Reported by Mark Michelson + Change-Id: Iea0bae4d4e3c9aa0926ea442b6484b5159789d96 - Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b +2016-06-07 02:16 +0000 [da943ec5c0] Alexander Traud -2015-08-29 10:36 +0000 [fc4d4f5379] Joshua Colp + * BuildSystem: Avoid 'ar cru' and use 'ar cr' instead. - * taskprocessor: Fix race condition between unreferencing and finding. + In several internal library projects, the files are archived with the help of + 'ar cr'. Only the projects editline and the Objective Open H.323 stack + implementation in C (ooh323c) use 'ar cru' instead. Recently, some platforms + changed the default parameters of AR which creates "/usr/bin/ar: `u' modifier + ignored since `D' is the default (see `U')". For consistency and to avoid this + message all projects use 'ar cr' now. - When unreferencing a taskprocessor its reference count is checked - to determine if it should be unlinked from the taskprocessors - container and its listener shut down. In between the time when the - reference count is checked and unlinking it is possible for - another thread to jump in, find it, and get a reference to it. If - the thread then uses the taskprocessor it may find that it is not - in the state it expects. + ASTERISK-26091 #close - This change locks the taskprocessors container during almost the - entire unreference operation to ensure that any other thread which - may attempt to find the taskprocessor has to wait. + Change-Id: I710a9b1c01c1b5a1931a646098c044c8161ead40 - ASTERISK-25295 +2016-06-01 16:57 +0000 [dca052e531] Richard Mudgett - Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c + * chan_rtp.c: Simplify options to UnicastRTP channel creation. -2015-08-28 20:22 +0000 [bb38010c67] Joshua Colp + Change the awkward and not as flexible UnicastRTP options format + From: + Dial(UnicastRTP/127.0.0.1[/[][/[]]]) + To: + Dial(UnicastRTP/127.0.0.1[/[]]) - * res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items. + Where can be standard Asterisk flag options: + c() - Specify which codec/format to use such as 'ulaw'. + e() - Specify which RTP engine to use such as 'asterisk'. - The keepalive support in res_pjsip_sdp_rtp currently assumes - that a stream will only be negotiated once. This is false. - If the stream is replaced and later added back it can be - negotiated again causing multiple keepalive scheduled items - to exist. This change explicitly deletes the existing - keepalive scheduled item before adding the new one. + More option flags can be easily added later such as the codec's RTP + payload type to use when the codec does not have a static payload type + defined. - The res_pjsip_sdp_rtp module also does not stop RTP - keepalives or timeout timer if the stream has been - replaced. This change adds a callback to the session media - interface to allow a media stream to be stopped without - the resources being destroyed. This allows the scheduled - items and RTP to be stopped when the stream no longer - exists. + Change-Id: I0c297aaf09e2ee515536cb7437bb8042ff8ff3c9 - ASTERISK-25356 #close +2016-05-02 05:57 +0000 [5bfef2a8b4] Jaco Kroon - Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de + * translate: Enables native Packet-Loss Concealment (PLC) for supporting codecs. -2015-08-28 19:57 +0000 [c036e50fbe] Joshua Colp + ASTERISK-25629 #close - * sched: ast_sched_del may return prematurely due to spurious wakeup + Change-Id: Ibfcf0670e094e9718d82fd9920f1fb2dae122006 - When deleting a scheduled item if the item in question is currently - executing the ast_sched_del function waits until it has completed. - This is accomplished using ast_cond_wait. Unfortunately the - ast_cond_wait function can suffer from spurious wakeups so the - predicate needs to be checked after it returns to make sure it has - really woken up as a result of being signaled. +2016-05-25 10:34 +0000 [3e8d523d88] Alexei Gradinari - This change adds a loop around the ast_cond_wait to make sure that - it only exits when the executing task has really completed. + * core/dial: New channel variable FORWARDERNAME - ASTERISK-25355 #close + Added a new channel variable FORWARDERNAME which indicates which + channel was responsible for a forwarding requests received on dial attempt. - Change-Id: I51198270eb0b637c956c61aa409f46283432be61 + Fixed a bug in the app_queue: FORWARD_CONTEXT is not used. -2015-08-27 12:26 +0000 [229b95d253] Joshua Colp + ASTERISK-26059 #close - * res_pjsip_session: Don't invoke session supplements twice for BYE requests. + Change-Id: I34e93e8c1b5e17776a77b319703c48c8ca48e7b2 - When a BYE request is received the PJSIP invite session implementation - creates and sends a 200 OK response before we are aware of it. This - causes the INVITE session state callback to be called into and ultimately - the session supplements run on the BYE request. Once this response has - been sent the normal transaction state callback is invoked which - invokes the session supplements on the BYE request again. This can - be problematic in particular with res_pjsip_rfc3326 as it may - attempt to update the hangup cause code on the channel while it is - in the process of being hung up. +2016-05-27 14:49 +0000 [a2f820e8dc] George Joseph - This change makes it so the session supplements are only invoked - once by the INVITE session state callback. + * ari/resource_channels: Add 'formats' to channel create/originate - ASTERISK-25318 #close + If you create a local channel and don't specify an originator channel + to take capabilities from, we automatically add all audio formats to + the new channel's capabilities. When we try to make the channel + compatible with another, the "best format" functions pick the best + format available, which in this case will be slin192. While this is + great for preserving quality, it's the worst for performance and + overkill for the vast majority of applications. - Change-Id: I69c17df55ccbb61ef779ac38cc8c6b411376c19a + In the absense of any other information, adding all formats is the + correct thing to do and it's not always possible to supply an + originator so a new parameter 'formats' has been added to the channel + create/originate functions. It's just a comma separated list of formats + to make availalble for the channel. Example: "ulaw,slin,slin16". + 'formats' and 'originator' are mutually exclusive. -2015-08-26 15:26 +0000 [6bfa14bdad] Scott Griepentrog + To facilitate determination of format names, the format name has been + added to "core show codecs". - * Chaos: handle failed allocation in get_media_encryption_type + ASTERISK-26070 #close - If the ast_strndup() call fails to allocate a copy of the - transport string for parsing, fail gracefully. + Change-Id: I091b23ecd41c1b4128d85028209772ee139f604b - ASTERISK-25323 - Reported by: Scott Griepentrog +2016-06-03 01:33 +0000 [538c6415c6] Timo Teräs - Change-Id: Ia4b905ce6d03da53fea526224455c1044b1a5a28 + * chan_sip: Support auth username for callbackextension feature -2015-08-26 14:25 +0000 [490db8ba94] Scott Griepentrog + ASTERISK-20527 #close - * Chaos: make hangup NULL tolerant + Change-Id: I659cf7f00836a09d09d146ad226a40477d731239 - In chan_pjsip_new, if allocation of the pvt - structure fails, ast_hangup is called. But - it was written to assume pvt was valid, and - this change corrects that. +2016-06-03 00:39 +0000 [797695c5cc] Timo Teräs - ASTERISK-25323 - Reported by: Scott Griepentrog + * Make use of GLOB_BRACE and GLOB_NOMAGIC optional - Change-Id: I5f47860fe9cee4cd56abd3f79b108678ab72cc87 -2015-08-26 05:40 +0000 [d03d09aad3] Joshua Colp + These flags are non-portable GNU extensions. Make their use + optional. This fixes complication error on e.g. musl c-library + based systems. - * chan_sip: Allow call pickup to set the hangup cause. + Change-Id: I0aa06efc62aa8995f091445c8b762a75a91042f3 - The call pickup implementation in chan_sip currently sets the channel - hangup cause to "normal clearing" if call pickup is successfully - performed. This action overwrites the "answered elsewhere" hangup cause - set by the call pickup code and can result in the SIP device in - question showing a missed call when it should not. +2016-06-02 14:57 +0000 [3c1fec8099] Timo Teräs - This change sets the hangup cause to "normal clearing" as a - default initially but allows the call pickup to change it as - needed. + * Fix res_search usage - ASTERISK-25346 #close + Resolver state is not part of res_search API. This fixes + compilation error: - Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff + dns.c:261:8: error: too many arguments to function 'res_search' + ret = res_search(&dns_state, -2015-08-25 07:17 +0000 [d013ecf748] Joshua Colp + Change-Id: Ia600a58557040df83f744da3dde23225293845a5 - * res_pjsip: Add common ast_sip_get_host_ip API. +2016-06-02 14:53 +0000 [9c1d95e873] Timo Teräs - Modules commonly used the pj_gethostip function for retrieving the - IP address of the host. This function does not cache the result and may - result in a DNS lookup occurring, or additional work. If the DNS - server is unreachable or network issues arise this can cause the - pj_gethostip function to block for a period of time. + * Fix #include poll.h and sys/cdefs.h - This change adds an ast_sip_get_host_ip and ast_sip_get_host_ip_string - function which does the same thing but caches the host IP address at - module load time. This results in no additional work being done each - time the local host IP address is needed. + POSIX defines poll.h, sys/poll.h should not be used at is c-library + internal header which may or may not exist. Notable in musl it + generates warning of being incorrect. And add explict include of + sys/cdefs.h where needed. - ASTERISK-25342 #close + Change-Id: I142930df53fe7585a06b854b6faddc5301e024be - Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e +2016-05-25 08:45 +0000 [8a5c2e736c] Niklas Larsson -2015-08-24 06:21 +0000 [98d089fb9a] Joshua Colp + * core/manager: Add uptime field to FullyBooted - * bridge: Kick channel from bridge if hung up during action. + Add Uptime and LastReload to event FullyBooted. - When executing an action in a bridge it is possible for the - channel to be hung up without the bridge becoming aware of it. - This is most easily reproducible by hanging up when the bridge - is streaming DTMF due to a feature timeout. This change makes - it so after action execution the channel is checked to determine - if it has been hung up and if it has it is kicked from the bridge. + ASTERISK-26058 #close + Reported by: Niklas Larsson - ASTERISK-25341 #close + Change-Id: I909b330801c0990d78df9b272ab0adc95aecb15e - Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062 +2016-06-02 04:59 +0000 [4505a59dc9] Joshua Colp -2015-08-24 11:04 +0000 [a408369bac] Joshua Colp + * alembic: Fix migration. - * res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced + The 81b01a191a46_pjsip_add_contact_reg_server.py script was attempting + to use UniqueConstraint and failing. It was not imported and after + importing it also continued to fail. - When recreating a subscription it is possible for a freed sub_tree - to be referenced when the initial NOTIFY fails to be created. + I've changed the script to use the explicit name of the constraint + instead. - Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788 + Change-Id: I2438b0be90b7ce583b47dd27983c0c1a02cea5b9 -2015-08-23 18:26 +0000 [3af34441eb] Matt Jordan +2016-06-01 13:57 +0000 [40d19f2e55] Richard Mudgett - * res_pjsip/pjsip_configuration: Disregard empty auth values + * logging,cdr,cel: Fix stringfield memory leak. - When an endpoint is backed by a non-static conf file backend (such as - the AstDB or Realtime), the 'auth' object may be returned as being an - empty string. Currently, res_pjsip will interpret that as being a valid - auth object, and will attempt to authenticate inbound requests. This - isn't desired; is an auth value is empty (which the name of an auth - object cannot be), we should instead interpret that as being an invalid - auth object and skip it. + The stringfields refactor to allow adding stringfields to the end of a + structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some + incomplete cleanup code by some stringfield users. - ASTERISK-25339 #close + The most noticeable leaker is the logging system where there is a leak for + every log message generated. - Change-Id: Ic32b0c6eb5575107d5164a8c40099e687cd722c7 + ASTERISK-26078 #close + Reported by: Etienne Lessard + Patches: + jira_asterisk_26078_v13.patch (license #5621) patch uploaded + by Richard Mudgett -2015-08-21 23:37 +0000 [89003ea320] Rodrigo Ramírez Norambuena + Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782 - * README*: Remove trailing whitespace +2016-05-31 13:02 +0000 [aec7916595] Richard Mudgett - Change-Id: I18b7d75187548a9ed55b4f258d21aaaf29d08874 + * pjsip_distributor.c: Use correct rdata info access method (Part 2). -2015-07-28 13:47 +0000 [857923d9c7] Richard Mudgett + The pjproject doxygen for rdata->msg_info.info says to call + pjsip_rx_data_get_info() instead of accessing the struct member directly. + You need to call the function mostly because the function will generate + the struct member value if it is not already setup. - * chan_sip.c: Set preferred rx payload type mapping on incoming offers. + Change-Id: I4d519385a577f3e9d9193a88125e493cf17fa799 - ASTERISK-25166 - Reported by: Kevin Harwell +2016-05-09 15:00 +0000 [205a31f86c] Mark Michelson - ASTERISK-17410 - Reported by: Boris Fox + * Expand the scope of Dial Events - Change-Id: I7f04d5c8bee1126fee5fe6afbc39e45104469f4e + Dial events up to this point have come in two flavors + * A Dial event with no status to indicate that dialing has begun + * A Dial event with a status to indicate that dialing has ended -2015-07-24 18:46 +0000 [d643b206c6] Richard Mudgett + With this change, Dial events have been expanded to also give + intermediate events, such as "RINGING", "PROCEEDING", and "PROGRESS". + This is especially useful for ARI dialing, as it gives the application + writer the opportunity to place a channel into an early bridge when + early media is detected. - * res_pjsip_sdp_rtp.c: Set preferred rx payload type mapping on incoming offers. + AMI handles these in-progress dial events by sending a new event called + "DialState" that simply indicates that dial state has changed but has + not ended. ARI never distinguished between DialBegin and DialEnd, so no + change was made to the event itself. - ASTERISK-25166 - Reported by: Kevin Harwell + Another change here relates to dial forwards. A forward-related event + was previously only sent when a channel was successfully able to forward + a call to a new channel. With this set of changes, if forwarding is + blocked, we send a Dial event with a forwarding destination but no + forwarding channel, since we were prevented from creating one. This is + again useful for ARI since application writers can now handle call + forward attempts from within their own application. - ASTERISK-17410 - Reported by: Boris Fox + ASTERISK-25925 #close + Reported by Mark Michelson - Change-Id: I97ecebc1ab9b5654fb918bf1f4c98c956b852369 + Change-Id: I42cbec7730d84640a434d143a0d172a740995543 -2015-07-27 19:19 +0000 [f7df3e1a01] Richard Mudgett +2016-05-30 19:27 +0000 [8a6a14590d] George Joseph - * rtp_engine.c: Get current or create a needed rx payload type mapping. + * res_pjsip_mwi_body_generator: Re-order the body items - * Make ast_rtp_codecs_payload_code() get the current mapping or create a - rx payload type mapping. + Re-ordered the body items so Message-Account is second. - ASTERISK-25166 - Reported by: Kevin Harwell + Messages-Waiting: no + Message-Account: sip:1571@:5060 + Voice-Message: 0/0 (0/0) - ASTERISK-17410 - Reported by: Boris Fox + ASTERISK-26065 #close + Reported-by: Ross Beer - Change-Id: Ia4b2d45877a8f004f6ce3840e3d8afe533384e56 + Change-Id: If5d35a64656eac98c2dd5e490cc0b2807bed80c3 -2015-07-27 19:15 +0000 [38854a9f7b] Richard Mudgett +2016-05-30 10:58 +0000 [7fa5766752] George Joseph - * rtp_engine.c: Extract rtp_codecs_payload_replace_rx(). + * pjproject_bundled: Move to pjproject 2.5 - ASTERISK-25166 - Reported by: Kevin Harwell + Although all the patches we had against 2.4.5 were applied by Teluu, + a new bug was introduced preventing re-use of tcp and tls transports + This patch removes all the previous patches against 2.4.5, updates + the version to 2.5, and adds a new patch to correct the transport + re-use problem. - ASTERISK-17410 - Reported by: Boris Fox + Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068 - Change-Id: I34e23bf5b084c8570f9c3e6ccd19b95fe85af239 +2016-05-27 12:25 +0000 [b56f611856] Rusty Newton -2015-07-23 19:24 +0000 [1a549ed134] Richard Mudgett + * res_pjsip: Add clarifying documentation to PJSIP_HEADER help text - * rtp_engine.c: Initial split of payload types into rx and tx mappings. + Added notes about when you can read or write headers. Specifically + about being able to read on the inbound channel and write on an + outbound channel. - There are numerous problems with the current implementation of the RTP - payload type mapping in Asterisk. It uses only one mapping structure to - associate payload types to codecs. The single mapping is overkill if all - of the payload type values are well known values. Dynamic payload type - mappings do not work as well with the single mapping because RFC3264 - allows each side of the link to negotiate different dynamic mappings for - what they want to receive. Not only could you have the same codec mapped - for sending and receiving on different payload types you could wind up - with the same payload type mapped to different codecs for each direction. + ASTERISK-26063 #close + Reported by: Private Name + Tested by: Rusty Newton - 1) An independent payload type mapping is needed for sending and - receiving. + Change-Id: Ibeb64af17d1f6451028b3c29855a3f151a01d8c5 - 2) The receive mapping needs to keep track of previous mappings because of - the slack to when negotiation happens and current packets in flight using - the old mapping arrive. +2016-05-26 15:14 +0000 [bb0f4a6310] Mark Michelson - 3) The transmit mapping only needs to keep track of the current negotiated - values since we are sending the packets and know when the switchover takes - place. + * multicast RTP: Add dialing options - * Needed to create ast_rtp_codecs_payload_code_tx() and make some callers - use the new function because ast_rtp_codecs_payload_code() was used for - mappings in both directions. + This adds a new parameter to the end of a multicast RTP dialing string. + This parameter defines the following options: - * Needed to create ast_rtp_codecs_payloads_xover() for cases where we need - to pass preferred codec mappings to the peer channel for early media - bridging or when we need to prefer the offered mapping that RFC3264 says - we SHOULD use. + * i: Set the interface from which multicast RTP is sent + * l: Set whether multicast packets are looped back to the sender + * t: Set the TTL for multicast packets + * c: Set the codec to use for RTP - * ast_rtp_codecs_payloads_xover() and ast_rtp_codecs_payload_code_tx() are - the only new public functions created. All the others were only used for - the tx or rx mapping direction so the function doxygen now reflects which - direction the function operates. + ASTERISK-26068 #close + Reported by Mark Michelson - * chan_mgcp.c: Removed call to ast_rtp_codecs_payloads_clear() as doing - that makes no sense when processing an incoming SDP. We would be wiping - out any mappings that we set for the possible outgoing SDP we sent - earlier. + Change-Id: I033b706b533f0aa635c342eb738e0bcefa07e219 - ASTERISK-25166 - Reported by: Kevin Harwell +2016-05-09 14:48 +0000 [88d997913f] Mark Michelson - ASTERISK-17410 - Reported by: Boris Fox + * ARI: Re-implement the ARI dial command, allowing for early bridging. - Change-Id: Iaf6c227bca68cb7c414cf2fd4108a8ac98bd45ac + ARI dial had been implemented using the Dial API. This made great sense + when dialing was 100% separate from bridging. However, if a channel were + to be added to a bridge during the dial attempt, there would be a + conflict between the dialing thread and the bridging thread. Each would + be attempting to read frames from the dialed channel and act on them. -2015-08-19 12:10 +0000 [21d419e4fc] Richard Mudgett + The initial attempt to make the two play nice was to have the Dial API + suspend the channel in the bridge and stay in charge of the channel + until the dial was complete. The problem with this was that it was + riddled with potential race conditions. It also was not well-suited for + the case where the channel changed which bridge it was in during the + dial. - * ari/ari_websockets.c: Fix ast_debug parameter type mismatch. + This new approach removes the use of the Dial API altogether. Instead, + the channel we are dialing is placed into an invisible ARI dialing + bridge. The bridge channel thread handles incoming frames from the + channel. If the channel is added to a real bridge, it is departed from + the invisible bridge and then added to the real bridge. Similarly, if + the channel is removed from the real bridge, it is automatically added + back to the invisible bridge if the dial attempt is still active. - This is a type mismatch fix of the debugging commit - c63316eec10e1990a88bf4712238d6deb375bfa9 made to find out why - a testsuite test was failing only on one of the continuous - integration build agents. + This approach keeps the threading simple by always having the channel + being handled by bridge channel threads. - Change-Id: Iba34f6e87cec331f6ac80e4daff6476ea6f00a75 + ASTERISK-25925 -2015-08-19 10:30 +0000 [53e2a6a829] Scott Griepentrog + Change-Id: I7750359ddf45fcd45eaec749c5b3822de4a8ddbb - * contrib: script install_prereq should install sqlite3 +2016-05-19 14:56 +0000 [31f17abe44] Alexei Gradinari - Asterisk needs the sqlite 3 library, which is package - sqlite-devel in CentOS. By adding this package to the - script, a problem with configure failing is resolved. + * res_pjsip: add "via_addr", "via_port", "call_id" to contact - ASTERISK-25331 #close - Reported by: Kevin Harwell + 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. - Change-Id: I90efaf6a01914fea03f21e5cdbd91c348f44b0ec + Added "via_addr", "via_port", "call_id" to contact. + Added new fields ViaAddress, CallID to AMI event ContactStatus. -2015-08-18 15:07 +0000 [03eb6cbc10] Richard Mudgett + ASTERISK-26011 - * res_ari_events: Fix shutdown ref leak. + Change-Id: I36bcc0bf422b3e0623680152d80486aeafe4c576 - ASTERISK-25308 #close - Reported by: Joshua Colp +2016-05-24 16:56 +0000 [574c9e77eb] Alexei Gradinari - Change-Id: I592785bf70ff4b63d00e535b482f40da8e82a082 + * res_pjsip: chatty verbose messages -2015-08-18 14:24 +0000 [e1e7e205bc] Richard Mudgett + There are a lot of verbose messages about Endpoint and Contact status + changes if there are many dynamic endpoints. + The patch sets verbose level 2 for Endpoint status changes + and verbose level 3 for Contact status changes. - * res_http_websocket.c: Add missing unref on an off nominal path. + ASTERISK-26055 #close - Change-Id: I228df6adecd4cb450d03e09e9a38c86bb566e811 + Change-Id: Ie64e261ddbbc41bfff0f0190241152cc123fe6d7 -2015-08-18 16:06 +0000 [59253a2262] Richard Mudgett +2016-05-20 13:56 +0000 [b3142e99e4] Alexei Gradinari - * res_http_websocket.c: Fix some off nominal path cleanup. + * app_voicemail: fix bugs, imap mm_status log change to debug - * Remove extraneous unlock on off-nominal path. - * Add missing HTTP error reply. + Fixed some bugs: + - create dirpath when save downloading message from IMAP storage. + - create IMAP folder if not exists when saving to IMAP storage + - check if file successfully opened before write to it + - some IMAP checks + - remove non-standard flag 'Unseen' + etc - Change-Id: I1f402bfe448fba8696b507477cab5f060ccd9b2b + Change to debug IMAP mm_status log instead of verbose. -2015-08-18 14:46 +0000 [1f0a9f8a76] Richard Mudgett + Remove unused X-Asterisk-VM-Caller-channel message header + for security reason. The clients should not know name of peer/endpoint. - * res_ari.c: Add missing off nominal unlock and remove a RAII_VAR(). + ASTERISK-26045 #close - Change-Id: I0c5e7b34057f26dadb39489c4dac3015c52f5dbf + Change-Id: I7f83d88b69b36934e2539c114b9fb612deed971b -2015-08-14 12:55 +0000 [9fb4a96e15] Richard Mudgett +2016-05-25 18:30 +0000 [7d44d12816] Richard Mudgett - * app_queue.c: Fix setting QUEUE_MEMBER 'paused' and 'ringinuse'. + * pjsip_distributor.c: Use correct rdata info access method. - Setting the 'paused' and 'ringinuse' options on a queue member using the - dialplan function QUEUE_MEMBER did not behave the same way as the - equivalent dialplan applications or AMI actions. + The pjproject doxygen for rdata->msg_info.info says to call + pjsip_rx_data_get_info() instead of accessing the struct member directly. + You need to call the function mostly because the function will generate + the struct member value if it is not already setup. - * Made queue_function_mem_write() call the set_member_paused() and - set_member_value() for the 'paused' and 'ringinuse' options respectively. - A beneficial side effect is that the queue name is now optional and sets - the value in all queues the interface is a member. + Change-Id: Iafe8b01242b7deb0ebfdc36685e21374a43936d2 - * Update QUEUE_MEMBER XML documentation. +2016-05-03 11:11 +0000 [1d60bfcdf1] Tzafrir Cohen - * Fix error checking in QUEUE_MEMBER() write. + * followme: allow disabling callee prompt - ASTERISK-25215 #close - Reported by: Lorne Gaetz + Add the option 'enable_callee_prompt' to followme.conf. Enabled by + default. If disabled, a callee is not prompted to accept or reject + the forwarded call. - Change-Id: I3a016be8dc94d63a9cc155295ff9c9afa5f707cb + ASTERISK-26064 #close -2015-08-17 16:41 +0000 [87b22969a4] Richard Mudgett + Change-Id: I0a8b19d4cf95c86a07c992813babb9e4a4acfff5 + Signed-off-by: Tzafrir Cohen - * app_queue.c: Extract some functions for simpler code. +2016-02-12 09:59 +0000 [80ff2c2540] Corey Farrell - * Extract set_queue_member_pause() from set_member_paused() for simpler - and more consistent code. + * threadpool: Fix potential data race. - * Extract set_queue_member_ringinuse() from - set_member_ringinuse_help_members() for simpler code. + worker_start checked for ZOMBIE status without holding a lock. All + other read/write of worker status are performed with a lock, so this + check should do the same. - Change-Id: Iecc1f4119c63347341d7ea6b65f5fc4963706306 + ASTERISK-25777 #close -2015-08-17 13:34 +0000 [5cf98e2459] Richard Mudgett + Change-Id: I5e33685a5c26fdb300851989a3b82be8c4e03781 - * app_queue.c: Fix error checking in QUEUE_MEMBER() read. +2016-05-24 05:28 +0000 [070eab6ed2] Joshua Colp - Change-Id: I7294e13d27875851c2f4ef6818adba507509d224 + * res_pjsip_outbound_publish: Ensure publish is valid when explicitly destroying. -2015-08-17 11:00 +0000 [178e1adffb] Scott Griepentrog + Recent changes to res_pjsip_outbound_publish have introduced a + race condition at shutdown where an outbound publish may be shutdown + twice. In this case the first succeeds as a result of the unpublish. + In the second invocation since it's been unpublished a task is + queued to just destroy the client. This task holds no ref to the + publish and as a result the publish may be destroyed before the + task is run, causing a crash. - * CHAOS: prevent sorcery object with null id + This explicit destruction task now holds a reference to the publish + to ensure it remains valid. - When allocating a sorcery object, fail if the - id value was not allocated. + ASTERISK-26053 #close - ASTERISK-25323 - Reported by: Scott Griepentrog + Change-Id: I10789b98add3e50292ee3b33a55a1d9061cec94b - Change-Id: I152133fb7545a4efcf7a0080ada77332d038669e +2016-05-09 14:27 +0000 [f6c33771f6] Mark Michelson -2015-08-14 15:46 +0000 [5a85711568] Mark Michelson + * Bridging: introduce "invisible" bridges. - * res_pjsip_sdp_rtp: Restore removed NULL check. + Invisible bridges function the same as normal bridges, but they have the + following restrictions: - When sending an RTP keepalive, we need to be sure we're not dealing with - a NULL RTP instance. There had been a NULL check, but the commit that - added the rtp_timeout and rtp_hold_timeout options removed the NULL - check. + * They never show up in CLI, AMI, or ARI queries. + * They do not have Stasis messages published about them. - Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64 + Invisible bridges' main use is for when use of the bridging system is + desired, but the bridge should not be known to users of the Asterisk + system. -2015-08-13 12:30 +0000 [7c4cb8618d] Richard Mudgett + ASTERISK-25925 - * audiohook.c: Simplify variable usage in audiohook_read_frame_both(). + Change-Id: I804a209d3181d7c54e3d61a60eb462e7ce0e3670 - Change-Id: I58bed58631a94295b267991c5b61a3a93c167f0c +2016-05-22 11:03 +0000 [85d0272e76] Joshua Colp -2015-08-13 12:22 +0000 [bb37473234] Richard Mudgett + * res_pjsip: Only check transaction on transaction state events. - * audiohook.c: Fix MixMonitor crash when using the r() or t() options. + The send request callback function currently assumes that it + will only ever be called on transaction state changes. This is + not always true. If our own timer callback occurs we will call + the callback with a timer event instead of a transaction state + change event. In this case the transaction on the event is + invalid and accessing it will result in a crash. - The built frame format in audiohook_read_frame_both() is now set to a - signed linear format before the rx and tx frames are duplicated instead of - only for the mixed audio frame duplication. + ASTERISK-26049 #close - ASTERISK-25322 #close - Reported by Sean Pimental + Change-Id: I623211c8533eb73056b0250b4580b49ad4174dfc - Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538 +2016-05-21 05:42 +0000 [31897d2d99] Jesper (License 5518) -2015-08-12 12:59 +0000 [43bdddfc26] Kevin Harwell + * func_curl: Don't trim response text on non-ASCII characters - * chan_sip.c: wrong peer searched in sip_report_security_event + The characters 0x80-0xFF were trimmed as well as 0x00-0x20 because of + a signed comparison. - In chan_sip, after handling an incoming invite a security event is raised - describing authorization (success, failure, etc...). However, it was doing - a lookup of the peer by extension. This is fine for register messages, but - in the case of an invite it may search and find the wrong peer, or a non - existent one (for instance, in the case of call pickup). Also, if the peers - are configured through realtime this may cause an unnecessary database lookup - when caching is enabled. + ASTERISK-25669 #close + Reported by: Jesper + patches: + strings.curl.trim.patch submitted by Jesper (License 5518) - This patch makes it so that sip_report_security_event searches by IP address - when looking for a peer instead of by extension after an invite is processed. + Change-Id: Ia51e169f24e3252a7ebbaab3728630138ec6f60a - ASTERISK-25320 #close +2016-05-20 19:03 +0000 [2a77af9ed0] Richard Mudgett - Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4 -2015-08-13 05:26 +0000 [495dfb24b7] Joshua Colp + * chan_rtp.c: Cleanup ast_request() parameter parsing. - * res_http_websocket: When shutting down a session don't close closed socket + * Fixed NULL crash potential if parameters are missing. - Due to the use of ast_websocket_close in session termination it is - possible for the underlying socket to already be closed when the - session is terminated. This occurs when the close frame is attempted - to be written out but fails. + * Reordered some operations so further diagnostic messages can be + more helpful. - Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b -2015-08-11 05:24 +0000 [7e65be4ecd] Joshua Colp + Change-Id: Ibbdc67a2496508cbfbfef0cf19c35177ae2fbd70 - * res_http_websocket: Forcefully terminate on write errors. +2016-05-20 16:59 +0000 [ade5275a3e] Richard Mudgett - The res_http_websocket module will currently attempt to close - the WebSocket connection if fatal cases occur, such as when - attempting to write out data and being unable to. When the - fatal cases occur the code attempts to write a WebSocket close - frame out to have the remote side close the connection. If - writing this fails then the connection is not terminated. + * parking.h: Update ast_parking_park_call() doxygen to reality. - This change forcefully terminates the connection if the - WebSocket is to be closed but is unable to send the close frame. + ASTERISK-26029 - ASTERISK-25312 #close + Change-Id: I2db14d102a48d3224010e6d1c69e856373cc1260 - Change-Id: I10973086671cc192a76424060d9ec8e688602845 +2016-05-12 15:18 +0000 [c378b00a83] Alexei Gradinari -2015-08-09 18:42 +0000 [a87e2dd254] Matt Jordan + * func_odbc: single database connection should be optional - * res/res_format_attr_silk: Expose format attributes to other modules + func_odbc was changed in Asterisk 13.9.0 + to make func_odbc use a single database connection per DSN + because of reported bug ASTERISK-25938 + with MySQL/MariaDB LAST_INSERT_ID(). - This patch adds the .get callback to the format attribute module, such - that the Asterisk core or other third party modules can query for the - negotiated format attributes. + This is drawback in performance when func_odbc is used + very often in dialplan. - Change-Id: Ia24f55cf9b661d651ce89b4f4b023d921380f19c + Single database connection should be optional. -2015-08-10 13:43 +0000 [87c92d2aee] Richard Mudgett + ASTERISK-26010 - * chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF. + Change-Id: I7091783a7150252de8eeb455115bd00514dfe843 - Pressing DTMF digits on a phone to go out on a DAHDI channel can result in - the digit not being recognized or even heard by the peer. +2016-05-20 09:39 +0000 [1c02b19b79] Mark Michelson - Phone -> Asterisk -> DAHDI/channel + * res_pjsip: Match dialogs on responses better. - Turns out the DAHDI behavior with DTMF generation (and any other generated - tones) is exposed by the "buffers=" setting in chan_dahdi.conf. When - Asterisk requests to start sending DTMF then DAHDI waits until its write - buffer is empty before generating any samples for the DTMF tones. When - Asterisk subsequently requests DAHDI to stop sending DTMF then DAHDI - immediately stops generating the DTMF samples. As a result, the more - samples there are in the DAHDI write buffer the shorter the time DTMF - actually gets sent on the wire. If there are more samples in the write - buffer than the time DTMF is supposed to be sent then no DTMF gets sent on - the wire. With the "buffers=12,half" setting and each buffer representing - 20 ms of samples then the DAHDI write buffer is going to contain around - 120 ms of samples. For DTMF to be recognized by the peer the actual sent - DTMF duration needs to be a minimum of 40 ms. Therefore, the intended - duration needs to be a minimum of 160 ms for the peer to receive the - minimum DTMF digit duration to recognize it. + When receiving an incoming response to a dialog-starting INVITE, we were + not matching the response to the INVITE dialog. Since we had not + recorded the to-tag to the dialog structure, the PJSIP-provided method + to find the dialog did not match. - A simple and effective solution to work around the DAHDI behavior is for - Asterisk to flush the DAHDI write buffer when sending DTMF so the full - duration of DTMF is actually sent on the wire. When someone is going to - send DTMF they are not likely to be talking before sending the tones so - the flushed write samples are expected to just contain silence. + Most of the time, this was not a problem, because there is a fall-back + that makes the response get routed to the same serializer that the + request was sent on. However, in cases where an asynchronous DNS lookup + occurs in the PJSIP core, the thread that sends the INVITE is not + actually a threadpool serializer thread. This means we are unable to + record a serializer to handle the incoming response. - * Made dahdi_digit_begin() flush the DAHDI write buffer after requesting - to send a DTMF digit. + Now, imagine what happens when an INVITE is sent on a non-serialized + thread, and an error response (such as a 486) arrives. The 486 ends up + getting put on some random threadpool thread. Eventually, a hangup task + gets queued on the INVITE dialog serializer. Since the 486 is being + handled on a different thread, the hangup task can execute at the same + time that the 486 is being handled. The hangup task assumes that it is + the sole owner of the INVITE session and channel, so it ends up + potentially freeing the channel and NULLing the session's channel + pointer. The thread handling the 486 can crash as a result. - ASTERISK-25315 #close - Reported by John Hardin + This change has the incoming response match the INVITE transaction, and + then get the dialog from that transaction. It's the same method we had + been using for matching incoming CANCEL requests. By doing this, we get + the INVITE dialog and can ensure that the 486 response ends up being + handled by the same thread as the hangup, ensuring that the hangup runs + after the 486 has been completely handled. - Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a + ASTERISK-25941 #close + Reported by Javier Riveros -2015-08-05 14:21 +0000 [b9b957d4e9] Richard Mudgett + Change-Id: I0d4cc5d07e2a8d03e9db704d34bdef2ba60794a0 - * chan_dahdi.c: Lock private struct for ast_write(). +2016-05-18 06:19 +0000 [e773e3a9bb] Matt Jordan - There is a window of opportunity for DTMF to not go out if an audio frame - is in the process of being written to DAHDI while another thread starts - sending DTMF. The thread sending the audio frame could be past the - currently dialing check before being preempted by another thread starting - a DTMF generation request. When the thread sending the audio frame - resumes it will then cause DAHDI to stop the DTMF tone generation. The - result is no DTMF goes out. + * ARI: Add the ability to download the media associated with a stored recording - * Made dahdi_write() lock the private struct before writing to the DAHDI - file descriptor. + This patch adds a new feature to ARI that allows a client to download + the media associated with a stored recording. The new route is + /recordings/stored/{name}/file, and transmits the underlying binary file + using Asterisk's HTTP server's underlying file transfer facilities. - ASTERISK-25315 - Reported by John Hardin + Because this REST route returns non-JSON, a few small enhancements had + to be made to the Python Swagger generation code, as well as the + mustache templates that generate the ARI bindings. - Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb + ASTERISK-26042 #close -2015-08-10 18:23 +0000 [f3f5b45d57] Richard Mudgett + Change-Id: I49ec5c4afdec30bb665d9c977ab423b5387e0181 - * res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message. +2016-05-19 11:41 +0000 [40cb032009] Joshua Colp - If the saved SUBSCRIBE message is not parseable for whatever reason then - Asterisk could crash when libpjsip tries to parse the message and adds an - error message to the parse error list. + * res_sorcery_astdb: Filter fields to only the registered ones. - * Made ast_sip_create_rdata() initialize the parse error rdata list. The - list is checked after parsing to see that it remains empty for the - function to return successful. + This change introduces the same filtering that is done in res_sorcery_realtime + to the res_sorcery_astdb module. This allows persisted sorcery objects + that may contain unknown fields to still be read in from the AstDB + and used. This is particularly useful when switching between different + versions of Asterisk that may have introduced additional fields. - ASTERISK-25306 - Reported by Mark Michelson + ASTERISK-26014 #close - Change-Id: Ie0677f69f707503b1a37df18723bd59418085256 + Change-Id: Ib655130485a3ccfd635b7ed5546010ca14690fb2 -2015-08-10 07:40 +0000 [991d4da1eb] Alexander Traud +2016-05-09 21:40 +0000 [9766a12b4c] snuffy - * chan_sip: Fix negotiation of iLBC 30. + * res_pjsip_empty_info: Respond to empty SIP INFO packets - iLBC 20 was advertised in a SIP/SDP negotiation. However, only iLBC 30 is - supported. Removes "a=fmtp:x mode=y" from SDP. Because of RFC 3952 section 5, - only iLBC 30 is negotiated now. + Some SBCs require responses to empty SIP INFO packets + after establishing call via INVITE, if not responded to + they may drop your call after unspecified timeout of X minutes. - ASTERISK-25309 #close + They are identified by having no Content-Type, check for this + and respond with 200 - OK message. - Change-Id: I92d724600a183eec3114da0ac607b994b1a793da + ASTERISK-24986 #close + Reported-by: Ilya Trikoz, Federico Santulli -2015-08-09 17:56 +0000 [e188192ad1] Matt Jordan + Change-Id: Ib27e4f07151e5aef28fa587e4ead36c5b87c43e0 - * main/format: Add an API call for retrieving format attributes +2016-05-18 10:58 +0000 [111c4b0324] Tzafrir Cohen - Some codecs that may be a third party library to Asterisk need to have - knowledge of the format attributes that were negotiated. Unfortunately, - when the great format migration of Asterisk 13 occurred, that ability - was lost. + * Makefile: remove OSARCH check for init install - This patch adds an API call, ast_format_attribute_get, to the core - format API, along with updates to the unit test to check the new API - call. A new callback is also now available for format attribute modules, - such that they can provide the format attribute values they manage. + There are more specific checks for the platform. - Note that the API returns a void *. This is done as the format attribute - modules themselves may store format attributes in any particular manner - they like. Care should be taken by consumers of the API to check the - return value before casting and dereferencing. Consumers will obviously - need to have a priori knowledge of the type of the format attribute as - well. + Specifically this allows installing OS/X init scripts. - Change-Id: Ieec76883dfb46ecd7aff3dc81a52c81f4dc1b9e3 + ASTERISK-26038 #close -2015-08-07 22:11 +0000 [d5f0c27122] David M. Lee + Change-Id: If08933621145b10362a0cfe73c079301d9c13f50 + Signed-off-by: Tzafrir Cohen - * Replace htobe64 with htonll +2016-05-10 11:28 +0000 [d4b77dad1b] Joshua Colp - We don't have a compatability function to fill in a missing htobe64; but - we already have one for the identical htonll. + * res_pjsip_exten_state: Use the extension for publishing to. - Change-Id: Ic0a95db1c5b0041e14e6b127432fb533b97e4cac + This change uses the newly added multi-user support for + outbound publish to publish to the specific user that an + extension state change is for. -2015-07-24 17:04 +0000 [40caf0ad9b] David M. Lee + This also extends the res_pjsip_outbound_publish support + to include the user specific From and To URI information in + the outbound publishing of extension state. Since the URI + is used when constructing the body it is important to ensure + that the correct local and remote URIs are used. - * Replaces clock_gettime() with ast_tsnow() + Finally the max string growths for the dialog-info+xml + body generator has been increased as through testing it has + proven to be too conservative. - clock_gettime() is, unfortunately, not portable. But I did like that - over our usual `ts.tv_nsec = tv.tv_usec * 1000` copy/paste code we - usually do when we want a timespec and all we have is ast_tvnow(). + ASTERISK-25965 - This patch adds ast_tsnow(), which mimics ast_tvnow(), but returns a - timespec. If clock_gettime() is available, it will use that. Otherwise - ast_tsnow() falls back to using ast_tvnow(). + Change-Id: I668fdf697b1e171d4c7e6f282b2e1590f8356ca1 - Change-Id: Ibb1ee67ccf4826b9b76d5a5eb62e90b29b6c456e +2016-05-03 16:07 +0000 [3905997bae] Kevin Harwell -2015-08-07 14:20 +0000 [12e6f5ac01] Scott Emidy + * res_pjsip_outbound_publish: Add multi-user support per configuration - * ARI: Retrieve existing log channels + Added a new multi_user option that when specified allows a particular + configuration to be used for multiple users. It does this by replacing + the user portion of the server uri with a dynamically created one. - An http request can be sent to get the existing Asterisk logs. + Two new API calls have been added in order to make use of the new + functionality: - The command "curl -v -u user:pass -X GET 'http://localhost:8088 - /ari/asterisk/logging'" can be run in the terminal to access the - newly implemented functionality. + ast_sip_publish_user_send - Sends an outgoing publish message based on the + given user. If state for the user already exists it uses that, otherwise + it dynamically creates new outbound publishing state for the user at that + time. - * Retrieve all existing log channels + ast_sip_publish_user_remove - Removes all outbound publish state objects + associated with the user. This essentially stops outbound publishing for + the user. - ASTERISK-25252 + ASTERISK-25965 #close - Change-Id: I7bb08b93e3b938c991f3f56cc5d188654768a808 + Change-Id: Ib88dde024cc83c916424645d4f5bb84a0fa936cc -2015-08-07 11:14 +0000 [b91ca7ba49] Scott Emidy +2016-05-18 07:54 +0000 [6e5e84458f] George Joseph - * ARI: Creating log channels + * udptl: Don't eat sequence numbers until OK is received - An http request can be sent to create a log channel - in Asterisk. + Scenario: + Local fax -> Asterisk w/ firewall -> Provider -> Remote fax - The command "curl -v -u user:pass -X POST - 'http://localhost:088/ari/asterisk/logging/mylog? - configuration=notice,warning'" can be run in the terminal - to access the newly implemented functionality for ARI. + * Local fax starts rtp call to remote fax + * Remote fax starts t38 call back to local fax. + * Local fax sends t38 no-signal to Asterisk before sending an OK. + * udptl processes the frame and increments the expected sequence number. + * chan_sip drops the frame because the call isn't up so nothing goes out + the external interface to open the port for incoming packets. + * Local fax sends OK and Asterisk sends OK to the remote fax. + * Remote fax sends t38 packets which are dropped by the firewall. + * Local fax re-sends t38 no-signal with the same sequence number. + * udptl drops the frame because it thinks it's a dup. + * Still no outgoing packets to open the firewall. + * t38 negotiation fails. - * Ability to create log channels using ARI + The patch drops frames t38 received before udptl sequence processing + when the call hasn't been answered yet. The second no-signal frame + is then seen as new and is relayed out the external interface which + opens the port and allows negotiation to continue. - ASTERISK-25252 + ASTERISK-26034 #close - Change-Id: I9a20e5c75716dfbb6b62fd3474faf55be20bd782 + Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9 -2015-08-06 15:18 +0000 [f19c4930c2] Scott Emidy +2016-05-15 12:22 +0000 [52148d93f4] Matt Jordan - * ARI: Deleting log channels + * CHANGES: Update formatting of items - An http request can be sent to delete a log channel - in Asterisk. + * Provide consistent indenting of lines in bulleted paragraphs + * Respect the 80 character column width + * Group all like items together, e.g., all dialplan applications under + "Applications", etc. + * Use a single blank line to break up functionality changes within a + larger section + * Use two blanks lines to delineate larger sections - The command "curl -v -u user:pass -X DELETE 'http://localhost:8088 - /ari/asterisk/logging/mylog'" can be run in the terminal - to access the newly implemented functionally for ARI. + Change-Id: I0488554f5cb7c51da70003d69288a21c9aab9647 - * Able to delete log channels using ARI +2016-04-18 18:17 +0000 [03d88b5656] Matt Jordan - ASTERISK-25252 + * ARI: Add the ability to play multiple media URIs in a single operation - Change-Id: Id6eeb54ebcc511595f0418d586ff55914bc3aae6 + Many ARI applications will want to play multiple media files in a row to + a resource. The most common use case is when building long-ish IVR prompts + made up of multiple, smaller sound files. Today, that requires building a + small state machine, listening for each PlaybackFinished event, and triggering + the next sound file to play. While not especially challenging, it is tedious + work. Since requiring developers to write tedious code to do normal activities + stinks, this patch adds the ability to play back a list of media files to a + resource. -2015-08-06 12:48 +0000 [382334cc06] Mark Michelson + Each of the 'play' operations on supported resources (channels and bridges) + now accepts a comma delineated list of media URIs to play. A single Playback + resource is created as a handle to the entire list. The operation of playing + a list is identical to playing a single media URI, save that a new event, + PlaybackContinuing, is raised instead of a PlaybackFinished for each non-final + media URI. When the entire list is finished being played, a PlaybackFinished + event is raised. - * res_pjsip_pubsub: More accurately persist packet. + In order to help inform applications where they are in the list playback, the + Playback resource now includes a new, optional attribute, 'next_media_uri', + that contains the next URI in the list to be played. - The pjsip_rx_data structure has a pkt_info.packet field on it that is - the packet that was read from the transport. For datagram transports, - the packet read from the transport will correspond to the SIP message - that arrived. For streamed transports, however, it is possible to read - multiple SIP messages in one packet. + It's important to note the following: + - If an offset is provided to the 'play' operations, it only applies to the + first media URI, as it would be weird to skip n seconds forward in every + media resource. + - Operations that control the position of the media only affect the current + media being played. For example, once a media resource in the list + completes, a 'reverse' operation on a subsequent media resource will not + start a previously completed media resource at the appropiate offset. + - This patch does not add any new operations to control the list. Hopefully, + user feedback and/or future patches would add that if people want it. - In a recent case, Asterisk crashed on a system where TCP was being used. - This is because at some point, a read from the TCP socket resulted in a - 200 OK response as well as an incoming SUBSCRIBE request being stored in - rdata->pkt_info.packet. When the SUBSCRIBE was processed, the - combination 200 OK and SUBSCRIBE was saved in persistent storage. Later, - a restart of Asterisk resulted in the crash because the persistent - subscription recreation code ended up building the 200 OK response - instead of a SUBSCRIBE request, and we attempted to access - request-specific data. + ASTERISK-26022 #close - The fix here is to use the pjsip_msg_print() function in order to - persist SUBSCRIBE requests. This way, rather than using the raw socket - data, we use the parsed SIP message that PJSIP has given us. If we - receive multiple SIP messages from a single read, we will be sure only - to save off the relevant SIP message. There also is a safeguard put in - place to make sure that if we do end up reconstructing a SIP response, - it will not cause a crash. + Change-Id: Ie1ea5356573447b8f51f2e7964915ea01792f16f - ASTERISK-25306 #close - Reported by Mark Michelson +2016-05-17 11:14 +0000 [5bd1bf2816] George Joseph - Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2 + * chan_sip: Prevent extra Session-Expires headers from being added -2015-08-04 16:12 +0000 [4b6c657a82] Joshua Colp + When chan_sip does a re-INVITE to refresh a session and authentication + is required, the INVITE with the Authorization header containes a + second Session-Expires header without the ";refersher=" parameter. + This is causing some proxies to return a 400. Also, when Asterisk is + the uas and the refresher, it is including the Session-Expires and + Min-SE headers in OPTIONS messages which is not allowed per RFC4028. - * res_pjsip: Ensure sanitized XML is NULL terminated. + This patch (based on the reporter's) Checks to see if a Session-Expires + header is already in the message before adding another one. It also + checks that the method is INVITE or UPDATE. - The ast_sip_sanitize_xml function is used to sanitize - a string for placement into XML. This is done by examining - an input string and then appending values to an output - buffer. The function used by its implementation, strncat, - has specific behavior that was not taken into account. - If the size of the input string exceeded the available - output buffer size it was possible for the sanitization - function to write past the output buffer itself causing - a crash. The crash would either occur because it was - writing into memory it shouldn't be or because the resulting - string was not NULL terminated. + ASTERISK-26030 #close - This change keeps count of how much remaining space is - available in the output buffer for text and only allows - strncat to use that amount. + Change-Id: I58a7b07bab5a3177748d8a7034fb8ad8e11ce1d9 - Since this was exposed by the res_pjsip_pidf_digium_body_supplement - module attempting to send a large message the maximum allowed - message size has also been increased in it. +2016-05-16 15:29 +0000 [ae81b55361] George Joseph - A unit test has also been added which confirms that the - ast_sip_sanitize_xml function is providing NULL terminated - output even when the input length exceeds the output - buffer size. + * res_pjsip_outbound_registration: Clean up state when registration is deleted - ASTERISK-25304 #close + Nothing was cleaning up the registration state object when ast_sorcery_delete + was called on a registration. So, the registration was deleted from sorcery + but the state object went right on refreshing the registration (or failing + to refresh the registration) with the peer. - Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302 + * Added a 'deleted' observer on registration that removes the state object. -2015-08-05 05:23 +0000 [7351d33a1f] Joshua Colp + ASTERISK-25964 #close + Reported-by Matt Jordan - * res_rtp_asterisk: Don't leak temporary key when enabling PFS. + Change-Id: I2db792145cdb1f72ebbf57dd9099596dbbf12c23 - A change recently went in which enabled perfect forward secrecy for - DTLS in res_rtp_asterisk. This was accomplished two different ways - depending on the availability of a feature in OpenSSL. The fallback - method created a temporary instance of a key but did not free it. - This change fixes that. +2016-05-15 19:05 +0000 [8b5cee4a4f] George Joseph - ASTERISK-25265 + * res_pjsip: Set TCP_NODELAY on TCP transports - Change-Id: Iadc031b67a91410bbefb17ffb4218d615d051396 -2015-08-04 09:47 +0000 [c63316eec1] Mark Michelson + Although it's perfectly legal to place multiple SIP messages in the same packet, + it can cause problems because the Linux default is to enable Path MTU Discovery + which sets the Don't Fragment bit on the packets. If adding a second message to + the packet causes the MTU to be exceeded, and the destination isn't equipped to + send a FRAGMENTATION NEEDED response to a large packet, the packet will just be + dropped. - * res_http_websocket: Debug write lengths. + We can't specifically tell the stack to send only 1 message per packet, but we + can turn on TCP_NODELAY when we create the transport. This will at least tell + the stack to send packets as soon as possible. - Commit 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee attempted to fix a - test failure observed on 32 bit test agents by ensuring that a cast from - a 32 bit unsigned integer to a 64 bit unsigned integer was happening in - a predictable place. As it turns out, this did not cause test runs to - succeed. + ASTERISK-26005 #close + Reported-by: Ross Beer - This commit adds several redundant debug messages that print the payload - lengths of websocket frames. The idea here is that this commit will not - cause tests to succeed for the faulty test agent, but we might deduce - where the fault lies more easily this way by observing at what point the - expected value (537) changes to some ungangly huge number. + Change-Id: I820f23227183f2416ca5e393bec510e8fe1c8fbd - If you are wondering why something like this is being committed to the - branch, keep in mind that in commit - 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee I noted that the observed test - failures only happen when automated tests are run. Attempts to run the - tests by hand manually on the test agent result in the tests passing. +2016-05-14 07:24 +0000 [3522376512] Matt Jordan - Change-Id: I14a65c19d8af40dadcdbd52348de3b0016e1ae8d + * logger: Support JSON logging with Verbose messages -2015-08-03 11:06 +0000 [35a98161df] Mark Michelson + When 2d7a4a3357 was merged, it missed the fact that Verbose log messages + are formatted and handled by 'verbosers'. Verbosers are registered + functions that handle verbose messages only; they exist as a separate + class of callbacks. This was done to handle the 'magic' that must be + inserted into Verbose messages sent to remote consoles, so that the + consoles can format the messages correctly, i.e., the leading + tabs/characters. - * res_http_websocket: Avoid passing strlen() to ast_websocket_write(). + In reality, verbosers are a weird appendage: they're a separate class of + formatters/message handlers outside of what handles all other log + messages in Asterisk. After some code inspection, it became clear that + simply passing a Verbose message along with its 'sublevel' importance + through the normal logging mechanisms removes the need for verbosers + altogether. - We have seen a rash of test failures on a 32-bit build agent. Commit - 48698a5e21d7307f61b5fb2bd39fd593bc1423ca solved an obvious problem where - we were not encoding a 64-bit value correctly over the wire. This - commit, however, did not solve the test failures. + This patch removes the verbosers, and makes the default log formatter + aware that, if the log channel is a console log, it should simply insert + the 'verbose magic' into the log messages itself. This allows the + console handlers to interpret and format the verbose message + themselves. - In the failing tests, ARI is attempting to send a 537 byte text frame - over a websocket. When sending a frame this small, 16 bits are all that - is required in order to encode the payload length on the websocket - frame. However, ast_websocket_write() thinks that the payload length is - greater than 65535 and therefore writes out a 64 bit payload length. - Inspecting this payload length, the lower 32 bits are exactly what we - would expect it to be, 537 in hex. The upper 32 bits, are junk values - that are not expected to be there. + This simplifies the code quite a lot, and should improve the performance + of printing verbose messages by a reasonable factor: + (1) It removes a number of memory allocations that were done on each + verobse message + (2) It removes the need to strip the verbose magic out of the verbose + log messages before passing them to non-console log channels + (3) It now performs fewer iterations over lists when handling verbose + messages - In the failure, we are passing the result of strlen() to a function that - expects a uint64_t parameter to be passed in. strlen() returns a size_t, - which on this 32-bit machine is 32 bits wide. Normally, passing a 32-bit - unsigned value to somewhere where a 64-bit unsigned value is expected - would cause no problems. In fact, in manual runs of failing tests, this - works just fine. However, ast_websocket_write() uses the Asterisk - optional API, which means that rather than a simple function call, there - are a series of macros that are used for its declaration and - implementation. These macros may be causing some sort of error to occur - when converting from a 32 bit quantity to a 64 bit quantity. + Since verbose messages are now handled like other log messages (for the + most part), the JSON formatting of the messages works as well. - This commit changes the logic by making existing ast_websocket_write() - calls use ast_websocket_write_string() instead. Within - ast_websocket_write_string(), the 64-bit converted strlen is saved in a - local variable, and that variable is passed to ast_websocket_write() - instead. + ASTERISK-25425 - Note that this commit message is full of speculation rather than - certainty. This is because the observed test failures, while always - present in automated test runs, never occur when tests are manually - attempted on the same test agent. The idea behind this commit is to fix - a theoretical issue by performing changes that should, at the least, - cause no harm. If it turns out that this change does not fix the failing - tests, then this commit should be reverted. + Change-Id: I21bf23f0a1e489b5102f8a035fe8871552ce4f96 - Change-Id: I4458dd87d785ca322b89c152b223a540a3d23e67 +2016-05-14 21:48 +0000 [a1803cb5f4] Matt Jordan -2015-07-29 14:17 +0000 [1f02d20da4] Benjamin Ford + * configs/samples/pjsip.conf.sample: Fix typo - * ARI: Rotate log channels. + A ':' is not a valid token for starting a comment. - An http request can be sent to rotate a specified log channel. - If the channel does not exist, an error response will be - returned. + Change-Id: I123592d93a83d1bdde3e352822881eb9da85e5ad - The command "curl -v -u user:pass -X PUT 'http://localhost:8088 - /ari/asterisk/logging/logChannelName/rotate'" can be run in the - terminal to access this new functionality. +2016-05-12 07:08 +0000 [d29c17834c] Matt Jordan - * Added the ability to rotate log files through ARI + * res/res_hep_pjsip: Fix reported local IP address when bound to 'any' - ASTERISK-25252 + When bound to an 'any' address, e.g., 0.0.0.0, PJSIP reports as its + local address the 'any' address, as opposed to the IP address we + actually received the packet on. This can cause some confusion in Homer, + as it will dutifully report what we send it. - Change-Id: Iaefa21cbbc1b29effb33004ee3d89c977e76ab01 + This patch uses the PJSIP inspection routines to determine which IP + address we probably received the packet on based on the remote party's + IP address. In the event that this fails, it falls back to the IP + address natively reported by the transport. -2015-07-31 11:27 +0000 [fe804b09b3] Ashley Sanders + Change-Id: I076f835d2aef489e1ee1d01595b211eb2ce62da3 - * ARI: Channels added to Stasis application during WebSocket creation ... +2016-05-14 12:29 +0000 [14938184a3] Sean Bright - Prior to ASTERISK-24988, the WebSocket handshake was resolved before Stasis - applications were registered. This was done such that the WebSocket would be - ready when an application is registered. However, by creating the WebSocket - first, the client had the ability to make requests for the Stasis application - it thought had been created with the initial handshake request. The inevitable - conclusion of this scenario was the cart being put before the horse. + * res_ari: Correct Location headers returned by some ARI resources - ASTERISK-24988 resolved half of the problem by ensuring that the applications - were created and registered with Stasis prior to completing the handshake - with the client. While this meant that Stasis was ready when the client - received the green-light from Asterisk, it also meant that the WebSocket was - not yet ready for Stasis to dispatch messages. + The Location headers returned by: - This patch introduces a message queuing mechanism for delaying messages from - Stasis applications while the WebSocket is being constructed. When the ARI - event processor receives the message from the WebSocket that it is being - created, the event processor instantiates an event session which contains a - message queue. It then tries to create and register the requested applications - with Stasis. Messages that are dispatched from Stasis between this point and - the point at which the event processor is notified the WebSocket is ready, are - stashed in the queue. Once the WebSocket has been built, the queue's messages - are dispatched in the order in which they were originally received and the - queue is concurrently cleared. + * /bridges/{bridgeId}/play + * /bridges/{bridgeId}/record + * /channels/{channelId}/play + * /channels/{channelId}/record - ASTERISK-25181 #close - Reported By: Matt Jordan + Did not have the '/ari' prefix, and in the case of the 'play' resources, were + using 'playback' instead of 'playbacks.' - Change-Id: Iafef7b85a2e0bf78c114db4c87ffc3d16d671a17 + Change-Id: I957c58a3a1471bf477dae7c67faa1b74fcd9241c -2015-07-29 12:58 +0000 [86034227ca] Mark Michelson +2016-05-11 20:17 +0000 [e06a23681c] Matt Jordan - * dns_core: Allow zero-length DNS responses. + * res_hep: Provide an option to pick the UUID type - A testsuite test recently failed due to a crash that occurred in the DNS - core. The problem was that the test could not resolve an address, did - not set a result on the DNS query, and then indicated the query was - completed. The DNS core does not handle the case of a query with no - result gracefully, and so there is a crash. + At one point in time, it seemed like a good idea to use the Asterisk + channel name as the HEP correlation UUID. In particular, it felt like + this would be a useful identifier to tie PJSIP messages and RTCP + messages together, along with whatever other data we may eventually send + to Homer. This also had the benefit of keeping the correlation UUID + channel technology agnostic. - This changeset makes the DNS system resolver set a result with a - zero-length answer in the case that a DNS resolution failure occurs - early. The DNS core now also will accept such a response without - treating it as invalid input. A unit test was updated to no longer treat - setting a zero-length response as off-nominal. + In practice, it isn't as useful as hoped, for two reasons: + 1) The first INVITE request received doesn't have a channel. As a + result, there is always an 'odd message out', leading it to be + potentially uncorrelated in Homer. + 2) Other systems sending capture packets (Kamailio) use the SIP Call-ID. + This causes RTCP information to be uncorrelated to the SIP message + traffic seen by those capture nodes. - Change-Id: Ie56641e22debdaa61459e1c9a042e23b78affbf6 + In order to support both (in case someone is trying to use res_hep_rtcp + with a non-PJSIP channel), this patch adds a new option, uuid_type, with + two valid values - 'call-id' and 'channel'. The uuid_type option is used + by a module to determine the preferred UUID type. When available, that + source of a correlation UUID is used; when not, the more readily available + source is used. -2015-07-29 13:49 +0000 [f49bef08a2] Richard Mudgett + For res_hep_pjsip: + - uuid_type = call-id: the module uses the SIP Call-ID header value + - uuid_type = channel: the module uses the channel name if available, + falling back to SIP Call-ID if not + For res_hep_rtcp: + - uuid_type = call-id: the module uses the SIP Call-ID header if the + channel type is PJSIP and we have a channel, + falling back to the Stasis event provided + channel name if not + - uuid_type = channel: the module uses the channel name - * rtp_engine.c: Fix performance issue with several channel drivers that use RTP. + ASTERISK-25352 #close - ast_rtp_codecs_get_payload() gets called once or twice for every received - RTP frame so it would be nice to not allocate an ao2 object to then have - it destroyed shortly thereafter. The ao2 object gets allocated only if - the payload type is not set by the channel driver as a negotiated value. - The issue affects chan_skinny, chan_unistim, chan_rtp, and chan_ooh323. + Change-Id: Ide67e59a52d9c806e3cc0a797ea1a4b88a00122c - * Made static_RTP_PT[] an array of ao2 objects that - ast_rtp_codecs_get_payload() can return instead of an array of structs - that must be copied into a created ao2 object. +2016-05-13 11:46 +0000 [69a85a519f] Alexei Gradinari - ASTERISK-25296 #close - Reported by: Richard Mudgett + * res_pjsip: Endpoint IP Access Controls - Change-Id: Icb6de5cd90bfae07d44403a1352963db9109dac0 + With the old SIP module we can use IP access controls per peer. + PJSIP module missing this feature. -2015-07-29 17:00 +0000 [33a465249b] Richard Mudgett + This patch added next 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 - * res_rtp_asterisk.c: Fix off-nominal crash potential. + This patch also better logging failed request: + add custom message instead of "No matching endpoint found" + add SIP method to logging - ASTERISK-25296 - Reported by: Richard Mudgett + ASTERISK-25900 - Change-Id: I08549fb7c3ab40a559f41a3940f3732a4059b55b + Change-Id: I456dea3909d929d413864fb347d28578415ebf02 -2015-07-29 13:48 +0000 [5f925d48b7] Richard Mudgett +2016-05-12 14:36 +0000 [fd3f70598d] Mark Michelson - * rtp_engine.c: Must protect mime_types_len with mime_types_lock. + * Use doubles instead of floats for conversions when comparing strings. - Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e + In 13.9.0, there was an issue where PJSIP contacts added to an AOR would + be deleted at seemingly random times. -2015-07-24 18:38 +0000 [ba7dd38470] Richard Mudgett + One reason this was happening was because of an operation to retrieve + the contacts whose expiration time was less than or equal to the current + time. When retrieving existing contacts, the contact's expiration time + and the current time were converted from a string to a float, and those + two floats were compared. - * res_pjsip_sdp_rtp.c: Fixup some whitespace. + On some systems, including mine, this conversion was horribly off. For + instance, I could regularly see the string "1463079214" get converted + into 1463079168.000000. When switching from using a float to using a + double, the conversion was as expected. - Change-Id: Ib4eb7ef7dcaf93ddc26538f0a498aaf110d7a973 + Why was the conversion to float off? My best guess is that the + conversion to float was attempting to store the entire value in the 23 + bit significand of the IEEE-754 floating point number. In particular, if + you take only the 23 most significant bits of 1463079214, you get the + messed up 1463079168 that we were seeing in the conversion. It likely + was possible to get a more precise value by composing the number using + an exponent, but the conversion did not work that way. With a double, + you have a 52 bit significand, allowing the entire value to fit there, + and thereby allowing an accurate conversion. -2015-07-24 18:42 +0000 [3751bf0971] Richard Mudgett + ASTERISK-26007 #close + Reported by Greg Siemon - * res_pjsip_sdp_rtp.c: Fix processing wrong SDP media list. + Change-Id: I83ca7944aae8b7cd994b254c78ec02411d321070 - Change-Id: I7c076826c2d3c6ae8c923ca73b7a71980cca11f2 +2016-05-12 09:13 +0000 [4f8cfa0220] George Joseph -2015-07-27 19:10 +0000 [e2d5d4db35] Richard Mudgett + * pjsip_distributor: Add missing newline to NOTICE - * rtp_engine.h: No sense allowing payload types larger than RFC allows. + There was a newline missing from the end of the "no matching endpoint" notice. - * Tweaked add_static_payload() to not use magic numbers. + Change-Id: Idc11fe5bc0354072291663dbffe648c471e39181 - Change-Id: I1719ff0f6d3ce537a91572501eae5bcd912a420b +2016-05-10 10:19 +0000 [d14d1ba826] Sebastian Damm -2015-07-23 14:04 +0000 [bc1eae55cb] Richard Mudgett + * res_pjsip_outbound_registration: generate correct Contact URI for TLS - * rtp_engine.c: Minor tweaks. + There are two types of SIP URIs indicating a secure transport: + * sips:user@example.org + * sip:user@example.org;transport=tls - * Fix off nominial ref leak of new_type in - ast_rtp_codecs_payloads_set_m_type(). + When using a sips URI, Asterisk checks incoming INVITEs and answers from + the other side for sips URIs, and rejects the packet if there are only + sip URIs. So Asterisk should only generate a sips Contact URI if the + other side supports it. - * No need to lock static_RTP_PT_lock in - ast_rtp_codecs_payloads_set_m_type() and - ast_rtp_codecs_payloads_set_rtpmap_type_rate() before the payload type - parameter sanity check. + This patch makes Asterisk generate either a sip or sips Contact URI + depending on the format of the server URI. - * No need to create ast_rtp_payload_type ao2 objects with a lock since the - lock is not used. + If you want a sip URI, use: + server_uri=sip:example.org\;transport=tls - Change-Id: I64dd1bb4dfabdc7e981e3f61448beac9bb7504d4 + If you want a sips URI, use: + server_uri=sips:example.org -2015-07-17 16:23 +0000 [d122c1e50b] Richard Mudgett + ASTERISK-25990 #close + Reported-by: Sebastian Damm - * chan_sip.c: Tweak glue->update_peer() parameter nil value. + Change-Id: I5ae57d6531ce940b5fc64d5cd2673e60db0f9ba2 - Change glue->update_peer() parameter from 0 to NULL to better indicate it - is a pointer. +2016-05-05 16:41 +0000 [9f996624b0] Alexei Gradinari - Change-Id: I8ff2e5087f0e19f6998e3488a712a2470cc823bd + * logger: Add PID to syslog messages. -2015-07-23 12:41 +0000 [d12dc97fc9] Richard Mudgett + During refactoring of this support the addition of + the PID to messages was removed. This change adds it + back in. - * rtp_engine.h: Misc comment fixes. + ASTERISK-25538 #close - Change-Id: If98139264d5d97427b4685ecbdc54518f725bc43 + Change-Id: Ie2d43b0652e59b7ac319a7dba94501540d70ba36 -2015-07-30 17:05 +0000 [077c58cd5c] Richard Mudgett +2016-05-11 14:07 +0000 [5236ffed97] Matt Jordan - * res_pjsip_session.c: Fix crashes seen when call cancelled. + * configure: Fix errors with AST_UNDEFINED_SANITIZER/AST_LEAK_SANITIZER - Two testsuite tests crashed in the same place as a result of an INVITE - being CANCELed. + When running on a system that does not support or use AST_UNDEFINED_SANITIZER + or AST_LEAK_SANITIZER, the configure script would incorrectly set those + constants to a blank value, e.g., 'AST_UNDEFINED_SANITIZER='. This would + cause menuselect to error out, complaining that a blank value is not a + valid option. This patch corrects the issue by setting the value to 0 if + the options that those constants enable/disable is not found. - tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_unspecified - tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_tcp + Change-Id: Ib39814aaf940f308d500c1e026edb3d70de47fba - The session pointer is no longer in the inv->mod_data[session_module.id] - location because the INVITE transaction has reached the terminated state. +2016-05-10 08:17 +0000 [b5c471b339] Tzafrir Cohen - ASTERISK-25297 #close - Reported by: Richard Mudgett + * followme: delete the right recorded name file - Change-Id: Idb75fdca0321f5447d5dac737a632a5f03614427 + FollowMe with the option a records the name of the caller and plays it + to the callee. However it has failed to clean up that recorded file + as it tried to delete the file name without the '.sln' extension. -2015-07-29 14:35 +0000 [5fcd1bc556] Mark Michelson + ASTERISK-26008 #close - * res_http_websocket: Properly encode 64 bit payload + Change-Id: I79d7b1be7d5cde57bf076d9389e2a8a4422776ec + Signed-off-by: Tzafrir Cohen - A test agent was continuously failing all ARI tests when run against - Asterisk 13. As it turns out, the reason for this is that on those test - runs, for some reason we decided to use the super extended 64 bit - payload length for websocket text frames instead of the extended 16 bit - payload length. For 64-bit payloads, the expected byte order over the - network is +2016-05-10 03:10 +0000 [ec85ea3c21] Tzafrir Cohen - 7, 6, 5, 4, 3, 2, 1, 0 + * basic-cfg: asterisk.conf: don't set languages - However, we were sending the payload as + * No need to set language in a miniml configuration. 'en' will do just + fine. + * It would be useful to have an example of setting it to a different + language. + * Setting the documentation language explicitly is likewise not + required. Setting it to a different value is not common. At least + until there is a set of translated documentation. - 3, 2, 1, 0, 7, 6, 5, 4 + Change-Id: I94d91ea34e129925f25af81ef8dc0906fb568cb7 + Signed-off-by: Tzafrir Cohen - This meant that we were saying to expect an absolutely MASSIVE payload - to arrive. Since we did not follow through on this expected payload - size, the client would sit patiently waiting for the rest of the payload - to arrive until the test would time out. +2016-05-10 03:08 +0000 [1b0a9bb2c4] Tzafrir Cohen - With this change, we use the htobe64() function instead of htonl() so - that a 64-bit byte-swap is performed instead of a 32 bit byte-swap. + * basic-cfg: asterisk.conf: debug level 5 spams - Change-Id: Ibcd8552392845fbcdd017a8c8c1043b7fe35964a + Don't suggest users to use debug level 5, which spews (usually + non-useful) debug information. Reduce the suggestion to (an + arbitrarily-selected) level 2. -2015-07-29 12:23 +0000 [8fb8988fd4] Mark Michelson + Change-Id: Ib53195f78945970956ff59ef13fa89b90e0fcd60 + Signed-off-by: Tzafrir Cohen - * Add a test event for inband ringing. +2016-05-10 03:06 +0000 [d0ba3e8196] Tzafrir Cohen - This event is necessary for the bridge_wait_e_options test to be able to - confirm that ringing is being played on the local channel that runs the - BridgeWait() application with the e(r) option. + * basic-cfg: asterisk.conf: defaults of options - ASTERISK-25292 #close - Reported by Kevin Harwell + Note the default of remmed-out options. To clarify that those values are + not the defaults. - Change-Id: Ifd3d3d2bebc73344d4b5310d0d55c7675359d72e + Change-Id: I849c29b7a710f0abc37355fcb5bfee335ae30738 + Signed-off-by: Tzafrir Cohen -2015-07-28 05:33 +0000 [1d081ec970] Mark Duncan +2016-05-10 02:56 +0000 [f943a1fd84] Tzafrir Cohen - * res/res_rtp_asterisk: Add ECDH support + * basic-cfg: asterisk.conf: remove [directories] - This will add ECDH support to Asterisk. It will - detect auto ECDH support in OpenSSL - (1.0.2b and above) during ./configure. If this is - available, it will use it, - otherwise it will fall back to prime256v1 (this - behavior is consistent with - other projects such as Apache and nginx). + A minimal configuration does not need to explicitly spell out the + directories. The built-in defaults will do just fine. In many cases + they are wrong. - This fixes WebRTC being broken in Firefox 38+ due - to Firefox now only supporting - ciphers with perfect forward secrecy. + Change-Id: Id1a671e5c5e9923765a4156b57f9f7e263fdd26c + Signed-off-by: Tzafrir Cohen - ASTERISK-25265 #close +2016-05-05 11:37 +0000 [1e876d6915] Kevin Harwell - Change-Id: I8c13b33a2a79c0bde2e69e4ba6afa5ab9351465b + * res_pjsip_authenticator_digest: Don't use source port in nonce verification -2015-07-16 12:16 +0000 [687597ca8c] Jonathan Rose + From the issue reporter: + "res_pjsip_outbound_authenticator_digest builds a nonce that is a hash of + the timestamp, the source address, the source port, a server UUID that is + calculated at startup, and the authentication realm. - * holding_bridge: ensure moh participants get frames + Rather than caching nonces that we create, we instead attempt to re-calculate + the nonce when receiving an incoming request with authentication. We then + compare the re-calculated nonce to the incoming nonce, and if they don't match, + then authentication has failed early. - Currently, if a blank musiconhold.conf is used, musiconhold will fail - to start for a channel going into a holding bridge with an anticipation - of getting music on hold. That being the case, no frames will be written - to the channel and that can pose a problem for blind transfers in PJSIP - which may rely on frames being written to get past the REFER framehook. - This patch makes holding bridges start a silence generator if starting - music on hold fails and makes it so that if no music on hold functions - are installed that the ast_moh_start function will report a failure so - that consumers of that function will be able to respond appropriately. + The problem is that it is possible, especially when using TCP, to receive two + requests from the same endpoint but have differing source ports for those + requests. Asterisk itself commonly will use different source ports for + outbound TCP requests." - ASTERISK-25271 #close + This patch removes the source port dependency when building the nonce. - Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99 - (cherry picked from commit 8458b8d441c2f4143ff135163ff3da4f88fe14c8) + ASTERISK-25978 #close -2015-07-18 11:16 +0000 [309dd2a409] Joshua Colp + Change-Id: I871b5f4adce102df1c4988066283095ec509dffe - * pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options. +2016-05-07 14:39 +0000 [dfefbf8731] George Joseph - This change adds support for the 'rtp_timeout' and 'rtp_timeout_hold' - endpoint options. These allow the channel to be hung up if RTP - is not received from the remote endpoint for a specified number of - seconds. + * config_transport: Tell pjproject to allow all SSL/TLS protocols - ASTERISK-25259 #close + The default tls settings for pjproject only allow TLS 1, TLS 1.1 and TLS 1.2. + SSL is not allowed. So, even if you specify "sslv3" for a transport method, + it's silently ignored and one of the TLS protocols is used. This was a new + behavior of pjsip_tls_setting_default() in 2.4 (when tls.proto was added) that + we never caught. - Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9 + Now we need to set tls.proto = 0 after we call pjsip_tls_setting_default(). + This tells pjproject to set the socket protocol to match the method. -2015-07-24 09:46 +0000 [a0c31c7a05] Mark Michelson + ASTERISK-26004 #close - * res_pjsip: Add rtp_keepalive to sample config file. + Change-Id: Icfb55c1ebe921298dedb4b1a1d3bdc3ca41dd078 - Change-Id: I5f62d0c5684f8b2335f9f8ac2d79ee04fbdafb19 +2016-05-05 09:14 +0000 [d03e170ae7] Joshua Colp -2015-07-23 13:11 +0000 [d97bed46b7] Mark Michelson + * res_pjsip_pubsub: Use common datastores container API. - * Local channels: Alternate solution to ringback problem. + This migrates res_pjsip_pubsub over to using the newly + introduce common datastores management API instead of using + its own implementations for both subscriptions and + publications. - Commit 54b25c80c8387aea9eb20f9f4f077486cbdf3e5d solved an issue where a - specific scenario involving local channels and a native local RTP bridge - could result in ringback still being heard on a calling channel even - after the call is bridged. + As well the extension state data now provides a generic + datastores container instead of a subscription. This allows + the dialog-info+xml body generator to work for both + subscriptions and publications. - That commit caused many tests in the testsuite to fail with alarming - consequences, such as not sending DialBegin and DialEnd events, and - giving incorrect hangup causes during calls. + ASTERISK-25999 #close - This commit reverts the previous commit and implements and alternate - solution. This new solution involves only passing AST_CONTROL_RINGING - frames across local channels if the local channel is in AST_STATE_RING. - Otherwise, the frame does not traverse the local channels. By doing - this, we can ensure that a playtones generator does not get started on - the calling channel but rather is started on the local channel on which - the ringing frame was initially indicated. + Change-Id: I773f9e4f35092da0f653566736a8647e8cfebef1 - ASTERISK-25250 #close - Reported by Etienne Lessard +2016-05-05 09:12 +0000 [94cd351ec4] Joshua Colp - Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39 + * datastore: Add common container based datastores API. -2015-07-22 12:24 +0000 [1cc99ba8b6] Joshua Colp + This change introduces a common container based datastores + management API. This has been done in a few places across + the tree but this consolidates all of the logic into one + place in a generic fashion. - * audiohook: Use manipulated frame instead of dropping it. + ASTERISK-25999 - Previous changes to sample rate support in audiohooks accidentally - removed code responsible for allowing the manipulate audiohooks - to work. Without this code the manipulated frame would be dropped - and not used. This change restores it. + Change-Id: I72eb15941dcdbc2a37bb00a33ce00f8755bd336a - ASTERISK-25253 #close +2016-05-04 02:40 +0000 [8923c9ac96] Jaco Kroon - Change-Id: I3ff50664cd82faac8941f976fcdcb3918a50fe13 + * app_confbridge: Add a regcontext option for confbridge bridge profiles. -2015-07-22 09:46 +0000 [0b7148e262] Mark Michelson + This patch allows for having app_confbridge register the name of the + conference as an extension into a specific context, similar to + regcontext for chan_sip. This variant is not quite as involved as the + one in chan_sip and doesn't allow for multiple contexts or custom + extensions, you can only specify the context and the conference name + will always be used as the extension to register. - * Local channels: Do not block control -1 payloads. + ASTERISK-25989 #close - Control frames with a -1 payload are used as a special signal to stop - playtones generators on channels. This indication is sent both by - app_dial as well as by ast_answer() when a call is answered in case any - tones were being generated on a calling channel. + Change-Id: Icacf94d9f2b5dfd31ef36f6cb702392619a7902f - This control frame type was made to stop traversing local channel pairs - as an optimization, because it was thought that it was unnecessary to - send these indications, and allowing such unnecessary control frames to - traverse the local channels would cause the local channels to optimize - away less quickly. +2016-05-08 20:19 +0000 [facce6f632] George Joseph - As it turns out, through some special magic dialplan code, it is - possible to have a tones being played on a non-local channel, and it is - important for the local channel to convey that the tones should be - stopped. The result of having tones continue to be played on the - non-local channel is that the tones play even once the channel has been - bridged. By not blocking the -1 control frame type, we can ensure that - this situation does not happen. + * pjproject_bundled: Check for python-dev and TEST_FRAMEWORK - ASTERISK-25250 #close - Reported by Etienne Lessard + The pjsua and pjsystest apps are now built only if TEST_FRAMEWORK is set. + The python bindings are now built only if TEST_FRAMEWORK is set and a + python development package is installed. - Change-Id: I0bcaac3d70b619afdbd0ca8a8dd708f33fd2f815 + libresample was also disabled. -2015-07-22 05:16 +0000 [e5fe8d40c8] Joshua Colp + ASTERISK-25993 #close + Reported-by: Joshua Colp - * audiohook: Read the correct number of samples based on audiohook format. + Change-Id: If4e91c503a02f113d5b71bc8b972081fa3ff6f03 - Due to changes in audiohooks to support different sample rates the - underlying storage of samples is in the format of the audiohook - itself and not of the format being requested. This means that if a - channel is using G722 the samples stored will be at 16kHz. If - something subsequently reads from the audiohook at a format which - is not the same sample rate as the audiohook the number of samples - needs to be adjusted. +2016-05-06 11:54 +0000 [322c3b4262] Alexei Gradinari - Given the following example: - 1. Channel writing into audiohook at 16kHz (as it is using G722). - 2. Chanspy reading from audiohook at 8kHz. + * res_pjsip: module load priority - The original code would read 160 samples from the audiohook for - each 20ms of audio. This is incorrect. Since the audio in the - audiohook is at 16kHz the actual number needing to be read is 320. - Failure to read this much would cause the audiohook to reset - itself constantly as the buffer became full. + The res_pjsip_authenticator_digest, res_pjsip_endpoint_identifier_* + and res_pjsip_registrar modules should load ASAP + to avoid "No matching endpoint found" for legitimate endpoint. - This change adjusts the requested number of samples by determining - the duration of audio requested and then calculating how many - samples that would be in the audiohook format. + ASTERISK-25994 - ASTERISK-25247 #close + Change-Id: Iac95d95ad031e0be104189d29e923a2ad7c24a1b - Change-Id: Ia91ce516121882387a315fd8ee116b118b90653d +2016-05-05 15:16 +0000 [516f49f316] Alexei Gradinari -2015-07-20 15:59 +0000 [293c9f6894] Elazar Broad + * stasis_endpoints: Add new Status and Headers to ContactStatus - * cdr/cdr_adaptive_odbc.c: Fix quoted identifier usage when inserting CDR records + ASTERISK-25903 added a new headers to AMI Event ContactStatusDetail. + ASTERISK-25904 added a new Status to AMI Event ContactStatusDetail. + These additions should be also in stasis_endpoints + to include in command "manager show event ContactStatus" - Commit a24ce38 added support for the use of quoted indentifiers when inserting - CDR records into the database. However, the if statement logic responsible for - determining whether to use those identifiers is reversed, resulting in a - reference to the quoted identifier character buffer which will be null, hence - null terminating the SQL query, resulting in a truncated statement which - fails to execute. + Change-Id: I7610ad02a998e1f26c20caa27aa50279d0164f6a - ASTERISK-25263 #close - Reported by: Elazar Broad - Tested by: Elazar Broad +2016-05-03 15:43 +0000 [64e058f75a] Kevin Harwell - Change-Id: I40da47309b67cc1572207b1515dcc08ec9b1f644 -2015-07-20 12:39 +0000 [d02196448b] Rusty Newton + * res_pjsip_outbound_publish: state potential dropped on reloads/realtime fetches - * Documentation: A couple of trivial fixes in sip.conf.sample and func_cdr.c + When reloading, or fetching realtime data, if the "apply" failed for any + numerous reasons the current state object would not be maintained. This + potentially resulted in publishes being stopped for some states/clients when + they should not have been. - * In sip.conf.sample fix sentence where we said that WS or WSS are supported - transports for use in an outbound register definition. They are not - supported in that case. - * In func_cdr.c made it clear that the Disable option for CDR_PROP can be used - to enable CDR on a channel. + This patch makes it so the current state object is kept upon any type of reload/ + fetch failures. - ASTERISK-24867 #close - Reported by: Rusty Newton + Change-Id: Iab6020c116d628ed2ae81183e987e2eaa3c90b30 - ASTERISK-24853 #close - Reported by: PSDK +2016-05-03 15:35 +0000 [adc82a2260] Kevin Harwell - Change-Id: I3d698bc6302b9d00a0a995b5c4ad9a42d69b48ca + * res_pjsip_outbound_publishing: After unloading the library won't load again -2015-07-09 14:17 +0000 [2b42264e66] Mark Michelson + The same thing was happening in res_pjsip_publish_asterisk. When the library + was unloaded it did not unregister the object type from sorcery. Subsequent + loads resulted in a failed load due to the sorcery type already existing. - * res_pjsip: Add rtp_keepalive endpoint option. + Change-Id: Ifdc25e94e4cd40bc5a19eb4d0a00b86c2e9fedc9 - This adds an "rtp_keepalive" option for PJSIP endpoints. Similar to the - chan_sip option, this specifies an interval, in seconds, at which we - will send RTP comfort noise frames. This can be useful for keeping RTP - sessions alive as well as keeping NAT associations alive during lulls. +2016-05-03 15:39 +0000 [3b0ce5169d] Kevin Harwell - ASTERISK-25242 #close - Reported by Mark Michelson + * res_pjsip_outbound_publish: Won't unload if condition wait times out - Change-Id: I3b9903d99e35fe5d0b53ecc46df82c750776bc8d + When res_pjsip_outbound_publish unloads it has to wait for all current + publishing objects to get done. However if the wait condition times out + then it does not fail the unload. This sometimes results in an infinite + loop check while unloading. This patch now fails the unload operation if + the condition times out. -2015-07-16 09:13 +0000 [8b503f2a10] Michael Cargile + Change-Id: Id57b8cbed9d61222690fcba1e4f18e259df4c7ec - * res/res_musiconhold: Add a warning when MOH does not exist +2016-05-03 14:59 +0000 [41fccbfeb1] Kevin Harwell - Change-Id: Ifdfbd0b97cf31478d29923ec30aabce28d01740b + * res_pjsip_outbound_publish: Ref leak in off nominal callback paths -2015-07-19 09:11 +0000 [9475dc9492] Matt Jordan + There were a few spots where the client object's reference was being leaked in + sip_outbound_publish_callback. This patch cleans up those leaks. - * res/res_sorcery_config: Prevent crash from misconfigured sorcery.conf + Change-Id: I485d0bc9335090f373026f77c548042e258461df - Misconfiguring sorcery.conf with a 'config' wizard with no extra data - will currently crash Asterisk on startup, as the wizard requires a comma - delineated list to parse. This patch updates res_sorcery_config to check - for the presence of the data before it starts manipulating it. +2016-05-03 15:31 +0000 [dfbb03cc8e] Kevin Harwell - Change-Id: I4c97512e8258bc82abe190627a9206c28f5d3847 + * res_pjsip_outbound_publish: Potential crash due to off nominal path -2015-07-16 09:46 +0000 [649460aa44] Joshua Colp + It was possible for the explicit publish destroy function to be called without + the pjsip client ever being initialized. This fix checks to make sure there is + a client to destroy before attempting. - * chan_pjsip: Don't change formats when frame of unsupported format is received. + Change-Id: I8eea1bfa3bd472149bfc255310be2a6248688f5c - Receipt of an RTP packet currently causes the formats on an PJSIP channel to - change to the format of the RTP packet. In some off-nominal cases it's possible - for this to be a format that has not been configured or negotiated. This change - makes it so only formats explicitly configured on the endpoint are allowed. +2016-05-05 05:07 +0000 [17b6ba49ef] Joshua Colp - ASTERISK-25258 #close + * file: Ensure nativeformats remains valid for lifetime of use. - Change-Id: If93d641fb6418a285928839300d7854cab8c1020 + It is possible for the nativeformats of a channel to change + throughout its lifetime. As a result a user of it needs to either + ensure the channel is locked when accessing the formats or keep + a reference to the nativeformats themselves. -2015-07-14 16:55 +0000 [4a875e8082] Richard Mudgett + This change fixes the file playback support so it keeps a + reference to the nativeformats when accessing things. - * pbx.c: Post AMI VarSet event if delete a non-empty dialplan variable. + ASTERISK-25998 #close - ASTERISK-25256 #close - Reported by: Richard Mudgett + Change-Id: Ie45b65475e1481ddf05b874ee48f63e39fff8915 - Change-Id: I0b6be720b66fa956f6a798cd22ef8934eb0c0ff3 +2016-04-15 09:32 +0000 [cc4c5f5693] Alexei Gradinari -2015-07-17 04:59 +0000 [7908ae4934] Patric Marschall + * res_pjsip: improve realtime performance - * sig_pri.h: force_restart_unavailable_chans in wrong scope + This patch modified pjsip_options to retrieve only + permament contacts for aor if the qualify_frequency is > 0 + and persisted contacts if the qualify_frequency is > 0. - In channels/sig_pri.h, struct sig_pri_span, the field - force_restart_unavailable_chans is only defined if + This patch also fixed a bug in res_sorcery_astdb. + res_sorcery_astdb doesn't save object data retrived from astdb. - #if defined(HAVE_PRI_MCID) is true. + ASTERISK-25826 - All other occurences of force_restart_unavailable_chans are outside of the + Change-Id: I1831fa46c4578eae5a3e574ee3362fddf08a1f05 - #if defined(HAVE_PRI_MCID) - endif +2016-05-02 16:52 +0000 [92f85fe766] Alexei Gradinari - scope. + * res_fax/t38_gateway: Peer V.21 session is created on wrong channel - ASTERISK-25257 #close - Reported by: Patric Marschall + The channel and peer V.21 sessions are created on the same channel now. + The peer V.21 session should be created only on peer channel + when one of channel can handle T.38. - Change-Id: I071de89cc2cd0d85927a013036e235851f672549 + Also this patch enable debug for T.38 gateway session + if global fax debug enabled. -2015-07-08 16:39 +0000 [254d07b15b] Matt Jordan + ASTERISK-25982 - * ARI: Add support for push configuration of dynamic object + Change-Id: I78387156ea521a77eb0faf170179ddd37a50430e - This patch adds support for push configuration of dynamic, i.e., - sorcery, objects in Asterisk. It adds three new REST API calls to the - 'asterisk' resource: - * GET /asterisk/{configClass}/{objectType}/{id}: retrieve the current - object given its ID. This returns back a list of ConfigTuples, which - define the fields and their present values that make up the object. - * PUT /asterisk/{configClass}/{objectType}/{id}: create or update an - object. A body may be passed with the request that contains fields to - populate in the object. The same format as what is retrieved using - the GET operation is used for the body, save that we specify that the - list of fields to update are contained in the "fields" attribute. - * DELETE /asterisk/{configClass}/{objectType}/{id}: remove a dynamic - object from its backing storage. +2016-05-04 16:11 +0000 [4df48581f1] Alexei Gradinari - Note that the success/failure of these operations is somewhat - configuration dependent, i.e., you must be using a sorcery wizard that - supports the operation in question. If a sorcery wizard does not support - the create or delete mechanisms, then the REST API call will fail with a - 403 forbidden. + * pjsip: Added "reg_server" to contacts (fixed alembic) - ASTERISK-25238 #close + ASTERISK-25931 - Change-Id: I28cd5c7bf6f67f8e9e437ff097f8fd171d30ff5c + Change-Id: Icc4321a88f5c93ff809da3f372eebbf69c6a8549 -2015-07-15 15:40 +0000 [b34c4528ab] Richard Mudgett +2016-05-04 03:17 +0000 [02f4ca1079] Chris Trobridge - * strings.h: Fix issues with escape string functions. + * config_options.c: Expand #ifdef to contain whole if statement. - Fixes for issues with the ASTERISK-24934 patch. + ASTERISK-25956 #close - * Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is - an empty string. If it were an empty string the functions returned NULL - as if there were a memory allocation failure. This failure caused the AMI - VarSet event to not get posted if the new value was an empty string. + Change-Id: If6961ec54be276d5ab4f012ee7e7b420cb45de38 - * Fixed dest buffer overwrite potential in ast_escape() and - ast_escape_c(). If the dest buffer size is smaller than the space needed - by the escaped s parameter string then the dest buffer would be written - beyond the end by the nul string terminator. The num parameter was really - the dest buffer size parameter so I renamed it to size. +2016-05-02 16:08 +0000 [380ac201ac] Alexei Gradinari - * Made nul terminate the dest buffer if the source string parameter s was - an empty string in ast_escape() and ast_escape_c(). + * res_fax: add FAXMODE variable - * Updated ast_escape() and ast_escape_c() doxygen function description - comments to reflect reality. + The app_fax set FAXMODE variable, but res_fax missing this feature. + This patch add FAXMODE variable which is set to either "audio" or "T38". - * Added some more unit test cases to /main/strings/escape to cover the - empty source string issues. + ASTERISK-25980 - ASTERISK-25255 #close - Reported by: Richard Mudgett + Change-Id: Ie3dcbfb72cc681e9e267a60202f7fb8723a51b6b - Change-Id: Id77fc704600ebcce81615c1200296f74de254104 +2016-05-02 05:56 +0000 [0c9faaee47] Jean Aunis -2015-07-14 14:29 +0000 [097c15ac51] Richard Mudgett + * app_chanspy: fix audiohook options in non read-only mode - * parking_applications.c: Fix ast_verb() line terminator. + When option 'o' was not set, ChanSpy created its audiohook with the flag + AST_AUDIOHOOK_MUTE_WRITE, which caused ChanSpy to listen audio from one + direction only. - Change-Id: I8797238c71563e243c48c6145b4f1ae58f91f775 + ASTERISK-25866 #close -2015-07-14 14:36 +0000 [8b620c555b] Richard Mudgett + Change-Id: I5c745855eea29a3fbc4e4aed0b0c0f53580535e0 - * res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park. +2016-04-07 16:33 +0000 [a4cfcda036] Alexei Gradinari - setup_park_common_datastore() was assuming that a non-NULL string returned - for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty - strings. Things got crashy as a result. + * res_pjsip/AMI: add contact.updated event - * Made setup_park_common_datastore() treat the channel variable values the - same whether they are NULL or empty for ATTENDEDTRANSFER and - BLINDTRANSFER. + With the old SIP module AMI sends PeerStatus event on every + successfully REGISTER requests, ie, on start registration, + update registration and stop registration. - ASTERISK-25254 #close - Reported by: Richard Mudgett + With PJSIP AMI sends ContactStatus only when status is changed. + Regarding registration: + on start registration - Created + on stop registration - Removed + but on update registration nothing - Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2 + This patch added contact.updated event. -2015-07-10 18:01 +0000 [4af24ec74b] Richard Mudgett + ASTERISK-25904 - * res_pjsip_session.c: Extract sip_session_defer_termination_stop_timer(). + Change-Id: I8fad8aae9305481469c38d2146e1ba3a56d3108f - Change-Id: I9e115dee74bd72e06081d0ee73ecdeb886caa5fb +2016-04-30 17:52 +0000 [e61716b774] George Joseph -2015-07-10 10:42 +0000 [71b3bcf5e0] Richard Mudgett + * pjproject_bundled: Various fixes discovered during testing of OSes - * res_pjsip_session.c: Add some helpful comments and minor tweaks. + For all OSes: + * Disabled third-party codecs in pjproject and added + '--disable-speex-codec --disable-speex-aec --disable-gsm-codec' to the + configure options since we don't use the pjsip codec capability. - Change-Id: I742aeeaf5f760593f323a00fb691affe22e35743 + FreeBSD: + * Added FreeBSD support to install_prereq. + * Changed pjproject/configure.m4 to use $GNU_MAKE instead of hardcoding "make". + * Added __progname and environ to asterisk.exports.in. + * Reverted the use of ldconfig to create shared library symlinks to ln. + * Only enable epoll in pjproject if `uname -s` is Linux. + * Added a patch to pjproject to take the name of the 'make' command from + an environment variable if supplied. This is needed for the python bindings. + (merged by Teluu into pjproject trunk 5/3/2016) + FreeBSD support isn't complete. Still some general issues regarding + make/gmake having nothing to do with pjproject. With some handholding it DOES + build successfully. -2015-07-10 10:43 +0000 [53c91737a5] Richard Mudgett + CentOS: + Added 'patch' and 'bzip2' to install_prereq PACKAGES_RH. + CentOS 6/7 32/64 build and run the pjsip testsuite successfully. - * res_pjsip_session.c: Fix off nominal crash potential in debug message. + Ubuntu: + No changes required. + Ubuntu 15/16 32/64 build and run the pjsip testsuite successfully. - Change-Id: I09928297927ee85f7655289acee3a586816466bc + Debian: + No changes required. + Debian 6/7/8 32/64 build and run the pjsip testsuite successfully. -2015-07-15 10:31 +0000 [eff6a88a88] Matt Jordan + There will utimately be a follow-up patch to create an install_prereq for + the testsuite as I've discovered a few missing requirements. - * apps/app_dictate: Fix typo in attribution + ASTERISK-25968 #close - Last time I checked, it's "Sangoma", not "Samgoma". Thanks to Brian - (GameGamer43) for pointing that out. + Change-Id: I5756a07facfc63798115a5e73a8709382fe9259c - Change-Id: I43d7b196f6d7a2b2517b84915e3a8dfbc2894106 +2016-03-17 14:29 +0000 [080c6216b6] Andrew Nagy -2015-07-15 10:28 +0000 [e01d93e092] Benjamin Ford + * app_voicemail: always copy dynamic struct to avoid race condition - * ARI: Fixed unload mode for unload module. + Voicemail email addresses can be corrupt or voicemail + emails can end up being sent to the wrong email address if asterisk is + reading voicemail.conf during a reload and processing an email at the + same time. This patch always copies the struct that would otherwise only + be copied once. - Changed the unload mode to AST_FORCE_SOFT from AST_FORCE_FIRM, - which would unload a module even if it was in use. + ASTERISK-24463 #close + Reported by: John Campbell + Tested by: Etienne Lessard + Tested by: Andrew Nagy + Change-Id: I3a0643813116da84e2617291903d0d489b7425fb - * Changed unload mode to proper mode +2016-04-15 14:26 +0000 [2b1edee772] Alexei Gradinari - ASTERISK-25173 + * pjsip: Added "reg_server" to contacts. - Change-Id: If2402487b5bce05d9770f25f65f5c8e292ad5533 + 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. -2015-07-10 18:17 +0000 [1b666549f3] Richard Mudgett + ASTERISK-25931 - * res_pjsip_session.c: Fix crash on call disconnect. + Change-Id: Ia8f6bd2267809c78753b52bcf21835b9b59f4cb8 - The crash fix for ASTERISK-25183 backported some code from master to try - to make sure that a BYE response is processed by the same serializer used - by the BYE request. The identified race condition causing that backport - was the BYE request code had not finished processing after sending the BYE - before the BYE response came in for processing under a different thread. - Unfortunately, there is still a race condition. Now the race condition is - between destroying the call session's serializer in - ast_taskprocessor_unreference() and using ast_taskprocessor_get() to get a - reference to the serializer for a BYE response. Even worse, the new race - condition is a design limitation of the taskprocessor implementation that - didn't matter in versions before v12. Back then, taskprocessors were only - destroyed when a module unloaded. Now res_pjsip can destroy them when a - call ends. +2016-05-01 02:21 +0000 [bf13b59062] Diederik de Groot - However, as noted on the ASTERISK-25183 commit, - session_inv_on_state_changed() is disassociating the dialog from the - session when the invite dialog state becomes PJSIP_INV_STATE_DISCONNECTED. - This is a tad too soon because our BYE request transaction has not - completed yet. + * configs/basic-pbx/asterisk.conf: contains incorrect path separator - * Split session_end() that is called by session_inv_on_state_changed() to - hold off session destruction until the BYE transaction timeout occurs or a - failed initial INVITE transaction timeout occurs in - session_inv_on_tsx_state_changed(). + Note: When packagers use these files (as an example) the paths are never + really used when they are split using '='. - ASTERISK-25201 #close - Reported by: Matt Jordan + Note: Thirdparty applications will also have trouble parsing the file when + expecting '=>'. - Change-Id: Iaf8dc8485fd8392a2a3ee4ad3b7f7f04a0dcc961 + Change-Id: I0ada647f588e81f023fb1333ca15a1a333fd6004 -2015-07-14 13:12 +0000 [9d458b8311] Benjamin Ford +2016-04-27 17:19 +0000 [2c46063d54] Richard Mudgett - * ARI: Added new functionality to reload a single module. + * res_pjsip_exten_state: Create PUBLISH messages. - An http request can be sent to reload an Asterisk module. If the - module can not be reloaded or is not already loaded, an error - response will be returned. + Create PUBLISH messages to update a third party when an extension state + changes because of either a device or presence state change. - The command "curl -v -u user:pass -X PUT 'http://localhost:8088 - /ari/asterisk/modules/{moduleName}'" (or something similar, based - on configuration) can be run in the terminal to access this new - functionality. + A configuration example: - For more information, see: - https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + [exten-state-publisher] + type=outbound-publish + server_uri=sip:instance1@172.16.10.2 + event=presence + ; Optional regex for context filtering, if specified only extension state + ; for contexts matching the regex will cause a PUBLISH to be sent. + @context=^users + ; Optional regex for extension filtering, if specified only extension + ; state for extensions matching the regex will cause a PUBLISH to be sent. + @exten=^[0-9]* + ; Required body type for the PUBLISH message. + ; + ; Supported values are: + ; application/pidf+xml + ; application/xpidf+xml + ; application/cpim-pidf+xml + ; application/dialog-info+xml (Planned support but not yet) + @body=application/pidf+xml - * Added new ARI functionality - * Asterisk modules can be reloaded through http requests + The '@' extended variables are used because the implementation can't + extend the outbound publish type as it is provided by the outbound publish + module. That means you either have to use extended variables, or + implement some sort of custom extended variable thing in the outbound + publish module. Another option would be to refactor that stuff to have an + option which specifies the use of an alternate implementation's + configuration and then have that passed to the implementation. JColp + opted for the extended variables method originally. - ASTERISK-25173 + ASTERISK-25972 #close - Change-Id: I289188bcae182b2083bdbd9ebfffd50b62f58ae1 + Change-Id: Ic0dab4022f5cf59302129483ed38398764ee3cca -2015-07-14 08:55 +0000 [f64f1c2772] Benjamin Ford +2016-04-26 16:10 +0000 [0b5292525c] Richard Mudgett - * ARI: Added new functionality to unload a single module. + * res_pjsip_exten_state: Check if body generator is available. - An http request can be sent to unload an Asterisk module. If the - module can not be unloaded or is already unloaded, an error response - will be returned. + When starting the extension state publishers, check if the requested + message body generator is available. If not available give error message + and skip starting that publisher. - The command "curl -v -u user:pass -X DELETE 'http://localhost:8088 - /ari/asterisk/modules/{moduleName}'" (or something similar, depending - on configuration) can be run in the terminal to access this new - functionality. + * res_pjsip_pubsub.c: Create new API if type/subtype generator + registered. - For more information, see: - https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + * res_pjsip_exten_state.c: Use new body generator API for validation. - * Added new ARI functionality - * Asterisk modules can be unloaded through http requests + ASTERISK-25922 - ASTERISK-25173 + Change-Id: I4ad69200666e3cc909d4619e3c81042d7f9db25c - Change-Id: I535a95f5676deb02651522761ecbdc0b00b5ac57 +2016-04-28 11:35 +0000 [369182d084] Richard Mudgett -2015-07-13 16:00 +0000 [aa5707b889] Benjamin Ford + * res_pjsip: Start body generator users after suppliers. - * ARI: Added new functionality to load a single module. + Change-Id: I8f0b57841feaab56c8a4e821b5ccb4e05e5fbadb - An http request can be sent to load an Asterisk module. If the - module can not be loaded or is loaded already, an error response - will be returned. +2016-04-28 16:06 +0000 [3af83ea2fb] Richard Mudgett - The command curl -v -u user:pass -X POST 'http://localhost:8088/ari - /asterisk/modules/{moduleName}'" (or something similar, depending on - configuration) can be run in the terminal to access this new - functionality. + * res_pjsip_pubsub.c: Add useful information to some messages. - For more information, see: - https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + Change-Id: Ia0b2e15773894c599e5c5748bbc70e99f434192a - * Added new ARI functionality - * Asterisk modules can be loaded through http requests +2016-04-26 15:58 +0000 [8e1b663b87] Richard Mudgett - ASTERISK-25173 + * res_pjsip_pubsub.c: Fix body generator registration race. - Change-Id: I9e05d5b8c5c666ecfef341504f9edc1aa84fda33 + Change-Id: Id8752073ef06472a2fd96080f4009fac42843e67 -2015-07-13 10:54 +0000 [6a764db370] Benjamin Ford +2016-04-28 16:54 +0000 [30415944a8] George Joseph - * ARI: Added new functionality to get information on a single module. + * pjproject_bundled: Disable PJSIP_UNESCAPE_IN_PLACE - An http request can be sent to retrieve information on a single - module, including the resource name, description, use count, status, - and support level. + When pjsip_parse_uri is called with PJSIP_UNESCAPE_IN_PLACE enabled, + the input uri string will become corrupted if it contains escape sequences. + It's not possible to automatically strdup or strdupa the input string because + the output uri pj_str_t's will have pointers to chunks of the input string. + Getting around this would require more memory management code and wouldn't + be worth the savings of doing the unescape in place. - The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari - /asterisk/modules/{moduleName}'" (or something similar, depending on - configuration) can be run in the terminal to access this new - functionality. + ASTERISK-25970 #close + Reported-by: Dmitriy Serov - For more information, see: - https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + Change-Id: I28dc0e599b5108f7959b9c46dc8278371b372f88 - * Added new ARI functionality - * Information on a single module can now be retrieved +2016-04-26 15:13 +0000 [906ea2c43f] Richard Mudgett - ASTERISK-25173 + * res_pjsip_pubsub.h: Fix doxygen association. - Change-Id: Ibce5a94e70ecdf4e90329cf0ba66c33a62d37463 + Change-Id: I110d3e3572598289fcd4215d966cf0c858f98632 -2015-07-08 14:56 +0000 [c855523519] Kevin Harwell +2016-04-25 16:00 +0000 [76ea4cfaae] Richard Mudgett - * bridge.c: Fixed race condition during attended transfer + * res_pjsip_outbound_publish.c: Remove redundant flag check. - During an attended transfer a thread is started that handles imparting the - bridge channel. From the start of the thread to when the bridge channel is - ready exists a gap that can potentially cause problems (for instance, the - channel being swapped is hung up before the replacement channel enters the - bridge thus stopping the transfer). This patch adds a condition that waits - for the impart thread to get to a point of acceptable readiness before - allowing the initiating thread to continue. + Change-Id: I0da80a3c3e0eae0c52ff27e7412ba027d6f52353 - ASTERISK-24782 - Reported by: John Bigelow +2016-03-07 18:34 +0000 [4ebf9a938d] George Joseph - Change-Id: I08fe33a2560da924e676df55b181e46fca604577 + * res_pjsip: Add ability to identify by Authorization username -2015-05-13 16:22 +0000 [ef82190804] Matt Jordan + A feature of chan_sip that service providers relied upon was the ability to + identify by the Authorization username. This is most often used when customers + have a PBX that needs to register rather than identify by IP address. From my + own experiance, this is pretty common with small businesses who otherwise + don't need a static IP. - * media cache: Add CLI commands + In this scenario, a register from the customer's PBX may succeed because From + will usually contain the PBXs account id but an INVITE will contain the caller + id. With nothing recognizable in From, the service provider's Asterisk can + never match to an endpoint and the INVITE just stays unauthorized. - This patch adds five CLI commands for the media cache: - * 'media cache show all' - display a summary of all items in the media - cache. - * 'media cache show ' - display detailed information about a - single item in the media cache. - * 'media cache delete ' - remove an item from the media cache, and - inform the bucket backend for the URI scheme to remove the item as - well. - * 'media cache refresh ' - refresh a URI. If the item does not - exist in the media cache, the bucket backend will pull down the media - associated with the URI and create the item in the cache. - * 'media cache create ' - create an item in the media cache from - some local media storage. Note that the bucket backend for the URI - scheme must still permit the item creation. + The fixes: - Change-Id: Id1c5707a3b8e2d96b56e4691a46a936cd171f4ae + A new value "auth_username" has been added to endpoint/identify_by that + will use the username and digest fields in the Authorization header + instead of username and domain in the the From header to match an endpoint, + or the To header to match an aor. This code as added to + res_pjsip_endpoint_identifier_user rather than creating a new module. -2015-01-29 08:38 +0000 [3ea0d38396] Matt Jordan + Although identify_by was always a comma-separated list, there was only + 1 choice so order wasn't preserved. So to keep the order, a vector was added + to the end of ast_sip_endpoint. This is only used by res_pjsip_registrar + to find the aor. The res_pjsip_endpoint_identifier_* modules are called in + globals/endpoint_identifier_order. - * media cache: Add a core API and facade for a backend agnostic media cache + Along the way, the logic in res_pjsip_registrar was corrected to match + most-specific to least-specific as res_pjsip_endpoint_identifier_user does. - This patch adds a new API to the Asterisk core that acts as a media - cache. The core API itself is mostly a thin wrapper around some bucket - API provided implementation that itself acts as the mechanism of - retrieval for media. The media cache API in the core provides the - following: - * A very thin in-memory cache of the active bucket_file items. Unlike a - more traditional cache, it provides no expiration mechanisms. Most - queries that hit the in-memory cache will also call into the bucket - implementations as well. The bucket implementations are responsible - for determining whether or not the active record is active and valid. - This makes sense for the most likely implementation of a media cache - backend, i.e., HTTP. The HTTP layer itself is the actual arbiter of - whether or not a record is truly active; as such, the in-memory cache - in the core has to defer to it. - * The ability to create new items in the media cache from local - resources. This allows for re-creation of items in the cache on - restart. - * Synchronization of items in the media cache to the AstDB. This - also includes various pieces of important metadata. + The order is: - The API provides sufficient access that higher level APIs, such as the - file or app APIs, do not have to worry about the semantics of the bucket - APIs when needing to playback a resource. + username@domain + username@domain_alias + username - In addition, this patch provides unit tests for the media cache API. The - unit tests use a fake bucket backend to verify correctness. + Auth by username does present 1 problem however, the first INVITE won't have + an Authorization header so the distributor, not finding a match on anything, + sends a securty_alert. It still sends a 401 with a challenge so the next + INVITE will have the Authorization header and presumably succeed. As a result + though, that first security alert is actually a false alarm. - Change-Id: I11227abbf14d8929eeb140ddd101dd5c3820391e + To address this, a new feature has been added to pjsip_distributor that keeps + track of unidentified requests and only sends the security alert if a + configurable number of unidentified requests come from the same IP in a + configurable amout of time. Those configuration options have been added to + the global config object. This feature is only used when auth_username + is enabled. -2015-07-11 20:25 +0000 [887945d410] Matt Jordan + Finally, default_realm was added to the globals object to replace the hard + coded "asterisk" used when an endpoint is not yet identified. - * main/bucket: Add a callback function for ast_bucket_file objects + The testsuite tests all pass but new tests are forthcoming for this new + feature. - This patch adds a new function to the bucket API for ast_bucket_file - objects, ast_bucket_file_metadata_callback. It will call ao2_callback on - the ast_bucket_file's ao2_container of metadata, calling the provided - ao2_callback_fn callback on each piece of metadata associated with the - file. + ASTERISK-25835 #close + Reported-by: Ross Beer - This is particularly useful when a bucket backend has added metadata, - and a higher level API wants to be aware of/access said metadata, - without knowing for sure what the key is. + Change-Id: I30ba62d208e6f63439600916fcd1c08a365ed69d - Change-Id: I96f6757717f47b650df91a437f7df16406227466 +2016-04-27 13:23 +0000 [2b150f0b80] Mark Michelson -2015-07-08 16:28 +0000 [458715d088] Matt Jordan + * func_odbc: Check connection status before executing queries. - * main/sorcery: Don't fail object set creation from JSON if field fails + A recent change to func_odbc made it so that a single connection was + maintained per DSN. The problem was that the code was optimistic about + the health of the connection after initially opening it and did nothing + to re-connect in case the connection had died. - Some individual fields may fail their conversion due to their default - values being invalid for their custom handlers. In particular, - configuration values that depend on others being enabled (and thus have - an empty default value) are notorious for tripping this routine up. An - example of this are any of the DTLS options for endpoints. Any of the - DTLS options will fail to be applied (as DTLS is not enabled), causing - the entire object set to be aborted. + This change adds a check before executing a query to ensure that the + connection to the database is still up and running. - This patch makes it so that we log a debug message when skipping a - field, and rumble on anyway. + ASTERISK-25963 #close + Reported by Ross Beer - ASTERISK-25238 + Change-Id: Id33c86eb04ff48ca088bb2e3086c27b3b683491d - Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76 +2016-04-15 11:59 +0000 [860b135c88] Alexei Gradinari -2015-07-08 16:21 +0000 [6ed58014f5] Matt Jordan + * res_pjsip: disable multi domain to improve realtime performace - * main/format_cap: Parse capabilities generated by ast_format_cap_get_names + This patch added new global pjsip option 'disable_multi_domain'. + Disabling Multi Domain can improve Realtime performance by reducing + number of database requests. - We have a strange relationship between the parsing of format - capabilities from a string and their representation as a string. We - expect the format capabilities to be expressed as a string in the - following format: + ASTERISK-25930 #close - allow = !all,ulaw,alaw - disallow = g722 + Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7 - While we would generate the string representation of those formats as: +2016-04-01 07:50 +0000 [7281770710] Jean Aunis - allow = (ulaw|alaw) - disallow = (ulaw|alaw|g729...) + * app_chanspy: reduce audio loss on the spying channel. - When the configuration framework needs to store values as a string, it - generates the format capabilities using the second representation; this - representation however cannot be parsed when the entry is rehydrated. - This patch fixes that by updating - ast_format_cap_update_by_allow_disallow to parse an entry as if it were - in the generated format if it has a leading '(' and a trailing ')'. + ChanSpy was creating its audiohook with the flags AST_AUDIOHOOK_TRIGGER_SYNC + and AST_AUDIOHOOK_SMALL_QUEUE, which caused audio frames to be lost when + queues grow too large or when read and write queues go out of sync. + Now these flags are set conditionally: + - AST_AUDIOHOOK_TRIGGER_SYNC is not set if the option "o" is set + - a new option "l" is created: if set, AST_AUDIOHOOK_SMALL_QUEUE will not + be set on the audiohook - ASTERISK-25238 + ASTERISK-25866 - Change-Id: I904d43caf4cf45af06f6aee0c9e58556eb91d6ca + Change-Id: I9c7652f41d9fa72c8691e4e70ec4fd16b047a4dd -2015-07-08 16:38 +0000 [e64e586900] Matt Jordan +2016-04-14 07:03 +0000 [81ea80b74c] Joshua Colp - * res/res_sorcery_astdb: Add a debugging message for when retrieval by ID fails + * res_pjsip_exten_state: Add config support for exten state publishers. - Having a debug message tell us that we attempted to look up an item but - failed is nice in circumstances when it isn't clear if the wizard was - queried correctly or not. + This change adds the ability to configure outbound publishing of + extension state. Right now stuff is merely set up to store the + configuration and to register a global extension state callback. The + act of constructing the body and sending is not yet complete. - Change-Id: I2600c3bbea87f252196358f62e73f4c7da8632f7 + Configurable elements right now are a regex for filtering the context, + a regex for filtering the extension, and the body type to publish. -2015-07-08 16:37 +0000 [7c14dfdc61] Matt Jordan + ASTERISK-25922 #close - * res/res_pjsip_outbound_registration: Fix WARNING message + Change-Id: Ia7e630136dfc355073c1cadff8ad394a08523d78 - Newlines are nice. +2016-04-26 11:13 +0000 [c480159045] Joshua Colp - Change-Id: Icf0d915db02882e47cd9077ed9009f5d44140d42 + * chan_sip: Give more time for TCP/TLS threads to stop. -2015-07-08 16:35 +0000 [3e286e6b51] Matt Jordan + The unload process currently tells each TCP/TLS to terminate but + does not wait for them to do so. This introduces a race condition + where the container holding the threads may be destroyed before + the threads are able to remove themselves from it. When they + finally do the container is invalid and can't be used causing a + crash. - * res_pjsip/configuration: Fix a variety of default value problems + A previous change existed which waited a bit to wait for any + stranglers to finish. This change extends this and waits longer. - This patch fixes some bad default value handling in the following - settings: + ASTERISK-25961 #close - * The 'message_context' and 'accountcode' settings are not mandatory. As - such, we can allow their stringfield values to be empty. - * The 'media_encryption' setting applies a default value of 'none' to - the setting, which it then can't parse or understand. Since the value - is documented to be 'no', this will now apply that as the default - value. + Change-Id: Idc6262b670ca49ede32061159e323b7b63c6f3c6 - Change-Id: Ib9be7f97a7a5b9bc7aee868edf5acf38774cff83 +2016-04-26 05:48 +0000 [8ae69cffef] Joshua Colp -2015-07-08 16:32 +0000 [ffadb5f1de] Matt Jordan + * app_queue: Fix crash when unloading module. - * main/sorcery: Provide log messages when a wizard does not support an operation + When unloading the app_queue module the members in each queue are + destroyed and as part of this they are removed from the pending + members container. Unfortunately a crash would occur as the container + was destroyed before the members were removed. - If a sorcery wizard does not support one of the 'optional' CRUD - operations (namely the CUD), log a WARNING message so we are aware of - why the operation failed. This also removes an assert in this case, as - the CUD operation may have been triggered by an external system, in - which case it is not a programming error but a configuration error. + This change tweaks ordering so the container destruction occurs + after the members are destroyed. - Change-Id: Ifecd9df946d9deaa86235257b49c6e5e24423b53 + ASTERISK-16115 -2015-06-27 17:53 +0000 [5266796432] Matt Jordan + Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b - * tests/test_devicestate: Add additional tests for the device state API +2016-04-24 22:51 +0000 [284bb814ac] George Joseph - This patch adds more tests that exercise the device state API. This includes: + * config: Fix ast_config_text_file_save2 writability check for missing files - * Tests that cover adding a device state provider, as well as deleting a - device state provider. This also verifies that you cannot add an - already added device state provider, and cannot delete an already - deleted device state provider. - * A test that covers changing device state and receiving said updates - from a device state subscriber. This also covers hitting both the - device state cache as well as a custom device state provider. - * A test that covers converting device state to channel state and device - state values to a string representation and back. - * A test that covers obtaining device state from an active channel and a - channel driver that provides its own device state. + A patch I did back in 2014 modified ast_config_text_file_save2 to check the + writability of the main file and include files before truncating and re-writing + them. An unintended side-effect of this was that if a file doesn't exist, + the check fails and the write is aborted. - Change-Id: I2adca67ffb405cd8625a5d6df1e3f9b3d945c08d + This patch causes ast_config_text_file_save2 to check the writability of the + parent directory of missing files instead of checking the file itself. This + allows missing files to be created again. A unit test was also added to + test_config to test saving of config files. -2015-06-27 17:51 +0000 [f77e688f20] Matt Jordan + The regression was discovered when app_voicemail's passwordlocation=spooldir + feature stopped working. - * main/devicestate: Prevent duplicate registration of device state providers + ASTERISK-25917 #close + Reported-by: Jonathan Rose - Currently, the device state provider API will allow you to register a - device state provider with the same case insensitive name more than - once. This could cause strange issues, as the duplicate device state - providers will not be queried when a device's state has to be polled. - This patch updates the API such that a device state provider with the - same name as one that has already registered will be rejected. + Change-Id: Ic4dbe58c277a47b674679e49daed5fc6de349f80 - Change-Id: I4a418a12280b7b6e4960bd44f302e27cd036ceb2 +2016-04-25 08:11 +0000 [f99ec857c8] Javier Acosta -2015-06-26 10:57 +0000 [1b7760a8aa] Benjamin Ford + * Fix case sensitive actions in AMI QueueSummary and QueueStatus - * ARI: Added new functionality to get all module information. + ASTERISK-25954 #close + Reported by: Javier Acosta - An http request can be sent to retrieve a list of all existing modules, - including the resource name, description, use count, status, and - support level. + Change-Id: I00be83d45cc7e8385de2523012bd196aafeeb256 + (cherry picked from commit c0688a6398f27296ff849848a2e416e036d794e3) - The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari/ - asterisk/modules" (or something similar, depending on configuration) - can be run in the terminal to access this new functionality. +2016-04-21 14:23 +0000 [30ab21d5fa] Kevin Harwell - For more information, see: - https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + * app_queue: queue members can receive multiple calls - * Added new ARI functionality - * Information on modules can now be retrieved + It was possible for a queue member that is a member of at least 2 or more + queues to receive mulitiple calls at the same time. This happened because + of a race between when a member was being rung and when the device state + notified the other queue(s) member object of the state change. - Change-Id: I63cbbf0ec0c3544cc45ed2a588dceabe91c5e0b0 + This patch makes it so when a queue member is being rung it gets added to + a global pool of queue members. If that same member is tried again, e.g. + from another queue, and it is found to already exist in the pending member + container then it will not ring that member. -2015-07-09 09:18 +0000 [4a25d55416] Joshua Colp + ASTERISK-16115 #close - * bridge_native_rtp.c: Don't start native RTP bridging after attended transfer. + Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48 - The bridge_native_rtp module adds a frame hook to channels which are in - a native RTP bridge. This frame hook is used to intercept when a hold - or unhold frame traverses the bridge so native RTP can be stopped or - started as appropriate. This is expected but exposes a specific bug - when attended transfers are involved. +2016-04-22 17:53 +0000 [99fcf2a791] George Joseph - Upon completion of an attended transfer an unhold frame is queued up - to take one of the channels involved off hold. After this is done - the channel is moved between bridges. + * res_agi: Prevent run_agi from eating frames it shouldn't - When the frame hook is involved in this case for the unhold it - releases the channel lock and acquires the bridge lock. This - allows the bridge core to step in and move the channel - (potentially changing the bridging techology) from another thread. - Once completed the bridge lock is released by the bridge core. - The frame hook is then able to acquire the bridge lock and - wrongfully starts native RTP again, despite the channel no longer - being in the bridge or needing to start native RTP. In fact at - this point the frame hook is no longer attached to the channel. + The run_agi function is eating control frames when it shouldn't be. This is + causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond + transfer. - This change makes it so the native RTP bridge data is available to - the frame hook when it is invoked. Whether the frame hook has - been detached or not is stored on the native RTP bridge data and - is checked by the frame hook before starting or stopping native - RTP bridging. If the frame hook has been detached it does nothing. + Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie + answers. - ASTERISK-25240 #close + Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE + and is left thinking he's connected to Bob. - Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2 + In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls + an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on + Charlie's channel. -2015-07-08 04:21 +0000 [9276415f65] Joshua Colp + The fix was to accumulate deferrable frames in the "forever" loop instead of + dropping them, and re-queue them just before running the actual agi command + or exiting. - * res_rtp_asterisk: Ensure DTLS timeout timer is -1 if DTLS is not used. + ASTERISK-25951 #close - This change fixes a bug where the DTLS timeout timer would be - initialized to 0 if DTLS was not used for an RTP session. + Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645 - ASTERISK-25103 +2016-04-22 15:25 +0000 [757ec6172b] Richard Mudgett + + * test_message.c: Wait longer in case dialplan also processes the test message. + + Bumped the wait from 1 second to 5 seconds. The test message was hitting my + default call handler and failing the test because it took longer. + + Change-Id: I3a03737f25e92983de00548fcc7bbc50dd7544ba + +2016-04-21 23:53 +0000 [41ecf22587] Kirill Katsnelson + + * chan_sip: Make autocreated peers send PeerStatus events + + Since Stasis has been introduced, an attempt to send AMI messages by an + autocreated peer caused a crash, and all events from autocreated peers were + semi-inadvertently disabled altogether in 0b83761. This change restores the + disabled functionality. + + ASTERISK-25950 + + Change-Id: Iecc350f23db603fadb2f302064643ebe9664e974 + +2016-04-13 17:09 +0000 [b3cc74fda9] Richard Mudgett + + * manager_channels.c: Fix allocation failure crash. + + An earlier allocation failure failed to create a channel snapshot for the + AMI HangupRequest/SoftHangupRequest event which resulted in a crash in + channel_hangup_request_cb(). Where the stasis message gets generated + cannot tell if the NULL snapshot returned was because of an allocation + failure or the channel was a dummy channel. + + * Made channel_hangup_request_cb() check if the channel blob has a + snapshot and exit if it doesn't. + + * Eliminated the RAII_VAR usage in channel_hangup_request_cb(). + + Change-Id: I0b6a1c4e95cbb7d80b2a7054c6eadecc169dfd24 + +2016-04-13 13:50 +0000 [a63656b419] Richard Mudgett + + * Bridge system: Fix memory leaks and double frees on impart failure. + + You cannot reference the passed in features struct after calling + ast_bridge_impart(). Even if the call fails. + + Change-Id: I902b88ba0d5d39520e670fb635078a367268ea21 + +2016-04-13 13:20 +0000 [71dfa35540] Richard Mudgett + + * bridge_softmix.c: Fix crash if channel fails to join mixing tech. + + softmix_bridge_join() failed because of an allocation failure. To address + this, the softmix bridge technology now checks if the channel failed to + join softmix successfully. In addition, the bridge now begins the process + of kicking the channel out of the bridge so we don't have channels + partially in the bridge for very long. + + * Fix the test_channel_feature_hooks.c unit tests. The test channel must + have a valid codec to join the simple_bridge technology. This patch makes + joining a bridge more strict by not allowing partially joined channels to + remain in the bridge. + + Change-Id: I97e2ade6a2bcd1214f24fb839fda948825b61a2b + +2016-04-12 15:29 +0000 [06632a0d11] Richard Mudgett + + * Manager: Short circuit AMI message processing. + + Improve AMI message processing performance if there are no consumers + listening for the messages. We now skip creating the AMI event message + text strings. + + Change-Id: I7b22fc5ec4e500d00635c1a467aa8ea68a1bb2b3 + +2016-04-13 17:54 +0000 [6ddd856b86] Richard Mudgett + + * manager.c: Eliminate most RAII_VAR usage. + + * Made ast_manager_event_blob_create() not allocate the ao2 event object + with a lock as it is not needed. + + Change-Id: I8e11bfedd22c21316012e0b9dd79f5918f644b7c + +2016-04-22 13:49 +0000 [924738e950] Mark Michelson + + * func_odbc: Use one connection per DSN. + + res_odbc was changed in Asterisk 13.8.0 to remove connection management, + opting instead to let unixodbc maintain open connections and return + those to Asterisk as requested. + + This was a boon for realtime, since it meant that multiple threads could + potentially run parallel queries since they could each be using their + own database connections. + + However, on the user-facing side, func_odbc, there were some inherent + behaviors being relied on that no longer hold true after the change. + One such reported behavior was that MySQL's LAST_INSERTED_ID() works + per-connection. This means that if Asterisk uses separate connections + for every database operation, whereas before it used one connection for + everything, we have broken expectations and functionality. + + The fix provided in this patch is to make func_odbc use a single + database connection per DSN. This way, user-facing database usage will + have the same behavior as it did pre-13.8.0. However, realtime, which is + the real workhorse of database interaction, will continue to let + unixodbc manage connections. + + ASTERISK-25938 #close + Reported by Edwin Vandamme + + Change-Id: Iac961fe79154c6211569afcdfec843c0c24c46dc + +2016-04-22 13:02 +0000 [6ede210c98] Leif Madsen + + * Remove reference to non-existent sip.conf option + + Option was removed in commit 7f883ef495b57ae9182e47213d01d5e8009dbf3f + + ASTERISK-25927 #close + + Change-Id: I92f9b0196d9fc41d1d58354c07340c465ef1fcf8 + +2016-04-21 08:26 +0000 [c991e5472e] Diederik de Groot + + * lock.c: Check *lt before dereferencing it + + *lt is NULL if t->tracking == 0 + + ASTERISK-25948 #close + + Change-Id: I4a81af28f9c82a74aa82413d772a7dc8fa6f45ba + +2016-04-15 14:36 +0000 [6b1a632290] Richard Mudgett + + * res_stasis: Handle re-enter stasis bridge with swap channel. + + We lose the fact that there is a swap channel if there is one. We + currently wind up rejoining the stasis bridge as a normal join after the + swap channel has already been kicked from the bridge. + + This patch preserves the swap channel so the AMI/ARI events can note that + the channel joining the bridge is swapping with another channel. Another + benefit to swaqpping in one operation is if there are any channels that + get lonely (MOH, bridge playback, and bridge record channels). The lonely + channels won't leave before the joining channel has a chance to come back + in under stasis if the swap channel is the only reason the lonely channels + are staying in the bridge. + + ASTERISK-25947 #close + Reported by: Richard Mudgett + + ASTERISK-24649 + Reported by: John Bigelow + + ASTERISK-24782 + Reported by: John Bigelow + + Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee + +2016-04-19 16:58 +0000 [1c5248c383] Richard Mudgett + + * bridge: Hold off more than one imparting channel at a time. + + An earlier patch blocked the ast_bridge_impart() call until the channel + either entered the target bridge or it failed. Unfortuantely, if the + target bridge is stasis and the imprted channel is not a stasis channel, + stasis bounces the channel out of the bridge to come back into the bridge + as a proper stasis channel. When the channel is bounced out, that + released the block on ast_bridge_impart() to continue. If the impart was + a result of a transfer, then it became a race to see if the swap channel + would get hung up before the imparted channel could come back into the + stasis bridge. If the imparted channel won then everything is fine. If + the swap channel gets hung up first then the transfer will fail because + the swap channel is leaving the bridge. + + * Allow a chain of ast_bridge_impart()'s to happen before any are + unblocked to prevent the race condition described above. When the channel + finally joins the bridge or completely fails to join the bridge then the + ast_bridge_impart() instances are unblocked. + + ASTERISK-25947 + Reported by: Richard Mudgett + + ASTERISK-24649 + Reported by: John Bigelow + + ASTERISK-24782 + Reported by: John Bigelow + + Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1 + +2016-04-19 17:52 +0000 [70e860ec49] George Joseph + + * res_pjsip_callerid: Clear out display name if id->name is not valid + + When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning + the From header, then it overwrites the display name and uri from the channel's + connected.id. If the connected.id.name wasn't valid, create_new_id_hdr was + leaving the display name from the From header in the new RPID or PAI header. + On an attended transfer where the originator had a caller id number set but not + a display name, the re-INVITE to the final transferee had the number of the + originator but the display name of the transferer. + + Added a check to clear out the display name in the new header if + connected.id.name was invalid. + + ASTERISK-25942 #close + + Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b + +2016-04-19 13:02 +0000 [d95512a7dd] Joshua Colp + + * app_talkdetect: Make the module core supported. + + This module is used as part of testsuite tests to confirm + stuff works. I'm accordingly marking it as core as it is + required by those tests. + + Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88 + +2016-04-18 12:12 +0000 [0235a66532] Mark Michelson + + * PJSIP: Remove PJSIP parsing functions from uri length validation. + + The PJSIP parsing functions provide a nice concise way to check the + length of a hostname in a SIP URI. The problem is that in order to use + those parsing functions, it's required to use them from a thread that + has registered with PJLib. + + On startup, when parsing AOR configuration, the permanent URI handler + may not be run from a PJLib-registered thread. Specifically, this could + happen when Asterisk was started in daemon mode rather than + console-mode. If PJProject were compiled with assertions enabled, then + this would cause Asterisk to crash on startup. + + The solution presented here is to do our own parsing of the contact URI + in order to ensure that the hostname in the URI is not too long. The + parsing does not attempt to perform a full SIP URI parse/validation, + since the hostname in the URI is what is important. + + ASTERISK-25928 #close + Reported by Joshua Colp + + Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60 + +2016-04-18 17:00 +0000 [b8b60135ec] Mark Michelson + + * res_pjsip_registrar: Fix bad memory-ness with user_agent. + + Recent changes to the PJSIP registrar resulted in tests failing due to + missing AOR_CONTACT_ADDED test events. The reason for this was that the + user_agent string had junk values in it, resulting in being unable to + generate the event. + + I'm going to be honest here, I have no idea why this was happening. Here + are the steps needed for the user_agent variable to get messed up: + * REGISTER is received + * First contact in the REGISTER results in a contact being removed + * Second contact in the REGISTER results in a contact being added + * The contact, AOR, expiration, and user agent all have to be passed as + format parameters to the creation of a string. Any subset of those + parameters would not be enough to cause the problem. + + Looking into what was happening, the thing that struck me as odd was + that the user_agent variable was meant to be set to the value of the + User-Agent SIP header in the incoming REGISTER. However, when removing a + contact, the user_agent variable would be set (via ast_strdupa inside a + loop) to the stored contact's user_agent. This means that the + user_agent's value would be incorrect when attempting to process further + contacts in the incoming REGISTER. + + The fix here is to use a different variable for the stored user agent + when removing a contact. Correcting the behavior to be correct also + means the memory usage is less weird, and the issue no longer occurs. + + ASTERISK-25929 #close + Reported by Joshua Colp + + Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08 + +2016-04-18 13:41 +0000 [6cfa02394f] Joshua Colp + + * res_pjsip_transport_management: Allow unload to occur. + + At shutdown it is possible for modules to be unloaded that wouldn't + normally be unloaded. This allows the environment to be cleaned up. + + The res_pjsip_transport_management module did not have the unload + logic in it to clean itself up causing the res_pjsip module to not + get unloaded. As a result the res_pjsip monitor thread kept going + processing traffic and timers when it shouldn't. + + Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a + +2016-04-15 11:41 +0000 [6365f0018f] Richard Mudgett + + * bridge_channel.c: Ignore role setup failure in channel push. + + We have to setup the channel roles after the bridge class push is called + because the bridge class push callback may have set roles on the incoming + channel. Since we have already partially pushed the channel into the + bridge and reversing what we have already done could be problematic, the + only thing we can do is press on to complete pushing the channel into the + bridge. + + * Ignore any channel role setup errors after pushing the channel into a + bridge. The channel may behave incorrectly in the bridge but we can no + longer abort the push at this time. + + Change-Id: I08a97082b729052ee65cdca6bb730cf1289ede00 + +2016-04-17 15:37 +0000 [f06ce7f90a] Jaco Kroon + + * chan_sip: Don't verify table if rtupdate=no + + If rtupdate=no do not verify sipregs/peers table has updatable fields. + + ASTERISK-25934 #close + + Change-Id: Iaa2c53037b93daccc7e7333c40d61861847b856d + +2016-04-18 04:53 +0000 [dbb47e0a47] ibercom + + * app_queue: Frequent segfaults in function can_ring_entry() + + ASTERISK-25888 #close + + Change-Id: I007a2f2dd99823e04fb5be3ff01f02b0a2956117 + +2016-04-15 16:51 +0000 [af114edb8b] Richard Mudgett + + * stasis_bridge.c: Update stasis bridge push diagnostic messages. + + Change-Id: I195b14994c9dcccb9452491ca20a885d2a54605a + +2016-04-12 14:55 +0000 [5e64d7e7a3] Mark Michelson + + * Dial: Combine frame handling functions. + + There is a good amount of repetition in the two frame handling routines + in the Dial API. This commit combines the two functions into one. + + This is in preparation for an upcoming commit that adds the ability to + handle frames for a channel in a bridge. + + ASTERISK-25925 + Reported by Mark Michelson + + Change-Id: Iaae2f174e3058e774cb44e10659fcdfb85345c58 + +2016-04-11 16:20 +0000 [a6e2ba187a] Alexei Gradinari + + * Codecs: strip codec name while parsing allow/disallow options + + Failed registration using PJSIP/Realtime if one of the codec name + in allow/disallow option is wrong or contains space. + + This patch strip codec name. + + ASTERISK-25914 + + Change-Id: Ifdf02de94e5ddbce305640f6f0666084a3b9283d + +2016-04-14 13:49 +0000 [be4333ddad] Mark Michelson + + * transport management: Register thread with PJProject. + + The scheduler thread that kills idle TCP connections was not registering + with PJProject properly and causing assertions if PJProject was built in + debug mode. + + This change registers the thread with PJProject the first time that the + scheduler callback executes. + + AST-2016-005 + + Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283 + +2016-03-17 12:28 +0000 [e83499df56] George Joseph + + * res_pjsip: Add serialized scheduler (res_pjsip/pjsip_scheduler.c) + + There are several places that do scheduled tasks or periodic housecleaning, + each with its own implementation: + + * res_pjsip_keepalive has a thread that sends keepalives. + * pjsip_distributor has a thread that cleans up expired unidentified requests. + * res_pjsip_registrar_expire has a thread that cleans up expired contacts. + * res_pjsip_pubsub uses ast_sched directly and then calls ast_sip_push_task. + * res_pjsip_sdp_rtp also uses ast_sched to send keepalives. + + There are also places where we should be doing scheduled work but aren't. + A good example are the places we have sorcery observers to start registration + or qualify. These don't work when changes are made to a backend database + without a pjsip reload. We need to check periodically. + + As a first step to solving these issues, a new ast_sip_sched facility has + been created. + + ast_sip_sched wraps ast_sched but only uses ast_sched as a scheduled queue. + When a task is ready to run, ast_sip_task_pusk is called for it. This ensures + that the task is executed in a PJLIB registered thread and doesn't hold up the + ast_sched thread so it can immediately continue processing the queue. The + serializer used by ast_sip_sched is one of your choosing or a random one from + the res_pjsip pool if you don't choose one. + + Another feature is the ability to automatically clean up the task_data when the + task expires (if ever). If it's an ao2 object, it will be dereferenced, if + it's a malloc'd object it will be freed. This is selectable when the task is + scheduled. Even if you choose to not auto dereference an ao2 task data object, + the scheduler itself maintains a reference to it while the task is under it's + control. This prevents the data from disappearing out from under the task. + + There are two scheduling models. + + AST_SIP_SCHED_TASK_PERIODIC specifies that the invocations of the task occur at + the specific interval. That is, every "interval" milliseconds, regardless of + how long the task takes. If the task takes longer than the interval, it will + be scheduled at the next available multiple of interval. For exmaple: If the + task has an interval of 60 secs and the task takes 70 secs (it better not), + the next invocation will happen at 120 seconds. + + AST_SIP_SCHED_TASK_DELAY specifies that the next invocation of the task should + start "interval" milliseconds after the current invocation has finished. + + Also, the same ast_sched facility for fixed or variable intervals exists. The + task's return code in conjunction with the AST_SIP_SCHED_TASK_FIXED or + AST_SIP_SCHED_TASK_VARIABLE flags controls the next invocation start time. + + One res_pjsip.h housekeeping change was made. The pjsip header files were + added to the top. There have been a few cases lately where I've needed + res_pjsip.h just for ast_sip calls and had compiles fail spectacularly because + I didn't add the pjsip header files to my source even though I never referenced + any pjsip calls. + + Finally, a few new convenience APIs were added to astobj2 to make things a + little easier in the scheduler. ao2_ref_and_lock() calls ao2_ref() and + ao2_lock() in one go. ao2_unlock_and_unref() does the reverse. A few macros + were also copied from res_phoneprov because I got tired of having to duplicate + the same hash, sort and compare functions over and over again. The + AO2_STRING_FIELD_(HASH|SORT|CMP)_FN macros will insert functions suitable for + aor_container_alloc into your source. + + This facility can be used immediately for the situations where we already have + a thread that wakes up periodically or do some scheduled work. For the + registration and qualify issues, additional sorcery and schema changes would + need to be made so that we can easily detect changed objects on a periodic + basis without having to pull the entire database back to check. I'm thinking + of a last-updated timestamp on the rows but more on this later. + + Change-Id: I7af6ad2b2d896ea68e478aa1ae201d6dd016ba1c + +2016-03-08 12:12 +0000 [216f22fd0f] Mark Michelson + + * res_pjsip_transport_management: Kill idle TCP connections. + + "Idle" here means that someone connects to us and does not send a SIP + request. PJProject will not automatically time out such connections, so + it's up to Asterisk to do it instead. + + When we receive an incoming TCP connection, we will start a timer + (equivalent to transaction timer D) waiting to receive an incoming + request. If we do not receive a request in that timeframe, then we will + shut down the TCP connection. + + ASTERISK-25796 #close + Reported by George Joseph + + AST-2016-005 + + Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6 + +2016-03-08 10:52 +0000 [d9fba46016] Mark Michelson + + * Rename res_pjsip_keepalive res_pjsip_transport_management + + ASTERISK-25796 + Reported by George Joseph + + AST-2016-005 + + Change-Id: Id322a05f927392293570599730050bc677d99433 + +2016-04-14 07:23 +0000 [7b8b6e2e4f] Mark Michelson + + * AST-2016-004: Fix crash on REGISTER with long URI. + + Due to some ignored return values, Asterisk could crash if processing an + incoming REGISTER whose contact URI was above a certain length. + + ASTERISK-25707 #close + Reported by George Joseph + + Patches: + 0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch + + AST-2016-004 + + Change-Id: I3ea7cee16f29c8088794de3085ca7523c1c4833d + +2016-04-12 13:10 +0000 [ff3af764de] Richard Mudgett + + * bridge_softmix.c: Fix crash if could not allocate the dsp. + + Fix off nominal crash where we could not setup the channel to process + frames for the softmix bridge technology because of allocation failure. + + Change-Id: Ic307a8386e46bf551e48fcd1eb97276714d56372 + +2016-04-13 13:38 +0000 [caa416d5f3] George Joseph + + * stringfields: Update extended string fields for master only. + + In 13, the new ast_string_field_header structure had to be dynamically + allocated and assigned to a pointer in ast_string_field_mgr to preserve ABI + compatability. In master, it can be converted to being a structure-in-place in + ast_string_field_mgr to eliminate the extra alloc and free calls. + + Change-Id: Ia97c5345eec68717a15dc16fe2e6746ff2a926f4 + +2016-04-12 15:41 +0000 [bd3671b397] George Joseph + + * pjproject: Add patch for removing strip of '[]' from header params + + From the patch submitted to Teluu on 4/12/2016 + <<<<<<<<< + The wholesale stripping of '[]' from header parameters causes issues if + something (like a port) occurs after the final ']'. + + '[2001:a::b]' will correctly parse to '2001:a::b' + '[2001:a::b]:8080' will correctly parse to '2001:a::b' but the scanner is left + with ':8080' and parsing stops with a syntax error. + + I can't even find a case where stripping the '[]' is a good thing anyway. Even + if you continued to parse and resulted in a string that looks like this... + '2001:a::b:8080', it's not valid. + + This came up in Asterisk because Kamailio sends us a Contact with an alias + URI parameter that has an IPv6 address in it like this: + Contact: + which should be legal but causes a syntax error because of the characters + after the final ']'. Even if it didn't, the '[]' should still not be stripped. + + I've run the Asterisk Test Suite for PJSIP (252 tests) many of which are IPv6 + enabled. No issues were caused by removing the code that strips the '[]'. + >>>>>>>>>>> + + ASTERISK-25123 #close + Reported-by: Anthony Messina + + Change-Id: I5cb33f4ebf07ee1f2b26d07caae715e2ec65595a + +2016-04-12 09:10 +0000 [5a0534dc62] Joshua Colp + + * app_voicemail: Fix test_voicemail_notify_endl test. + + The test_voicemail_notify_endl test checks the end-of-line + characters of an email message to confirm that they are consistent. + The test wrongfully assumed that reading from the email message + into a buffer will always result in more than 1 character being + read. This is incorrect. If only 1 character was read the test + would go outside of the buffer and access other memory causing + a crash. + + The test now checks to ensure that 2 or more characters are read + in ensuring the test stays within the buffer. + + ASTERISK-25874 #close + + Change-Id: Ic2c89cea6e90f2c0bc2d8138306ebbffd4f8b710 + +2016-04-07 12:02 +0000 [c00c298a0e] Alexei Gradinari + + * app_voicemail/IMAP: function 'save_to_folder' creates wrong folder + + If try to move message to Cust1 (number 5) + the function 'save_to_folder' tries to create Greeting folder instead of Cust1. + + This patch fixed it by setting GREETINGS_FOLDER = -1 + + ASTERISK-24927 #close + + Change-Id: I03d1a761894bcc2d130ec9b003bbcddc28e25c51 + +2016-04-07 16:18 +0000 [49813bc9e5] Alexei Gradinari + + * res_pjsip: Add headers to AMI Event ContactStatusDetail + + * Added Useragent and RegExpire headers to AMI Event + ContactStatusDetail with associated documentation. + + ASTERISK-25903 #close + + Change-Id: If3d121e943e588d016ba51d4eb9c6a421a562239 + +2016-04-05 16:56 +0000 [4e00e31ef1] Alexei Gradinari + + * res_pjsip_outbound_publish: Add transport for outbound PUBLISH + + The first available transport of the appropriate type is used now. + This patch adds new config option 'transport' for outbound-publish. + If transport is set then outbound PUBLISH requests will use this transport. + + ASTERISK-25901 #close + + Change-Id: Ib389130489b70e36795b0003fa5fd386e2680151 + +2016-04-11 14:26 +0000 [2cc56573de] Jaco Kroon + + * core_unreal: Fix hangupcauses not getting set on Local channels + + ASTERISK-25912 #close + + Change-Id: I8e72e6894feaf36c9450f2788d205d07baec23aa + +2016-04-01 13:30 +0000 [a621dd5e96] George Joseph + + * res_pjsip contact: Lock expiration/addition of contacts + + Contact expiration can occur in several places: res_pjsip_registrar, + res_pjsip_registrar_expire, and automatically when anyone calls + ast_sip_location_retrieve_aor_contact. At the same time, res_pjsip_registrar + may also be attempting to renew or add a contact. Since none of this was locked + it was possible for one thread to be renewing a contact and another thread to + expire it immediately because it was working off of stale data. This was the + casue of intermittent registration/inbound/nominal/multiple_contacts test + failures. + + Now, the new named lock functionality is used to lock the aor during contact + expire and add operations and res_pjsip_registrar_expire now checks the + expiration with the lock held before deleting the contact. + + ASTERISK-25885 #close + Reported-by: Josh Colp + + Change-Id: I83d413c46a47796f3ab052ca3b349f21cca47059 + +2016-04-10 14:16 +0000 [8637f29d24] George Joseph + + * pjproject: Add patch to fix Via IPv6 parsing + + There's a bug in pjproject's sip_parser where the ":" wasn't correctly + interpreted. This is causing IPv6 addresses in the "received" parameter of the + Via header to cause a syntax check failure. + + This patch was submitted to Teluu on 4/10/2016. + + ASTERISK-25910 #close + Reported-by: Anthony Messina + + Change-Id: Ic7e4c4aa14ded61860401ec349f5177568c4d922 + +2016-03-31 20:04 +0000 [216abb0ae7] George Joseph + + * lock: Add named lock capability + + Locking some objects like sorcery objects can be tricky because the underlying + ao2 object may not be the same for all callers. For instance, two threads that + call ast_sorcery_retrieve_by_id on the same aor name might actually get 2 + different ao2 objects if the underlying wizard had to rehydrate the aor from a + database. Locking one ao2 object doesn't have any effect on the other even if + those objects had locks in the first place. + + Named locks allow access control by keyspace and key strings. Now an "aor" + named "1000" can be locked and any other thread attempting to lock "aor" "1000" + will wait regardless of whether the underlying ao2 object is the same or not. + Mutex and rwlocks are supported. + + This capability will initially be used to lock an aor when multiple threads may + be attempting to prune expired contacts from it. + + Change-Id: If258c0b7f92b02d07243ce70e535821a1ea7fb45 + +2016-04-07 11:37 +0000 [f9dab80816] Alexei Gradinari + + * app_voicemail/IMAP: IMAP access FATAL error: Out of memory + + Sometimes uw-imap function 'mail_fetchbody' returns huge len + which then pass to uw-imap function 'rfc822_base64'. + uw-imap tries to allocate huge memory and abort() on fail. + + This patch check the len. + If the len more than max size (128 Mbytes) log error. + This patch also set variables len, newlen to avoid uninizialezed len. + This patch also check pointer returned by rfc822_base64. + + ASTERISK-25899 #close + + Change-Id: I4a0e7d655f11abef6a5224e2169df6d5c1f1caca + +2016-04-07 16:39 +0000 [b3be945415] Alexei Gradinari + + * res_pjsip_dialog_info: Add missing "direction" attribute in NOTIFY event + + BLF pickup isn't working on Cisco SPA and Snom phones + if the direction="recipient" attribute is missing in 'dialog' tag. + + This patch adds direction="recipient" if extension state is + Ringing. + + ASTERISK-24601 #close + + Change-Id: I5b2c097ca29fd59e92ba237ca5d397cb1b0bcd8c + +2016-04-06 17:57 +0000 [6138a75e8e] Richard Mudgett + + * pbx.h: Make ast_state_cb_type take more const. + + This eliminates some casts that I made a note saying v10 and above + would no longer need them. + + Better late than never :) + + Change-Id: I346cdb3032b6478ceb40eb6fe732978b54035572 + +2016-04-07 10:59 +0000 [72c19f7dc5] Richard Mudgett + + * pbx.c: Minor code rearangements. + + * Pull out a loop invariant. + + * Convert an else-if ladder to a switch statement. + + Change-Id: I0a95cfa9474a4600b9865f7b444534d275b37e95 + +2016-04-07 12:26 +0000 [28cefc3e88] Richard Mudgett + + * pbx: Update doxygen for extension state watchers. + + Change-Id: Id1403b12136de62a272c01bb355aef65fd2c2d1e + +2016-04-07 11:49 +0000 [751d7a5a49] George Joseph + + * alembic: Remove batch operations (and sqlite support) + + Because SQLite doesn't support full ALTER capabilities, alembic scripts + require batch operations. However, that capability wasn't available until + 0.7.0 which some distributions haven't reached yet. Therefore, the batch + operations introduced in commit 86d6e44cc (review 2319) have been reverted + and SQLite is unsupported again, for now anyway. + + Tested the full upgrade and downgrade on MySQL/Mariadb and Postgresql. + + ASTERISK-25890 #close + Reported-by: Harley Peters + + Change-Id: I82eba5456736320256f6775f5b0b40133f4d1c80 + +2016-04-07 11:05 +0000 [2eaeea690d] Joshua Colp + + * res_pjsip_registrar_expire: Fix race condition at shutdown. + + When shutting down, the PJSIP sorcery is destroyed. The registrar + expiration module queries the PJSIP sorcery to determine what + to expire. As there was no synchronization between termination + of the expiration thread and the unloading of the module it was + possible for the thread to try to access the PJSIP sorcery after + it had been destroyed. + + This change ensures that the thread is shut down before allowing + the module to be considered unloaded. + + Change-Id: I69fd239edbaaf160c2d37ae00d3ac06e5596fe8b + +2016-04-06 16:28 +0000 [3e5672d843] Joshua Colp + + * res_pjsip: Fix configuration setting of "regcontext". + + Due to a merge problem two options were swapped causing the + regcontext setting to not get set. + + Change-Id: Icb33edc668e7357bacbaec2861a6b5ac64edaff1 + +2016-04-06 08:01 +0000 [8ed5f61152] Jacek Konieczny + + * frame.c: Copy the whole subclass in ast_frdup(). + + The problem is ast_frdup() does not copy whole frame.subclass for voice, + video and image frames, only the format is copied. For video frames, the + subclass structure contains the .frame_ending flag used to put the RTP + marker where it needs to be. + + ASTERISK-25894 #close + + Change-Id: I812ca90e84ed5d4f473b997d0dd0d3c5a915fe33 + +2016-03-30 17:18 +0000 [abbb2edd4c] Mark Michelson + + * ARI: Add method to Dial a created channel. + + This adds a new ARI method that allows for you to dial a channel that + you previously created in ARI. + + By combining this with the create method for channels, it allows for a + workflow where a channel can be created, manipulated, and then dialed. + The channel is under control of the ARI application during all stages of + the Dial and can even be manipulated based on channel state changes + observed within an ARI application. + + The overarching goal for this is to eventually be able to add a dialed + channel to a Stasis bridge earlier than the "Up" state. However, at the + moment more work is needed in the Dial and Bridge APIs in order to + facilitate that. + + ASTERISK-25889 #close + + Change-Id: Ic6c399c791e66c4aa52454222fe4f8b02483a205 + +2016-03-30 17:01 +0000 [dd48d60c5b] Mark Michelson + + * ARI: Add method to create a new channel. + + This adds a new ARI method to the channels resource that allows for the + creation of a new channel. The channel is created and then placed into + the specified Stasis application. + + This is different from the existing originate method that creates a + channel, dials it, and then places the answered channel into the + dialplan or a Stasis application. This method does not attempt to call + the channel at all. Dialing is left as a later step after channel + creation. This allows for pre-dialing channel manipulation if desired. + + ASTERISK-25889 + + Change-Id: I3c96a0aba914b08e39f6256371a5bd4c92cbded8 + +2016-03-28 11:31 +0000 [1dc5e28624] Joshua Colp + + * pbx: Add support for autohints. + + This change introduces the concept of autohints. These are hints + which are created as a result of device state changes occurring within + the core. When this happens a hint will be created (if it does not + exist already) using the device name as the extension. + + For example if a device state change is received for "PJSIP/bob" + and autohints are enabled on a context then a hint will exist in + that context for "bob" with a device of "PJSIP/bob". + + For virtual or custom device states the name after the type will + be used. For example if the device state of "Custom:bob" changes + then a hint will exist in that context for "bob" with a device of + "Custom:bob". + + This functionality can be enabled in extensions.conf by placing + "autohints=yes" in a context. + + ASTERISK-25881 #close + + Change-Id: I7e444c7da41b7b7d33374420fec658beeb18584e + +2016-04-05 14:23 +0000 [a098251e7e] Mark Michelson + + * res_pjsip: Handle deferred SDP hold/unhold properly. + + Some SIP devices indicate hold/unhold using deferred SDP reinvites. In + other words, they provide no SDP in the reinvite. + + A typical transaction that starts hold might look something like this: + + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating sendrecv on streams. + * Device sends ACK with SDP indicating sendonly on streams. + + At this point, PJMedia's SDP negotiator saves Asterisk's local state as + being recvonly. + + Now, when the device attempts to unhold, it again uses a deferred SDP + reinvite, so we end up doing the following: + + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating recvonly on streams + * Device sends ACK with SDP indicating sendonly on streams + + The problem here is that Asterisk offered recvonly, and by RFC 3264's + rules, if an offer is recvonly, the answer has to be sendonly. The + result is that the device is not taken off hold. + + What is supposed to happen is that Asterisk should indicate sendrecv in + the 200 OK that it sends. This way, the device has the freedom to + indicate sendrecv if it wants the stream taken off hold, or it can + continue to respond with sendonly if the purpose of the reinvite was + something else (like a session timer refresher). + + The fix here is to alter the SDP negotiator's state when we receive a + reinvite with no SDP. If the negotiator's state is currently in the + recvonly or inactive state, then we alter our local state to be + sendrecv. This way, we allow the device to indicate the stream state as + desired. + + ASTERISK-25854 #close + Reported by Robert McGilvray + + Change-Id: I7615737276165eef3a593038413d936247dcc6ed + +2016-03-30 16:47 +0000 [ef4d3f1328] Mark Michelson + + * Dial: Add function to append already-created channel. + + The Dial API takes responsiblity for creating an outbound channel when + calling ast_dial_append(). This commit adds a new function, + ast_dial_append_channel(), which allows us to create the channel outside + the Dial API and then to append the channel to the ast_dial structure. + + This is useful for situations where the channel's creation and dialing + are distinct operations. Upcoming ARI early bridge work will illustrate + its usage. + + ASTERISK-25889 + + Change-Id: Id8179f64f8f99132f80dead8d5db2030fd2c0509 + +2016-03-27 23:33 +0000 [984d6fd95c] George Joseph + + * config: Allow filters when appending to a category + + In sorcery based config files where there are multiple categories with the same + name, you can't use the (+) operator to reliably append to a category because + config.c stops looking when it finds the first one with the same name. + + Example: + + [1000] + type = endpoint + + [1000] + type = aor + + [1000](+) + authenticate_qualify = yes + + This config will fail because config.c appends authenticate_qualify to the + first category it finds, the endpoint, and that's not valid for endpoint. + + Solution: + + The capability to find a category that contains a certain variable already + exists so the only real change was to parse anything after the '+' that's not a + comma, as a filter string. + + [1000] + type = endpoint + + [1000] + type = aor + + [1000](+type=aor) + authenticate_qualify = yes + + This now works as expected. + + Although the following example doesn't make any sense for pjsip, you can even + specify multiple filters: + + [1000](+type=aor&qualify_frequency=10) + + ASTERISK-25868 #close + Reported-by: Nick Repin + + Change-Id: I10773da4c79db36fbf1993961992af63d3441580 + +2016-04-05 10:21 +0000 [784fb43f43] Joshua Colp + + * res_http_websocket: Make core supported. + + Websockets are a core part of ARI support and as such this + module should also be core supported. + + Change-Id: I8f9283c6a167152761b92984779bb39e3db51a9c + +2016-03-25 23:22 +0000 [4d40b161c3] George Joseph + + * stringfields: Refactor to allow fields to be added to the end of structures + + String fields are great, except that you can't add new ones without breaking + ABI compatibility because it shifts down everything else in the structure. + The only alternative is to add your own char * field to the end of the + structure and manage the memory yourself which isn't ideal, especially since + you then can't use the OPT_STRINGFIELD_T type. + + Background: + + The reason string fields had to be declared inside the + AST_DECLARE_STRING_FIELDS block was to facilitate iteration over all declared + fields for initialization, compare and copy. Since AST_DECLARE_STRING_FIELDS + declared the pool, then the fields, then the manager, you could use the offsets + of the pool and manager and iterate over the sequential addresses in between to + access the fields. The actual pool, field allocation and field set operations + don't actually care where the field is. It's just iteration over the fields + that was the problem. + + Solution: Extended String Fields + + An extended string field is one that is declared outside the + AST_DECLARE_STRING_FIELDS block but still (anywhere) inside the parent + structure. Other than using AST_STRING_FIELD_EXTENDED instead of + AST_STRING_FIELD, it looks the same as other string fields. It's storage comes + from the pool and it participates in string field compare and copy operations + peformed on the parent structure. It's also a valid target for the + OPT_STRINGFIELD_T aco option type. + + Implementation: + + To keep track of the extended fields and make sure that ABI isn't broken, the + existing embedded_pool pointer in the manager structure was repurposed to be a + pointer to a separate header structure that contains the embedded_pool pointer + plus a vector of fields. The length of the manager structure didn't change and + the embedded_pool pointer isn't used in the macros, only the stringfields C + code. A side benefit of this is that changing the header structure in the + future won't break ABI. + + ast_string_fields_init initializes the normal string fields and appends them to + the vector, and subsequent calls to ast_string_field_init_extended initialize + and append the extended fields. Cleanup, ast_string_fields_cmp, and + ast_string_fields_copy can now work on the vector instead of sequentially + traversing the addresses between the pool and manager. + + The total size of a structure using string fields didn't change, whether using + extended fields or not, nor have the offsets of any structure members, either + inside the original block or outside. Adding an extended field to the end of a + structure is the same as adding a char *. + + Details: + + The stringfield C code was pulled out from utils.c and into stringfields.c. + It just made sense. + + Additional work was done in ast_string_field_init and + ast_calloc_with_stringfields to handle the allocation of the new header + structure and the vector, and the associated cleanup. In the process some + additional NULL pointer checking was added. + + A lot of work was done in stringfields.h since the logic for compare and copy + is there. Documentation was added as well as somne additional NULL checking. + + The ability to call ast_calloc_with_stringfields with a number of structures + greater than 1 never really worked. Well, the calloc worked but there was no + way to access the additional structures or clean them up. It was agreed that + there was no use case for requesting more than 1 structure so an ast_assert + was added to prevent it and the iteration code removed. + + Testing: + + The stringfield unit tests were updated to test both normal and extended + fields. Tests for ast_string_field_ptr_set_by_fields and + ast_calloc_with_stringfields were also added. + + As an ABI test, 13 was compiled from git and the res_pjsip_* modules, except + res_pjsip itself, saved off. The patch was then added and a full compile and + install was performed. Then the older res_pjsip_* moduled were copied over the + installed versions so res_pjsip was new and the rest were old. No issues. + + contact->aor, which is a char * at the end of contact, was then changed to an + extended string field and a recompile and reinstall was performed, again + leaving stock versions of the the res_pjsip_* modules. Again, no issues with + the res_pjsip_* modules using the old stringfield implementation and with + contact->aor as a char *, and res_pjsip itself using the new stringfield + implementation and contact->aor being an extended string field. + + Finally, several existing string fields were converted to extended string + fields to test OPT_STRINGFIELD_T. Again, no issues. + + Change-Id: I235db338c5b178f5a13b7946afbaa5d4a0f91d61 + +2016-04-04 18:02 +0000 [c07e1190ec] George Joseph + + * res_pjsip_mwi: Fix segv caused by 16c7d8e74a9af13f98c3c22aa9c43ce39965f6b7 + + I forgot the new voicemail_extension wasn't a stringfield and didn't check + for NULL where I should have. + + Change-Id: I029482d5c2ab72474838750461bd46b0809c90fb + +2016-04-03 11:47 +0000 [060b7b83bc] George Joseph + + * install_prereq: Fix check_installed_debs remove subversion + + check_installed_debs wasn't handling virtual packages like libsrtp-dev and + libresample-dev and on multiarch systems it was accidentally filtering out all + packages if any :i386 packages were found instead of just filtering out the + :i386 packages themselves. + + Change-Id: Ifd68da0d1ee30cc84df14de3f9b9079d7c3cecda + +2016-04-01 13:09 +0000 [433d2c4bbf] George Joseph + + * utils.c: Fix typo in handle_show_locks + + ast_cli_allow_on_shutdown(e) should have been ast_cli_allow_at_shutdown(e). + + Change-Id: I4f092495c0b2bfd85c2651e0b5877bf4d05d9faf + +2016-03-30 18:34 +0000 [304f81780d] George Joseph + + * pjproject_bundled: Fix use of LDCONFIG for shared library link creation + + LDCONFIG apparently isn't set to something sane on all systems so the creation + of the shared library links fails. Instead of just testing for non-blank, + main/Makefile now checks that LDCONFIG is actually executable and reverts to + LN if it isn't. + + This applies to both libasteriskpj and libasteriskssl. + + Thanks to 'abelbeck' for pointing out that the issue was LDCONFIG. + + ASTERISK-25873 #close + Reported-by: Hans van Eijsden + + Change-Id: I25b76379bc637726ec044b2c0e709b56b3701729 + +2016-03-29 13:47 +0000 [0ea742d33a] Richard Mudgett + + * res_stasis: Add control ref to playback and recording structs. + + The stasis_app_playback and stasis_app_recording structs need to have a + struct stasis_app_control ref. Other threads can get a reference to the + playback and recording structs from their respective global container. + These other threads can then use the control pointer they contain after + the control struct has gone. + + * Add control ref to stasis_app_playback and stasis_app_recording structs. + + With the refs added, the control command queue can now have a circular + control reference which will cause the control struct to never get + released if the control's command queue is not flushed when the channel + leaves the Stasis application. Also the command queue needs better + protection from adding commands if the control->is_done flag is set. + + * Flush the control command queue on exit. + + ASTERISK-25882 #close + + Change-Id: I3cf1fb59cbe6f50f20d9e35a2c07ac07d7f4320d + +2016-03-28 18:10 +0000 [53f63ad770] Richard Mudgett + + * res_stasis: Fix crash on a hanging up channel. + + * Give the struct stasis_app_control ao2 object a ref to the channel held + in the object. Now the channel will still be around if a thread needs to + post a stasis message instead of crash because the topic was destroyed. + + * Moved stopping any lingering silence generator out of the struct + stasis_app_control destructor and made it a part of exiting the Stasis + application. Who knows which thread the destructor will be called under + so it cannot affect the channel's silence generator. Not only was the + channel unprotected when the silence generator was stopped, stasis may no + longer even control the channel. + + ASTERISK-25882 + + Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4 + +2016-03-30 13:31 +0000 [2fab4d7da8] Richard Mudgett + + * res_stasis.c: Protect channel datastore list from stasis end. + + Change-Id: Ifadc469590bd4d5368e19d3763db3bd1f80fdb95 + +2016-03-29 18:06 +0000 [ece2edaa04] Richard Mudgett + + * res_ari: Cannot get control also means channel is unavailable. + + The only caller of ari_bridges_play_found() has this note: + + If ari_bridges_play_found fails because the channel is unavailable for + playback, The channel will be removed from the playback list soon. We can + keep trying to get channels from the list until we either get one that + will work or else there isn't a channel for this bridge anymore, in which + case we'll revert to ari_bridges_play_new. + + Change-Id: Ib068141b367ccaa17be0dab4181c98e26c5127d6 + +2016-03-29 14:29 +0000 [2f36cba4b5] Richard Mudgett + + * res_stasis_recording.c: Cleanup stasis_app_recording_find_by_name(). + + Change-Id: Ic7d93c402c498677a122505558859c853d4e5ac7 + +2016-03-28 14:23 +0000 [34457dd9db] Richard Mudgett + + * core_unreal.c: Add clarification comment about channel ref. + + Change-Id: I0be0627260cd8d6b6c3cc345949dcfdf32eff1f3 + +2016-03-30 12:38 +0000 [2b3261cd36] George Joseph + + * res_pjsip_mwi: Allow subscribe to vm access extension as an alias + + Background: + + If your extension is 1000 and the voicemail access extension is 1571 and you + dial 1571, usually a dialplan rule calls voicemailmain with your extension and + you are placed directly in your mailbox. Therefore most admins program the + voicemail (or other speed dial) button on their phones to the access extension. + Some phones (Snom at least) use whatever is programmed there to also subscribe + for MWI and so can't dial one number and subscribe to another. This works fine + in chan_sip because chan_sip completely ignores the user portion of the + SUBSCRIBE message request URI. If it can match the peer, is subscribes to the + peer's mailbox. The user could be set to anything or nothing and you'd still + get subscribed to your mailbox. + + Issue: + + chan_pjsip actually uses the user portion of the URI to find an aor and its + mailboxes. Therefore a subscribe to 1571 results in a 404. Sure, you can + create an aor for 1571 but you certainly can't add your entire voicemail + system's mailboxes to it and everyone would get notified of every MWI. + + Solution: + + When an MWI subscribe comes in and an aor can't be found that matches the + resource directly, check the resource against the endpoint's aors. If an aor + is found that has a voicemail_extension that matches the resource, use it. + + ASTERISK-25865 + Reported-by: Ross Beer + + Change-Id: I770ea185f751f1ada888fafb4b452115f1c06e9e + +2016-03-24 22:55 +0000 [e2524fcee3] George Joseph + + * res_pjsip_mwi: Add voicemail extension and mwi_subscribe_replaces_unsolicited + + res_pjsip_mwi was missing the chan_sip "vmexten" functionality which adds + the Message-Account header to the MWI NOTIFY. Also, specifying mailboxes + on endpoints for unsolicited mwi and on aors for subscriptions required + that the admin know in advance which the client wanted. If you specified + mailboxes on the endpoint, subscriptions were rejected even if you also + specified mailboxes on the aor. + + Voicemail extension: + * Added a global default_voicemail_extension which defaults to "". + * Added voicemail_extension to both endpoint and aor. + * Added ast_sip_subscription_get_dialog for support. + * Added ast_sip_subscription_get_sip_uri for support. + + When an unsolicited NOTIFY is constructed, the From header is parsed, the + voicemail extension from the endpoint is substituted for the user, and the + result placed in the Message-Account field in the body. + + When a subscribed NOTIFY is constructed, the subscription dialog local uri + is parsed, the voicemail_extension from the aor (looked up from the + subscription resource name) is substituted for the user, and the result + placed in the Message-Account field in the body. + + If no voicemail extension was defined, the Message-Account field is not added + to the NOTIFY body. + + mwi_subscribe_replaces_unsolicited: + * Added mwi_subscribe_replaces_unsolicited to endpoint. + + The previous behavior was to reject a subscribe if a previous internal + subscription for unsolicited MWI was found for the mailbox. That remains the + default. However, if there are mailboxes also set on the aor and the client + subscribes and mwi_subscribe_replaces_unsolicited is set, the existing internal + subscription is removed and replaced with the external subscription. This + allows an admin to configure mailboxes on both the endpoint and aor and allows + the client to select which to use. + + ASTERISK-25865 #close + Reported-by: Ross Beer + + Change-Id: Ic15a9415091760539c7134a5ba3dc4a6a1217cea + +2016-03-30 09:46 +0000 [724b9ab28f] George Joseph + + * res_rtp_asterisk: Fix placement of txcount increment + + Commit 1bce690ccb36a4744a327c07af23a9a3a0fa20cd was incrementing txcount + for rtcp packets as well as rtp packets and that was causing sender reports + to be generated instead of receiver reports in cases where no rtp was actually + being sent. + + Moved the txcount increment from __rtp_sento, which handles both rtp and rtcp, + to rtp_sento which only handles rtp packets. + + Discovered by the hep/rtcp-receiver test. + + Change-Id: Ie442e4bb947a68847a676497021ba10ffaf376d5 + +2016-03-26 22:33 +0000 [c4064727d2] George Joseph + + * chan_pjsip: Add 'pjsip show channelstats' + + Added the ability to show channel statistics to chan_pjsip (cli_functions.c) + + Moved the existing 'pjsip show channel(s)' functionality from + pjsip_configuration to cli_functions.c. The stats needed chan_pjsip's + private header so it made sense to move the existing channel commands as well. + + Now using stasis_cache_dump to get the channel snapshots rather than retrieving + all endpoints, then getting each one's channel snapshots. Much more efficient. + + Change-Id: I03b114522126d27434030b285bf6d531ddd79869 + +2016-03-25 10:59 +0000 [970803efcb] Jacek Konieczny + + * res_rtp_asterisk: Use separate SRTP session for RTCP with DTLS + + Asterisk uses separate UDP ports for RTP and RTCP traffic and RFC 5764 + explicitly states: + + There MUST be a separate DTLS-SRTP session for each distinct pair of + source and destination ports used by a media session + + This means RTP keying material cannot be used for DTLS RTCP, which was + the reason why RTCP encryption would fail. + + ASTERISK-25642 + + Change-Id: I7e8779d8b63e371088081bb113131361b2847e3a + +2016-03-25 10:42 +0000 [9785e8d090] Jacek Konieczny + + * app_echo: forward and generate VIDUPDATE frames + + When using app_echo via WebRTC with VP8 video the video would appear + only after a few minutes, because there would be nothing to request + a full reference frame. + + This fixes the problem in both ways: + - echos any VIDUPDATE frames received on the channel + - sends one such frame when first video frame is to be forwarded + + This makes the echo work with Firefox and Chrome WebRTC implementation. + + ASTERISK-25867 #close + + Change-Id: I73bda87bf7532ee8bfb28d917045a21034908c1e + +2016-03-27 12:53 +0000 [44ffb5105a] George Joseph + + * res_rtp_asterisk: Fix packet stats on bridged connection + + rxcount, txcount, rxoctetcount and txoctetcount weren't being calculated + for bridged streams because the calulations were being done after the + bridged short-circuit. Actually, rxoctetcount wasn't ever being calculated. + + Moved the calculations so they occur for all valid received packets and + all transmitted packets. Also added rxoctetcount and txoctetcount to + ast_rtp_instance_stat. + + Change-Id: I08fb06011a82d38c3b4068867a615068fbe59cbb + +2016-03-10 19:52 +0000 [c971a64366] George Joseph + + * res_pjsip/pjsip_options: Fix From generation on outgoing OPTIONS + + No one seemed to notice but every time an OPTIONS goes out, it goes + out with a From of "asterisk" (or whatever the default from_user is set to), + even if you specify an endpoint. + + The issue had several causes... + qualify_contact is only called with an endpoint if called from the CLI. + If the endpoint is NULL, qualify_contact only looks up the endpoint if + authenticate_qualify=yes. Even then, it never passes it on to + ast_sip_create_request where the From header is set. Therefore From + is always "asterisk" (or whatever the default from_user is set to). + Even if ast_sip_create_request were to get an endpoint, it only sets + the From if endpoint->from_user is set. + + The fix is 4 parts... + + First, create_out_of_dialog_request was modified to use the endpoint id + if endpoint was specified and from_user is not set. + + Second, qualify_contact was modified to always look up an endpoint if + one wasn't specified regardless of authenticate_qualify. It then passes + the endpoint on to create_out_of_dialog_request. + + Third (and most importantly), find_an_endpoint was modified to find + an endpoint by using an "aors LIKE %contact->aor%" predicate with + ast_sorcery_retrieve_by_fields. As such, this patch will only work + if the sorcery realtime optimizations patch goes in. Otherwise we'd + be pulling the entire endpoints database every time we send an OPTIONS. + Since we already know the contact's aor, the on_endpoint callback was also + modified to just check if the contact->aor is an exact match to one of + the endpoint's. + + Finally, since we now have an endpoint for every OPTIONS request, + res_pjsip/endpt_send_request (which handles out-of-dialog reqests) was + updated to get the transport from the endpoint and set it on tdata. + Now the correct transport is used. + + Change-Id: I2207e12bb435e373bd1e03ad091d82e5aba011af + +2016-03-08 15:55 +0000 [c948ce9651] George Joseph + + * sorcery/res_pjsip: Refactor for realtime performance + + There were a number of places in the res_pjsip stack that were getting + all endpoints or all aors, and then filtering them locally. + + A good example is pjsip_options which, on startup, retrieves all + endpoints, then the aors for those endpoints, then tests the aors to see + if the qualify_frequency is > 0. One issue was that it never did + anything with the endpoints other than retrieve the aors so we probably + could have skipped a step and just retrieved all aors. But nevermind. + + This worked reasonably well with local config files but with a realtime + backend and thousands of objects, this was a nightmare. The issue + really boiled down to the fact that while realtime supports predicates + that are passed to the database engine, the non-realtime sorcery + backends didn't. + + They do now. + + The realtime engines have a scheme for doing simple comparisons. They + take in an ast_variable (or list) for matching, and the name of each + variable can contain an operator. For instance, a name of + "qualify_frequency >" and a value of "0" would create a SQL predicate + that looks like "where qualify_frequency > '0'". If there's no operator + after the name, the engines add an '=' so a simple name of + "qualify_frequency" and a value of "10" would return exact matches. + + The non-realtime backends decide whether to include an object in a + result set by calling ast_sorcery_changeset_create on every object in + the internal container. However, ast_sorcery_changeset_create only does + exact string matches though so a name of "qualify_frequency >" and a + value of "0" returns nothing because the literal "qualify_frequency >" + doesn't match any name in the objset set. + + So, the real task was to create a generic string matcher that can take a + left value, operator and a right value and perform the match. To that + end, strings.c has a new ast_strings_match(left, operator, right) + function. Left and right are the strings to operate on and the operator + can be a string containing any of the following: = (or NULL or ""), !=, + >, >=, <, <=, like or regex. If the operator is like or regex, the + right string should be a %-pattern or a regex expression. If both left + and right can be converted to float, then a numeric comparison is + performed, otherwise a string comparison is performed. + + To use this new function on ast_variables, 2 new functions were added to + config.c. One that compares 2 ast_variables, and one that compares 2 + ast_variable lists. The former is useful when you want to compare 2 + ast_variables that happen to be in a list but don't want to traverse the + list. The latter will traverse the right list and return true if all + the variables in it match the left list. + + Now, the backends' fields_cmp functions call ast_variable_lists_match + instead of ast_sorcery_changeset_create and they can now process the + same syntax as the realtime engines. The realtime backend just passes + the variable list unaltered to the engine. The only gotcha is that + there's no common realtime engine support for regex so that's been noted + in the api docs for ast_sorcery_retrieve_by_fields. + + Only one more change to sorcery was done... A new config flag + "allow_unqualified_fetch" was added to reg_sorcery_realtime. + "no": ignore fetches if no predicate fields were supplied. + "error": same as no but emit an error. (good for testing) + "yes": allow (the default); + "warn": allow but emit a warning. (good for testing) + + Now on to res_pjsip... + + pjsip_options was modified to retrieve aors with qualify_frequency > 0 + rather than all endpoints then all aors. Not only was this a big + improvement in realtime retrieval but even for config files there's an + improvement because we're not going through endpoints anymore. + + res_pjsip_mwi was modified to retieve only endpoints with something in + the mailboxes field instead of all endpoints then testing mailboxes. + + res_pjsip_registrar_expire was completely refactored. It was retrieving + all contacts then setting up scheduler entries to check for expiration. + Now, it's a single thread (like keepalive) that periodically retrieves + only contacts whose expiration time is < now and deletes them. A new + contact_expiration_check_interval was added to global with a default of + 30 seconds. + + Ross Beer reports that with this patch, his Asterisk startup time dropped + from around an hour to under 30 seconds. + + There are still objects that can't be filtered at the database like + identifies, transports, and registrations. These are not going to be + anywhere near as numerous as endpoints, aors, auths, contacts however. + + Back to allow_unqualified_fetch. If this is set to yes and you have a + very large number of objects in the database, the pjsip CLI commands + will attempt to retrive ALL of them if not qualified with a LIKE. + Worse, if you type "pjsip show endpoint " guess what's going to + happen? :) Having a cache helps but all the objects will have to be + retrieved at least once to fill the cache. Setting + allow_unqualified_fetch=no prevents the mass retrieve and should be used + on endpoints, auths, aors, and contacts. It should NOT be used for + identifies, registrations and transports since these MUST be + retrieved in bulk. + + Example sorcery.conf: + + [res_pjsip] + endpoint=config,pjsip.conf,criteria=type=endpoint + endpoint=realtime,ps_endpoints,allow_unqualified_fetch=error + + ASTERISK-25826 #close + Reported-by: Ross Beer + Tested-by: Ross Beer + + Change-Id: Id2691e447db90892890036e663aaf907b2dc1c67 + +2016-03-25 23:19 +0000 [8e8cf80cea] Philip Correia + + * res_parking: Fix blind transfer dynamic lots creation. + + Blind transfers to a recognized parking extension need to use the parker's + channel variable values to create the dynamic parking lot. This is + because there is always only one parker while the parkee may actually be a + multi-party bridge. A multi-party bridge can never supply the needed + channel variables to create the dynamic parking lot. In the multi-party + bridge blind transfer scenario, the parker's CHANNEL(parkinglot) value and + channel variables are inherited by the local channel used to park the + bridge. + + * In park_common_setup(), make use the parker instead of the parkee to + supply the dynamic parking lot channel variable values. In all but one + case, the parkee is the same as the parker. However, in the recognized + parking extension blind transfer scenario for a two party bridge they are + different channels. For consistency, we need to use the parker channel. + + * In park_local_transfer(), pass the CHANNEL(parkinglot) value to the + local channel when blind transferring a multi-party bridge to a recognized + parking extension. + + * When a local channel starts a call, the Local;2 side needs to inherit + the CHANNEL(parkinglot) value from Local;1. + + The DTMF one-touch parking case wasn't even trying to create dynamic + parking lots before it aborted the attempt. + + * In parking_park_call(), add missing code to create a dynamic parking + lot. + + A DTMF bridge hook is documented as returning -1 to remove the hook. + Though the hook caller is really coded to accept non-zero. See the + ast_bridge_hook_callback typedef. + + * In feature_park_call(), don't remove the DTMF one-touch parking hook + because of an error. + + ASTERISK-24605 #close + Reported by: Philip Correia + Patches: + call_park.patch (license #6672) patch uploaded by Philip Correia + + Change-Id: I221d3a8fcc181877a1158d17004474d35d8016c9 + +2016-03-23 14:24 +0000 [3cf714031c] Richard Mudgett + + * res_parking: Cleanup find_channel_parking_lot_name() usage. + + Change-Id: I8f7a8890aef27824301c642d4d15407ac83e6f02 + +2016-03-18 14:01 +0000 [13e75ee04f] Richard Mudgett + + * res_parking: Misc fixes. + + res/parking/parking_applications.c: + + * Add malloc fail checks in setup_park_common_datastore(). + + * Fix playing parking failed announcement to only happen on non-blind + transfers in park_app_exec(). It could never go out before because a test + was provedly always false. + + res/parking/parking_bridge.c: + + * Fix NULL tolerance in generate_parked_user() because + bridge_parking_push() can theoretically pass a NULL parker channel if the + parker channel went away for some reason. + + * Clarify some weird code dealing with blind_transfer in + bridge_parking_push(). + + res/parking/parking_bridge_features.c: + + * Made park_local_transfer() set BLINDTRANSFER on the Local;1 channel + which will be bulk copied to the Local;2 channel on the subsequent + ast_call(). The additional advantage is if the parker channel has the + BLINDTRANSFER and ATTENDEDTRANSFER variables set they are now guaranteed + to be overridden. + + res/parking/parking_manager.c: + + * Fix AMI Park action input range checking of the Timeout header in + manager_park(). + + * Reduced locking scope to where needed in manager_park(). + + res/res_parking.c: + + * Fix some off nominal missing unlocks by eliminating the returns. + + Change-Id: Ib64945bc285acb05a306dc12e6f16854898915ca + +2014-12-15 05:23 +0000 [e2853ae337] Philip Correia + + * res_parking: Update parking documentation for dynamic parking lots. + + * Remove duplicate res_parking.conf courtesytone config option + documentation. + + ASTERISK-24596 #close + Reported by: Philip Correia + + ASTERISK-24605 + Reported by: Philip Correia + Patches: + call_park_app_doc.patch (license #6672) patch uploaded by Philip Correia + + Change-Id: I90a92a891c6494dc08173e675856afcc4764c5b5 + +2016-03-25 06:02 +0000 [72a897c534] Joshua Colp + + * media_cache: Demote warning to debug as it may occur often. + + The file playback system will now query the media cache and then + the old file functionality. Under normal conditions this will result + in the cache failing to retrieve a file causing a warning message + to get output each time a file is played back. + + This change demotes this warning to a debug message. + + Change-Id: Ib72246ba300b5cce32774bfb3c26634bfb708624 +2016-03-10 16:58 +0000 [89e94e886c] Mark Michelson + + * Restrict CLI/AMI commands on shutdown. + + During stress testing, we have frequently seen crashes occur because a + CLI or AMI command attempts to access information that is in the process + of being destroyed. + + When addressing how to fix this issue, we initially considered fixing + individual crashes we observed. However, the changes required to fix + those problems would introduce considerable overhead to the nominal + case. This is not reasonable in order to prevent a crash from occurring + while Asterisk is already shutting down. + + Instead, this change makes it so AMI and CLI commands cannot be executed + if Asterisk is being shut down. For AMI, this is absolute. For CLI, + though, certain commands can be registered so that they may be run + during Asterisk shutdown. + + ASTERISK-25825 #close + + Change-Id: I8887e215ac352fadf7f4c1e082da9089b1421990 + +2016-03-24 14:08 +0000 [3f720155b7] Alexander Traud + + * chan_sip: Do not send all codecs on INVITE. Do not break on Session-Timers. + + Asterisk 13.7.0 included a fix for ASTERISK-24543, not to send all those + codecs, which the caller did not request/support. That fix was not complete + because on the second Session Timer all codecs were sent again. Some VoIP/SIP + clients interpreted that complete codec-list as a change in the SIP session. + Because of that, Asterisk did not send the RTP audio via NAT anymore which + created a non-audio scenario after the second Session Timer fired. + + ASTERISK-24543 #close + + Change-Id: I1881827816ab7fd47eb4287a95961179b34a0b66 + +2016-03-19 07:34 +0000 [894071ea2c] Gianluca Merlo + + * config: fix flags in uint option handler + + The configuration unsigned integer option handler sets flags for the + parser as if the option should be a signed integer (PARSE_INT32), + leading to errors on "out of range" values. Fix flags (PARSE_UINT32). + + A fix to res_pjsip is also present which stops invalid flags from + being passed when registering sorcery object fields for qualify + status. + + ASTERISK-25612 #close + + Change-Id: I96b539336275e0e72a8e8033487d2c3344debd3e + +2016-03-24 07:51 +0000 [13cdf3e8a1] Walter Doekes + + * musiconhold: Only warn if music class is not found in memory and database. + + The log message when a MusicOnHold music class was not found was changed + from debug level to WARNING level in Asterisk 11.19 and 13.5. For those + using realtime musiconhold, this message is wrong because it warns + before checking the database. + + This changeset delays the warning until after the database has been + checked. + + Reported-by: Conrad de Wet + ASTERISK-25444 #close + + Change-Id: I6cfb2db2f9cfbd2bb3d30566ecae361c4abf6dbf + +2016-03-24 05:48 +0000 [87c9ab97ea] Walter Doekes + + * core/logging: Fix broken syslog levels on older glibc. + + The fix to ASTERISK-25407 introduced the usage of LOG_MAKEPRI. However + this macro is broken in older glibc (< 2.17); it would left-shift the + facility a second time, causing the resultant priority to become + invalid. + + The syslog manpage mentions nothing about LOG_MAKEPRI and suggests this: + + The priority argument is formed by ORing the facility and the level + values [...]. + + ASTERISK-25510 #close + Reported by: Michael Newton + + Change-Id: Ia89debe7fac5ad090c7ef595c0707f31bb1e3d03 +2016-03-24 06:18 +0000 [a72f3b5bb4] Joshua Colp + + * tests/test_http_media_cache: Fix file descriptor leak in test. + + Change-Id: Ie8a9ae3d13bdeaacafc8d28271adc6707f633a5f + +2016-02-28 19:05 +0000 [13efea24f7] Matt Jordan + + * main/app: Only look to end of file if ':end' is specified, and not just ':' + + There is a little known feature in app_controlplayback that will cause the + specified offset to be used relative to the end of a file if a ':end' is + detected within the filename. + + This feature is pretty bad, but okay. + + However, a bug exists in this code where a ':' detected in the filename + will cause the end pointer to be non-NULL, even if the full ':end' isn't + specified. This causes us to treat an unspecified offset (0) as being + "start playing from the end of the file", resulting in no file playback + occurring. + + This patch fixes this bug by resetting the end pointer if ':end' is not + found in the filename. + + Change-Id: Ib4c7b1b45283e4effd622a970055c51146892f35 + +2015-12-26 15:29 +0000 [ca14b99e6e] Matt Jordan + + * main/file: Add the ability to play media in the media cache + + This patch allows applications/APIs that access media through the core file + APIs to play media in the media cache. Prior to determining if a 'filename' + exists, the filename is passed to the media cache's retrieve API call. If + that call succeeds, the local file specified passed back by the API is + opened for streaming. When used in this fashion, the 'filename' is actually + a URI that the media cache process and understand. + + ASTERISK-25654 #close + + Change-Id: I73b6e2e90c3e91b8500581c45cdf9c0dc785f5f0 + +2015-12-30 10:52 +0000 [01962a3932] Matt Jordan + + * tests/test_http_media_cache: Add unit tests for res_http_media_cache + + This patch adds unit tests for res_http_media cache, that covers nominal + creation and retrieval - and through them as well, staleness and deletion + checks. In addition, this patch adds tests that covers the interaction of + various HTTP headers, including Expires, Etag, and Cache-Control. + + ASTERISK-25654 + + Change-Id: I2db101e307c863857fe416d6f5bf4cace9ac7cf5 + +2015-01-29 08:38 +0000 [22e2340813] Matt Jordan + + * res/res_http_media_cache: Add an HTTP(S) backend for the core media cache + + This patch adds a bucket backend for the core media cache that interfaces to a + remote HTTP server. When a media item is requested in the cache, the cache will + query its bucket backends to see if they can provide the media item. If that + media item has a scheme of HTTP or HTTPS, this backend will be invoked. + + The backend provides callbacks for the following: + * create - this will always retrieve the URI specified by the provided + bucket_file, and store it in the file specified by the object. + * retrieve - this will pull the URI specified and store it in a temporary + file. It is then up to the media cache to move/rename this file + if desired. + * delete - destroys the file associated with the bucket_file. + * stale - if the bucket_file has expired, based on received HTTP headers from + the remote server, or if the ETag on the server no longer matches + the ETag stored on the bucket_file, the resource is determined to be + stale. + + Note that the backend respects the ETag, Expires, and Cache-Control headers + provided by the HTTP server it is querying. + + ASTERISK-25654 + + Change-Id: Ie201c2b34cafc0c90a7ee18d7c8359afaccc5250 + +2015-12-26 15:31 +0000 [791b4c9f81] Matt Jordan + + * main/media_cache: Provide an extension on the local file associated with a URI + + This patch does the following: + + First, it addresses file extension handling in the media cache. The media core + in Asterisk is a bit interesting in that it wants: + * A file to have an extension on it. That extension is used to associate the + file with a defined format module. + * The filename passed to the core to not have an extension on it. This allows + the core to match the available file formats with the format a channel + is capable of handling. + + Unfortunately, this makes the current implementation a bit lacking in the media + cache. By default, we do not store the extension of a retrieved URI on the + local file that is created. As a result, the media core does not know what + format the file is, and the file is ignored. Modifying the file outside of the + media core is bad, as we would not be able to update the internal + ast_bucket_file's path. + + At the same time, we do not want to pass the extension out in the file_path + parameter in ast_media_cache_retrieve. This parameter is intended to be fed + into the media core; if we passed the extension, all callers would have to + strip it off. + + Thus, this patch does the following: + * If there is an extension specified in the URL, we append it to the local + file name (if a preferred file name isn't specified), and we store that + in the local file path. + * The extension, however, is stripped off of the file_path parameter passed + back out of ast_media_cache_retrieve. + + Second, this patch causes stale items to be completely removed from the system. + Prior to this patch, sound files could be orphaned due to the bucket + referencing the file being deleted, but the file itself not being removed. This + is now addressed by explicitly calling ast_bucket_file_delete on the + bucket_file when it is deemed to be stale. Note that this only happen when we + know we will attempt to retrieve the resource again. + + Finally, this patch changes the AO2 container holding media items to just use + a regular mutex. The usage for this container already assumed it was a plain + mutex, and - given that retrieval of an item can cause it to be replaced in + the container - a mutex makes more sense than a read/write lock. + + Change-Id: I51667fff86ae8d2e4a663555dfa85b11e935fe0f + +2014-10-25 20:21 +0000 [6bbcfb34bd] Matt Jordan + + * funcs/func_curl: Add the ability for CURL to download and store files + + This patch adds a write option to the CURL dialplan function, allowing it to + CURL files and store them locally. The value 'written' to the CURL URL + specifies the location on disk to store the file. As an example: + + same => n,Set(CURL(http://1.1.1.1/foo.wav)=/tmp/foo.wav) + + Would retrieve the file foo.wav from the remote server and store it in the + /tmp directory. + + Due to the potentially dangerous nature of this function call, APIs are + forbidden from using the write functionality unless live_dangerously is set + to True in asterisk.conf. + + ASTERISK-25652 #close + + Change-Id: I44f4ad823d7d20f04ceaad3698c5c7f653c41b0d + +2016-03-23 08:59 +0000 [392341ba37] George Joseph + + * pjproject-bundled: Cleanups for reported issues + + PortAudio should no longer be required + PJSIP_MAX_PKT_LEN is now 6000 + Older autoconf issue fixed. (CentOS 6) + + Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd + +2015-11-20 08:02 +0000 [ac66999971] Francesco Castellano + + * chan_sip.c: Space after port causes unnecessary resolution attempt + + check_via() already skips leading blanks where the sent-by address (with the + optional port) should be placed. + + Since RFC 3261 allows for blanks between the port ant the Via parameters: + > https://tools.ietf.org/html/rfc3261#section-20.42 + (actually it allows a lot of blanks more ;-)). I just switched from + ast_skip_blanks() to ast_strip() on the local copy of the string. + + ASTERISK-21301 #close + + Change-Id: Ie5b8fe5a07067b7c0dc9bcdd1707e99b23b02b06 +2016-03-19 17:49 +0000 [1d3191b118] George Joseph + + * progdocs: Exclude ./third-party from documentation generation + + We don't need pjproject's documentation embedded in Asterisk's. + + Change-Id: Iea6f5a621c0f4e3168dda3321eaab258d9f24a17 + +2016-03-18 20:32 +0000 [8f94f947f5] Gianluca Merlo + + * func_aes: fix misuse of strlen on binary data + + The encryption code for AES_ENCRYPT evaluates the length of the data to + be encoded in base64 using strlen. The data is binary, thus the length + of it can be underestimated at the first NULL character. + Reuse the write pointer offset to evaluate it, instead. + + ASTERISK-25857 #close + + Change-Id: If686b5d570473eb926693c73461177b35b13b186 +2016-03-18 14:31 +0000 [a3c9a74a02] Kevin Harwell + + * chan_pjsip: ref leak when checking direct_media_glare + + Fix the reference leak introduced in the following commit: + + c534bd58075e2e1a1e4f3b23c435186c71b155fd + + ASTERISK-25849 + + Change-Id: I5cfefd5ee6c1c3a1715c050330aaa10e4d2a5e85 +2016-03-16 12:37 +0000 [c534bd5807] Kevin Harwell + + * chan_pjsip: transfers with direct media reinvite has wrong address/port + + During a transfer involving direct media a race occurs between when the + transferer channel is swapped out, initiating rtp changes/updates, and the + subsequent reinvites. + + When Alice, after speaking with Charlie (Bob is on hold), connects Bob and + Charlie invites are sent to each in order to establish the call between them. + Bob is taken off hold and Charlie is told to have his media flow through + Asterisk. However, if before those invites go out the bridge updates Bob's + and/or Charlie's rtp information with direct media data (i.e. address, port) + then the invite(s) will contain the remote data in the SDP instead of the + Asterisk data. + + The race occurs in the native bridge glue code when updating the peer. The + direct_media_address can get set twice before sending out the first invite + during call connection. This can happen because the checking/setting of the + direct_media_address happened in one thread while the sending of the invite(s) + happened in another thread. + + This fix removes the race condition by moving the checking/setting of the + direct_media_address to be in the same thread as the sending of the invites(s). + This serializes the checking/setting and sending so they can no longer happen + out of order. + + ASTERISK-25849 #close + + Change-Id: Idfea590175e74f401929a601dba0c91ca1a7f873 + +2016-03-03 04:43 +0000 [bdccb81157] Sergio Medina Toledo + + * res_pjsip_refer.c: Fix seg fault in process of Refer-to header. + + The "Refer-to" header of an incoming REFER request is parsed by + pjsip_parse_uri(). That function requires the URI parameter to be NULL + terminated. Unfortunately, the previous code added the NULL terminator by + overwriting memory that may not be safe. The overwritten memory results + could be benign, memory corruption, or a segmentation fault. Now the URI + is NULL terminated safely by copying the URI to a new chunk of memory with + the correct size to be NULL terminated. + + ASTERISK-25814 #close + + Change-Id: I32565496684a5a49c3278fce06474b8c94b37342 + +2016-02-25 10:29 +0000 [0da36fca6b] Leif Madsen + + * Add initial support to build Docker images + + This work-in-progress is the first step to being able to reliably + build Asterisk containers from the Asterisk source. I'm submitting + this based on feedback gained at AstriDevCon 2015. + + Information about how to use this is provided in contrib/docker/README.md + and will result in a local Asterisk container being built right from + your source. I believe this can eventually be automated via + hub.docker.com. + + Change-Id: Ifa070706d40e56755797097b6ed72c1e243bd0d1 + +2016-03-11 12:22 +0000 [810f92c9dc] Richard Mudgett + + * chan_sip.c: Fix mwi resub deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 #close + + Change-Id: I96d429c57a48861fd8bde63dd93db4e92dc3adb6 + +2016-03-10 17:01 +0000 [72c444ba37] Richard Mudgett + + * chan_sip.c: Fix registration timeout and expire deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I2e40de89efc8ae6e8850771d089ca44bc604b508 + +2016-03-09 16:26 +0000 [7ea1e181dc] Richard Mudgett + + * chan_sip.c: Fix waitid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + * Made always run check_pendings() under the scheduler thread so scheduler + ids can be checked safely. + + ASTERISK-25023 + + Change-Id: Ia834d6edd5bdb47c163e4ecf884428a4a8b17d52 + +2016-03-10 12:17 +0000 [fbf8e04aed] Richard Mudgett + + * chan_sip.c: Fix t38id deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: If595e4456cd059d7171880c7f354e844c21b5f5f + +2016-03-08 15:08 +0000 [02458cc6fd] Richard Mudgett + + * chan_sip.c: Fix session timers deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I6d65269151ba95e0d8fe4e9e611881cde2ab4900 + +2016-03-09 16:34 +0000 [c7fdff2e37] Richard Mudgett + + * chan_sip.c: Fix reinviteid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I9c11b9d597468f63916c99e1dabff9f4a46f84c1 + +2016-03-07 13:21 +0000 [69810b306d] Richard Mudgett + + * chan_sip.c: Fix autokillid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + * Fix clearing autokillid in __sip_autodestruct() even though we could + reschedule. + + ASTERISK-25023 + + Change-Id: I450580dbf26e2e3952ee6628c735b001565c368f + +2016-03-09 16:32 +0000 [f484ddbdfe] Richard Mudgett + + * chan_sip.c: Fix packet retransid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + * Fix retrans_pkt() to call check_pendings() with both the owner channel + and the private objects locked as required. + + * Refactor dialog retransmission packet list to safely remove packet + nodes. The list nodes are now ao2 objects. The list has a ref and the + scheduled entry has a ref. + + ASTERISK-25023 + + Change-Id: I50926d81be53f4cd3d572a3292cd25f563f59641 + +2016-03-07 18:28 +0000 [67c79c326d] Richard Mudgett + + * chan_sip.c: Fix provisional_keepalive_sched_id deadlock. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I98a694fd42bc81436c83aa92de03226e6e4e3f48 + +2016-03-09 11:22 +0000 [76be7093cd] Richard Mudgett + + * chan_sip.c: Adjust how dialog_unlink_all() stops scheduled events. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + * Make dialog_unlink_all() unschedule all items at once in the sched + thread. + + ASTERISK-25023 + + Change-Id: I7743072fb228836e8228b72f6dc46c8cc50b3fb4 + +2016-03-10 21:54 +0000 [52f0932e4c] Richard Mudgett + + * chan_sip.c: Clear scheduled immediate events on unload. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + The reordering of chan_sip's shutdown is to handle any immediate events + that get put onto the scheduler so resources aren't leaked. The typical + immediate events at this time are going to be concerned with stopping + other scheduled events. + + ASTERISK-25023 + + Change-Id: I3f6540717634f6f2e84d8531a054976f2bbb9d20 + +2016-03-15 14:51 +0000 [0987a11cce] Richard Mudgett + + * sip/dialplan_functions.c: Fix /channels/chan_sip/test_sip_rtpqos crash. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Delaying destruction of the chan_sip sip_pvt structures caused the + /channels/chan_sip/test_sip_rtpqos unit test to crash. That test + registers a special test ast_rtp_engine with the rtp engine module. When + the unit test completes it cleans up by unregistering the test + ast_rtp_engine and exits. Since the delayed destruction of the sip_pvt + happens after the unit test returns, the destructor tries to call the rtp + engine destroy callback of the test ast_rtp_engine auto variable which no + longer exists on the stack. + + * Change the test ast_rtp_engine auto variable to a static variable. Now + the variable can still exist after the unit test exits so the delayed + sip_pvt destruction can complete successfully. + + ASTERISK-25023 + + Change-Id: I61e34a12d425189ef7e96fc69ae14993f82f3f13 + +2016-03-07 15:50 +0000 [9a7cfa2b61] Richard Mudgett + + * sched.c: Ensure oldest expiring entry runs first. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + * Updated sched unit test to check new behavior. + + ASTERISK-25023 + + Change-Id: Ib69437327b3cda5e14c4238d9ff91b2531b34ef3 + +2016-03-15 13:31 +0000 [7964e260d3] Andrew Nagy + + * app_stasis: Don't hang up if app is not registered + + This prevents pbx_core from hanging up the channel if the app isn't + registered. + + ASTERISK-25846 #close + + Change-Id: I63216a61f30706d5362bc0906b50b6f0544aebce +2016-03-07 18:56 +0000 [cb97198ca6] Richard Mudgett + + * chan_sip.c: Simplify sip_pvt destructor call levels. + + Remove destructor calling destroy_it calling really_destroy_it + for no benefit. Just make the destructor the really_destroy_it + function. + + Change-Id: Idea0d47b27dd74f2488db75bcc7f353d8fdc614a + +2016-03-04 18:25 +0000 [8be01398d9] Richard Mudgett + + * chan_sip.c: Made sip_reinvite_retry() call sip_pvt_lock_full(). + + Change-Id: I90f04208a089f95488a2460185a8dbc3f6acca12 + +2016-03-14 08:59 +0000 [4df7b3ae80] Joshua Colp + + * build: Add configure check for proto field of PJSIP TLS transport setting. + + Older versions of PJSIP do not have the proto field on the TLS transport + setting structure. This change adds a configure check so even if it is + not present we will still be able to build. + + Change-Id: Ibf3f47befb91ed1b8194bf63888baa6fee05aba9 + +2016-03-12 16:02 +0000 [0af6b5de62] George Joseph + + * build_system: Split COMPILE_DOUBLE from DONT_OPTIMIZE + + I can't ever recall actually needing the intermediate files or the checking + that a double compile produces. What I CAN remember is every DONT_OPTIMIZE + build needing 3 invocations of gcc instead of 1 just to do the checks and + produce those intermediate files. + + Having said that, Richard pointed out that the reason for the double compile + was that there were cases in the past where a submitted patch failed to compile + because the submitter never tried it with the optimizations turned on. + + To get the best of both worlds, COMPILE_DOUBLE has been split into its own + option. If DONT_OPTIMIZE is turned on, COMPILE_DOUBLE will also be selected + BUT you can then turn it off if all you need are the debugging symbols. This + way you have to make an informed decision about disabling COMPILE_DOUBLE. + + To allow COMPILE_DOUBLE to be both auto-selected and turned off, a new feature + was added to menuselect. The element can now contain an "autoselect" + attribute which will turn the used member on but not create a hard dependency. + The cflags.xml implementation for COMPILE_DOUBLE looks like this... + + + COMPILE_DOUBLE + core + + + + * app_chanspy: Fix occasional deadlock with ChanSpy and Local channels. + + Channel masquerading had a conflict with autochannel locking. + + When locking autochannel->channel, the channel is fetched from the + autochannel and then locked. During the fetch, the autochannel -- which + has no locks itself -- can be modified by someone who owns the channel + lock. That means that the value of autochan->channel cannot be trusted + until you hold the lock. + + In practice, this caused problems with Local channels getting + masqueraded away while the ChanSpy attempted to get info from that + channel. The old channel which was about to get removed got locked, but + the new (replaced) channel got unlocked (no-op). Because the replaced + channel was now locked (and would never get unlocked), it couldn't get + removed from the channel list in a timely manner, and would now cause + deadlocks when iterating over the channel list. + + This change checks the autochannel after locking the channel for changes + to the autochannel. If the channel had been changed, the lock is + reobtained on the new channel. + + In theory it seems possible that after this fix, the lock attempt on the + old (wrong) channel can be on an already destroyed lock, maybe causing + a crash. But that hasn't been observed in the wild and is harder induce + than the current deadlock. + + Thanks go to Filip Frank for suggesting a fix similar to this and + especially to IRC user hexanol for pointing out why this deadlock was + possible and testing this fix. And to Richard for catching my rookie + while loop mistake ;) + + ASTERISK-25321 #close + + Change-Id: I293ae0014e531cd0e675c3f02d1d118a98683def + +2016-03-07 21:34 +0000 [fb28049de2] George Joseph + + * pjproject_bundled: Remove --with-external-pa from configure options. + + Not sure why it was there in the first place as we already specify + --disable-sound. + + Change-Id: Ia80a40e8b1e1acc287955ab11ba1fbd0c7d4cff9 + +2016-03-06 14:38 +0000 [d2eb65f71e] George Joseph + + * res_pjsip: Strip spaces from items parsed from comma-separated lists + + Configurations like "aors = a, b, c" were either ignoring everything after "a" + or trying to look up " b". Same for mailboxes, ciphers, contacts and a few + others. + + To fix, all the strsep(©, ",") calls have been wrapped in ast_strip. To + facilitate this, ast_strip, ast_skip_blanks and ast_skip_nonblanks were + updated to handle null pointers. + + In some cases, an ast_strlen_zero() test was added to skip consecutive commas. + + There was also an attempt to ast_free an ast_strdupa'd string in + ast_sip_for_each_aor which was causing a SEGV. I removed it. + + Although this issue was reported for realtime, the issue was in the res_pjsip + modules so all config mechanisms were affected. + + ASTERISK-25829 #close + Reported-by: Mateusz Kowalski + + Change-Id: I0b22a2cf22a7c1c50d4ecacbfa540155bec0e7a2 + +2016-03-07 02:02 +0000 [f690c105f3] Rodrigo Ramírez Norambuena + + * res_odbc_transaction: fix some format tab + + Change-Id: I265e4ac47c629c9a63dd86b59df82a7ab3c64384 + +2016-02-17 22:58 +0000 [0ec9fe5421] Rodrigo Ramírez Norambuena + + * main/cli.c: Refactor function to print seconds formatted + + Refactor and created function ast_cli_print_timestr_fromseconds to print + seconds formatted: year(s) week(s) day(s) hour(s) second(s) + + This function now is used in addons/cdr_mysql.c,cdr_pgsql.c, main/cli.c, + res_config_ldap.c, res_config_pgsql.c. + + Change-Id: Ibeb8634102cd11d3f8623398b279cb731bcde36c + +2016-03-04 20:37 +0000 [471ff375fd] George Joseph + + * install_prereq: Add packages for bundled pjproject + + RedHat/CentOS needs python-devel + Debian/Ubuntu needs automake, libsrtp-dev and python-dev + + Ubuntu also needed libncurses5-dev for cmenuselect so while not + needed for pjproject, I adedd it anyway. + + Change-Id: Idf5fa16e2d87c687439621507e122cb9461d7089 + +2016-02-24 17:25 +0000 [2b9849625c] George Joseph + + * res_pjsip_caller_id: Anonymize 'From' when caller id presentation is prohibited + + Per RFC3325, the 'From' header is now anonymized on outgoing calls when + caller id presentation is prohibited. + + TID = trust_id_outbound + PRO = Set(CALLERID(pres)=prohib) + USR = endpoint/from_user + DOM = endpoint/from_domain + PAI = YES(privacy=off), NO(not sent), PRI(privacy=full) (assumes send_pai=yes) + + Conditions |Result + --------------------|---------------------------------------------------- + TID PRO USR DOM |PAI FROM + --------------------|---------------------------------------------------- + Y Y abc def.ghi |PRI "Anonymous" + Y Y abc |PRI "Anonymous" + Y Y def.ghi |PRI "Anonymous" + Y Y |PRI "Anonymous" + + Y N abc def.ghi |YES + Y N abc |YES > + Y N def.ghi |YES "Caller Name" @def.ghi> + Y N |YES "Caller Name" @> + + N Y abc def.ghi |NO "Anonymous" + N Y abc |NO "Anonymous" + N Y def.ghi |NO "Anonymous" + N Y |NO "Anonymous" + + N N abc def.ghi |YES + N N abc |YES > + N N def.ghi |YES "Caller Name" @def.ghi> + N N |YES "Caller Name" @> + + ASTERISK-25791 #close + Reported-by: Anthony Messina + + Change-Id: I2c82a5ca1413c2c00fb62ea95b0ae8e97af54dc9 + +2016-03-03 17:34 +0000 [37472f7398] George Joseph + + * third_party/Makefile.rules: Replace unsupported != operator with $(shell ...) + + Apparently the != operator is fairly new so I've replaced it with + the old $(shell ...) syntax. + + Change-Id: I16b2e1878a4f91e7e9740abd427f9639f933c479 + Reported-by: Richard Mudgett + +2016-01-23 15:50 +0000 [195100e770] George Joseph + + * loader: Retry dlopen when loading fails + + Although we use the RTLD_LAZY flag when calling dlopen + the first time on a module, this only defers resolution + for function calls. Pointer references to functions are + determined at link time so dlopen expects them to be there. + Since we don't cross-module link, pointers to functions + in other modules won't be available and dlopen will fail. + + Doing a "hardened" build also causes problems because it + typically sets "-z now" on the ld command line which + overrides RTLD_LAZY at run time. + + If the failing module isn't a GLOBAL_SYMBOLS module, then + dlopen will be called again after all the GLOBAL_SYMBOLS + modules have been loaded and they'll eventually resolve. + + If the calling module IS a GLOBAL_SYMBOLS module itself + and a third module depends on it, then there's an issue + because the second time through the dlopen loop, + GLOBAL_SYMBOLS modules aren't given any special treatment + and since the order in which dlopen is called isn't + deterministic, the dependent may again be tried before the + module it needs is loaded. + + Simple solution: Save modules that fail load_resource + because of a dlopen error in a list and retry them + immediately after the first pass. Keep retrying until + the failed list is empty or we reach a #defined max + retries. Error messages are suppressed until the final + pass which also gets rid of those confusing error messages + about module failures that are later corrected. + + Change-Id: Iddae1d97cd2f00b94e61662447432765755f64bb + +2016-03-01 16:18 +0000 [15c5743ac1] Kevin Harwell + + * bridge.c: Crash during attended transfer when missing a local channel half + + It's possible for the transferer channel to get hung up early during the + attended transfer process. For instance, a phone may send a "bye" immediately + upon receiving a sip notify that contains a sip frag 100 (I'm looking at you + Jitsi). When this occurs a race begins between the transferer being hung up + and completion of the transfer code. + + If the channel hangs up too early during a transfer involving stasis bridging + for instance, then when the created local channel goes to look up its swap + channel (and associated datastore) it can't find it (since it is no longer in + the bridge) thus it fails to enter the stasis application. Consequently, the + created local channel(s) hang up as well. If the timing is just right then the + bridging code attempts to add the message link with missing local channel(s). + Hence the crash. + + Unfortunately, there is no great way to solve the problem of the unexpected + "bye". While we can't guarantee we won't receive an early hangup, and in this + case still fail to enter the stasis application, we can make it so asterisk + does not crash. + + This patch does just that by locking the local channel structure, checking + that the local channel's peer has not been lost, and then continuing. This + keeps the local channel's peer from being ripped out from underneath it by + the local/unreal hangup code while attempting to set the stasis message link. + + ASTERISK-25771 + + Change-Id: Ie6d6061e34c7c95f07116fffac9a09e5d225c880 + +2016-03-01 18:08 +0000 [0d2ccbca62] Kevin Harwell + + * res_pjsip_refer.c: Delay sending the initial SIP Notify with frag 100 + + During the transfer process, some phones (okay it was the Jitsi softphone, + but maybe others are out there) send a "bye" immediately after receiving a + SIP Notify. When a "bye" is received early for some types of transfers the + transferer channel may no longer be available during late stage transfer + processing. + + For instance, during an attended transfer involving stasis bridging at one + point the created local channel looks for an associated swap channel in + order to retrieve the stasis application name. If the transferer has hung + up then the local channel will fail to find it. The local channel then has + no way to know which stasis app to enter, so it fails and hangs up as well. + Thus the transfer does not complete as expected. + + This patch delays the sending of the initial notify in order to give the + transfer process enough time to gather the necessary data for a successful + transfer. + + ASTERISK-25771 + + Change-Id: I09cfc9a5d6ed4c007bc70625e0972b470393bf16 + +2016-03-03 08:26 +0000 [6af7fc4c37] Joshua Colp + + * res_pjsip_dtmf_info: NULL terminate the message body. + + PJSIP does not ensure that when printing the message body the + buffer will be NULL terminated. This is problematic when searching + for the signal and duration values of the DTMF. + + This change ensures the buffer is always NULL terminated. + + Change-Id: I52653a1a60c93092d06af31a27408d569cc98968 + +2016-03-01 20:03 +0000 [b8b7c2e428] George Joseph + + * alembic: Fix downgrade and tweak for sqlite + + Downgrade had a few issues. First there was an errant 'update' statement in + add_auto_dtmf_mode that looks like it was a copy/paste error. Second, we + weren't cleaning up the ENUMs so subsequent upgrades on postgres failed + because the types already existed. + + For sqlite... sqlite doesn't support ALTER or DROP COLUMN directly. + Fortunately alembic batch_operations takes care of this for us if we + use it so the alter and drops were converted to use batch operations. + + Here's an example downgrade: + + with op.batch_alter_table('ps_endpoints') as batch_op: + batch_op.drop_column('tos_audio') + batch_op.drop_column('tos_video') + batch_op.add_column(sa.Column('tos_audio', yesno_values)) + batch_op.add_column(sa.Column('tos_video', yesno_values)) + batch_op.drop_column('cos_audio') + batch_op.drop_column('cos_video') + batch_op.add_column(sa.Column('cos_audio', yesno_values)) + batch_op.add_column(sa.Column('cos_video', yesno_values)) + + with op.batch_alter_table('ps_transports') as batch_op: + batch_op.drop_column('tos') + batch_op.add_column(sa.Column('tos', yesno_values)) + # Can't cast integers to YESNO_VALUES, so dropping and adding is required + batch_op.drop_column('cos') + batch_op.add_column(sa.Column('cos', yesno_values)) + + Upgrades from base to head and downgrades from head to base were tested + repeatedly for postgresql, mysql/mariadb, and sqlite3. + + Change-Id: I862b0739eb3fd45ec3412dcc13c2340e1b7baef8 + +2016-03-02 15:55 +0000 [7b71bca8a4] George Joseph + + * config_transport: Fix objects returned by ast_sip_get_transport_states + + ast_sip_get_transport_states was returning a container of internal_state + objects instead of ast_sip_transport_state objects. This was causing + transport lookups to fail, most noticably in res_pjsip_nat, which + couldn't find the correct external addresses. This was causing contacts + to go out with internal ip addresses. + + ASTERISK-25830 #close + Reported-by: Sean Bright + + Change-Id: I1aee6a2fd46c42e8dd0af72498d17de459ac750e + +2016-03-02 11:17 +0000 [0a3f0e85ac] Scott Griepentrog + + * CHAOS: cleanup possible null vars on msg alloc failure + + In message.c, if msg_alloc fails to init the string field, + vars may be null, so use a null tolerant cleanup. + + In res_pjsip_messaging.c, if msg_data_create fails, mdata + will be null, so use a null tolerant cleanup. + + ASTERISK-25323 + + Change-Id: Ic2d55c2c3750d5616e2a05ea92a19c717507ff56 + +2016-03-02 09:34 +0000 [60aa871be3] Scott Griepentrog + + * CHAOS: prevent crash on failed strdup + + This patch avoids crashing on a null pointer + if the strdup() allocation fails. + + ASTERISK-25323 + + Change-Id: I3f67434820ba53b53663efd6cbb42749f4f6c0f5 + +2016-02-29 18:11 +0000 [0bdbf0d882] Richard Mudgett + + * func_callerid.c: Update REDIRECTING reason documentation. + + Change-Id: I6e8d39b0711110a4bceafa652e58b30465e28386 + +2016-02-26 18:57 +0000 [25de01f301] Richard Mudgett + + * SIP diversion: Fix REDIRECTING(reason) value inconsistencies. + + Previous chan_sip behavior: + + Before this patch chan_sip would always strip any quotes from an incoming + reason and pass that value up as the REDIRECTING(reason). For an outgoing + reason value, chan_sip would check the value against known values and + quote any it didn't recognize. Incoming 480 response message reason text + was just assigned to the REDIRECTING(reason). + + Previous chan_pjsip behavior: + + Before this patch chan_pjsip would always pass the incoming reason value + up as the REDIRECTING(reason). For an outgoing reason value, chan_pjsip + would send the reason value as passed down. + + With this patch: + + 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 silly and 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. + + * Added missing malloc() NULL return check in res_pjsip_diversion.c + set_redirecting_reason(). + + * Fixed potential read from a stale pointer in res_pjsip_diversion.c + add_diversion_header(). The reason string needed to be copied into the + tdata memory pool to ensure that the string would always be available. + Otherwise, if the reason string returned by reason_code_to_str() was a + user's reason string then the string could be freed later by another + thread. + + Change-Id: Ifba83d23a195a9f64d55b9c681d2e62476b68a87 + +2016-02-26 18:54 +0000 [8c8ef4efb0] Richard Mudgett + + * res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason. + + Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd + +2016-02-29 20:41 +0000 [75ec137e91] Richard Mudgett + + * res_pjsip_send_to_voicemail.c: Fix off-nominal double channel unref. + + * Fix double unref of other_party channel in off nominal path. + + * This is unlikely to be a real problem. However, for safety, + in handle_incoming_request() keep the datastore ref with the + other_party channel ref until we are finished with the other_party + channel. + + Change-Id: I78f22547bf0bb99fb20814ceab75952bd857f821 + +2016-01-18 21:54 +0000 [3173e91bab] George Joseph + + * build-system: Allow building with static pjproject + + Background here: + http://lists.digium.com/pipermail/asterisk-dev/2016-January/075266.html + + From CHANGES: + * 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. + + Building: + + All you have to do is include the --with-pjproject-bundled option on + the ./configure command line (and remove any existing --with-pjproject + option if specified). Everything else is automatic. + + Behind the scenes: + + The top-level Makefile was modified to include 'third-party' in the + list of MOD_SUBDIRS. + + The third-party directory was created to contain any third party + packages that may be needed in the future. Its Makefile automatically + iterates over any subdirectories passing on targets. + + The third-party/pjproject directory was created to house the pjproject + source distribution. Its Makefile contains targets to download, patch + configure, generate dependencies, compile libs, apps and python bindings, + sanitized build.mak and generate a symbols list. + + When bootstrap.sh is run, it automatically includes the configure.m4 + file in third-party/pjproject. This file has a macro to download and + conifgure pjproject and get and set PJPROJECT_INCLUDE, PJPROJECT_DIR + and PJPROJECT_BUNDLED. It also tests for the capabilities like + PJ_TRANSACTION_GRP_LOCK by parsing preprocessor output as opposed to + trying to compile. Of course, bootstrap.sh is only run once and the + configure file is incldued in the patch. + + When configure is run with the new options, the macro in configure.m4 + triggers the download, patch, conifgure and tests. No compilation is + performed at this time. The downloaded tarball is cached in /tmp so + it doesn't get downloaded again on a distclean. + + When make is run in the top-level Asterisk source directory, it will + automatically descend all the subdirectories in third_party just as it + does for addons, apps, etc. The top-level Makefile makes sure that + the 'third-party' is built before 'main' so that dependencies from the + other directories are built first. + + When main does build, a new shared library (libasteriskpj) is created that + links statically to the pjproject .a files and exports all their symbols. + The asterisk binary links to that, just as it does with libasteriskssl. + + When Asterisk is installed, the pjsua and pjsystest apps, and the pjproject + python bindings are installed in ASTDATADIR/third-party/pjproject. This + will facilitate testing, including running the testsuite which will be + updated to check that directory for the pjsua module ahead of the system + python library. + + Modules should continue to depend on pjproject if they use pjproject APIs + directly. They should not care about the implementation. No changes to any + res_pjsip modules were made. + + Change-Id: Ia7a60c28c2e9ba9537c5570f933c1ebcb20a3103 + +2016-02-22 16:59 +0000 [2dae4a1ccf] Richard Mudgett + + * chan_sip.c: Fix T.38 issues caused by leaving a bridge. + + chan_sip could not handle AST_T38_TERMINATED frames being sent to it when + the channel left the bridge. The action resulted in overlapping outgoing + reINVITEs. The testsuite tests/fax/sip/directmedia_reinvite_t38 was not + happy. + + * Force T.38 to be remembered as locally bridged. Now when the channel + leaves the native RTP bridge after T.38, the channel remembers that it has + already reINVITEed the media back to Asterisk. It just needs to terminate + T.38 when the AST_T38_TERMINATED arrives. + + * Prevent redundant AST_T38_TERMINATED from causing problems. Redundant + AST_T38_TERMINATED frames could cause overlapping outgoing reINVITEs if + they happen before the T.38 state changes to disabled. Now the T.38 state + is set to disabled before the reINVITE is sent. + + ASTERISK-25582 #close + + Change-Id: I53f5c6ce7d90b3f322a942af1a9bcab6d967b7ce + +2016-02-18 18:27 +0000 [bf29a4e2e6] Richard Mudgett + + * res_pjsip_t38.c: Back out part of an earlier fix attempt. + + This backs out item 4 of the 4875e5ac32f5ccad51add6a4216947bfb385245d + commit. Item 4 added the t38_bye_supplement. Unfortunately, the frame + that it puts into the bridge may or may not be processed by the time the + bridged peer is kicked out of the bridge. If it is processed then all is + well. However, if it is not processed then that channel is stuck in fax + mode until it hangs up or maybe if it joins another bridge for T.38 + faxing. + + ASTERISK-25582 + + Change-Id: Ib20a03ecadf1bf8a0dcadfadf6c2f2e60919a9f7 + +2016-02-22 13:54 +0000 [c7d45b84f9] Richard Mudgett + + * bridge core: Add owed T.38 terminate when channel leaves a bridge. + + The channel is now going to get T.38 terminated when it leaves the + bridging system and the bridged peers are going to get T.38 terminated as + well. + + ASTERISK-25582 + + Change-Id: I77a9205979910210e3068e1ddff400dbf35c4ca7 + +2016-02-19 16:01 +0000 [0e296563d7] Richard Mudgett + + * channel api: Create is_t38_active accessor functions. + + ASTERISK-25582 + + Change-Id: I69451920b122de7ee18d15bb231c80ea7067a22b + +2016-02-19 19:06 +0000 [86f7336c91] Richard Mudgett + + * bridge_channel: Don't settle owed events on an optimization. + + Local channel optimization could cause DTMF digits to be duplicated. + Pending DTMF end events would be posted to a bridge when the local channel + optimizes out and is replaced by the channel further down the chain. When + the real digit ends, the channel would get another DTMF end posted to the + bridge. + + A -- LocalA;1/n -- LocalA;2/n -- LocalB;1 -- LocalB;2 -- B + + 1) LocalA has the /n flag to prevent optimization. + 2) B is sending DTMF to A through the local channel chain. + 3) When LocalB optimizes out it can move B to the position of LocalB;1 + 4) Without this patch, when B swaps with LocalB;1 then LocalB;1 would + settle an owed DTMF end to the bridge toward LocalA;2. + 5) When B finally ends its DTMF it sends the DTMF end down the chain. + 6) Without this patch, A would hear the DTMF digit end when LocalB + optimizes out and when B ends the original digit. + + ASTERISK-25582 + + Change-Id: I1bbd28b8b399c0fb54985a5747f330a4cd2aa251 + +2016-02-22 12:15 +0000 [128c96456c] Richard Mudgett + + * channel.c: Route all control frames to a channel through the same code. + + Frame hooks can conceivably return a control frame in exchange for an + audio frame inside ast_write(). Those returned control frames were not + handled quite the same as if they were sent to ast_indicate(). Now it + doesn't matter if you use ast_write() to send an AST_FRAME_CONTROL to a + channel or ast_indicate(). + + ASTERISK-25582 + + Change-Id: I5775f41421aca2b510128198e9b827bf9169629b + +2016-02-25 15:13 +0000 [4422905218] George Joseph + + * sorcery: Refactor create, update and delete to better deal with caches + + The ast_sorcery_create, update and delete function have been refactored + to better deal with caches and errors. + + The action is now called on all non-caching wizards first. If ANY succeed, + the action is called on all caching wizards and the observers are notified. + This way we don't put something in the cache (or update or delete) before + knowing the action was performed in at least 1 backend and we only call the + observers once even if there were multiple writable backends. + + ast_sorcery_create was never adding to caches in the first place which + was preventing contacts from getting added to a memory_cache when they + were created. In turn this was causing memory_cache to emit errors if + the contact was deleted before being retrieved (which would have + populated the cache). + + ASTERISK-25811 #close + Reported-by: Ross Beer + + Change-Id: Id5596ce691685a79886e57b0865888458d6e7b46 +2016-02-25 15:39 +0000 [acf329a3c7] George Joseph + + * res_pjsip_mwi: Turn some NOTICEs and WARNINGs into debug 1s. + + There are a few cases where we're emitting notices or warnings + for things that really need neither, like a client retrying to subscribe + to mwi when they're not conifgured for it. They get a 404 so there's no + need for non-debug messages. + + Change-Id: I05e38a7ff6c2f2521146f4be6a79731b9864e61f +2016-02-25 14:17 +0000 [7e3e1ddf7e] George Joseph + + * res_sorcery_memory_cache: Fix SEGV in some CLI commands + + A few of the CLI commands weren't checking for enough arguments + and were SEGVing. + + Change-Id: Ie6494132ad2fe54b4f014bcdc112a37c36a9b413 + +2016-02-22 19:31 +0000 [803a2fc2d5] Richard Mudgett + + * rtp_engine.h: Remove extraneous semicolons. + + Change-Id: Ib462633d396fa941379dfef648dcd2245e350084 + +2016-02-23 14:57 +0000 [886ee09471] Richard Mudgett + + * chan_sip.c: Suppress T.38 SDP c= line if addr is the same. + + Use the correct comparison function since we only care if the address + without the port is the same. + + Change-Id: Ibf6c485f843a1be6dee58a47b33d81a7a8cbe3b0 + +2016-02-16 08:14 +0000 [b7970cabfa] Christof Lauber + + * res_config_sqlite3: Fix crashes when reading peers from sqlite3 tables + + Introduced realloaction of ast_str buf in sqlite3_escape functions in case + the returned buffer from threadstorage was actually too small. + + Change-Id: I3c5eb43aaade93ee457943daddc651781954c445 + +2016-02-11 11:01 +0000 [ba8adb4ce3] George Joseph + + * res_pjsip/config_transport: Allow reloading transports. + + The 'reload' mechanism actually involves closing the underlying + socket and calling the appropriate udp, tcp or tls start functions + again. Only outbound_registration, pubsub and session needed work + to reset the transport before sending requests to insure that the + pjsip transport didn't get pulled out from under them. + + In my testing, no calls were dropped when a transport was changed + for any of the 3 transport types even if ip addresses or ports were + changed. To be on the safe side however, a new transport option was + added (allow_reload) which defaults to 'no'. Unless it's explicitly + set to 'yes' for a transport, changes to that transport will be ignored + on a reload of res_pjsip. This should preserve the current behavior. + + Change-Id: I5e759850e25958117d4c02f62ceb7244d7ec9edf + +2016-02-19 04:30 +0000 [c00082329e] Walter Doekes + + * chan_sip: Optionally supply fromuser/fromdomain in SIP dial string. + + Previously you could add [!dnid] to the SIP dial string to alter the To: + header. This change allows you to alter the From header as well. + + SIP dial string extra options now look like this: + + [![touser[@todomain]][![fromuser][@fromdomain]]] + + INCOMPATIBLE CHANGE: If you were using an exclamation mark in your To: + header, that is no longer possible. + + ASTERISK-25803 #close + + Change-Id: I2457e9ba7a89eb1da22084bab5a4d4328e189db7 + +2016-02-07 17:34 +0000 [f8767a8804] George Joseph + + * res_pjproject: Add ability to map pjproject log levels to Asterisk log levels + + Warnings and errors in the pjproject libraries are generally handled by + Asterisk. In many cases, Asterisk wouldn't even consider them to be warnings + or errors so the messages emitted by pjproject directly are either superfluous + or misleading. A good exampe of this are the level-0 errors pjproject emits + when it can't open a TCP/TLS socket to a client to send an OPTIONS. We don't + consider a failure to qualify a UDP client an "ERROR", why should a TCP/TLS + client be treated any differently? + + A config file for res_pjproject has bene added (pjproject.conf) and a new + log_mappings object allows mapping pjproject levels to Asterisk levels + (or nothing). The defaults if no pjproject.conf file is found are the same + as those that were hard-coded into res_pjproject initially: 0,1 = LOG_ERROR, + 2 = LOG_WARNING, 3,4,5 = LOG_DEBUG + + Change-Id: Iba7bb349c70397586889b8f45b8c3d6c6c8c3898 + +2016-02-18 10:55 +0000 [14886643c6] Alexei Gradinari + + * res_pjsip_outbound_publish: Fix processing 412 response + + When Asterisk receives a 412 (Conditional Request Failed) response + it has to recreate publish session. + There is bug in res_pjsip_outbound_publish.c + The function sip_outbound_publish_client_alloc is called with wrong object + while processing 412 (Conditional Request Failed) response. + This patch fixes it. + + ASTERISK-25229 #close + + Change-Id: I3b62f2debf6bb1e5817cde7b13ea39ef2bf14359 + +2016-02-18 11:15 +0000 [8055d080cd] Mark Michelson + + * Fix failing threadpool_auto_increment test. + + The threadpool_auto_increment test fails infrequently for a couple of + reasons + * The threadpool listener was notified of fewer tasks being pushed than + were actually pushed + * The "was_empty" flag was set to an unexpected value. + + The problem is that the test pushes three tasks into the threadpool. + Test expects the threadpool to essentially gather those three tasks, and + then distribute those to the threadpool threads. It also expects that as + the tasks are pushed in, the threadpool listener is alerted immediately + that the tasks have been pushed. In reality, a task can be distributed + to the threadpool threads quicker than expected, meaning that the + threadpool has already emptied by the time each subsequent task is + pushed. In addition, the internal threadpool queue can be delayed so + that the threadpool listener is not alerted that a task has been pushed + even after the task has been executed. + + From the test's point of view, there's no way to be able to predict + exactly the order that task execution/listener notifications will occur, + and there is no way to know which listener notifications will indicate + that the threadpool was previously empty. + + For this reason, the test has been updated to only check the things it + can check. It ensures that all tasks get executed, that the threads go + idle after the tasks are executed, and that the listener is told the + proper number of tasks that were pushed. + + Change-Id: I7673120d74adad64ae6894594a606e102d9a1f2c + +2016-02-17 13:30 +0000 [30a49b8a6a] Richard Mudgett + + * cel.c: Fix mismatch in ast_cel_track_event() return type. + + The return type of ast_cel_track_event() is not large enough to return all + 64 potential bits of the event enable mask. Fortunately, the defined CEL + events do not really need all 64 bits and the return value is only used to + determine if the requested CEL event is enabled. + + * Made the ast_cel_track_event() return 0 or 1 only so the return value + can fit inside an int type instead of zero or a truncated 64 bit non-zero + value. + + Change-Id: I783d932320db11a95c7bf7636a72b6fe2566904c + +2016-02-16 23:37 +0000 [15aeb78c66] Rodrigo Ramírez Norambuena + + * app_queue: fix Calculate talktime when is first call answered + + Fix calculate of average time for talktime is wrong when is completed the + first call beacuse the time for talked would be that call. + + ASTERISK-25800 #close + + Change-Id: I94f79028935913cd9174b090b52bb300b91b9492 + +2016-02-16 16:37 +0000 [62282bb8ce] George Joseph + + * res_odbc: Fix exports.in for missing symbols + + res_odbc.exports.in was missing a few symbols. + Changed to wildcards. + + Change-Id: Ieadd76df24e43ea92577f651d478a0f7b742c30c + +2016-02-16 12:20 +0000 [49203628f9] George Joseph + + * res_statsd: Fix exports.in for missing symbols + + res_statsd.export.in was missing the _va variations of the log + functions causing Asterisk to crash in res_pjsip if OPTIONAL_API + wasn't enabled. + + ASTERISK-25727 #close + Reported-by: Gergely Dömsödi + + Change-Id: I395729f9f51bdd33c5ca757f5f96ebedad74077b + +2016-02-15 21:31 +0000 [4f08e9fb64] George Joseph + + * res_pjsip_config_wizard: Add command to export primitive objects + + 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. + + ASTERISK-24919 #close + Reported-by: Ray Crumrine + + Change-Id: Ica2a5f494244b4f8345b0437b16d06aa0484452b + +2016-02-15 15:37 +0000 [be811c4be1] George Joseph + + * res_pjsip_caller_id: Fix segfault when replacing rpid or pai header + + If the PJSIP_HEADER dialplan function adds a PAI or RPID header and send_rpid + or send_pai is set, res_pjsip_caller_id attemps to retrieve, parse and modify + the header added by the dialplan function. Since the header added by the + dialplan function is generic string, there are no virtual functions to parse + the uri and we get a segfault when we try. Since the modify, was really only + an overwrite, we now just delete the old header if it was type PJSIP_H_OTHER + and recreate it. + + This raises a question for another time though: What should happen with + duplicate headers? Right now res_pjsip_header_funcs doesn't check for dups + so if it's session supplement is loaded after res_pjsip_caller_id's (or any + other module that adds headers), there'll be dups in the message. + + ASTERISK-25337 #close + + Change-Id: I5e296b52d30f106b822c0eb27c4c2b0e0f71c7fa + +2016-02-15 13:08 +0000 [13b6c02945] Mark Michelson + + * Fix creation race of contact_status structures. + + It is possible when processing a SIP REGISTER request to have two + threads end up creating contact_status structures in sorcery. + contact_status is created using a "find or create" function. If two + threads call into this at the same time, each thread will fail to find + an existing contact_status, and so both will end up creating a new + contact status. + + During testing, we would see sporadic failures because the + PJSIP_CONTACT() dialplan function would operate on a different + contact_status than what had been updated by res_pjsip/pjsip_options. + + The fix here is two-fold: + 1) The "find or create" function for contact_status now has a lock + around the entire operation. This way, if two threads attempt the + operation simultaneously, the first to get there will create the object, + and the second will find the object created by the first thread. + + 2) res_sorcery_memory has had its create callback updated so that it + will not allow for objects with duplicate IDs to be created. + + Change-Id: I55b1460ff1eb0af0a3697b82d7c2bac9f6af5b97 + +2016-02-15 12:52 +0000 [5c400a0fed] Joshua Colp + + * res_pjsip_pubsub: Move where the subscription is stored to after initialized. + + A problem arose when testing the AMI subscription listing actions where it + was possible for a subscription that had not been fully initialized to be + listed. This was problematic as the underlying listing code would crash. + + This change makes it so the subscription tree is fully set up before it is + added to the list of subscriptions. This ensures that when the listing actions + get the subscription it is valid. + + ASTERISK-25738 #close + + Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48 + +2016-02-09 17:34 +0000 [b37555cc94] George Joseph + + * res_pjsip: Refactor load_module/unload_module + + load_module was just too hairy with every step having to clean up all + previous steps on failure. + + Some of the pjproject init calls have now been moved to a separate + load_pjsip function and the unload_pjsip function was enhanced to clean + up everything if an error happened at any stage of the load process. + + In the process, a bunch of missing pj_shutdowns, serializer_pool_shutdowns + and ast_threadpool_shutdowns were also corrected. + + Change-Id: I5eec711b437c35b56605ed99537ebbb30463b302 + +2016-02-09 22:42 +0000 [c4d9f46878] Badalyan Vyacheslav + + * Resources/res_phoneprov: fix memory leak and heap-use-after-free + + * heap-use-after-free happens when we free "cfg" + but then use "value" which refers to it + + * A memory leak occurs because in some cases + it is not released "defaults" + + ASTERISK-25721 #close + Reported by: Badalyan Vyacheslav + Tested by: Badalyan Vyacheslav + + Change-Id: I3807d3f4726df6864430ec144cf6265d3f538469 + +2016-02-11 11:21 +0000 [e5fd972d24] Etienne Lessard (license #6394) + + * func_iconv: Ensure output strings are properly terminated. + + ASTERISK-25272 #close + Reported by: Etienne Lessard + patches: + AST-25272.patch submitted by Etienne Lessard (license #6394) + + Change-Id: Id75ad202300960a1e91afe15e319d992936ecc17 + +2016-02-10 16:16 +0000 [168c18737f] George Joseph + + * res_pjsip: Handle pjsip_dlg_create_uas deprecation + + Pjproject has deprecated pjsip_dlg_create_uas in 2.5 and replaced it with + pjsip_dlg_create_uas_and_inc_lock which, as the name implies, automatically + increments the lock on the returned dialog. To account for this, configure.ac + now detects the presence of pjsip_dlg_create_uas_and_inc_lock and res_pjsip.c + has an #ifdef HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK to decide whether to use + the original call or the new one. If the new one was used, the ref count is + decremented before returning. + + ASTERISK-25751 #close + Reported-by Josh Colp + + Change-Id: I1be776b94761df03bd0693bc7795a75682615ca8 + +2016-02-09 20:13 +0000 [fd668670b5] Rodrigo Ramírez Norambuena + + * res_config_pgsql: Show error message in reload if not connected. + + Change-Id: I9290115a1aaadb589eb1d02eaeb502eec01b31fa + +2016-02-09 23:40 +0000 [a23d01e943] Badalyan Vyacheslav + + * Build: Added testing compiler to support the system sanitizes + + In older versions of the compiler was not sanitizes. + Compilers other than GCC can not support the Usan and TSAN + or have other options for *FLAGS. + + ASTERISK-25767 #close + Reported by: Badalyan Vyacheslav + Tested by: Badalyan Vyacheslav + + Change-Id: Iefce6608221fa87884b82ae3cb5649b7b1804916 + +2016-02-09 20:57 +0000 [c7186c7f0a] Badalyan Vyacheslav + + * Build: Fix menuselect USAN conflicts + + USAN can be used together with other sanitizers. + + Reported by: Badalyan Vyacheslav + Tested by: Badalyan Vyacheslav + + Change-Id: I3bffa350d70965c3026651dba3a12414d0aaa45f + +2016-02-09 14:21 +0000 [68643f83cd] Corey Farrell + + * Simplify and fix conditional in FD_SET. + + FD_SET contains a conditional statement to protect against buffer + overruns. The statement was overly complicated and prevented use + of the last array element of ast_fdset. We now just verify the fd + is less than ast_FDMAX. + + Change-Id: I41895c0b497b052aef5bf49d75c817c48b326f40 + +2016-02-09 07:11 +0000 [e40fddbeb5] Joshua Colp + + * tests/test_sorcery_memory_cache_thrash: Improve termination process. + + When terminating the threads thrashing a sorcery memory cache each + would be told to stop and then we would wait on them. During at + least one thrashing test this was problematic due to the specific + usage pattern in use. It would take some time for termination of the + thread to occur. + + This would occur due to contention between the threads retrieving + and the threads updating the cache. As the retrieving threads are + given priority it may be some time before the updating threads + are able to proceed. + + This change makes it so all threads are told to stop and then each + are joined to ensure they stop. This way all the threads should + stop at around the same time instead of waiting for one to stop, + the next to stop, then the next, and so on. As a result of this + the execution time for each thrash test is much closer to their + expected value than previously seen as well. + + Change-Id: I04a53470b0ea4170b8819180b0bd7475f3642827 +2016-01-29 17:56 +0000 [bbf3ace682] George Joseph + + * res_pjsip: Fix infinite recursion when loading transports from realtime + + Attempting to load a transport from realtime was forcing asterisk into an + infinite recursion loop. The first thing transport_apply did was to do a + sorcery retrieve by id for an existing transport of the same name. For files, + this just returns the previous object from res_sorcery_config's internal + container, if any. For realtime, the res_sourcery_realtime driver looks in the + database and finds the existing row but now it has to rehydrate it into a + sorcery object which means calling... transport_apply. And so it goes. + + The main issue with loading from realtime (apart from the loop) was that + transport stores structures and pointers directly in the ast_sip_transport + structure instead of the separate ast_transport_state structure. This patch + separates those items into the ast_sip_transport_state structure. The pattern + is roughly the same as res_pjsip_outbound_registration. + + Although all current usages of ast_sip_transport and ast_sip_transport_state + were modified to use the new ast_sip_get_transport_state API, the original + items are left in ast_sip_transport and kept updated to maintain ABI + compatability for third-party modules. They are marked as deprecated and + noted that they're now in ast_sip_transport_state. + + ASTERISK-25606 #close + Reported-by: Martin Moučka + + Change-Id: Ic7a836ea8e786e8def51fe3f8cce855ea54f5f19 + +2016-02-07 13:00 +0000 [72bf53eea5] Rodrigo Ramírez Norambuena + + * res_config_pgsql: Add message on cli failed command status + + In case failed of command "realtime show pgsql status" show a message the data + of connection to more clear information in error. + + Change-Id: Ia8e9e2400466606e7118f52a46e05df0719b6a29 + +2016-02-05 10:29 +0000 [b69729dde5] George Joseph + + * chan_misdn: Fix a few issues causing compile errors + + Change-Id: I54b48c24d7ca88ed80496fdfd142d08772a7ab98 + +2016-01-25 17:36 +0000 [1bc54aee80] Richard Mudgett + + * app_confbridge: Only use b_profile options from the conference. + + A user cannot set new bridge options after the conference is created by + the first user. Attempting to do so is documented as undefined behavior. + + This patch ensures that the bridge profile options used are from the + conference and not what a subsequent user may have tried to set. + + Change-Id: I1b6383eba654679e5739d5a8de98199cf074a266 + +2016-02-04 16:17 +0000 [3b426a8b09] Mark Michelson + + * Check for OpenSSL defines before trying to use them. + + The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior + to OpenSSL version 1.0.1. A recent commit attempts to, by default, set + these options, which can cause problems on systems with older OpenSSL + installations. + + This commit adds a configure script check for those defines and will not + attempt to make use of those if they do not exist. We will print a + warning urging the user to upgrade their OpenSSL installation if those + defines are not present. + + Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d +2016-02-03 14:25 +0000 [9b13ab6a63] George Joseph + + * pjsip/alembic: Add missing columns to system and registration + + ps_systems needed disable_tcp_switch + ps_registrations needed line and endpoint + + ASTERISK-25737 #close + + Change-Id: Iaf9c2d69e62243d9fa53104c28c5339c47d4ac19 + +2016-02-04 11:39 +0000 [82e2938fa8] Mark Michelson + + * res_stasis_device_state: Fix refcounting error. + + Device state subscription lifetimes were governed by when the + subscription was established and unsubscribed from. However, it is + possible that at the time of unsubscription, there could be device state + events still in flight. When those device state events occur, the device + state callback could attempt to dereference a freed pointer. Crash. + + This change ensures that the lifetime of the device state subscription + does not end until the underlying stasis subscription has confirmed that + its final message has been sent. + + Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2 + +2016-01-27 10:44 +0000 [d83dba7099] Sean Bright + + * res_rtp_asterisk: Allow ICE host candidates to be overriden + + During ICE negotiation the IPs of the local interfaces are sent to the remote + peer as host candidates. In many cases Asterisk is behind a static one-to-one + NAT, so these host addresses will be internal IP addresses. + + To help in hiding the topology of the internal network, this patch adds the + ability to override the host candidates by matching them against a + user-defined list of replacements. + + Change-Id: I1c9541af97b83a4c690c8150d19bf7202c8bff1f + +2016-02-03 12:05 +0000 [0de74fad55] Joshua Colp + + * AST-2016-001 http: Provide greater control of TLS and set modern defaults. + + This change exposes the configuration of various aspects of the TLS + support and sets the default to the modern standards. + + The TLS cipher is now set to the best values according to the + Mozilla OpSec team, different TLS versions can now be disabled, and + the cipher order can be forced to be that of the server instead of + the client. + + ASTERISK-24972 #close + + Change-Id: I0a10f2883f7559af5e48dee0901251dbf30d45b8 +2015-12-07 12:46 +0000 [e67b445e8d] Richard Mudgett + + * AST-2016-003 udptl.c: Fix uninitialized values. + + Sending UDPTL packets to Asterisk with the right amount of missing + sequence numbers and enough redundant 0-length IFP packets, can make + Asterisk crash. + + ASTERISK-25603 #close + Reported by: Walter Doekes + + ASTERISK-25742 #close + Reported by: Torrey Searle + + Change-Id: I97df8375041be986f3f266ac1946a538023a5255 +2015-09-28 17:07 +0000 [a877e0d94b] Richard Mudgett + + * AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow. + + Setting the sip.conf timert1 value to a value higher than 1245 can cause + an integer overflow and result in large retransmit timeout times. These + large timeout times hold system file descriptors hostage and can cause the + system to run out of file descriptors. + + NOTE: The default sip.conf timert1 value is 500 which does not expose the + vulnerability. + + * The overflow is now detected and the previous timeout time is + calculated. + + ASTERISK-25397 #close + Reported by: Alexander Traud + + Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290 +2016-02-03 14:07 +0000 [dcbedf9ab1] George Joseph + + * logging: Remove/fix some message annoyances + + test_dlinklists doesn't need to NOTICE everyone that every macro worked. + + res_phoneprov doesn't need to VERBOSE everyone that a phoneprov extension or + provider was registered. + + res_odbc was missing a newline at the end of one message. + + Change-Id: I6c06361518ef3711821795e535acd439782a995e + +2016-02-02 10:52 +0000 [6522361871] Alexei Gradinari License #5691 + + * res_sorcery_realtime: Fix regex regression. + + A regression was introduced where searching for realtime PJSIP objects + by regex by starting the regex with a leading "^" would cause no items + to be returned. + + This was due to a change which attempted to drop the requirement for a + leading "^" to be present due to how some CLI commands formulate their + regexes. However, the change, rather than simply eliminating the + requirement, caused any regexes that did begin with "^" to end up not + returning the expected results. + + This change fixes the problem by inspecting the regex and formulating + the realtime query differently depending on if it begins with "^". + + ASTERISK-25702 #close + Reported by Nic Colledge + + Patches: + realtime_retrieve_regex.patch submitted by Alexei Gradinari License #5691 + + Change-Id: I055df608a6e6a10732044fa737a9fe8dca602693 + +2016-02-02 04:05 +0000 [2a6f18cd55] Karsten Wemheuer + + * res_xmpp: Does not connect in component mode + + The module res_xmpp does not accept usernames in the form used in component + mode (XEP-0114). In component mode there is no @something in the name. + In component mode the connection is now not dropped anymore. + + If the xmpp server sends out a "stream" tag before handshake is finished, + the connection gets dropped in res_xmpp. Now this tag will be ignored and + the connection will be established. + + After connecting there will be an exchange of presence states. This does + not work as expected in component mode. The responsible function + "xmpp_pak_presence" is left before the states get sent out. Sending + presence states in component mode is now moved to the top of the function. + + ASTERISK-25735 #close + + Change-Id: I70e036f931c3124ebb2ad1e56f93ed35cfdd9d5c +2016-02-01 13:04 +0000 [40da6434c1] George Joseph + + * build_system: Fix some warnings highlighted by clang + + Fix some warnings found with clang. + + Change-Id: I5195b6189b148c2ee3ed4a19d015a6d4ef3e77bd + +2016-01-31 20:13 +0000 [52b29f9b4c] George Joseph + + * pjsip/alembic: Fix definition of qualify_timeout + + A recent commit set qualify_timeout to Decimal which isn't supported. + This path corrects it to Float. + + Change-Id: I038f5274ba8cb60f8518a5845ce448d49306aadf + +2016-01-29 07:39 +0000 [55a7367ad4] Stefan Engström + + * chan_sip.c: AMI & CLI notify methods get different values of asterisk's own ip. + + When I ask asterisk to send a SIP NOTIFY message to a sip peer using either a) + AMI action: SIPnotify or b) cli command: sip notify , I expect + asterisk to include the same value for its own ip in both cases a) and b), + but it seems a) produces a contact header like Contact: + whereas b) produces a contact header like + . 0.0.0.0:8060 is my udpbindaddr in sip.conf + + My guess is that manager_sipnotify should call + ast_sip_ouraddrfor(&p->sa, &p->ourip, p) the same way sip_cli_notify does, + because after applying this patch, both cases a) and b) produce + the contact header that I expect: + + Reported by: Stefan Engström + Tested by: Stefan Engström + + Change-Id: I86af5e209db64aab82c25417de6c768fb645f476 +2016-01-28 12:44 +0000 [d2397f028f] Richard Mudgett + + * config_options.c: Fix warning message wording. + + Change-Id: I915ea437936320393afde0e7552cf0a980a6b2e4 + +2016-01-25 17:34 +0000 [af6b15976d] Richard Mudgett + + * app_confbridge.c: Replace inlined code with existing function. + + Change-Id: Ida5594e9f8d7c1fc18eeb733a11f8fb96326da51 + +2016-01-25 16:05 +0000 [7932336a3d] Richard Mudgett + + * app_confbridge: Add ability to get the muted conference state. + + * 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. + + ASTERISK-20987 + Reported by: hristo + + Change-Id: I4076bd8ea1c23a3afd4f5833e9291b49a0c448b1 + +2016-01-26 17:59 +0000 [894045e7cf] Richard Mudgett + + * app_confbridge.c: Update CONFBRIDGE and CONFBRIDGE_INFO documentation. + + Change-Id: Ic1f9e22ba1f2ff3b3f5cb017c5ddcd9bd48eccc7 + +2016-01-25 15:48 +0000 [12c93e8f81] Richard Mudgett + + * app_confbridge: Make non-admin users join a muted conference muted. + + ASTERISK-20987 #close + Reported by: hristo + + Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38 + +2016-01-27 13:08 +0000 [f19bf7a321] George Joseph + + * res_pjsip: Add res_pjproject dependency to samples + + Since res_pjsip now depends on res_pjproject, this has been added to + basic-pbx modules.conf. + + Change-Id: I42826597d5e10f08e518208860c44c96e52f1b2d +2016-01-27 10:29 +0000 [c53903d447] George Joseph + + * build_system: Prevent goals needing makeopts from running when it's missing + + The Makefile only optionally includes makeopts so when goals like uninstall that + dont depend on anything else are run after a distclean, rules like + 'rm -f "$(DESTDIR)$(ASTMODDIR)/"*' get run as 'rm -f ""/*' which attempts + to remove everything in the root directory. + + Although there's a rule defined for makeopts which prints a message and does + an 'exit 1', since '-include makepopts' was specified (with the -), the exit + was ignored letting the rest of the rules run. + + This patch makes makeopts required unless the goal has the string 'clean' in it. + + ASTERISK-25730 #close + Reported-by: George Joseph + + Change-Id: I1bce59a7ea4f48e7a468e22b2abbb13c63417ac7 + +2016-01-25 09:35 +0000 [1dfd104a27] Joshua Colp + + * config: Allow options to register when documentation is unavailable. + + The config options framework is strict in that configuration options must + be documented unless XML documentation support is not available. In + practice this is useful as it ensures documentation exists however in + off-nominal cases this can cause strange problems. + + If it is expected that a config option has a non-zero or non-empty + default value but the config option documentation is unavailable + this reasonable expectation will not be met. This can cause obscure + crashes and weirdness depending on how the code handles it. + + This change tweaks the behavior to ensure that the config option + is still allowed to register, apply default values, and be set when + devmode is not enabled. If devmode is enabled then the option can + NOT be set. + + This also does not remove the initial documentation error message that + is output on load when registering the configuration option. + + ASTERISK-25725 #close + + Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8 + +2016-01-25 10:23 +0000 [a706ad44e6] Mark Michelson + + * Stasis: Use custom structure when setting variables. + + A recent change to queue channel variable setting to the Stasis control + queue caused a regression. When setting channel variables, it is + possible to give a NULL channel variable value in order to unset the + variable (i.e. remove it from the channel variable list). The change + introduced a call to ast_variable_new(), which is not tolerant of NULL + channel variable values. + + This new change switches from using ast_variable to using a custom + channel variable struct that is lighter weight and NULL value-tolerant. + + Change-Id: I784d7beaaa3c036ea936d103e7caf0bb1562162d + +2016-01-25 16:56 +0000 [289daca9e8] Rusty Newton + + * sounds/Makefile: Incremented core and extra sounds versions to 1.5 + + Core and extra sounds 1.5 was recently released! The tarballs contain + change descriptions however I figure more people will see this one so + I'll try to be a bit detailed. Approximately 60 sounds were moved from Extra + to Core for en, en_GB, fr and added for languages that didn't already + have Extra sound sets (it,ja,ru). + + In addition all of the English and Russian sounds have been completely + re-recorded. + + Sounds moved and added: + activated,added,all-circuits-busy-now,astcc-followed-by-pound + at-tone-time-exactly,call-forwarding,call-fwd-no-ans,call-fwd-on-busy + ,call-fwd-unconditional,calling,call-waiting,cancelled, + cannot-complete-as-dialed,check-number-dial-again,conf-full,de-activated + ,disabled,do-not-disturb,enabled,enter-num-blacklist,entr-num-rmv-blklist + ,extension,feature-not-avail-line,for,from-unknown-caller,goodbye,hello + ,if-correct-press,im-sorry,info-about-last-call,is,is-in-use,is-set-to + ,location,number,number-not-answering,num-was-successfully,one-moment-please + ,please-try-again,pls-hold-while-try,pls-try-call-later,pm-invalid-option + ,privacy-to-blacklist-last-caller,removed,simul-call-limit-reached + ,something-terribly-wrong,sorry,sorry-youre-having-problems,speed-dial + ,speed-dial-empty,telephone-number,time,to-call-this-number,to-extension + ,to-listen-to-it,to-rerecord-it,unidentified-no-callback,with,you-entered + ,your + + There were also a few random fixes here and there to file names for a few + of the languages. + + ASTERISK-25068 #close + + Change-Id: I2b594344ec585d7dfd922b40c1af43b1508828b3 +2016-01-25 16:51 +0000 [b073244c51] Mark Michelson + + * res_pjsip_pubsub: Prevent crash from AMI command on freed subscription. + + A test recently uncovered that running an ill-timed AMI command to show + inbound subscriptions could cause a crash since Asterisk will try to + operate on a freed subscription. + + The fix for this is to remove the subscription tree from the list of + subscriptions at the time that we are sending our final NOTIFY request + out. This way, as the subscription is in the process of dying, it is + inaccessible from AMI. + + Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23 + +2016-01-25 11:03 +0000 [830f8933c2] Corey Farrell + + * chan_sip: Fix buffer overrun in sip_sipredirect. + + sip_sipredirect uses sscanf to copy up to 256 characters to a stacked buffer + of 256 characters. This patch reduces the copy to 255 characters to leave + room for the string null terminator. + + ASTERISK-25722 #close + + Change-Id: Id6c3a629a609e94153287512c59aa1923e8a03ab + +2016-01-23 16:45 +0000 [f299dc0d76] Rodrigo Ramírez Norambuena + + * app_queue: Add Lastpause field of queue member + + Add time when started a the last pause for a queue member for + QueueMemberStatus ami event. + + Also show accumulate time in seconds when started a pause for a queue + member to CLI command 'queue show'. + + ASTERISK-16394 #close + + Change-Id: I4b12aa3b2efa8d02939db3e13712510b4879865c + +2016-01-23 12:34 +0000 [8c664da0ff] Rodrigo Ramírez Norambuena + + * app_queue: fix some tab format + + Change-Id: I2734392b131f1fb0949515d538f83f30fbc15d8c + +2016-01-23 11:41 +0000 [2fb45c7801] Rodrigo Ramírez Norambuena + + * cdr_pgsql.cl: REFACTOR Macro LENGTHEN_BUF + + Remove repeated code on macro of assigned buffer to SQL vars. + + Add table and connection name to log error message when is not possible + allocate memory. + + Change-Id: I1fbf37d286a032d38fdda72a9f736356956c9ffe + +2016-01-22 15:08 +0000 [959f7436cc] Mark Michelson + + * Stasis: Fix potential memory leak of control data. + + When queuing tasks onto the Stasis control queue, you can pass an + arbitrary data pointer and a function to free that data. All ARI + commands that use the Stasis control queue made the assumption that the + destructor function would be called in all paths, whether the task was + queued successfully or not. However, this was not correct. If a task was + queued onto a control structure that was already completed, the + allocated data would not be freed properly. + + This patch corrects this by making sure that all return paths call the + data destructor. + + Change-Id: Ibf06522094f8e5c4cce652537dc5d7222b1c4fcb + +2016-01-21 10:58 +0000 [a45eacebf3] Mark Michelson + + * Stasis: Use control queue to prevent crash. + + A crash occurred when attempting to set a channel variable on a channel + that had already been hung up. This is because there is a small window + between when a control is grabbed and when the channel variable is set + that the channel can be hung up. + + The fix here is to queue the setting of the channel variable onto the + control queue. This way, the manipulation of the channel happens in a + thread where it is safe to be done. + + In this change, I also noticed that the setting of bridge roles on + channels was being done outside of the control queue, so I also changed + those operations to be done in the control queue. + + ASTERISK-25709 #close + Reported by Mark Michelson + + Change-Id: I2a0a4d51bce6fba6f1d9954e40935e42f366ea78 + +2016-01-22 11:48 +0000 [7866806fc3] Richard Mudgett + + * logger.c: Fix buffer overrun found by address sanitizer. + + The null terminator of the tail struct member was not being allocated + when no logger.conf config file is installed. + + ASTERISK-25714 #close + Reported by: Badalian Vyacheslav + + Change-Id: I45770fdd08af39506a3bc33ba279c4f16e047a30 + +2015-12-23 15:07 +0000 [9714da7aa4] Mark Michelson + + * res_odbc: Remove connection management + + Asterisk by default will create a single database connection and share + it among all threads that attempt to access the database. In previous + versions of Asterisk, this was tolerable, because the most used channel + driver, chan_sip, mostly accessed the database from a single thread. + With PJSIP, however, many threads may be attempting to perform database + operations, and there is the potential for many more database accesses, + meaning the concurrency is a horrible bottleneck if only one connection + is shared. + + Asterisk has a connection pooling facility built into it, but the + implementation has flaws. For one, there is a strict limit on the number + of simultaneous connections that could be made to the database. Anything + beyond the maximum would result in a failed operation. Attempting to + predict what the maximum should be is nearly impossible even for someone + intimately familiar with Asterisk's threading model. In addition, use of + transactions in the dialplan can cause some severe bugs if connection + pooling is enabled. + + This commit seeks to fix the concurrency problem by removing all + connection management code from Asterisk and leaving that to the + underlying unixODBC code instead. Now, Asterisk does not share a single + connection, nor does it try to maintain a connection pool. Instead, all + Asterisk ever does is request a connection from unixODBC and allow + unixODBC to either allocate those connections or retrieve them from a + pool. + + Doing this has a bit of a ripple effect. For one, since connections are + not long-lived objects, several of the safeguards that previously + existed have been removed. We don't have to worry about trying to use a + connection that has gone stale. In every case, when we request a + connection, it has just been made and we don't need to perform any + sanity checks to be sure it's still active. + + Another major player affected by this change is transactions. + Transactions and their respective connections were so tightly coupled + that it was almost pornographic. This code change moves + transaction-related code to its own file separate from the core ODBC + functionality. This way, the core of ODBC does not even have to know + that transactions exist. + + In making this large change, I had to look at a lot of code and + understand it. When making this change, I discovered several places + where the behavior is definitely not ideal, but it seemed outside the + scope of this change to be fixing it. Instead, any place where I saw + some sort of room for improvement has had a XXX comment added explaining + what could be altered to improve it. + + Change-Id: I37a84def5ea4ddf93868ce8105f39de078297fbf + +2016-01-22 11:18 +0000 [d3969d09ae] Rodrigo Ramírez Norambuena + + * app_queue.c: remove include for core_unreal.h not used in code. + + Change-Id: Idc2ae8a6bd869a66544916906744a5678622262d + +2016-01-21 16:40 +0000 [5dde111719] Corey Farrell + + * Build System: Add support for checking alembic branches. + + * Add 'check-alembic' target to root Makefile. + * Create build_tools/make_check_alembic to do the actual checks. + + ASTERISK-25685 + + Change-Id: Ibb3cae7d1202ac23dc70b0f3b5801571ad46b004 + +2016-01-19 18:20 +0000 [04078f43b5] Richard Mudgett + + * res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case. + + ASTERISK-25712 #close + Reported by: Richard Mudgett + + Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f + +2016-01-13 16:49 +0000 [5615db3714] Richard Mudgett + + * res_pjsip: Add CLI "pjsip dump endpt [details]" + + Dump the res_pjsip endpt internals. + + In non-developer mode we will not document or make easily accessible the + "details" option even though it is still available. The user has to know + it exists to use it. Presumably they would also be aware of the potential + crash warning below. + + Warning: PJPROJECT documents that the function used by this CLI command + may cause a crash when asking for details because it tries to access all + active memory pools. + + Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb + +2016-01-18 03:49 +0000 [b259ac95ac] Diederik de Groot + + * main/asterisk.c: ast_el_read_char + + Make sure buf[res] is not accessed at res=-1 (buffer underrun). + Address Sanitizer will complain about this quite loudly. + + ASTERISK-24801 #close + + Change-Id: Ifcd7f691310815a31756b76067c56fba299d3ae9 + +2016-01-18 19:27 +0000 [dd5c063934] George Joseph + + * res_pjproject: Add module providing pjproject logging and utils + + res_pjsip_log_forwarder has been renamed to res_pjproject + and enhanced as follows: + + As a follow-on to the recent 'Add CLI "pjsip show buildopts"' patch, + a new ast_pjproject_get_buildopt function has been added. It + allows the caller to get the value of one of the buildopts. + + The initial use case is retrieving the runtime value of + PJ_MAX_HOSTNAME to insure we don't send a hostname greater + than pjproject can handle. Since it can differ between + the version of pjproject that Asterisk was compiled against + and the version of pjproject that Asterisk is running against, + we can't use the PJ_MAX_HOSTNAME macro directly in Asterisk + source code. + + Change-Id: Iab6e82fec3d7cf00c1cf6185c42be3e7569dee1e + +2016-01-18 17:16 +0000 [3b9cba4294] Matt Jordan + + * funcs/func_cdr: Correctly report high precision values for duration and billsec + + When CDRs were refactored, func_cdr's ability to report high precision values + for duration and billsec (the 'f' option) was broken. This was due to func_cdr + incorrectly interpreting the duration/billsec values provided by the CDR engine + in milliseconds, as opposed to seconds. Since the CDR engine only provides + duration and billsec in seconds, and does not expose either attribute with + sufficient precision to merely pass back the underlying value, this patch fixes + the bug by re-calculating duration and billsec with microsecond precision based + on the start/answer/end times on the CDR. + + ASTERISK-25179 #close + + Change-Id: I8bc63822b496537a5bf80baf6102c06206bee841 + +2016-01-20 07:52 +0000 [479cc99acd] Rodrigo Ramírez Norambuena + + * README: Update year in copyright + + Change-Id: I56240f537fb3205672cdb2a74f0591ae7bb73dbc + +2016-01-19 17:15 +0000 [9fa76ba215] Joshua Colp + + * test_threadpool: Wait for each task to complete and fix memory leak. + + This change makes the thread_timeout_thrash unit test wait for + each task to complete. This fixes the problem where the test would + prematurely end when all threads were gone and a new one had to be + started to handle the last task. It also increases the thrasing as + it is now more likely for each task to encounter the above scenario. + + This also fixes a memory leak where the data for each task was not + being freed. + + ASTERISK-25611 #close + + Change-Id: I5017d621a4dc911f509074c16229b86bff2fb3c6 + +2016-01-18 19:44 +0000 [c9f7269b2e] Richard Mudgett + + * taskprocessor.c: Increase CLI "core ping taskprocessor" timeout. + + Change-Id: I4892d6acbb580d6c207d006341eaf5e0f8f2a029 + +2016-01-18 19:43 +0000 [6e2a867716] Richard Mudgett + + * taskprocessor.c: Fix some taskprocessor unrefs. + + You have to call ast_taskprocessor_unref() outside of the taskprocessor + implementation code. Taskprocessor use since v12 has become more + transient than just the singleton uses in earlier versions. + + Change-Id: If7675299924c0cc65f2a43a85254e6f06f2d61bb + +2016-01-19 14:16 +0000 [a4dcbdf50f] Richard Mudgett + + * Fix alembic branches on master. + + Change-Id: I64ed21fec50eb833641ca49d92184f6aaabd86e8 + +2016-01-05 17:12 +0000 [35a3e8cc7f] Corey Farrell + + * Refactor init_logger_chain locking. + + This removes logchannels locking from init_logger_chain, puts the + responsibility on the caller. Adds locking around the one call that was + missing it. + + ASTERISK-24833 + + Change-Id: I6cc42117338bf9575650a67bcb78ab1a33d7bad8 + +2016-01-18 22:10 +0000 [378fed4900] Rodrigo Ramírez Norambuena + + * app_queue: Fix preserved reason of pause when Asterisk is restared + + When the Asterisk is restared is not preseved reason paused of members. + This patch fixed this cases, retain data on astdb and set when Asterisk + is started. + + ASTERISK-25732 #close + + Report by: Rodrigo Ramírez Norambuena + + Change-Id: Id3fb744c579e006d27cda4a02334ac0e4bed9eb5 + +2016-01-18 19:01 +0000 [130aa1427e] George Joseph + + * pjsip_loging_refactor: Rename res_pjsip_log_forwarder to res_pjproject + + Change-Id: I5387821f29e5caa0cba0b7d62b0fc0d341e7e20b + +2016-01-16 13:18 +0000 [eaf2b5052e] Daniel Journo + + * Update version number in features.conf.sample + + Update the version number in the comments from Asterisk 12 to Asterisk 12+ + + Change-Id: Ie692ac8cda3c993c3bf10f27f51a1cca3317ec7b + +2016-01-13 15:58 +0000 [c60d6c0162] Daniel Journo + + * pjsip/alembic: Fix qualify_timeout column definition + + Corrects the qualify_timeout column type from Integer to Decimal + + ASTERISK-25686 #close + Reported-by: Marcelo Terres + + Change-Id: I757d0e3c011ee9be6cd5abd48bc92441a405d3c8 + +2016-01-15 19:52 +0000 [480ccfcc97] Corey Farrell + + * main/config: Clean config maps on shutdown. + + ASTERISK-25700 #close + + Change-Id: I096da84f9c62c6095f68bcf98eac4b7c7868e808 + +2016-01-14 14:42 +0000 [a5b38b604c] Kevin Harwell + + * bridge_basic: don't cache xferfailsound during an attended transfer + + The xferfailsound was read from the channel at the beginning of the transfer, + and that value is "cached" for the duration of the transfer. Therefore, changing + the xferfailsound on the channel using the FEATURE() dialplan function does + nothing once the transfer is under way. + + This makes it so the transfer code instead gets the xferfailsound configuration + options from the channel when it is actually going to be used. + + This patch also fixes a potential memory leak of the props object as well as + making sure the condition variable gets initialized before being destroyed. + + ASTERISK-25696 #close + + Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4 + +2015-07-10 10:37 +0000 [d36c4d0b01] Richard Mudgett + + * taskprocessor.c: Simplify ast_taskprocessor_get() return code. + + Change-Id: Id5bd18ef1f60ef8be453e677e98478298358a9d1 + +2016-01-13 18:20 +0000 [0a878020dc] Richard Mudgett + + * astmm.c: Add more stats to CLI "memory show" commands. + + * Add freed regions totals to allocations and summary. + + * Add totals for all allocations and not just the selected allocations. + + Change-Id: I61d5a5112617b0733097f2545a3006a344b4032a + +2016-01-14 16:00 +0000 [84b30c5e18] Kevin Harwell + + * bridge_basic: don't play an attended transfer fail sound after target hangs up + + If the attended transfer destination answers (picks call up or goes to + voicemail) and then hangs up on the transferer then transferer hears the + fail sound. + + This patch makes it so the fail sound is not played when the transfer + destination/target hangs up after answering. + + ASTERISK-25697 #close + + Change-Id: I97f142fe4fc2805d1a24b7c16143069dc03d9ded + +2016-01-14 14:36 +0000 [c7caee6c4b] Corey Farrell + + * Remove *.gcna / *.gcno files from added module sources. + + Asterisk uses a Makefile macro to associate additional sources with a + module. This macro is responsible for creating clean targets but + previously left behind *.gcna and *.gcno files. + + ASTERISK-25683 #close + Reported by yaron nahum + + Change-Id: Idc0823fe80a25c42cefae901fde875e9fc38d8ea + +2016-01-14 09:26 +0000 [68cad96ffd] Rusty Newton + + * func_channel: Add help text for undocumented CHANNEL function arguments + + Adding help text documentation for: + * hangupsource + * appname + * appdata + * exten + * context + * channame + * uniqueid + * linkedid + + ASTERISK-24097 #close + Reported by: Steven T. Wheeler + Tested by: Rusty Newton + + Change-Id: Ib94b00568b0433987df87d5b67ea529b5905754d + +2016-01-10 16:22 +0000 [8182146e85] Daniel Journo + + * pjsip: Add option global/regcontext + + 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. + + ASTERISK-25670 #close + Reported-by: Daniel Journo + + Change-Id: Ib1530c5b45340625805c057f8ff1fb240a43ea62 + +2016-01-12 11:14 +0000 [022423b98b] Joshua Colp + + * app: Queue hangup if channel is hung up during sub or macro execution. + + This issue was exposed when executing a connected line subroutine. + When connected or redirected subroutines or macros are executed it is + expected that the underlying applications and logic invoked are fast + and do not consume frames. In practice this constraint is not enforced + and if not adhered to will cause channels to continue when they shouldn't. + This is because each caller of the connected or redirected logic does not + check whether the channel has been hung up on return. As a result the + the hung up channel continues. + + This change makes it so when the API to execute a subroutine or + macro is invoked the channel is checked to determine if it has hung up. + If it has then a hangup is queued again so the caller will see it + and stop. + + ASTERISK-25690 #close + + Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea + +2016-01-13 07:20 +0000 [79a7321a47] Sean Bright + + * res_musiconhold: Prevent multiple simultaneous reloads. + + There are two ways in which the reload() function in res_musiconhold can be + called from the CLI: + + * module reload res_musiconhold.so + * moh reload + + In the former case, the module loader holds a lock that prevents multiple + concurrent calls, but in the latter there is no such protection. + + This patch changes the 'moh reload' CLI command to invoke the module loader + directly, rather than call reload() explicitly. + + ASTERISK-25687 #close + + Change-Id: I408968b4c8932864411b7f9ad88cfdc7b9ba711c +2016-01-12 14:25 +0000 [1fffe71f77] Richard Mudgett + + * res_pjsip_log_forwarder.c: Add CLI "pjsip show buildopts". + + PJPROJECT has a function available to dump the compile time + options used when building the library. + + * Add CLI "pjsip show buildopts" command. + + * Update contrib/scripts/autosupport to get pjproject information. + + Change-Id: Id93a6a916d765b2a2e5a1aeb54caaf83206be748 + +2016-01-12 10:36 +0000 [01c5e2a07e] Mark Michelson + + * res_sorcery_realtime: Remove leading ^ requirement. + + res_sorcery_realtime's search-by-regex callback performed a check to + ensure that the passed-in regex began with a caret (^). If it did not, + then no results would be returned. + + This callback only started to become used when "like" support was added + to PJSIP CLI commands. The CLI command for listing objects would pass an + empty regex ("") to the sorcery backend if no "like" statement was + present. For most sorcery backends, this resulted in returning all + objects. However, for realtime, this resulted in returning no objects. + + This commit seeks to fix the regression by removing the requirement from + res_sorcery_realtime for the passed-in-regex to begin with a caret. + + ASTERISK-25689 #close + Reported by Marcelo Terres + + Change-Id: I22b4dc5d7f3f11bb29ac2e42ef94682e9bab3b20 + +2016-01-07 11:57 +0000 [a41aab477a] George Joseph + + * pjsip_sdp_rtp: Add option endpoint/bind_rtp_to_media_address + + On a system with multiple ip addresses in the same subnet, if a + transport is bound to a specific ip address and endpoint/media_address + is set, the SIP/SDP will have the correct address in all fields but + the rtp stream MAY still originate from one of the other ip addresses, + most probably the "primary" ip address. This happens because + res_pjsip_sdp_rtp/create_rtp always calls ast_instance_new with + the "all" ip address (0.0.0.0 or ::). + + The new option causes res_pjsip_sdp_rtp/create_rtp to call + ast_rtp_instance_new with the endpoint's media_address (if specified) + instead of the "all" address. This causes the packets to originate from + the specified address. + + ASTERISK-25632 + ASTERISK-25637 + Reported-by: Olivier Krief + Reported-by: Dan Journo + + Change-Id: I3dfaa079e54ba7fb7c4fd1f5f7bd9509bbf8bd88 + +2016-01-08 16:59 +0000 [7760029f19] Kevin Harwell + + * pbx: Deadlock between contexts container and context_merge locks + + Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5) + introduced the possibility of a deadlock. Due to the mentioned modifications + ast_change_hints now needs to keep both merge/delete and state callbacks from + occurring while it executes. Unfortunately, sometimes ast_change_hints can be + called with the contexts container locked. When this happens it's possible for + another thread to grab the context_merge_lock before the thread calling into + ast_change_hints does and then try to obtain the contexts container lock. This + of course causes a deadlock between the two threads. The thread calling into + ast_change_hints waits for the other thread to release context_merge_lock and + the other thread is waiting on that one to release the contexts container lock. + + Unfortunately, there is not a great way to fix this problem. When hints change, + the subsequent state callbacks cannot run at the same time as a merge/delete, + nor when the usual state callbacks do. This patch alleviates the problem by + having those particular callbacks (the ones run after a hint change) occur in a + serialized task. By moving the context_merge_lock to a task it can now safely be + attempted or held without a deadlock occurring. + + ASTERISK-25640 #close + Reported by: Krzysztof Trempala + + Change-Id: If2210ea241afd1585dc2594c16faff84579bf302 + +2016-01-10 17:08 +0000 [e9c2c1dc67] Corey Farrell + + * devicestate: Cleanup engine thread during graceful shutdown. + + ASTERISK-25681 #close + + Change-Id: I64337c70f0ebd8c77f70792042684607c950c8f1 + +2016-01-10 13:51 +0000 [90c0dcaee4] Corey Farrell + + * manager: Cleanup manager_channelvars during shutdown. + + ASTERISK-25680 #close + + Change-Id: I3251d781cbc3f48a6a7e1b969ac4983f552b2446 + +2016-01-10 13:27 +0000 [a868a381f0] Corey Farrell + + * res_calendar: Cleanup scheduler context at unload. + + ASTERISK-25679 #close + + Change-Id: I839159bf6882cccc1b23494c7aa2bc2a2624613f + +2016-01-08 11:49 +0000 [a1c43022d2] Joshua Colp + + * res_rtp_asterisk: Revert DTLS negotiation changes. + + Due to locking issues within pjnath these changes are being + reverted until pjnath can be changed. + + ASTERISK-25645 + + Revert "res_rtp_asterisk.c: Fix DTLS negotiation delays." + + This reverts commit 24ae124e4f7310cfa64c187b944b2ffc060da28d. + + Change-Id: I2986cfb2c43dc14455c1bcaf92c3804f9da49705 + + Revert "res_rtp_asterisk: Resolve further timing issues with DTLS negotiation" + + This reverts commit 965a0eee46d24321f74c244e23c5a5f45e67e12b. + + Change-Id: Ie68fafde27dad4b03cb7a1e27ce2a8502c3f7bbe + +2016-01-09 17:57 +0000 [220ba979cf] George Joseph + + * Revert "pjsip_location: Delete contact_status object when contact is deleted" + + This reverts commit 0a9941de9d24093b5ff44096d1d7406f29d11e45. + + Matt, + + This patch causes another problem and should not have been needed. + Before this patch, persistent_endpoint_contact_deleted_observer WAS + deleting the contact_status when ast_sip_location_delete_contact was + called. By deleting it yourself in ast_sip_location_delete_contact + it was gone before the observer could run and the observer therefore + was throwing an error and not sending stasis/AMI/statsd messages. + + So, I don't think this was the cause of your original issue. I also + had verified the contact AMI and statsd lifecycle and it was working. + I'll double check now though. + + ASTERISK-25675 + Reported-by: Daniel Journo + + Change-Id: Ib586a6b7f90acb641b0c410f659743ab90e84f1a + +2016-01-09 18:04 +0000 [26e0e113dc] Corey Farrell + + * pbx_dundi: Run cleanup on failed load. + + During failed startup of pbx_dundi no cleanup was performed. Add a call + to unload_module before returning AST_MODULE_LOAD_DECLINE. + + ASTERISK-25677 #close + + Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29 + +2016-01-09 13:28 +0000 [dc2c000fd5] Corey Farrell + + * res_crypto: Perform cleanup at shutdown. + + This change causes res_crypto to unregister CLI at shutdown while still + preventing the module from being unloaded. + + ASTERISK-25673 #close + + Change-Id: Ie5d57338dc2752abfc0dd05d0eec86413f2304fc + +2016-01-06 19:10 +0000 [0bca2a5c26] Richard Mudgett + + * res_pjsip: Create human friendly serializer names. + + PJSIP name formats: + pjsip/aor/- -- registrar thread pool serializer + pjsip/default- -- default thread pool serializer + pjsip/messaging -- messaging thread pool serializer + pjsip/outreg/- -- outbound registration thread pool + serializer + pjsip/pubsub/- -- pubsub thread pool serializer + pjsip/refer/- -- REFER thread pool serializer + pjsip/session/- -- session thread pool serializer + pjsip/websocket- -- websocket thread pool serializer + + Change-Id: Iff9df8da3ddae1132cb2ef65f64df0c465c5e084 + +2016-01-06 19:09 +0000 [f0f5fbbc01] Richard Mudgett + + * Sorcery: Create human friendly serializer names. + + Sorcery name formats: + sorcery/- -- Sorcery thread pool serializer + + Change-Id: Idc2e5d3dbab15c825b97c38c028319a0d2315c47 + +2016-01-06 19:09 +0000 [b1c7ae9afc] Richard Mudgett + + * Stasis: Create human friendly taskprocessor/serializer names. + + Stasis name formats: + subm:- -- Stasis subscription mailbox task processor + subp:- -- Stasis subscription thread pool serializer + + Change-Id: Id19234b306e3594530bb040bc95d977f18ac7bfd + +2016-01-07 16:15 +0000 [3e857bb347] Richard Mudgett + + * taskprocessor.c: New API for human friendly taskprocessor names. + + * Add new API call to get a sequence number for use in human friendly + taskprocessor names. + + * Add new API call to create a taskprocessor name in a given buffer and + append a sequence number. + + Change-Id: Iac458f05b45232315ed64aa31b1df05b875537a9 + +2016-01-06 17:19 +0000 [84c245d38c] Richard Mudgett + + * taskprocessor.c: Fix CLI "core show taskprocessors" output format. + + Update the CLI "core show taskprocessors" output format to not be + distorted because UUID names are longer than previously used taskprocessor + names. + + Change-Id: I1a5c82ce3e8f765a0627796aba87f8f7be077601 + +2016-01-07 21:07 +0000 [7d86979ea0] Richard Mudgett + + * taskprocessor.c: Fix CLI "core show taskprocessors" unref. + + Change-Id: I1d9f4e532caa6dfabe034745dd16d06134efdce5 + +2016-01-06 19:00 +0000 [1fb39aa8a0] Richard Mudgett + + * ccss.c: Replace space in taskprocessor name. + + The CLI "core ping taskprocessor" command does not work very + well with taskprocessor names that have spaces in them. You + have to put quotes around the name so using tab completion + becomes awkward. + + Change-Id: I29e806dd0a8a0256f4e2e0a7ab88c9e19ab0eda0 + +2016-01-07 20:44 +0000 [71bb7b9c40] Richard Mudgett + + * taskprocessor.c: Sort CLI "core show taskprocessors" output. + + Change-Id: I71e7bf57c7b908c8b8c71f1816348ed7c5a5d51e + +2016-01-05 16:54 +0000 [b025e1982f] Richard Mudgett + + * taskprocessor.c: Add CLI "core ping taskprocessor" missing unlock. + + Change-Id: I78247e0faf978bf850b5ba4e9f4933ab3c59d17b + +2015-12-16 11:25 +0000 [c5e16fe33a] Mark Michelson + + * Alembic: Add PJSIP global keep_alive_interval. + + The keep_alive_interval option was added about a year ago, but no + alembic revision was created to add the appropriate column to the + database. + + This commit fixes the problem and adds the column. This was discovered + by running the testsuite with automatic conversion to realtime enabled. + + Change-Id: If3ef92a7c4f4844d08f8aae170d2178aec5c4c1a + +2016-01-07 03:21 +0000 [6745cd6529] Diederik de Groot + + * include/asterisk/time.h: Renamed global declaration:tv + + Renamed global declaration:tv to dummy_tv_var_for_types, + which would oltherwise cause 'shadow' warnings when 'tv' + was declared as a local variable elsewhere. + + Added comment to note that dummy_tv_var_for_types is never + really exported and only used as a place holder. + + ASTERISK-25627 #close + + Change-Id: I9a6e17995006584f3627efe8988e3f8aa0f5dc28 + +2016-01-07 15:37 +0000 [1afc8432dc] Mark Michelson + + * PJSIP: Prevent deadlock due to dialog/transaction lock inversion. + + A deadlock was observed where the monitor thread was stuck, therefore + resulting in no incoming SIP traffic being processed. + + The problem occurred when two 200 OK responses arrived in response to a + terminating NOTIFY request sent from Asterisk. The first 200 OK was + dispatched to a threadpool worker, who locked the corresponding + transaction. The second 200 OK arrived, resulting in the monitor thread + locking the dialog. At this point, the two threads are at odds, because + the monitor thread attempts to lock the transaction, and the threadpool + thread loops attempting to try to lock the dialog. + + In this case, the fix is to not have the monitor thread attempt to hold + both the dialog and transaction locks at the same time. Instead, we + release the dialog lock before attempting to lock the transaction. + + There have also been some debug messages added to the process in an + attempt to make it more clear what is going on in the process. + + ASTERISK-25668 #close + Reported by Mark Michelson + + Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a + +2016-01-07 09:39 +0000 [5d8c42c6d3] Corey Farrell + + * ast_format_cap_append_by_type: Resolve codec reference leak. + + This resolves a reference leak caused by ASTERISK-25535. The pointer + returned by ast_format_get_codec is saved so it can be released. + + ASTERISK-25664 #close + + Change-Id: If9941b1bf4320b2c59056546d6bce9422726d1ec + +2016-01-07 03:33 +0000 [7856762f2f] Diederik de Groot + + * main: Use ast_strdup instead of strdup + + Fix compile error in main/utils.c because strdup was used in dummy_start + + Change-Id: Id61a6cf4f3cbf235450441e10e7da101a6335793 + +2016-01-06 07:12 +0000 [64b2046f3d] Walter Doekes + + * Add sipp-sendfax.xml and spandspflow2pcap.py to contrib/scripts. + + The spandspflow2pcap.py creates pcap files from fax.log files, generated + through 'fax set debug on' when receiving a fax. An example fax.log is + included as spandspflow2pcap.log. + + The sipp-sendfax.xml SIPp scenario can be used to replay that fax with a + recent version of SIPp. + + ASTERISK-25660 #close + + Change-Id: I4de8f28b084055b482ab8a5b28d28b605b0ed526 + +2016-01-04 04:26 +0000 [084563e136] Aaron An + + * cel/cel_radius: Fix wrong pointer. + + The macro ADD_VENDOR_CODE defined in the cel_radius.c should use the parameter + y not the address of y. + + I capture the radius UDP packet via tcpdump, and the AV pairs are not correct, + then i review the source code and compare it with cdr/cdr_radius.c. Fix it and + it works. + + ASTERISK-25647 #close + Reported by: Aaron An + Tested by: Aaron An + + Change-Id: I72889bccd8fde120d47aa659edc0e7e6d4d019f0 + +2016-01-04 20:23 +0000 [36f1eaf0b5] Corey Farrell + + * main/pbx: Move hangup handler routines to pbx_hangup_handler.c. + + This is the sixth patch in a series meant to reduce the bulk of pbx.c. + This moves hangup handler management functions to their own source. + + Change-Id: Ib25a75aa57fc7d5c4294479e5cc46775912fb104 + +2015-12-21 11:07 +0000 [90b06d1a3c] Martin Tomec + + * app_queue: Add member flag "in_call" to prevent reading wrong lastcall time + + Member lastcall time is updated later than member status. There was chance to + check wrapuptime for available member with wrong (old) lastcall time. + New boolean flag "in_call" is set to true right before connecting call, and + reset to false after update of lastcall time. Members with "in_call" set to true + are treat as unavailable. + + ASTERISK-19820 #close + + Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500 + +2016-01-04 19:46 +0000 [3507494b8a] Corey Farrell + + * main/pbx: Move dialplan application management routines to pbx_app.c. + + This is the sixth patch in a series meant to reduce the bulk of pbx.c. + This moves dialplan application management functions to their own source. + + Change-Id: I444c10fb90a3cdf9f3047605d6a8aad49c22c44c + +2016-01-04 18:20 +0000 [54a8f1a396] Corey Farrell + + * main/pbx: Move switch routines to pbx_switch.c. + + This is the fifth patch in a series meant to reduce the bulk of pbx.c. + This moves ast_switch functions to their own source. + + Change-Id: Ic2592a18a5c4d8a3c2dcf9786c9a6f650a8c628e + +2016-01-04 18:00 +0000 [c3c8b8e41d] Corey Farrell + + * main/pbx: Move timing routines to pbx_timing.c. + + This is the fourth patch in a series meant to reduce the bulk of pbx.c. + This moves pbx timing functions to their own source. + + Change-Id: I05c45186cb11edfc901e95f6be4e6a8abf129cd6 + +2015-12-30 10:49 +0000 [6d18fe151c] George Joseph + + * voicemail: Move app_voicemail / res_mwi_external conflict to runtime + + The menuselect conflict between app_voicemail and res_mwi_external + makes it hard to package 1 version of Asterisk. There no actual + build dependencies between the 2 so moving this check to runtime + seems like a better solution. + + The ast_vm_register and ast_vm_greeter_register functions in app.c + were modified to return AST_MODULE_LOAD_DECLINE instead of -1 if there + is already a voicemail module registered. The modules' load_module + functions were then modified to return DECLINE instead of -1 to the + loader. Since -1 is interpreted by the loader as AST_MODULE_LOAD_FAILURE, + the modules were incorrectly causing Asterisk to stop so this needed + to be cleaned up anyway. + + Now you can build both and use modules.conf to decide which voicemail + implementation to load. + + The default menuselect options still build app_voicemail and not + res_mwi_external but if both ARE built, res_mwi_external will load + first and become the voicemail provider unless modules.conf rules + prevent it. This is noted in CHANGES. + + Change-Id: I7d98d4e8a3b87b8df9e51c2608f0da6ddfb89247 + +2016-01-04 16:15 +0000 [5ee5c3739e] Corey Farrell + + * main/pbx: Move variable routines to pbx_variables.c. + + This is the third patch in a series meant to reduce the bulk of pbx.c. + This moves channel and global variable routines to their own source. + + Change-Id: Ibe8fb4647db11598591d443a99e3f99200a56bc6 + +2015-12-04 17:22 +0000 [f88b952093] Richard Mudgett + + * app_dial: Immediately exit dial if the caller is already hung up. + + If a caller hangs up before dial is executed within an AGI then the AGI + has likely eaten all queued frames before executing the dial in DeadAGI + mode. With the caller hung up and no pending frames from the caller's + read queue, dial would not know that the call has hung up until a called + channel answers. It is rather annoying to whoever just answered the + non-existent call. + + Dial should not continue execution in DeadAGI mode, hangup handlers, or + the h exten. + + * Added a check early in dial to abort dialing if the caller has hungup. + + ASTERISK-25307 #close + Reported by: David Cunningham + + Change-Id: Icd1bc0764726ef8c809f76743ca008d0f102f418 + +2016-01-02 10:26 +0000 [e9dd16364e] Matt Jordan + + * main/cdr: Allow setting properties on a finalized CDR if it is the last one + + Prior to this patch, we explicitly disallowed setting any properties on a + finalized CDR. This seemed like a good idea at the time; in practice, it was + more restrictive. + + There are weird and strange scenarios where setting a property on a finalized + CDR is definitely wrong. For example, we may Fork a CDR, finalizing the + previous one, then change a property. In said case, the old CDR is supposed + to now be 'immutable' (so to speak), and should not be updated. From the + perspective of the code, a forked CDR that is finalized is just finalized. + Hence why we decided these should not be updated. + + In practice, it is much more common to want to set a property on a CDR in + the h extension or in a hangup handler. Disallowing a common scenario to make + an esoteric behaviour work isn't good. This patch fixes this by allowing + callers to set a property IF we are the last CDR in the chain. This preserves + the finalized CDR if it was forked, while allowing the more common case to + function. + + ASTERISK-25458 #close + + Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9 + +2016-01-02 10:23 +0000 [153547a9b1] Matt Jordan + + * main/cdr: Set the end time on a CDR if endbeforehexten is Yes + + Prior to this patch, the CDR engine attempted to set the end time on a CDR + that was executing hangup logic and with endbeforehexten set to Yes by + calling a function that inspects the properties on the Party A snapshot to + determine if we are ready to set the end time. That always failed. This is + because a Party A snapshot is not updated for CDRs that are executing hangup + logic with endbeforehexten=Yes. + + Instead of calling a function that looks at the Party A snapshot, we just + simply set the end time on the CDR. This is safe to call multiple times, and is + safe to call at this point as we know that (a) we are executing hangup logic, + and (b) we are supposed to set the end time at this point. + + ASTERISK-25458 + + Change-Id: I0c27b493861f9c13c43addbbb21257f79047a3b3 + +2015-12-30 20:51 +0000 [f9bfc2450e] Corey Farrell + + * main/pbx: Move custom function routines to pbx_functions.c. + + This is the second patch in a series meant to reduce the bulk of pbx.c. + This moves custom function management routines to their own source. + + Change-Id: I34a6190282f781cdbbd3ce9d3adeac3c3805e177 + +2016-01-01 05:25 +0000 [3fd528dddf] Rodrigo Ramírez Norambuena + + * Happy new year 2016. + + Change-Id: I22d3c90f6f27df82e915bbf81c1d91221f7a945e + +2015-12-13 13:09 +0000 [9cdf3ec19d] Matt Jordan + + * res_pjsip_history: Add a module that provides PJSIP history for debugging + + This patch adds a new module, res_pjsip_history, that provides a slightly + better way of debugging SIP message traffic on a busy Asterisk system. The + existing mechanisms all rely on passively dumping a SIP message to the CLI. + While this is perfectly fine for logging purposes and well controlled + environments, on many installations, the amount of SIP messages Asterisk + receives will quickly swamp the CLI. This makes it difficult to view/capture + those messages that you want to diagnose in real time. + + This patch provides another way of handling this. When enabled, the module + will store SIP message traffic in memory. This traffic can then be queried + at leisure. + + In order to make the querying useful, a CLI command has been implemented, + 'pjsip show history', that supports a basic expression syntax similar to + SQL or other query languages. A small number of useful fields have been + added in this initial patch; additional fields can easily be added in + later improvements. Those fields are: + - number: The entry index in the history + - timestamp: The time the message was recieved + - addr: The source/destination address of the message + - sip.msg.request.method: The request method + - sip.msg.call-id: The Call-ID header + + Note - this is a resurrection of the module initially proposed on Review Board + here: https://reviewboard.asterisk.org/r/4053/ + + Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36 + +2015-12-28 19:18 +0000 [5e67e51c6a] George Joseph + + * main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c + + We joked about splitting pbx.c into multiple files but this first step was + fairly easy. All of the pbx_builtin dialplan applications have been moved + into pbx_builtins.c and a new pbx_private.h file was added. load_pbx_builtins() + is called by asterisk.c just after load_pbx(). + + A few functions were renamed and are cross-exposed between the 2 source files. + + Change-Id: I87066be3dbf7f5822942ac1449d98cc43fc7561a + +2015-12-28 14:02 +0000 [a05bb258b1] Joshua Colp + + * test_time: Provide a timeout when waiting. + + The test_timezone_watch unit test is written to expect a + condition to be signaled when the inotify daemon thread runs. + There exists a small window where the test_timezone_watch + thread can signal the inotify daemon thread while it is not + reading on the underlying file descriptor. If this occurs + the test_timezone_watch thread will wait indefinitely for a + signal that will never arrive. + + This change adds a timeout to the condition so it will return + regardless after a period of time. + + Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390 + +2015-12-24 20:26 +0000 [96b32e0321] Matt Jordan + + * tests/test_stasis_endpoints: Remove expected duplicate events + + The cache_clear test was written to expect duplicate Stasis messages + sent from the technology endpoint to the all caching topic. This patch + fixes the test to no longer expect these duplicate messages. + + ASTERISK-25137 + + Change-Id: I58075d70d6cdf42e792e0fb63ba624720bfce981 + +2015-12-24 22:19 +0000 [3bddcc0219] Dade Brandon + + * res_http_websocket.c: prevent avoidable disconnections caused by write errors + + Updated ast_websocket_write to encode the entire frame in to one + write operation, to ensure that we don't end up with a situation + where the websocket header has been sent, while the body can not + be written. + + Previous to August's patch in commit b9bd3c14, certain network + conditions could cause the header to be written, and then the + sub-sequent body to fail - which would cause the next successful + write to contain a new header, and a new body (resulting in + the peer receiving two headers - the second of which would be + read as part of the body for the first header). + + This was patched to have both write operations individually fail + by closing the websocket. + + In a case available to the submitter of this patch, the same + body which would consistently fail to write, would succeed + if written at the same time as the header. + + This update merges the two operations in to one, adds debug messages + indicating the reason for a websocket connection being closed during + a write operation, and clarifies some variable names for code legibility. + + Change-Id: I4db7a586af1c7a57184c31d3d55bf146f1a40598 + +2015-05-27 13:22 +0000 [22db16fa81] George Joseph + + * endpoint/stasis: Eliminate duplicate events on endpoint status change + + When an endpoint is created, its messages are forwarded to both the tech + endpoint topic and the all endpoints topic. This is done so that various + parties interested in endpoint messages can subscribe to just the tech + endpoint and receive all messages associated with that particular technology, + as opposed to subscribing to the all endpoints topic. Unfortunately, when the + tech endpoint is created, it also forwards all of its messages to the all + topic. This results in duplicate messages whenever an endpoint publishes its + messages. + + This patch resolves the duplicate message issue by creating a new function + for Stasis caching topics, stasis_cp_sink_create. In most respects, this acts + as a normal caching topic, save that it no longer forwards messages it receives + to the all endpoints topic. This allows it to act as an aggregation "sink", + while preserving the necessary caching behaviour. + + ASTERISK-25137 #close + Reported-by: Vitezslav Novy + + ASTERISK-25116 #close + Reported-by: George Joseph + Tested-by: George Joseph + + Change-Id: Ie47784adfb973ab0063e59fc18f390d7dd26d17b + +2015-12-27 22:38 +0000 [6b08f01c60] Corey Farrell + + * Remove res_jabber file that was left behind. + + Change-Id: I9d88fac0394d5bbaff0900a2ee911c4e4478846b + +2015-12-26 09:24 +0000 [d4b10cfb3e] Ward van Wanrooij + + * chan_sip: option 'notifyringing' change and doc fix + + In the sample sip.conf this is written with regard to notifyringing: + ;notifyringing = no ; Control whether subscriptions already INUSE get sent + RINGING when another call is sent (default: yes) + + However, this setting changes whether or not any RINGING indications are sent + to subscriptions. There is no separate configurable setting that allows + to control whether INUSE subscriptions also get sent RINGING. This is however + a useful option, to see (using BLF) if somebody else is able to handle an + incoming call or if everybody is busy. + + This patch corrects the documentation for notifyringing (so the documentation + matches the functionality) and make notifyringing a tri-state option, by adding + the value 'notinuse' (in addition to 'yes' and 'no'). When notifyringing = + notinuse, only subscriptions that are not INUSE are sent the RINGING signal. + + The default setting for notifyringing remains set to yes, so the default + behaviour is not affected. + + ASTERISK-25558 + + Change-Id: I88f7036ee084bb3f43b74f15612695c6708f74aa + +2015-12-25 09:56 +0000 [6dc21bbf00] Dade Brandon + + * chan_sip.c: fix websocket_write_timeout default value + + websocket_write_timeout was not being set to its default value + during sip config reload, which meant that prior to this commit, + 1) the default value of 100 was not used, unless an invalid value + (or 1) was specified in sip.conf for websocket_write_timeout, and + 2) if the websocket_write_timeout directive was removed from sip.conf + without a full restart of asterisk, then the previous value would + continue to be used indefinitely. + + This essentially lead to a 0ms write timeout (the first write attempt + in ast_careful_fwrite must have succeeded) in websocket write requests + from chan_sip, unless websocket_write_timeout was explicitely set in sip.conf. + + Changes to websocket_write_timeout still only apply to new websocket + sessions, after the sip reload -- timeouts on existing sessions are + not adjusted during sip reload. + + Change-Id: Ibed3816ed29cc354af6564c5ab3e75eab72cb953 + +2015-12-23 17:40 +0000 [8eb5da0679] Richard Mudgett + + * bridge_basic.c: Fix GOTO_ON_BLINDXFR + + Use of GOTO_ON_BLINDXFR would not work at all. The target location would + never be executed by the transferring channel. + + * Made feature_blind_transfer() call ast_bridge_set_after_go_on() with + valid context, exten, and priority parameters from the transferring + channel. + + * Renamed some feature_blind_transfer() local variables for clarity. + + ASTERISK-25641 #close + Reported by Dmitry Melekhov + + Change-Id: I19bead9ffdc4aee8d58c654ca05a198da1e4b7ac + +2015-12-24 12:19 +0000 [2df4ad647c] Matt Jordan + + * res/res_pjsip_location: Delete contact_status object when contact is deleted + + In 450579e908, a change was made that removed the deletion of the + 'contact_status' object when a 'contact' object is deleted in sorcery. + This unfortunately means that the 'contact_status' object persists, even when + something has explicitly removed a contact. The result is that the state of + the contact will not be regenerated if that contact is re-created, and the + stale state will be reported/used for that contact. It also results in + no ContactStatusChanged events being generated for either ARI or AMI. + + This patch restores the deletion logic that was removed. Doing so now + results in the expected events being generated again. + + Change-Id: I28789a112e845072308b5b34522690e3faf58f07 + +2015-12-24 10:18 +0000 [b8876711f3] Kevin Harwell + + * res_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef + + Change-Id: I19b49112e1b630bd04e859f14ccf96f8ebd6b151 + +2015-12-20 21:33 +0000 [ca394161cf] Dade Brandon + + * app_amd: Correct maximum_number_of_words functionality & documentation + + - The maximum_number_of_words was previously documented as being + the number of words that when exceeded, would result in the AMD + application returning that the audio represents a machine. + + This was inconsistent with its actual functionality - it was + a number of words that when REACHED, would result in determination + as a machine. + + This update corrects the functionality to match the previously + documented functionality. This is a backwards incompatible change + in configuration file, and has been added to UPGRADE.txt as a result. + + The sample configuration file and application defaults have been updated + so that the default value is now 2, which reflects the same default + functionality as previous versions. + + - Update documentation for silence_threshold, which previously implied + that it was measuring time, rather than noise averages in the sample. + + - Update the comments in amd.conf.sample. + + ASTERISK-25639 #close + Change-Id: I4b1451e5dc9cb3cb06d59b6ab872f5275ba79093 + +2015-12-17 19:05 +0000 [648ca2b1b8] Dade Brandon + + * res_rtp_asterisk: Resolve further timing issues with DTLS negotiation + + Resolves an edge case dtls negotiation delay for certain networks which + somehow manage to drop the rtcp side's packet when these are both sent + ast_rtp_remote_address_set, causing it to have to time-out and restart + the handshake. + + Move dtls pending bio flush in to it's own function, and call it from + ast_rtp_on_ice_complete, when we're rtp->ice, rather than when + ast_rtp_remote_address_set. + + Keep the existing flush from the recent change to res_rtp_remote_address_set + if ice is not being used. + + ASTERISK-25614 #close + Reported-by: XenCALL + Tested by: XenCALL + + Change-Id: Ie2caedbdee1783159f375589b6fd3845c8577ba5 + +2015-12-05 10:01 +0000 [902309fd04] Joshua Colp + + * res_sorcery_memory_cache: Add support for a full backend cache. + + This change introduces the configuration option 'full_backend_cache' + which changes the cache to be a full mirror of the backend instead + of a per-object cache. This allows all sorcery retrieval operations + to be carried out against it and is useful for object types which + are used in a "retrieve all" or "retrieve some" pattern. + + ASTERISK-25625 #close + + Change-Id: Ie2993487e9c19de563413ad5561c7403b48caab5 + +2015-12-17 10:25 +0000 [a2431f83ef] Joshua Colp + + * rtp_engine: Ignore empty filenames in DTLS configuration. + + When applying an empty DTLS configuration the filenames in the + configuration will be empty. This is actually valid to do and + each filename should simply be ignored. + + Change-Id: Ib761dc235638a3fb701df337952f831fc3e69539 + +2015-12-17 08:10 +0000 [d2c8614122] Joshua Colp + + * chan_sip: Enable WebSocket support by default. + + Per the documentation the WebSocket support in chan_sip is + supposed to be enabled by default but is not. This change + corrects that. + + Change-Id: Icb02bbcad47b11a795c14ce20a9bf29649a54423 + +2015-12-14 12:04 +0000 [d17d9a9288] Joshua Colp + + * json: Audit ast_json_* usage for thread safety. + + The JSON library Asterisk uses, jansson, is not thread + safe for us in a few ways. To help with this wrappers for JSON + object reference count increasing and decreasing were added + which use a global lock to ensure they don't clobber over + each other. This does not extend to reference count manipulation + within the jansson library itself. This means you can't safely + use the object borrowing specifier (O) in ast_json_pack and + you can't share JSON instances between objects. + + This change removes uses of the O specifier and replaces them + with the o specifier and an explicit ast_json_ref. Some cases + of instance sharing have also been removed. + + ASTERISK-25601 #close + + Change-Id: I06550d8b0cc1bfeb56cab580a4e608ae4f1ec7d1 + +2015-12-16 11:28 +0000 [cfb34adb83] Mark Michelson + + * Alembic: Increase column size of PJSIP AOR "contact". + + When running the PJSIP AMI "show_endpoint" test with automatic + conversion to realtime, the test would fail. This was because the AOR + "contact" column was sized at 40, and the configured contact was larger + than that. + + This commit increases the size of the contact column to 255 characters. + + Change-Id: Ia65bc7fd37699b7c0eaef9629a1a31eab9a24ba1 + +2015-12-14 13:53 +0000 [32ec83f37f] server-pandora + + * res_rtp_asterisk.c: Fix DTLS negotiation delays. + + - Trigger pending DTLS packets to send out, once the RTP instance's remote + address is set. + - Avoids locking the DTLS structure unnecessarily by only doing this if + DTLS is passive. + - Add DTLS locks around the structurally sensitive calls in the SSL + portion of __rtp_recvfrom, since dtls_srtp_check_pending does not lock + inside of itself, and we're dealing with the SSL BIO in at least two + threads. + + WebRTC channels may receive a DTLS handshake before + ast_rtp_remote_address_set is called, which causes there to be a pending + response to send out. Previous to 1ad827, this was handled by calling + dtls_srtp_check_pending on receipt of any RTP packet - a STUN or RTP + packet could trigger the pending handshake response. Since that was + rightfully removed, whenever the DTLS handshake is received before the + remote address is set, we would have to wait until another SSL packet + arrives. + + As of Chrome M47's optimizations to their handshake process, WebRTC + conversations between Chrome M47+ and Asterisk, where Asterisk is passive, + experience a 1 second delay without this patch, because the SSL handshake + is received before ICE negotation stores the remote_address, and the next + SSL packet isn't received until after a 1 second timeout in Chrome, which + causes a new handshake request. + + ASTERISK-25614 #close + + Change-Id: I547f1be7e302dbf71f6553dd8cbc0657b1d0b908 + +2015-12-08 13:04 +0000 [52ca6fb94a] sungtae kim + + * AMI: Fixed OriginateResponse message + + When the asterisk sending OriginateResponse message, + it doesn't set the "Uniqueid". + And it didn't support correct response message for + Application originate. + + ASTERISK-25624 #close + + Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d + +2015-12-14 15:25 +0000 [eccdf2250b] Richard Mudgett + + * Fix sscanf() format string type mismatch. + + ASTERISK-25615 + Reported by: George Joseph + + Change-Id: Ieff35307254ca193f3d473cff2e396ca57c7ce0b + +2015-12-14 06:26 +0000 [3e7522533c] Carlos Oliva + + * app_queue: update RT members when the 1st call joins a queue with no agents + + If a call enters on a queue and the members on that queue are updated in + realtime (ex: using mysql inserting a new agent) the queue members are + never refreshed and the call will stay in the queue until other event occurs. + This happens only if this is the first call of the queue and there is no + agents servicing. + This patch prevent this issue, ensuring realtime members are updated if + there is one call in the queue and no available agents + + ASTERISK-25442 #close + + Change-Id: If1e036d013a5c1d8b0bf60d71d48fe98694a8682 + +2015-12-13 13:13 +0000 [9a96a86e2d] Matt Jordan + + * main/utils: Don't emit an ERROR message if the read end of a pipe closes + + An ERROR or WARNING message should generally indicate that something has gone + wrong in Asterisk. In the case of writing to a file descriptor, Asterisk is not + in control of when the far end closes its reading on a file descriptor. If the + far end does close the file descriptor in an unclean fashion, this isn't a bug + or error in Asterisk, particularly when the situation can be gracefully + handled in Asterisk. + + Currently, when this happens, a user would see the following somewhat cryptic + ERROR message: + + "utils.c: write() returned error: Broken pipe" + + There's a few problems with this: + (1) It doesn't provide any context, other than 'something broke a pipe' + (2) As noted, it isn't actually an error in Asterisk + (3) It can get rather spammy if the thing breaking the pipe occurs often, such + as a FastAGI server + (4) Spammy ERROR messages make Asterisk appear to be having issues, or can even + mask legitimate issues + + This patch changes ast_carefulwrite to only log an ERROR if we actually had one + that was reasonably under our control. For debugging purposes, we still emit + a debug message if we detect that the far side has stopped reading. + + Change-Id: Ia503bb1efcec685fa6f3017bedf98061f8e1b566 + +2015-12-12 11:08 +0000 [3e6637feb5] George Joseph + + * pjsip/config_transport: Check pjproject version at runtime for async ops + + pjproject < 2.5.0 will segfault on a tls transport if async_operations + is greater than 1. A runtime version check has been added to throw + an error if the version is < 2.5.0 and async_operations > 1. + + To assist in the check, a new api "ast_compare_versions" was added + to utils which compares 2 major.minor.patch.extra version strings. + + ASTERISK-25615 #close + + Change-Id: I8e88bb49cbcfbca88d9de705496d6f6a8c938a98 + Reported-by: George Joseph + Tested-by: George Joseph + +2015-12-10 11:44 +0000 [ceebdfce40] Jonathan Rose + + * chan_sip: Add TCP/TLS keepalive to TCP/TLS server + + Adds the TCP Keep Alive option to TCP and TLS server sockets. Previously + this option was only being set on session sockets. + http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ + According to the link above, the SO_KEEPALIVE option is useful for knowing + when a TCP connected endpoint has severed communication without indicating + it or has become unreachable for some reason. Without this patch, keep + alive is not set on the socket listening for incoming TCP sessions and + in Komatsu's report this resulted in the thread listening for TCP becoming + stuck in a waiting state. + + ASTERISK-25364 #close + Reported by: Hiroaki Komatsu + + Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36 +2015-12-07 13:07 +0000 [fcaebb0e43] Corey Farrell + + * app_meetme: Set default value for audio_buffers. + + The default value was never set for audio_buffers, causing bad + audio quality. This ensures the default is always set. + + ASTERISK-25569 #close + + Change-Id: I2d2ee3e644120b0f9f6ea6ab9286d7d590942a44 +2015-12-09 09:48 +0000 [5790700497] Tyler Cambron + + * res_chan_stats: Fix bug to send correct statistics to StatsD + + Fixed a bug that originally would show a negative number of + active calls occuring in Asterisk. A gauge is persistent so + incrementing and decrementing it results in a more consistent + performance. Also changed to the call to StatsD to use + ast_statsd_log_string() so that a "+" could be sent to StatsD. + + ASTERISK-25619 #close + + Change-Id: Iaaeff5c4c6a46535366b4d16ea0ed0ee75ab2ee7 +2015-12-08 17:49 +0000 [a987434564] George Joseph + + * res_pjsip: Add existence and readablity checks for tls related files + + Both transport and endpoint now check for the existence and readability + of tls certificate and key files before passing them on to pjproject. + This will cause the object to not load rather than waiting for pjproject + to discover that there's a problem when a session is attempted. + + NOTE: chan_sip also uses ast_rtp_dtls_cfg_parse but it's located + in build_peer which is gigantic and I didn't want to disturb it. + Error messages will emit but it won't interrupt chan_sip loading. + + ASTERISK-25618 #close + + Change-Id: Ie43f2c1d653ac1fda6a6f6faecb7c2ebadaf47c9 + Reported-by: George Joseph + Tested-by: George Joseph + +2015-12-02 12:42 +0000 [be693539c3] Eugene Voityuk + + * chan_sip.c: Start ICE negotiation when response is sent or received. + + The current logic for ICE negotiation starts it + when receiving an SDP with ICE candidates. This is + incorrect as ICE negotiation can only start when each + call party have at least one pair of local and remote + candidate. Starting ICE negotiation early would result + in negotiation failure and ultimately no audio. + + This change makes it so ICE negotiation is only started + when a response with SDP is received or when a response + with SDP is sent. + + ASTERISK-24146 + + Change-Id: I55a632bde9e9827871b09141d82747e08379a8ca + +2015-12-08 01:57 +0000 [59a91c350a] Filip Jenicek + + * chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c) + + Asterisk may crash when calling ast_channel_get_t38_state(c) + on a locked channel which is being hung up. + + ASTERISK-25609 #close + + Change-Id: Ifaa707c04b865a290ffab719bd2e5c48ff667c7b +2015-12-08 11:03 +0000 [28ab03fbf7] George Joseph + + * res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls + + See ASTERISK-25615. + If the transport protocol is tls and async_operations > 1, pjproject + will segfault if more than one operation is attempted on the same socket. + Until this is fixed upstream, a check has been added to throw an error + if a tls transport config has async_operations set to > 1. + + ASTERISK-25615 + + Change-Id: I76b9a5b2a5a0054fe71ca5851e635f2dca7685a6 + Reported-by: George Joseph + Tested-by: George Joseph + +2015-12-08 08:39 +0000 [55dd7125b3] Alexander Traud + + * codec_resample: Increase buffer for Opus Codec with FEC. + + ASTERISK-25599 #close + + Change-Id: Idbd187f711b2ec63dda949ca0f79aa0c1a0a0b6e + +2015-12-08 03:46 +0000 [64f899e5f3] Alexander Traud + + * translate: Avoid a warning message when doing FEC within Opus Codec. + + ASTERISK-25616 #close + + Change-Id: Ibe729aaf2e6e25506cff247cec5149ec1e589319 + +2015-12-04 15:36 +0000 [65c8147952] Richard Mudgett + + * chan_sip: Fix crash involving the bogus peer during sip reload. + + A crash happens sometimes when performing a CLI "sip reload". The bogus + peer gets refreshed while it is in use by a new call which can cause the + crash. + + * Protected the global bogus peer object with an ao2 global object + container. + + ASTERISK-25610 #close + + Change-Id: I5b528c742195681abcf713c6e1011ea65354eeed + +2015-11-13 07:58 +0000 [48c065e46d] Christof Lauber + + * chan_sip: Support parsing of Q.850 reason header in SIP BYE and CANCEL requests. + + Current support for reason header did work only in SIP responses. + According to RFC3336 the reason header might appear in any SIP request. + But it seems to make most sence in BYE and CANCEL so parasing is done + there too (if use_q850_reason=yes). + + Change-Id: Ib6be7b34c23a76d0e98dfd0816c89931000ac790 + +2015-12-06 16:35 +0000 [75c800eb28] Matt Jordan + + * Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state" + + This reverts commit f42d22d3a1ca5c8ea73df99a50c6a28caa8f8749. + + Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks + in core_unreal/chan_local. Local channels attempt to reach across both their + peer and the peer's bridge to inspect T.38 state. Given the propensity of + Local channel chains, managing the locking situation in such a scenario is + practically infeasible. + + Change-Id: I932107387c13aad2c75a7a4c1e94197a9d6d8a51 + +2015-12-04 16:23 +0000 [4be231e82f] George Joseph + + * res_pjsip/contacts/statsd: Make contact lifecycle events more consistent + + It will never be perfect or even pretty, mostly because of the differences + between static and dynamic contacts. + + Created: + + Can't use the contact or contact_status alloc functions + because the objects come and go regardless of the actual state. + + Can't use the contact_apply_handler, ast_sip_location_add_contact or + a sorcery created handler because they only get called for dynamic + contacts. Similarly, permanent_uri_handler only gets called for + static contacts. + + So, Matt had it right. :) ast_res_pjsip_find_or_create_contact_status is + the only place it can go and not have duplicated code. Both + permanent_uri_handler and contact_apply_handler call find_or_create. + + Removed: + + Can't use the destructors for the same reason as above. The only + place to put this is in persistent_endpoint_contact_deleted_observer + which I believe is the "correct" place but even that will handle only + dynamic contacts. This doesn't called on shutdown however. There is + no hook to use for static contacts that may be removed because of a + config change while asterisk is in operation. + + I moved the cleanup of contact_status from ast_sip_location_delete_contact + to the handler as well. + + Status Change and RTT: + + Although they worked fine where they were (in update_contact_status) I + moved them to persistent_endpoint_contact_status_observer to make it + more consistent with removed. There was logic there already to detect + a state change. + + Finally, fixed a nit in permanent_uri_handler rmudgett reported + eralier. + + ASTERISK-25608 #close + + Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d + Reported-by: George Joseph + Tested-by: George Joseph + +2015-11-21 06:08 +0000 [63c6d39a3e] Alexander Traud + + * res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8. + + ASTERISK-25584 #close + + Change-Id: Iae00071b4ff1ae76f24995aeac4d00284fd14f91 + +2015-11-28 08:46 +0000 [f42d22d3a1] Matt Jordan + + * bridges/bridge_t38: Add a bridging module for managing T.38 state + + When 4875e5ac32 was merged, it fixed several issues with a direct media bridge + transitioning to handling a T.38 fax. However, it uncovered a race condition + caused by the bridging core. When a channel involved in a T.38 fax leaves a + bridge, the frame queued by the channel driver that should inform the far side + that it is no longer in a T.38 fax may not make it across the bridge. The + bridging framework is *extremely* aggressive in tearing down the bridge, and + control frames that are currently in flight *may* get dropped. + + This patch adds a new module to the bridging framework, bridge_t38. This module + maintains some notion of the T.38 state for the two channels in a bridge. When + the bridge detects that it is being torn down or when one of the two channels + leaves, it informs the respective channel(s) that they should stop faxing. This + ensures that channels switch back to audio if they survive and are ejected out + of a bridge while faxing. + + ASTERISK-25582 + + Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0 + +2015-11-21 05:35 +0000 [dcc01bc0a7] Alexander Traud + + * res_format_attr_opus: Update to latest RFC 7587. + + Beside that, the format-attribute module sends only non-default values in the + line fmtp, now. This avoids unnecessary overhead in SDP messages. Furthermore, + previously the parameter stereo was not parsed when being the first parameter. + + ASTERISK-25583 #close + + Change-Id: Iae85ba3e5960bfd5d51cf65bcffad00dd4875a73 +2015-12-02 14:11 +0000 [69457b8d61] Jonathan Rose + + * Fix crash in audiohook translate to slin + + This patch fixes a crash which would occur when an audiohook was + applied to a channel using an audio codec that could not be translated + to signed linear (such as when using pass-through codecs like OPUS or + when the codec translator module for the format in use is not loaded). + + ASTERISK-25498 #close + Reported by: Ben Langfeld + + Change-Id: Ib6ea7373fcc22e537cad373996136636201f4384 +2015-12-03 12:07 +0000 [5959186017] George Joseph + + * res_pjsip: Use a MD5 hash for static Contact IDs + + When 90d9a70789 was merged, it mostly tested dynamic contacts created as + a result of registering a PJSIP endpoint. Contacts generated in this + fashion typically have a long alphanumeric string as their object identifier, + which maps reasonably well for StatsD. Unfortunately, this doesn't work in the + general case. StatsD treats both '.' and ':' characters as special characters. + In particular, having a ':' appear in the middle of a StatsD metric will + result in the metric being rejected. + + This causes some obvious issues with SIP URIs. + + The StatsD API should not be responsible for escaping the metric name passed + to it. The metric is treated as a single long string, and it would be + challenging to know what to escape in the string passed to the function. + Likewise, we don't want to escape the metric in PJSIP, as that involves + overhead that is wasted when either res_statsd isn't loaded or enabled. + + This patch takes an alternative approach. The Contact ID has been changed + to be "aor@@uri_hash" instead of "aor@@uri". This (a) won't contain any of the + aforementioned special characters, (b) can be done on Contact creation, + which has minimal impact on run-time performance, and (c) also conforms to an + earlier commit that changed the ID for dynamic contacts. + + The downside of this is that StatsD users will have to map SHA1 hashes back to + the Contacts that are emitting the statistics. To that end, the CLI commands + have been updated to include the first 10 characters of the MD5 hash, which + should be enough to match what is shown in Graphite (or some other StatsD + backend). + + ASTERISK-25595 #close + + Change-Id: Ic674a3307280365b4a45864a3571c295b48a01e2 + Reported-by: Matt Jordan + Tested-by: George Joseph + +2015-11-30 22:19 +0000 [bd265a90be] George Joseph + + * res_pjsip: Update logging to show contact->uri in messages + + An earlier commit changed the id of dynamic contacts to contain + a hash instead of the uri. This patch updates status change + logging to show the aor/uri instead of the id. This required + adding the aor id to contact and contact_status and adding + uri to contact_status. The aor id gets added to contact and + contact_status in their allocators and the uri gets added to + contact_status in pjsip_options when the contact_status is + created or updated. + + ASTERISK-25598 #close + + Reported-by: George Joseph + Tested-by: George Joseph + + Change-Id: I56cbec1d2ddbe8461367dd8b6da8a6f47f6fe511 + +2015-12-01 16:11 +0000 [b5281b74e0] Jonathan Rose + + * Unset BRIDGEPEER when leaving a bridge + + Currently if a channel is transferred out of a bridge, the BRIDGEPEER + variable (also BRIDGEPVTCALLID) remain set even once the channel is + out of the bridge. This patch removes these variables when leaving + the bridge. + + ASTERISK-25600 #close + Reported by: Mark Michelson + + Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da + +2015-11-30 14:22 +0000 [59ba84e5cd] Richard Mudgett + + * res_sorcery_memory_cache.c: Fix off nominal ref leak. + + Change-Id: If83d63cf11cbc6df9b15251848b01feb570ade49 + +2015-11-30 16:42 +0000 [ef77439e39] Richard Mudgett + + * sched.c: Make not return a sched id of 0. + + According to the API doxygen a sched ID of 0 is valid. Unfortunately, 0 + was never returned historically and several users incorrectly coded usage + of the returned sched ID assuming that 0 was invalid. + + ASTERISK-25476 + + Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20 + +2015-11-25 12:23 +0000 [145d10a5d0] Richard Mudgett + + * Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions) + + chan_sip.c: + * Initialize mwi subscription scheduler ids earlier because of ASTOBJ to + ao2 conversion. + + * Initialize register scheduler ids earlier because of ASTOBJ to ao2 + conversion. + + chan_skinny.c: + * Fix more scheduler usage for the valid 0 id value. + + ASTERISK-25476 + + Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95 + +2015-11-24 12:44 +0000 [fa20729032] Richard Mudgett + + * Audit improper usage of scheduler exposed by 5c713fdf18f. + + channels/chan_iax2.c: + * Initialize struct chan_iax2_pvt scheduler ids earlier because of + iax2_destroy_helper(). + + channels/chan_sip.c: + channels/sip/config_parser.c: + * Fix initialization of scheduler id struct members. Some off nominal + paths had 0 as a scheduler id to be destroyed when it was never started. + + chan_skinny.c: + * Fix some scheduler id comparisons that excluded the valid 0 id. + + channel.c: + * Fix channel initialization of the video stream scheduler id. + + pbx_dundi.c: + * Fix channel initialization of the packet retransmission scheduler id. + + ASTERISK-25476 + + Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8 + +2015-12-01 07:55 +0000 [b24f2f4c2e] Alexander Traud + + * codec_resample: Increase buffer for Opus Codec. + + ASTERISK-25599 #close + + Change-Id: I1f88a88c59fb4e1e62bbdbb100c7152d48e73f10 + +2015-11-30 11:13 +0000 [e5723d2776] George Joseph + + * dns: Change lookup failures from LOG_ERROR to debug 1. + + dns.c and dns_system_resolver.c were spitting out errors for lookup + failures for things like not finding a SRV record even though + there was an A record. Those have been changed to debug messages. + Logging not finding ANY record is left to the higher level caller. + + Also, dns_system_resolver was using Windows line endings so I + converted them to Unix style. The actual log changes are on lines + 156 and 159. + + Change-Id: I65be16ea15304b96f9dcb4d289dbd3e2286fc094 + +2015-11-25 10:42 +0000 [270f7be54f] Alexander Traud + + * Build System: Support include-what-you-use. + + ASTERISK-25591 #close + + Change-Id: I8d3efa0826142ece9cbed2fd0d46f3b607fee6ae + +2015-11-08 23:49 +0000 [f2a84b500d] Rodrigo Ramírez Norambuena + + * app_queue: Show reason of pause on CLI + + Add value of pause reason when is paused on CLI command "queue show" + + ASTERISK-25581 #close + + Report by: Rodrigo Ramírez Norambuena + + Change-Id: I887028a40cd97b350da9a3bb2719616b7fec9864 + +2015-11-27 07:39 +0000 [7cb8f2f33e] Niklas Larsson + + * CHANGES: Fix a typo + + Change-Id: Iceb3d9bb78140c376174a7bee197dfcf8ef9cda7 + +2015-11-25 15:26 +0000 [9014f1f4a5] Kevin Harwell + + * fastagi: record file closed after sending result + + The fastagi record-file testsuite test sometimes fails reporting an empty + recorded file. This was happening because Asterisk was sending the agi result + notification prior to actually closing the file and the data, being buffered, + had not been written to the file yet when the test attempts to check the file + size. + + This patch makes it so the record file stream is closed prior to sending the + agi result notification. + + ASTERISK-25593 #close + + Change-Id: I6b2b3be3ae37f7c7b18e672c419a89b3b8513cde + +2015-11-25 13:29 +0000 [03759c5587] Walter Doekes + + * main: Slight refactor of main. Improve color situation. + + Several issues are addressed here: + - main() is large, and half of it is only used if we're not rasterisk; + fixed by spliting up the daemon part into a separate function. + - Call ast_term_init from rasterisk as well. + - Remove duplicate code reading/writing asterisk history file. + - Attempt to tackle background color issues and color changes that + occur. Tested by starting asterisk -c until the colors stopped + changing at odd locations. + - Remove unused term_prep() and term_prompt() functions. + + ASTERISK-25585 #close + + Change-Id: Ib641a0964c59ef9fe6f59efa8ccb481a9580c52f + +2015-11-24 13:54 +0000 [91346b9fb7] David M. Lee + + * Fixed some typos + + Fixes some minor typos in the CHANGES file, plus an embarrasing typo in + the StatsD API. + + Change-Id: I9ca4858c64a4a07d2643b81baa64baebb27a4eb7 + +2015-11-24 13:07 +0000 [fb45130476] Corey Farrell + + * res_pjsip_notify: Fix CLI usage info + + The usage info for 'pjsip send notify' previously referenced the + chan_sip configuration sip_notify.conf. Fix this to reference + the correct configuration pjsip_notify.conf. + + ASTERISK-25590 #close + + Change-Id: I3898271a8e8a8b1db201741e790ebe2c6bf5cdea + +2015-11-18 09:43 +0000 [ee9c114747] Matt Jordan + + * res/res_endpoint_stats: Add module to emit endpoint StatsD statistics + + This patch adds a module that emits StatsD statistics about Asterisk + endpoints. This includes: + * A GAUGE statistic for endpoint states, tracking how many endpoints are in + a particular state. + * A GAUGE statistic for each endpoint, counting the number of channels + currently associated with an endpoint. + + ASTERISK-25572 + + Change-Id: If7e1333c5aeda8d136850b30c2101c0ee1c97305 +2015-11-23 14:27 +0000 [9ca652f1b9] Richard Mudgett + + * res_sorcery_realtime.c: Fix crash from NULL sorcery object type. + + If the sorcery object type is not found a NULL is returned. + Unfortunately, sorcery_realtime_filter_objectset() will crash after + complaining about not finding the object type and saying to expect errors. + + * Use ao2_cleanup() instead of ao2_ref() to prevent the crash. + + ASTERISK-25165 + Reported by Corey Farrell + + Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97 + +2015-11-18 10:07 +0000 [75d90a9951] Matt Jordan + + * res_pjsip/pjsip_options: Add StatsD statistics for PJSIP contacts + + This patch adds the ability to send StatsD statistics related to the + state of PJSIP contacts. This includes: + * A GUAGE statistic measuring the count of contacts in a particular state. + This measures how many contacts are reachable, unreachable, etc. + * The RTT time for each contact, if those contacts are qualified. This + provides StatsD engines useful time-based data about each contact. + + ASTERISK-25571 + + Change-Id: Ib8378d73afedfc622be0643b87c542557e0b332c + +2015-11-13 10:34 +0000 [482f2fc5ff] Matt Jordan + + * res/res_pjsip_outbound_registration: Add registration statistics for StatsD + + This patch adds outbound registration statistics for StatsD. This includes + the following: + * A GUAGE metric for the overall count of outbound registrations. + * A GUAGE metric for each state an outbound registration can be in. As the + outbound registrations change state, the overall count of how many + outbound registrations are in the particular state is changed. + + These statistics are particularly useful for systems with a large number of + SIP trunks, and where measuring the change in state of the trunks is useful + for monitoring. + + ASTERISK-25571 + + Change-Id: Iba6ff248f5d1c1e01acbb63e9f0da1901692eb37 + +2015-11-18 10:05 +0000 [97d7b344de] Matt Jordan + + * res_statsd: Add functions that support variable arguments + + Often, the metric names of statistics we are generating for StatsD have some + dynamic component to them. This can be the name of a particular resource, or + some internal status label in Asterisk. With the current set of functions, + callers of the statsd API must first build the metric name themselves, then + pass this to the API functions. This results in a large amount of boilerplate + code and usage of either fixed length static buffers or dynamic memory + allocation, neither of which is desireable. + + This patch adds two new functions to the StatsD API that support a printf + style format specifier for constructing the metric name. A dynamic string, + allocated in threadstorage, is used to build the metric name. This eases + the burden on users of the StatsD API. + + Change-Id: If533c72d1afa26d807508ea48b4d8c7b32f414ea + +2015-11-20 21:08 +0000 [726ee873a6] Matt Jordan + + * chan_pjsip: Handle T.38 faxes with direct media bridges + + When a channel is in a direct media bridge, a re-INVITE may arrive that forces + Asterisk to re-negotiate the media to a T.38 fax. When this occurs, the bridge + must change its technology to a simple bridge, and re-INVITE the media back + to Asterisk. + + Generally, this logic mostly already exists in Asterisk. However, prior to this + patch, there were a few bugs: + (1) The T.38 framehook currently prevents a channel capable of T.38 faxes from + ever entering into a direct media bridge. This applies even when the only + media being passed over the channel is audio. This patch fixes this bug + by having the framehook specify that it defers caring about any frame type. + This allows the channels to enter into a direct media bridge, which will + be broken when a re-INVITE is received. + (2) When a re-INVITE is received, nothing instructed the bridging layer to + re-inspect the allowed bridging technology. This now occurs when either + a re-INVITE is received from a peer, or when a response is received from + the far end (that is, when the T.38 state changes to either + T38_PEER_REINVITE or T38_LOCAL_REINVITE). + (3) chan_pjsip needs to do a small amount of work to prevent a direct media + bridge from being chosen when a T.38 session is in progress. When a T.38 + session supplement has a t38 datastore - which is added when we detect + we should start thinking about T.38 on a channel - we now refuse a native + RTP bridge. + (4) When a BYE request is received, we don't terminate the T.38 session. If + the other side of a T.38 fax survives the hangup (due to the 'g' flag + in Dial, for example), we don't currently re-INVITE the media on the + other channel back to audio. This patch now has res_pjsip_t38 intercept + BYE requests and inform the far side that the T.38 session is terminated. + This naturally causes the correct re-INVITEs to be sent. + + ASTERISK-25582 + + Change-Id: Iabd6aa578e633d16e6b9f342091264e4324a79eb + +2015-10-22 09:44 +0000 [9315a93757] Matt Jordan + + * main/cli: Use proper string methods to check existence of context/exten/app + + Because the context, extension, and application are stored in stringfields, + checking for them being NULL doesn't work so well. This patch uses the + appropriate string library call, ast_strlen_zero, to see if there is a value + in the context/exten/app values. + + Change-Id: Ie09623bfdf35f5a8d3b23dd596647fe3c97b9a23 + +2015-11-20 21:07 +0000 [d2b141c79f] Matt Jordan + + * res/res_pjsip_t38: Add debug statements + + This patch adds some debug statements to res_pjsip_t38. These statements help + to determine which SDP negotiation callbacks are being executed, and, when + a particular callback exits, why a callback may not have applied its logic + to the local or remote SDP. + + Change-Id: I61b3fb9183b7ebbb5da8e9f48b59a5d9d7042d77 + +2015-11-19 09:40 +0000 [1bca90fcbe] Matt Jordan + + * res/res_pjsip_outbound_registration: Apply configuration on object type load + + When Asterisk is configured to use a dynamic sorcery backend (such as + res_sorcery_astdb) with 'registration' objects, it will fail to create the + internal state objects associated with the registration objects on module + load. This is due to nothing actually querying for the specific objects + and calling their sorcery apply handler during module load. + + This patch fixes that by calling get_registrations in the sorcery observer's + object_type_loaded handler. Doing this causes the sorcery backends to be + asked for the current state of all registration objects, which causes the + apply handler to be called and the internal run-time state to be created. + + ASTERISK-25575 #close + + Change-Id: Ie9306e797098c6d4da7bcf4a5434a15891508b23 + +2015-11-11 06:29 +0000 [8ccb1d2bed] Alexander Traud + + * translate: Provide translation modules the result of SDP negotiation. + + Previously, a trancoding module did not have access to the joint but cached + format. Therefore, the module did not have access to the attributes negotiated + via SDP (line fmtp). Now, a translation module receives the joint format. + + ASTERISK-25545 #close + + Change-Id: Id6878a989b50573298dab115d3371ea369e1a718 + +2015-11-19 01:03 +0000 [92ea46ba94] Alexander Traud + + * res_format_attr_h264: Do not reset string buffer. + + When no parameter is present, Asterisk does not generate the line fmtp, as + expected. However, because a buffer was reset, even rtpmap and fmtp of previous + media codecs got removed. Now, Asterisk does not reset other codecs in case of + no parameter for H.264. + + ASTERISK-25573 #close + + Change-Id: I93811331f4a28c45418a9e14ee46c0debd47a286 + +2015-11-18 02:25 +0000 [8c14b91651] Alec Davis + + * app_bridgeaddchan: ability to barge into existing call + + To be able to barge into a call by dialling a prefix+extension that maps + to the extensions device. + + Senario is that DECT headset users may be away from their desks and need + to transfer the call, the goal is that from any phone they dial a prefix + then their extension and are added to the bridge that they are in, from + there they can drop the headset call, as it's also on the handset, + and transfer the caller. + + The dialplan would look like, where prefix=73, extension = 8512; + exten => _738512,1,BridgeAdd(SIP/cisco0001) + + ASTERISK-25551 #close + Reported By: Alec Davis + + Change-Id: I8eb5096a02168dcc8d7aeea416ef36ba4ed10540 + +2015-11-05 15:37 +0000 [05addf3d8f] Tyler Cambron + + * StatsD: Add sample rate compatibility + + Implemented support for the StatsD sample rate parameter, + which is a parameter for determining when to send computed + statistics to a client. + + Valid sample rate values are: + Less than or equal to 0.0 will never be sent. + Between 0.0 and 1.0 will randomly be sent. + Greater than or equal to 1.0 will always be sent. + + ASTERISK-25419 + Reported By: Ashley Sanders + + Change-Id: I11d315d0a5034fffeae1178e650aa8264485ed52 + +2015-11-17 14:53 +0000 [3dbaf696e9] Richard Mudgett + + * res_pjsip_outbound_registration.c: Be tolerant of short registration timeouts. + + Change-Id: Ie16f5053ebde0dc6507845393709b4d6a3ea526d + +2015-11-17 14:53 +0000 [eaf898ac88] Richard Mudgett + + * res_pjsip_outbound_registration.c: Fix 423 response handling. + + Receiving a 423 Interval Too Brief response after authentication for an + outbound registration attempt results in assuming that the registrar has + rejected the registration permanently. If there are no configured retries + for fatal responses then the outbound registration is stopped for that + endpoint. + + For registrations, PJSIP/PJPROJECT intercepts the handling of 423 + responses and does not include any authentication in the updated + registration request. When the updated request is challenged then the + Asterisk code assumes that we were challenged again because the peer + rejected the authentication we sent earlier. + + * Made registration challenges keep track of the CSeq number to determine + if the received challenge response was for the request we thought we sent. + If the response's CSeq number differs from the CSeq number we last sent + with authentication then authenticate again because it is a challenge to a + different request. + + Change-Id: I81b4bd36d1be095bab606e34b8b44e6302971b09 + +2015-11-18 00:20 +0000 [4013f9d577] Alec Davis + + * app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked! + + commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525) + refer ASTERISK-24958 + + above commit removed ast_channel_lock(qe->chan); + but failed to remove corresponding ast_channel_unlock(qe->chan); + + ASTERISK-25561 #close + Reported Alec Davis + + Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a + +2015-11-16 16:10 +0000 [6919daab61] George Joseph + + * dns: Fix pointer increment in dns_parse_answer_ex + + When dns_parse_answer_ex was iterating over the answers it + wasn't incrementing the answer pointer correctly after the first + answer. The result was that no answers after the first + were being returned. For results where multiple records should + have been sorted by priority, weight, etc., there was nothing + to sort so the only the first record was returned even if it + wouldn't have been the correct record based on the sort. + + ASTERISK-25565 #close + Reported-by: Daniel Tryba + Tested-by George Joseph + + Change-Id: I8622604fefdcd3c11e2c5609a6382e53b1467b0b + +2015-11-13 14:03 +0000 [ed13732188] Mark Michelson + + * Confbridge: Add a user timeout option + + This option adds the ability to specify a timeout, in seconds, for a + participant in a ConfBridge. When the user's timeout has been reached, + the user is ejected from the conference with the CONFBRIDGE_RESULT + channel variable set to "TIMEOUT". + + The rationale for this change is that there have been times where we + have seen channels get "stuck" in ConfBridge because a network issue + results in a SIP BYE not being received by Asterisk. While these + channels can be hung up manually via CLI/AMI/ARI, adding some sort of + automatic cleanup of the channels is a nice feature to have. + + ASTERISK-25549 #close + Reported by Mark Michelson + + Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98 + +2015-11-16 13:56 +0000 [a83e426e91] Matt Jordan + + * res/res_pjsip: Fix off nominal crash with requests that fail and have a timer + + When a request is sent using pjsip_endpt_send_request and fails, a condition + exists where the request wrapper, which is an AO2 object, may be de-ref'd + more times than it should. This occurs when the request's callback is called, + and, in the callback, the timer on the PJSIP heap is cancelled. When that + occurs, the request wrapper's lifetime is decremented. When + pjsip_endpt_send_request fails, we unilaterally decrement the lifetime of + the request wrapper again, even though we've already cancelled the reference + associated with the timer. + + This patch checks the return result of pj_timer_heap_cancel_if_active before + removing the reference associated with the timer. We now only decrement it + in this case if a timer is cancelled as a result of the function call. + + Change-Id: I21332343a1a019c1117076f9bf2df27be2850102 + +2015-11-14 07:02 +0000 [a1fcf6f7b2] Joshua Colp + + * hashtab: Add NULL check when destroying iterator. + + The hashtab API is pretty NULL tolerant which has resulted + in remaining callers not doing much checks themselves. + Unfortunately the function to destroy an iterator does not + do a NULL check and will result in a crash if passed NULL. + This change fixes that. + + ASTERISK-25552 #close + + Change-Id: Ic1bf8eec3639e5a440f1c941d3ae3893ac6ed619 + +2015-11-13 14:32 +0000 [436023a322] Richard Mudgett + + * res_pjsip_rfc3326.c: Fix crash when channel goes away. + + If an authenticated incoming caller does not respond to our 200 OK INVITE + response with an ACK then PJSIP will hangup the call. Unfortunately, + there is a chance that the session's channel will go away between one use + of the channel pointer and another when building the BYE request because + the BYE is being built by the monitor thread and not the call's serializer + thread. + + * Added a check to ensure that the thread trying to add the Reason header + is the call's serializer thread. This ensures that the channel will not + go away on us. + + Change-Id: I866388d2b97ea2032eaae3f3ab3f1ca6cbd2df89 + +2015-11-13 14:19 +0000 [e8881e1770] Mark Michelson + + * Taskprocessors: Increase high-water mark + + In practical tests, we have seen certain taskprocessors, specifically + Stasis subscription taskprocessors, cross the recently-added high-water + mark and emit a warning. This high-water mark warning is only intended + to be emitted when things have tanked on the system and things are + heading south quickly. In the practical tests, the Stasis taskprocessors + sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in + any danger at all. + + As such, this ups the high-water mark to 500 tasks instead. It also + redefines the SIP threadpool request denial number to be a multiple of + the taskprocessor high-water mark. + + Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce + +2015-11-11 07:00 +0000 [fd23d423d8] Alexander Traud + + * format: Register format-attribute module with cached formats. + + In Asterisk 13, cached formats are created before their corresponding format- + attribute module is registered. Cached formats are involved when a local + extension is called. Therefore, ast_format_generate_sdp_fmtp did not work + on local extensions. This change affects the Opus Codec, H.263 (Plus), H.264, + and format-attribute modules provided externally. + + ASTERISK-25160 #close + + Change-Id: I1ea1f0483e5261e2a050112e4ebdfc22057d1354 + +2015-11-12 11:17 +0000 [40b58a5d2b] Mark Michelson + + * res_pjsip distributor: Don't send 503 response to responses. + + When the SIP threadpool is backed up with tasks, we send 503 responses + to ensure that we don't try to overload ourselves. The problem is that + we were not insuring that we were not trying to send a 503 to an + incoming SIP response. + + This change makes it so that we only send the 503 on incoming requests. + + Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404 + +2015-11-11 17:11 +0000 [264c74aa22] Mark Michelson + + * res_pjsip: Deny requests when threadpool queue is backed up. + + We have observed situations where the SIP threadpool may become + deadlocked. However, because incoming traffic is still arriving, the SIP + threadpool's queue can continue to grow, eventually running the system + out of memory. + + This change makes it so that incoming traffic gets rejected with a 503 + response if the queue is backed up too much. + + Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816 + +2015-11-12 06:24 +0000 [a159747660] Joshua Colp + + * format_cap: Don't append the 'none' format when appending all. + + When appending all formats of a type all the codecs are iterated + and added. This operation was incorrectly adding the ast_format_none + format which is special in that it is supposed to be used when no + format is present. It shouldn't be appended. + + ASTERISK-25535 + + Change-Id: I7b00f3bdf4a5f3022e483d6ece602b1e8b12827c + +2015-11-11 04:16 +0000 [d982b99e71] Steve Davies + + * Further fixes to improper usage of scheduler + + When ASTERISK-25449 was closed, a number of scheduler issues mentioned in + the comments were missed. These have since beed raised in ASTERISK-25476 + and elsewhere. + + This patch attempts to collect all of the scheduler issues discovered so + far and address them sensibly. + + ASTERISK-25476 #close + + Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b + +2015-11-11 11:04 +0000 [2954354404] Joshua Colp + + * threadpool: Handle worker thread transitioning to dead when going active. + + This change adds handling of dead worker threads when moving them + to be active. When this happens the worker thread is removed from + both the active and idle threads container. If no threads are able + to be moved to active then the pool grows as configured. + + A unit test has also been added which thrashes the idle timeout + and thread activation to exploit any race conditions between the + two. + + ASTERISK-25546 #close + + Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143 + +2015-11-10 09:24 +0000 [525c7ab780] Alexander Traud + + * rtp_engine: Init a format-attribute module to its RFC defaults. + + Previously, format-attribute modules relied on an existing fmtp line in SDP + negotiation. However, fmtp is optional for several formats like the Opus Codec. + Now, the format-attribute module is called with an empty fmtp, which allows the + module to initialise itself to RFC defaults. Furthermore now, Asterisk is able + to differentiate between internally and externally created formats. + + ASTERISK-25537 #close + + Change-Id: I28f680cef7fdf51c0969ff8da71548edad72ec52 + +2015-11-09 18:19 +0000 [be93036a4e] Corey Farrell + + * Remove ABI compatibility stub functions. + + ABI compatibility stubs existed for ast_app_separate_args and ast_verbose, + this is not needed in master. + + Change-Id: I07b4d2c16079da3c2c6efa55df4a74368e0bd453 + +2015-11-10 07:51 +0000 [02a124eda5] Corey Farrell + + * Remove execute permission from dns_system_resolver.c + + Change-Id: I3185735db42064bab00d3e073aed703385a00bf4 + +2015-11-09 03:01 +0000 [cf79b62778] Alexander Traud + + * ast_format_cap_get_names: To display all formats, the buffer was increased. + + ASTERISK-25533 #close + + Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a + +2015-11-09 07:04 +0000 [e85f0c81af] Alexander Traud + + * ast_format_cap: Avoid format creation on module load, use cache instead. + + Since Asterisk 13, formats are immutable and cached. However while loading a + module like chan_sip, some formats were created instead using cached ones. + + ASTERISK-25535 #close + + Change-Id: I479cdc220d5617c840a98f3389b3bd91e91fbd9b + +2015-11-06 07:54 +0000 [7dd8f89a50] Walter Doekes + + * func_callerid: Document that CALLERID(pres) is available. + + CALLERPRES() says that it's deprecated in favor of CALLERID(num-pres) + and CALLERID(name-pres). But for channel driver that don't make a + distinction between the two (e.g. SIP), it makes more sense to get/set + both at once. This change reveals the availability of CALLERID(pres), + CONNECTEDLINE(pres), REDIRECTING(orig-pres), REDIRECTING(to-pres) and + REDIRECTING(from-pres). + + ASTERISK-25373 #close + + Change-Id: I5614ae4ab7d3bbe9c791c1adf147e10de8698d7a +2015-11-06 07:52 +0000 [39daf9f066] Walter Doekes + + * docs: Fix a few typo's in app docs (more then, resourse). + + Change-Id: Iba57efadf6c0b822e762c7a001bc89611d98afd7 + +2015-11-06 14:19 +0000 [d82a4b098f] George Joseph + + * dns: Use ntohl for ans->ttl in dns_parse_answer_ex + + dns_parse_answer_ex was not converting ans->ttl from network + by order to host byte order which was causing certain ttls + it to go negative. In turn this was causing answer edit checks + to fail. + + ASTERISK-25528 #close + Reported-by: Daniel Tryba + Tested-by: George Joseph + + Change-Id: I31505132d6321c46d2f39fd06c20ee808a864037 + +2015-11-06 07:36 +0000 [74e7333317] Walter Doekes + + * xmldoc: Improve xmldoc wrapping of 'core show ...' output. + + Previously, the wrapping did both lookahead and lookback, which, + together with color escape sequences, caused some lines to be wrapped + way earlier than other lines. This led to inconsistent output. + + This simplifies the wrapping code and makes it more sane: if maxcolumns + is hit, we simply jump back to the last space and wrap there. + + ASTERISK-25527 #close + + Change-Id: I56d01c6f9a812642b1b05535c98d4db48d17c957 + +2015-11-06 06:57 +0000 [9d6e917349] Sean Bright (license #5060) + + * res_pjsip_sdp_rtp: Enable Opus to be negotiated via SIP/SDP. + + In SIP/SDP, Opus has two channels always (see RFC 7587 section 7). The actual + amount of channels is negotiated in-band. Therefore now, the Opus codec and its + attribute rtpmap are registered with two channels. + + ASTERISK-24779 #close + Reported by: PowerPBX + Tested by: Alexander Traud + patches: + asterisk-24779.patch submitted by Sean Bright (license #5060) + + Change-Id: Ic7ac13cafa1d3450b4fa4987350924b42cbb657b + +2015-11-03 16:19 +0000 [a2c2a8e1bb] Jonathan Rose + + * taskprocessor: Add high water mark warnings + + If a taskprocessor's queue grows large, this can indicate that there + may be a problem with tasks not leaving the processor or else that + the number of available task processors for a given type of task is + too low. This patch makes it so that if a taskprocessor's task queue + grows above 100 queued tasks that it will emit a warning message. + Warning messages are emitted only once per task processor. + + ASTERISK-25518 #close + Reported by: Jonathan Rose + + Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c + +2015-11-02 20:11 +0000 [cd5ae02812] Corey Farrell + + * Increase account code maximum length to 80. + + This increases the maximum length of account code's to match + extensions. This ensures it is always possible to set an + accountcode to ${EXTEN} without truncation. + + ASTERISK-23904 + Reported by: Ben Merrills + + Change-Id: If122602304ce03362722eb213a3111b32da5eeb9 + +2015-11-03 14:36 +0000 [379c041038] Tyler Cambron + + * StatsD: Add res_statsd compatibility + + Added a new api to res_statsd.c to allow it to receive a + character pointer for the value argument. This allows for a + '+' and a '-' to easily be sent with the value. + + ASTERISK-25419 + Reported By: Ashley Sanders + + Change-Id: Id6bb53600943d27347d2bcae26c0bd5643567611 + +2015-11-04 14:31 +0000 [9c293b5104] Matt Jordan + + * main/dial: Protect access to the format_cap structure of the requesting channel + + When a dial attempt is made that involves a requesting channel, we previously + were not: + a) Protecting access to the native format capabilities structure on the + requesting channel. That is inherently unsafe. + b) Reference bumping the lifetime of the format capabilities structure. + + In both cases, something else could sneak in, blow away the format + capabilities, and we'd be holding onto an invalid format_cap structure. When + the newly created channel attempts to construct its format capabilities, things + go poorly. + + This patch: + a) Ensures that we get a reference to the native format capabilities while + the requesting channel is locked + b) Holds a reference to the native format capabilities during the creation + of the new channel. + + ASTERISK-25522 #close + + Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f + +2015-10-30 22:57 +0000 [b0bf189908] Corey Farrell + + * Fix cli display of build options. + + A previous commit reduced the AST_BUILDOPTS compiler define to + only include options that affected ABI. This included some options + that were previously displayed by cli "core show settings". This + change corrects the CLI display while still restricting buildopts.h + to ABI effecting options only. + + ASTERISK-25434 #close + Reported by: Rusty Newton + + Change-Id: Id07af6bedd1d7d325878023e403fbd9d3607e325 + +2015-11-03 10:58 +0000 [63e02b45c6] Matt Jordan + + * pjsip_configuration: On delete, remove the persistent version of an endpoint + + When an endpoint is deleted (such as through an API), the persistent endpoint + currently continues to lurk around. While this isn't harmful from a memory + consumption perspective - as all persistent endpoints are reclaimed on + shutdown - it does cause Stasis endpoint related operations to continue + to believe that the endpoint may or may not exist. + + This patch causes the persistent endpoint related to a PJSIP endpoint to be + destroyed if the PJSIP endpoint is deleted. + + Change-Id: I85ac707b4d5e6aad882ac275b0c2e2154affa5bb +2015-11-03 11:15 +0000 [d33a1682e3] Matt Jordan + + * res_pjsip/location: Destroy contact_status objects on contact deletion + + The contact_status Sorcery objects are currently not destroyed when a contact + is deleted. This causes the contact's last known RTT/status to be 'sticky' + when the contact itself may no longer exist. This patch causes the + contact_status objects associated with both dynamic and static contacts to + be destroyed if the AoR holding those contacts is also destroyed (or via + other paths where a contact may be deleted.) + + Change-Id: I7feec8b9278cac3c5263a4c0483f4a0f3b62426e + +2015-11-03 08:15 +0000 [e26a06c1da] Matt Jordan + + * main/stasis_endpoints: Fix ContactStatusChange JSON for roundtrip_usec field + + The JSON packing for the ContactStatusChange event forgot to include the + roundtrip_usec field. As a result, the field never showed up in any event, + even when the data was available. This patch corrects that error by properly + packing the JSON blob with the data. + + Change-Id: I8df80da659a44010afbd48f645967518ff5daa17 + +2015-11-02 20:24 +0000 [40574a2ea3] Corey Farrell + + * chan_sip: Allow websockets to be disabled. + + This patch adds a new setting "websockets_enabled" to sip.conf. + Setting this to false allows chan_sip to be used without causing + conflicts with res_pjsip_transport_websocket. + + ASTERISK-24106 #close + Reported by: Andrew Nagy + + Change-Id: I04fe8c4f2d57b2d7375e0e25826c91a72e93bea7 + +2015-11-02 17:19 +0000 [f80a0ae49b] Mark Michelson + + * res_pjsip: Set threadpool max size default to 50. + + During a stress test of subscriptions, a huge blast of + subscription-related traffic resulted in the threadpool expanding to a + ridiculous number of threads. The balooning of threads resulted in an + increase of memory, which led to a crash due to being out of memory. + + An easy fix for the particular test was to limit the size of the + threadpool, thus reining in the amount of memory that would be used. It + was decided that there really is no downside to having a non-infinite + default value for the maximum size of the threadpool, so this change + introduces 50 threads as the maximum threadpool size for the SIP + threadpool. + + ASTERISK-25513 #close + Reported by John Bigelow + + Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be + +2015-10-29 15:25 +0000 [c5093b21ad] Tyler Cambron + + * StatsD: Send stuff to the StatsD server and test + + Added code to allow the StatsD dialplan application to + send data to the server specified in statsd.conf. + + ASTERISK-25419 + + Change-Id: I400db2f37c6ddf61515ff5a019646e36dcd0f922 + +2015-11-02 06:57 +0000 [014e3d426b] Matt Jordan + + * pjsip_options: Schedule/unschedule qualifies on AoR creation/destruction + + When an AoR is created or destroyed dynamically, the scheduled OPTIONS + requests that qualify the contacts on the AoR are not necessarily started + or destroyed, particularly for persistent contacts created for that AoR. + This patch adds create/update/delete sorcery observers for an AoR, which + schedule/unschedule the qualifies as expected. + + Change-Id: Ic287ed2e2952a7808ee068776fe966f9554bdf7d + +2015-10-30 13:22 +0000 [80cf4960ff] Matt Jordan + + * Makefile: Add a rule 'basic-pbx' that installs the Basic PBX configs + + This patch adds a rule for installing the Super Awesome Company based 'Basic + PBX' configuration files. As part of adding this rule, a bit of the content + that makes up installing the configuration files under the 'samples' target + was refactored into a make subroutine for usage by additional later config + make targets. + + Change-Id: I6c2e27906f73e2919a2b691da0be20ae70302404 +2015-10-29 08:28 +0000 [b522a5e30f] Joshua Colp + + * res_pjsip_pubsub: Fix assertion when UAS dialog creation fails. + + When compiled with assertions enabled one will occur when destroying + the subscription tree when UAS dialog creation fails. This is because + the code assumes that a dialog will always exist on a subscription + tree when in reality during this specific scenario it won't. + + This change makes it so a dialog is not removed from the subscription + tree if it is not present. + + ASTERISK-25505 #close + + Change-Id: Id5c182b055aacc5e66c80546c64804ce19218dee + +2015-10-08 11:50 +0000 [fdfd0fb488] Tyler Cambron + + * StatsD: Add user input validation to the application + + Added code to accept user input and validate it before + allowing it to be sent to the StatsD server. + + ASTERISK-25419 + Reported By: Ashley Sanders + + Change-Id: I55c7ce44326a68ad6c5c1514b9575ac50f25bbc3 + +2015-10-26 11:42 +0000 [d343a25173] Alexander Traud + + * chan_sip: Do not send all codecs on INVITE. + + Since version 13, Asterisk sent all allowed codecs as callee, even when the + caller did not request/support them. In case of dynamic RTP payloads, this led + to the same ID for different codecs, which is not allowed by SIP/SDP. Now, the + intersection between the requested and the supported codecs is send again. + + ASTERISK-24543 #close + + Change-Id: Ie90cb8bf893b0895f8d505e77343de3ba152a287 + +2015-10-19 07:11 +0000 [88f3dbaec9] Rodrigo Ramírez Norambuena + + * install_prereq: Update repositories before install on Debian systems + + When to install packages the indexed local is more old of the + version of software on the repository they have been upgraded by security + update then get the package will give 404 not found. + + The patch prevent by update local index to repository for aptitude before + install. + + ASTERISK-25495 #close + + Reporte by: Rodrigo Ramírez Norambuena + + Change-Id: I645959e553aac542805ced394cac2dca964051fa + +2015-10-24 13:08 +0000 [4328d320c2] George Joseph + + * build: GCC 5.1.x catches some new const, array bounds and missing paren issues + + Fixed 1 issue in each of the affected files. + + ASTERISK-25494 #close + Reported-by: George Joseph + Tested-by: George Joseph + + Change-Id: I818f149cd66a93b062df421e1c73c7942f5a4a77 + +2015-10-20 16:02 +0000 [a8aee0bbdb] George Joseph + + * res_pjsip: Add "like" processing to pjsip list and show commands + + Add the ability to filter output from pjsip list and show commands + using the "like" predicate like chan_sip. + + For endpoints, aors, auths, registrations, identifyies and transports, + the modification was a simple change of an ast_sorcery_retrieve_by_fields + call to ast_sorcery_retrieve_by_regex. For channels and contacts a + little more work had to be done because neither of those objects are + true sorcery objects. That was just removing the non-matching object + from the final container. Of course, a little extra plumbing in the + common pjsip_cli code was needed to parse the "like" and pass the regex + to the get_container callbacks. + + Some of the get_container code in res_pjsip_endpoint_identifier was also + refactored for simplicity. + + ASTERISK-25477 #close + Reported by: Bryant Zimmerman + Tested by: George Joseph + + Change-Id: I646d9326b778aac26bb3e2bcd7fa1346d24434f1 + +2015-10-21 12:22 +0000 [691c0e0b31] Kevin Harwell + + * res_pjsip_outbound_registration: registration stops due to fatal 4xx response + + During outbound registration it is possible to receive a fatal (any permanent/ + non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due + to a problem with the registrar itself. Upon receiving the failure response + Asterisk terminates outbound registration for the given endpoint. + + This patch adds an option, 'fatal_retry_interval', that when set continues + outbound registration at the given interval up to 'max_retries' upon receiving + a fatal response. + + ASTERISK-25485 #close + + Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2 + +2015-10-22 17:07 +0000 [5dd9e1938a] Mark Michelson + + * format_cap: Detect vector allocation failures. + + A crash was seen on a system that ran out of memory due to Asterisk not + checking for vector allocation failures in format_cap.c. With this + change, if either of the AST_VECTOR_INIT calls fail, we will return a + value indicating failure. + + Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8 + +2015-10-02 15:32 +0000 [7f9823ff57] Mark Michelson + + * res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog. + + A certain situation can result in our attempting to send a NOTIFY on a + destroyed dialog. Say we attempt to send a NOTIFY to a subscriber, but + that subscriber has dropped off the network. We end up retransmitting + that NOTIFY until the appropriate SIP timer says to destroy the NOTIFY + transaction. When the pjsip evsub code is told that the transaction has + been terminated, it responds in kind by alerting us that the + subscription has been terminated, destroying the subscription, and then + removing its reference to the dialog, thus destroying the dialog. + + The problem is that when we get told that the subscription is being + terminated, we detect that we have not sent a terminating NOTIFY + request, so we queue up such a NOTIFY to be sent out. By the time that + queued NOTIFY gets sent, the dialog has been destroyed, so attempting to + send that NOTIFY can result in a crash. + + The fix being introduced here is actually a reintroduction of something + the pubsub code used to employ. We hold a reference to the dialog and + wait to decrement our reference to the dialog until our subscription + tree object is destroyed. This way, we can send messages on the dialog + even if the PJSIP evsub code wants to terminate earlier than we would + like. + + In doing this, some NULL checks for subscription tree dialogs have been + removed since NULL dialogs are no longer actually possible. + + Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5 + +2015-09-29 14:53 +0000 [e9e4bc9ece] Mark Michelson + + * res_pjsip_pubsub: Ensure dialog lock balance. + + When sending a NOTIFY, we lock the dialog and then unlock the dialog + when finished. A recent change made it so that the subscription tree's + dialog pointer will be set NULL when sending the final NOTIFY request + out. This means that when we attempt to unlock the dialog, we pass a + NULL pointer to pjsip_dlg_dec_lock(). The result is that the dialog + remains locked after we think we have unlocked it. When a response to + the NOTIFY arrives, the monitor thread attempts to lock the dialog, but + it cannot because we never released the dialog lock. This results in + Asterisk being unable to process incoming SIP traffic any longer. + + The fix in this patch is to use a local pointer to save off the pointer + value of the subscription tree's dialog when locking and unlocking the + dialog. This way, if the subscription tree's dialog pointer is NULLed + out, the local pointer will still have point to the proper place and the + dialog lock will be unlocked as we expect. + + Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a + +2015-09-28 16:36 +0000 [b96267f7a3] Mark Michelson + + * res_pjsip_pubsub: Prevent crashes on final NOTIFY. + + The SIP dialog is removed from the subscription tree when the final + NOTIFY is sent. However, after the final NOTIFY is sent, the persistence + update function still attempts to access the cseq from the dialog, + resulting in a crash. + + This fix removes the subscription persistence at the same time that the + dialog is removed from the subscription tree. This way, there is no + attempt to update persistence when the subscription is being destroyed. + + Change-Id: Ibb46977a6cef9c51dc95f40f43446e3d11eed5bb + +2015-09-17 17:28 +0000 [386cd7b2b0] Mark Michelson + + * res_pjsip_pubsub: Remove serializer when sending final NOTIFY. + + There have been crashes seen where a taskprocessor's listener is NULL + unexpectedly. + + Looking at backtraces, the problem was specifically seen in PJSIP + serializers. + + Subscriptions make the mistake of removing a serializer from a dialog + during subscription tree destruction. Since subscription trees are + reference-counted, guaranteeing the circumstances behind the destruction + are not possible. This makes it so that the dialog serializer can be + removed while not holding the dialog lock. This makes it possible for + the distributor to get a pointer to the dialog serializer and have that + serializer get freed out from under it. + + The fix for this is to remove the serializer from a subscription dialog + when sending the final NOTIFY. This guarantees that the serializer is + removed with the dialog lock held. By doing this, we guarantee that if + the distributor gains access to the dialog's serializer, it will not be + possible for the serializer to get freed by another thread. + + Change-Id: I21f5dac33529f65cec45679bdace60670800ff66 + +2015-09-02 09:14 +0000 [0b63d011c9] Mark Michelson + + * res_pjsip_pubsub: Fix crash on destruction of empty subscription tree. + + If an old persistent subscription is recreated but then immediately + destroyed because it is out of date, the subscription tree will have no + leaf subscriptions on it. This was resulting in a crash when attempting + to destroy the subscription tree. + + A simple NULL check fixes this problem. + + Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac + +2015-09-01 15:47 +0000 [ac0194dad6] Mark Michelson + + * res_pjsip_pubsub: Solidify lifetime and ownership of objects. + + There have been crashes and general instability seen in the pubsub code, + so this patch introduces three changes to increase the stability. + + First, the ownership model for subscriptions has been modified. Due to + RLS, subscriptions are stored in memory as a tree structure. Prior to my + patch, the PJSIP subscription was the owner of the subscription tree. + When the PJSIP subscription told us that it was terminating, we started + destroying the subscription tree along with all of the individual leaf + subscriptions that belong to the tree. The problem with this model is + that the two actors in play here, the PJSIP subscription and the + individual leaf subscriptions, need to have joint ownership of the + subscription tree. So now, the PJSIP subscription and the individual + leaf subscriptions each have a reference to the subscription tree. This + way, we will not actually free memory until no players are left that + care. The PJSIP subscription is a bigger stakeholder, in that if the + PJSIP subscription's reference to the subscription tree is removed, the + subscription tree instructs the leaf subscriptions to shut down and drop + their references to the subscription tree when possible. The individual + leaf subscriptions, upon being told to shut down, can drop their stasis + subscriptions or whatever they use to learn of new state, and then drop + their reference to the subscription tree once they are ready to die. + + Second, the lifetime of a PJSIP subscription's reference to our + subscription tree has been altered. As I learned from doing a deep dive, + the PJSIP evsub code can tell Asterisk multiple times that the + subscription has been terminated, and not all of these times + are especially helpful. I have altered the message flow that we use for + SIP subscriptions such that we will always drop the PJSIP subscription's + reference to the subscription tree when we send the NOTIFY that + terminates a SIP subscription. This also means that we will now queue + NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so + that we can have predictable state changes from the PJSIP evsub code. + + Third, the synchronization of operations has been improved. PJSIP can + call into our code from a serializer thread (e.g. upon receiving an + incoming request) or from the monitor thread (e.g. when a subscription + times out). Because of this, there is the possibility of competing + threads stepping on each other. PJSIP attempts to do some + synchronization on its own by always keeping the dialog lock held when + it calls into us. However, since we end up pushing tasks into the + serializer, the result was that serialized operations were not grabbing + the dialog lock and could, as a result, step on something that was being + attempted by a different thread. Now we ensure that serialized + operations grab the dialog lock, then check for extenuating + circumstances, then proceed with their operation if they can. + + Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5 + +2015-10-19 15:28 +0000 [1ce62b2545] Richard Mudgett + + * strings.c: Fix __ast_str_helper() to always return a terminated string. + + Users of functions which call __ast_str_helper() such as the ones listed + below are likely to not check the return value for failure so ensuring + that the string is always nil terminated is a good safety measure. + + ast_str_set_va() + ast_str_append_va() + ast_str_set() + ast_str_append() + + Change-Id: I36ab2d14bb6015868b49329dda8639d70fbcae07 + +2015-10-19 15:27 +0000 [a04d946eaa] Richard Mudgett + + * Add missing failure checks to ast_str_set_va() callers. + + Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f + +2015-10-21 11:44 +0000 [64c172deba] Joshua Colp + + * res_pjsip: Move URI validation to use time. + + In a realtime based system with a limited number of threadpool threads + it is possible for a deadlock to occur. This happens when permanent + endpoint state is updated, which will cause database queries to be done. + These queries may result in URI validation being done which is done + synchronously using a PJSIP thread. If all PJSIP threads are in use + processing traffic they themselves may be blocked waiting to get the + permanent endpoint container lock when identifying an endpoint. + + This change moves URI validation to occur at use time instead of + configuration time. While this comes at a cost of not seeing a problem + until you use it it does solve the underlying deadlock problem. + + ASTERISK-25486 #close + + Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a + +2015-10-21 08:08 +0000 [f9cbac7321] Alexander Traud + + * format: Update the maximum packetization time for iLBC 30. + + In September 2006, the maximum packetization time (ptime) were set to such a + low value, packetization was disabled for many codecs actually. This was fixed + for many codecs but not for iLBC 30. This enables packetization for iLBC which + can be enabled for example via allow=ilbc:60,gsm,alaw,ulaw in the file sip.conf. + + ASTERISK-7803 + + Change-Id: I2ef90023d35efb7cb8fe96ed74f53f6846ffad12 +2015-10-21 09:51 +0000 [f3b2b3d1b3] Alexander Traud + + * chan_sip: Fix autoframing=yes. + + With Asterisk 13, the structures ast_format and ast_codec changed. Because of + that, the paketization timing (framing) of the RTP channel moved away from the + formats/codecs. In the course of that change, the ptime of the callee was not + honored anymore, when the optional autoframing was enabled. + + ASTERISK-25484 #close + + Change-Id: Ic600ccaa125e705922f89c72212c698215d239b4 + +2015-10-20 22:24 +0000 [b425850f8b] Matt Jordan + + * rest-api-templates: Wikify error code response reasons + + Error response code descriptions may contain wiki markup that need to be + escaped. Without this patch, Confluence will reject the document being sent + and the responsible script will raise an exception. + + Change-Id: I21fcb66fee7f6332381f2b99b1b0195dff215ee5 + +2015-10-20 12:06 +0000 [7be6194d6f] Matt Jordan + + * funcs/func_holdintercept: Actually add the HOLD_INTERCEPT function + + When ab803ec342 was committed, it accidentally forgot to actually *add* the + HOLD_INTERCEPT function. This highlights two interesting points: + * Gerrit forces you to put the patch as it is going to into the repo up for + review, which Review Board did not. Yay Gerrit. + * No one apparently bothered to use this feature, or else they don't know about + it. I'm going to go with the latter explanation. + + ASTERISK-24922 + + Change-Id: Ida38278f259dd07c334a36f9b7d5475b5db72396 + +2015-10-19 14:14 +0000 [77780790e0] Jonh Wendell + + * main/cdr: Allow modules to modify CDR fields before dispatching them + + This patch adds the functions + + ast_cdr_modifier_register() + ast_cdr_modifier_unregister() + + That work much like ast_cdr_register() and ast_cdr_unregister(). + + Modules registered will be given a chance to modify (or to do whatever + they want) CDR fields just before they are passed to registered engines. + + Thus, for instance, if a module change the "userfield" field of a CDR, + the modified value will be passed to every registered CDR backend for + logging. + + ASTERISK-25479 #close + + Change-Id: If11d8fd19ef89b1a66ecacf1201e10fcf86ccd56 +2015-10-19 19:59 +0000 [b9bd249a85] Matt Jordan + + * contrib/scripts/autosupport: Update for Asterisk 13 + + This patch adds some minor tweaks for autosupport to update it for Asterisk 13. + This includes: + * Finally removing most references to Zaptel + * Adding support for some additional 'core' commands, and fixing nomenclature + that generally hasn't been used for some time + * Adding some PJSIP/SIP commands to gather endpoints/peers and active channels + + Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1 + (cherry picked from commit 9fc9777fa34753fb38991d42d8dbed516e907ca2) + +2015-10-18 18:22 +0000 [92fa8d1e0e] Rodrigo Ramírez Norambuena + + * app_queue: Added reason pause of member + + In app_queue added value Paused Reason on QueueMemberStatus when a member + on queue is paused and the reason was set. + + ASTERISK-25480 #close + Reporte by: Rodrigo Ramírez Norambuena + + Change-Id: Ia5db503482f50764c15e2020196c785f59d4a68e + +2015-10-16 22:01 +0000 [b19860c03a] Corey Farrell + + * res_ari_events: Fix memory leak in mustache template. + + ASTERISK-25308 fixed a memory leak in res_ari_events.c, but + this file is regenerated by a template and the template was + not fixed. + + Change-Id: Ied4c6deae89d21f87f9cf99676b1d055aa83b38b + +2015-10-14 14:15 +0000 [d799bcf361] mdu113 + + * res_config_pgsql.c: Fix deadlock loading realtime configuration. + + On v13, loading several thousand PJSIP endpoints on Asterisk start causes + a deadlock most of the time. + + Thanks to mdu113 for discovering that there was a call to pgsql_exec() not + protected by the pgsql_lock reentrancy lock. + + {quote} + I believe a code path exists that attempts to use pgsql connection without + locking pgsql_lock. I believe what happens during that deadlock that I + see is two concurrent threads are both attempting to send query to pgsql, + one of the thread is using a code path without locking pgsql_lock. If + they managed to send queries at the same time, it seems postgres ignores + one of the queries and replies only to the one of them. If it happens so + that the thread holding the lock didn't receive the reply it will wait for + it (and hold the lock) forever (or at least for very long time), thus + completely blocking all access to db. + {quote} + + * Added missing reentrancy locking around pgsql_exec() in find_table(). + + * Moved unlock of pgsql_lock in unload_module() to avoid locking inversion + between the psql_tables list lock and the pgsql_lock. + + ASTERISK-25455 #close + Reported by: mdu113 + Patches: + res_config_pgsql.c-connlock2.diff (license #5543) patch uploaded by mdu113 + + Change-Id: Id9e7cdf8a3b65ff19964b0cf942ace567938c4e2 + +2015-10-13 14:13 +0000 [13229037d1] Olle Johansson (License 5267) + + * channels/chan_sip: Set cause code to 44 on RTP timeout + + To quote Olle: + + "When issuing a hangup due to RTP timeouts the cause code is not set. I have + selected 44 based on Cisco's implementation..." + + ASTERISK-25135 #close + Reported by: Olle Johansson + patches: + rtp-timeout-cause-1.8.diff uploaded by Olle Johansson (License 5267) + + Change-Id: Ia62100c55077d77901caee0bcae299f8dc7375fc + +2015-10-12 11:21 +0000 [984f100dab] Richard Mudgett + + * config.c: Fix off-nominal memory leak. + + Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0 + +2015-10-12 11:20 +0000 [9951255775] Richard Mudgett + + * config.c: Fix potential memory corruption after [section](+). + + The memory corruption could happen if the [section](+) is the last section + in the file with trailing comments. In this case process_text_line() has + left *last_cat is set to newcat and newcat is destroyed. + + Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93 + +2015-10-12 11:21 +0000 [c1ed11ee31] Richard Mudgett + + * config.c: Fix #include after [section](+). + + An #include right after a [section](+) would associate any variable + assignments before a new section in the #include with the wrong section. + + * Fix section association by setting the current section to the appended + section. + + * Fix '+' and '!' section flag interaction corner case depending upon + which flag came first. If the '!' came first then it would be ignored. + If the '!' came after then it would affect the appended section. The '!' + will now no longer be ignored. + + ASTERISK-25461 #close + Reported by: Sean Pimental + + Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3 + +2015-10-10 15:20 +0000 [a12eb89ea4] Ivan Poddubny + + * Build: Add menuselect options for using compiler sanitizers + + This patch adds menuselect options for building Asterisk with + various sanitizers provided by gcc and clang. + + When one of *SANITIZER flags is set in menuselect, the appropriate + option is added to CFLAGS ad LDFLAGS for the build. + + Information on sanitizers in the project wiki: + https://github.com/google/sanitizers/wiki + + GCC Manual: + https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html + + Clang Compiler User's Manual: + http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation + + ASTERISK-24718 #close + Reported by: Badalian Vyacheslav + + Change-Id: Iafa51b792b7bcb20e848b99d16cf362d08590fa0 + +2015-10-08 16:43 +0000 [ca030845ff] Richard Mudgett + + * configure: Fix check for libunbound to require v1.5.0 as minimum. + + Versions of libunbound before v1.4.21 do not compile with Asterisk. + However, since v1.4.21 has a configure script bug that fails to detect the + ldns library (which is fixed in v1.4.22) and v1.4.22 is not an easily + detectable version we will require v1.5.0 as a minimum version of the + library to work with Asterisk. + + ASTERISK-25108 #close + Reported by: Richard Mudgett + + Change-Id: Ieb228bfb01467573fc121c7356a9dde27128894d + +2015-10-08 11:50 +0000 [2fe9f09705] Tyler Cambron + + * StatsD: Write skeleton Asterisk application + + Wrote the skeleton framework for the Asterisk StatsD dialplan + application. This includes a load function, unload function, a + callback for execution, and XML documentation. + + ASTERISK-25419 + Reported By: Ashley Sanders + + Change-Id: I9597730e134c6e82c8a55ef4d5334b62dd473363 + +2015-10-06 18:01 +0000 [34d7fa6c4a] Richard Mudgett + + * res_pjsip: Fix deadlock when sending out-of-dialog requests. + + The struct send_request_wrapper has a pjsip lock associated with it that + is created non-recursive. There is a code path for the struct + send_request_wrapper lock that will attempt to lock it recursively. The + reporter's deadlock showed that the thread calling endpt_send_request() + deadlocked itself right after the wrapper object got created. + + Out-of-dialog requests such as MESSAGE, qualify OPTIONS, and unsolicited + MWI NOTIFY messages can hit this deadlock. + + * Replaced the struct send_request_wrapper pjsip lock with the mutex lock + that can come with an ao2 object since all of Asterisk's mutexes are + recursive. Benefits include removal of code maintaining the pjsip + non-recursive lock since ao2 objects already know how to maintain their + own lock and the lock will show up in the CLI "core show locks" output. + + ASTERISK-25435 #close + Reported by: Dmitriy Serov + + Change-Id: I458e131dd1b9816f9e963f796c54136e9e84322d + +2015-10-06 11:05 +0000 [cc131832aa] Stefan Engström + + * res/res_rtp_asterisk.c: Fix incorrect assignment of frame->subclass.frame_ending + + In ast_rtp_read, the value of the variable 'mark' which we try to assign to a + frame->subclass.frame_ending may be 0, 1 or (1<<23), but we should translate + it to 0 or 1. + + ASTERISK-25451 #close + Change-Id: I53bdf5c026041730184a6a809009c028549ce626 + +2015-10-07 01:24 +0000 [c944263e36] Ivan Poddubny + + * func_presencestate: Return "not_set" when no data is set in AstDB + + Return AST_PRESENCE_NOT_SET when CustomPresence AstDB key does not + exist, i.e. when a new CustomPresence is added in the dialplan. + + ASTERISK-25400 #close + Reported by: Andrew Nagy + + Change-Id: I6fb17b16591b5a55fbffe96f3994ec26b1b1723a + +2015-10-06 20:43 +0000 [4bf395e81e] Matt Jordan + + * res/res_rtp_asterisk: Fix assignment after ao2 decrement + + When we decide we will no longer schedule an RTCP write, we remove the + reference to the RTP instance, then assign -1 to the stored scheduler ID + in case something else comes along and wants to see if anything is scheduled. + + That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to + fix the regression introduced by 3cf0f29310, this improper assignment on a + potentially destroyed object started getting tripped on the build agents. + + Frankly, this should have been crashing a lot more often earlier. I can only + assume that the timing was changed just enough by both changes to start + actually hitting this problem. + + As it is, simply moving the assignment prior to the ao2 deference is sufficient + to keep the RTP instance from being referenced when it is very, truly, + aboslutely dead. + + (Note that it is still good practice to assign -1 to the scheduler ID when we + know we won't be scheduling it again, as the ao2 deref *may* not always destroy + the ao2 object.) + + ASTERISK-25449 + + Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7 + +2015-10-06 12:40 +0000 [3ec9cf7d6a] Florian Sauerteig + + * chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers. + + If a Via header containes an IPv6 address and a port number is ommitted, + as it is the standard port, we now leave the port empty and to not set it + to the value after the first colon of the IPv6 address. + + ASTERISK-25443 #close + + Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70 + +2015-10-05 16:53 +0000 [8fe9350b68] Richard Mudgett + + * chan_pjsip: Fix crash on reINVITE before initial INVITE completes. + + Apparently some endpoints attempt to send a reINVITE before completing the + initial INVITE transaction. In this case PJSIP responds appropriately to + the reINVITE with a 491 INVITE request pending. Unfortunately chan_pjsip + is using the initial INVITE transaction state to determine if an INVITE is + the initial INVITE or a reINVITE. Since the initial INVITE transaction + has not been confirmed yet chan_pjsip thinks the reINVITE is an initial + INVITE and starts another PBX thread on the channel. The extra PBX thread + ensures that hilarity ensues. + + * Fix checks for a reINVITE on incoming requests to look for the presence + of a to-tag instead of the initial INVITE transaction state. + + * Made caller_id_incoming_request() determine what to do if there is a + channel on the session or not. After a channel is created it is too late + to just store the new party id on the session because the session's party + id has already been copied to the channel's caller id. + + ASTERISK-25404 #close + Reported by: Chet Stevens + + Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be + +2015-10-05 21:34 +0000 [8cb614fe20] Matt Jordan + + * Fix improper usage of scheduler exposed by 5c713fdf18f + + When 5c713fdf18f was merged, it allowed for scheduled items to have an ID of + '0' returned. While this was valid per the documentation for the API, it was + apparently never returned previously. As a result, several users of the + scheduler API viewed the result as being invalid, causing them to reschedule + already scheduled items or otherwise fail in interesting ways. + + This patch corrects the users such that they view '0' as valid, and a returned + ID of -1 as being invalid. + + Note that the failing HEP RTCP tests now pass with this patch. These tests + failed due to a duplicate scheduling of the RTCP transmissions. + + ASTERISK-25449 #close + + Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39 +2015-08-26 16:58 +0000 [c6b0d60264] Debian Amtelco + + * chan_pjsip: Add Referred-By header to the PJSIP REFER packet. + + Some systems require the REFER packet to include a Referred-By header. + If the channel variable SIPREFERREDBYHDR is set, it passes that value as the + Referred-By header value. Otherwise, it adds the current dialog’s local info. + + Reported by: Dan Cropp + Tested by: Dan Cropp + + Change-Id: I3d17912ce548667edf53cb549e88a25475eda245 + +2015-10-03 06:27 +0000 [89dec7675d] Ivan Poddubny + + * manager: Fix GetConfigJSON returning invalid JSON + + When GetConfigJSON was introduced back in 1.6, it returned each + section as an array of strings: ["key=value", "key2=value2"]. + Afterwards, it was changed a few times and became + ["key": "value", "key2": "value2"], which is not a correct JSON. + This patch fixes that by constructing a JSON object {} instead of + an array []. + + Also, the keys "istemplate" and "tempates" that are used to + indicate templates and their inherited categories are now wrapped in + quotes. + + ASTERISK-25391 #close + Reported by: Bojan Nemčić + + Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8 + +2015-09-30 17:28 +0000 [1b80dbeb60] Richard Mudgett + + * res_sorcery_memory_cache.c: Fix deadlock with scheduler. + + A deadlock can happen when a sorcery object is being expired from the + memory cache when at the same time another object is being placed into the + memory cache. There are a couple other variations on this theme that + could cause the deadlock. Basically if an object is being expired from + the sorcery memory cache at the same time as another thread tries to + update the next object expiration timer the deadlock can happen. + + * Add a deadlock avoidance loop in expire_objects_from_cache() to check if + someone is trying to remove the scheduler callback from the scheduler. + + ASTERISK-25441 #close + + Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc + +2015-10-01 14:30 +0000 [9c1ca287a4] Richard Mudgett + + * res_sorcery_memory_cache.c: Replace inline code with function. + + Make sorcery_memory_cache_close() call remove_all_from_cache() instead of + partially inlining it. + + ASTERISK-25441 + + Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c + +2015-10-01 14:27 +0000 [6554a3b25e] Richard Mudgett + + * res_sorcery_memory_cache.c: Shutdown in a less crash potential order. + + Basically you should shutdown in the opposite order of how you setup since + later setup pieces likely depend on earlier setup pieces. e.g., + Registering your external API with the rest of the system should be the + last thing setup and the first thing unregistered during shutdown. + + Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e + +2015-09-30 17:27 +0000 [359394cc29] Richard Mudgett + + * res_sorcery_memory_cache.c: Misc tweaks. + + Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160 + +2015-09-30 17:27 +0000 [7942d1c2ff] Richard Mudgett + + * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK. + + Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c + +2015-09-30 13:42 +0000 [9f229d6a49] Joshua Colp + + * res_rtp_asterisk: Move "Set role" warning to be debug. + + In practice the set_role API callback can be invoked even + when no ICE is present on an RTP instance. This can occur + if ICE has not been enabled on it. + + ASTERISK-25438 #close + + Change-Id: I0e17e4316f0f0d7f095c78c3d4fd73a913b6ba69 + +2015-09-28 15:31 +0000 [9bc7386b7c] Richard Mudgett + + * sched.c: Add warning about negative time interval request. + + Change-Id: Ib91435fb45b7f5f7c0fc83d0eec20b88098707bc + +2015-09-25 18:37 +0000 [12feec0bf7] Richard Mudgett + + * res/ari/config.c: Fix user sort compare function. + + Made use the ao2 sort compare template function and OBJ_SEARCH_xxx + identifiers. + + Change-Id: Ic53005dc5aafa7a36c72300dd89b75fb63c92f4c + +2015-09-25 17:26 +0000 [3f4fa245e5] Richard Mudgett + + * res/ari/config.c: Optimize conf_alloc() object init. + + * Now conf_alloc() has more off nominal error checking. + + * Eliminated RAII_VAR() use in conf_alloc(). + + * Eliminated a dubius shortcut when destroying cfg->general in + conf_destructor() that would cause a crash if cfg->general failed to get + allocated. + + * Add some ACO registration section comments. + + Change-Id: Ia40c2b1b2d0777d641605118ae019c5a73865e1a + +2015-09-25 16:48 +0000 [aa00df62ee] Richard Mudgett + + * res/ari/config.c: Fix conf_alloc() object init. + + Need to finish initializing the string fields in the ao2 object before + putting any default strings into them. + + ASTERISK-25383 #close + Reported by: yaron nahum + + Change-Id: I9f7f3a03f0c4991a01593abf8697b9a587c0ea84 + +2015-09-21 07:26 +0000 [2d7a4a3357] Matt Jordan + + * main/logger: Add log formatters and JSON structured logs + + When Asterisk is part of a larger distributed system, log files are often + gathered using tools (such as logstash) that prefer to consume information + and have it rendered using other tools (such as Kibana) that prefer a + structured format, e.g., JSON. This patch adds support for JSON formatted + logs by adding support for an optional log format specifier in Asterisk's + logging subsystem. By adding a format specifier of '[json]': + + full => [json]debug,verbose,notice,warning,error + + Log messages will be output to the 'full' channel in the following + format: + + { + "hostname": Hostname or name specified in asterisk.conf + "timestamp": Date/Time + "identifiers": { + "lwp": Thread ID, + "callid": Call Identifier + } + "logmsg": { + "location": { + "filename": Name of the file that generated the log statement + "function": Function that generated the log statement + "line": Line number that called the logging function + } + "level": Log level, e.g., DEBUG, VERBOSE, etc. + "message": Actual text of the log message + } + } + + ASTERISK-25425 #close + + Change-Id: I8649bfedf3fb7bf3138008cc11565553209cc238 + +2015-09-27 20:45 +0000 [9402f80726] Matt Jordan + + * res/res_stasis: Fix accidental subscription to 'all' bridge topic + + When b99a7052621700a1aa641a1c24308f5873275fc8 was merged, subscribing to a + NULL bridge will now cause app_subscribe_bridge to implicitly subscribe to + all bridges. Unfortunately, the res_stasis control loop did not check that + a bridge changing on a channel's control object was actually also non-NULL. + As a result, app_subscribe_bridge will be called with a NULL bridge when a + channel leaves a bridge. This causes a new subscription to be made to the + bridge. If an application has also subscribed to the bridge, the application + will now have two subscriptions: + (1) The explicit one created by the app + (2) The implicit one accidentally created by the control structure + + As a result, the 'BridgeDestroyed' event can be sent multiple times. This + patch corrects the control loop such that it only subscribes an application + to a new bridge if the bridge pointer is non-NULL. + + ASTERISK-24870 + + Change-Id: I3510e55f6bc36517c10597ead857b964463c9f4f + +2015-09-04 13:51 +0000 [d6472d96b3] Scott Griepentrog + + * Scripts: check file versions of Asterisk and dependencies + + To help in diagnosing mismatched modules and libraries, this + script scans for version, repository, and source information + and reports what is found. + + ASTERISK-25376 #close + Reported by: Ashley Sanders + + Change-Id: Ib0642d0fb96712476f59760d6d137a24633fe2d6 + +2015-09-24 14:56 +0000 [7c7a7ddd27] Richard Mudgett + + * app_queue.c: Force COLP update if outgoing channel name changed. + + * When a call is answered and the outgoing channel name has changed then + force a connected line update because the channel is no longer the same. + The channel was masqueraded into by another channel. This is usually + because of a call pickup. + + Note: Forwarded calls are handled in a controlled manner so the original + channel name is replaced with the forwarded channel. + + ASTERISK-25423 #close + Reported by: John Hardin + + Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172 + +2015-09-24 14:20 +0000 [145608bd81] Richard Mudgett + + * app_queue.c: Factor out a connected line update routine. + + Replace inlined code with update_connected_line_from_peer(). + + ASTERISK-25423 + Reported by: John Hardin + + Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3 + +2015-09-24 13:27 +0000 [1d394774b2] Richard Mudgett + + * app_dial.c: Make 'A' option pass COLP updates. + + While the 'A' option is playing the announcement file allow the caller and + peer to exchange COLP update frames. + + ASTERISK-25423 + Reported by: John Hardin + + Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9 + +2015-09-24 12:59 +0000 [680b76eb25] Richard Mudgett + + * app_dial.c: Force COLP update if outgoing channel name changed. + + * When a call is answered and the outgoing channel name has changed then + force a connected line update because the channel is no longer the same. + The channel was masqueraded into by another channel. This is usually + because of a call pickup. + + Note: Forwarded calls are handled in a controlled manner so the original + channel name is replaced with the forwarded channel. + + ASTERISK-25423 + Reported by: John Hardin + + Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c + +2015-09-24 12:37 +0000 [fdf0bcb04a] Richard Mudgett + + * app_dial.c: Factor out a connected line update routine. + + Replace inlined code with update_connected_line_from_peer(). + + ASTERISK-25423 + Reported by: John Hardin + + Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091 + +2015-09-23 17:41 +0000 [c285879845] Richard Mudgett + + * app_dial.c: Remove some no-op code. + + Change-Id: Ice1884a94315d3cb7e3bbd47a9fba76a27276c54 + +2015-09-23 14:02 +0000 [3eefa07a39] Mark Michelson + + * logger: Prevent duplicate dynamic channels from being added. + + There was a problem observed where the "logger add channel" CLI command + would allow for a channel with the same name to be added multiple times. + This would result in each message being written out to the same file + multiple times. + + The problem was due to the difference in how logger channel filenames + are stored versus the format they are allowed to be presented when they + are added. For instance, if adding the logger channel "foo" through the + CLI, the result would be a logger channel with the file name + /var/log/asterisk/foo being stored. So when trying to add another "foo" + channel, "foo" would not match "/var/log/asterisk/foo" so we'd happily + add the duplicate channel. + + The fix presented here is to introduce two new methods in the logger + code: + * make_filename(): given a logger channel name, this creates the + filename for that logger channel. + * find_logchannel(): given a logger channel name, this calls + make_filename() and then traverses the list of logchannels in order + to find a match. + + This change has made use of make_filename() and find_logchannel() + throughout to more consistently behave. + + ASTERISK-25305 #close + Reported by Mark Michelson + + Change-Id: I892d52954d6007d8bc453c3cbdd9235dec9c4a36 + +2015-09-24 14:49 +0000 [f42084be09] Mark Michelson + + * Do not swallow frames on channels leaving bridges. + + When leaving a bridge, indications on a channel could be swallowed by + the internal indication logic because it appears that the channel is on + its way to be hung up anyway. One such situation where this is + detrimental is when channels on hold are redirected out of a bridge. The + AST_CONTROL_UNHOLD indication from the bridging code is swallowed, + leaving the channel in question to still appear to be on hold. + + The fix here is to modify the logic inside ast_indicate_data() to not + drop the indication if the channel is simply leaving a bridge. This way, + channels on hold redirected out of a bridge revert to their expected "in + use" state after the redirection. + + ASTERISK-25418 #close + Reported by Mark Michelson + + Change-Id: If6115204dfa0551c050974ee138fabd15f978949 + +2015-09-22 17:08 +0000 [06f4f80a63] Richard Mudgett + + * app_page.c: Fix crash when forwarding with a predial handler. + + Page uses the async method of dialing with the dial API. When a call gets + forwarded there is no calling channel available. If the predial handler + was set then the calling channel could not be put into auto-service + for the forwarded call because it doesn't exist. A crash is the result. + + * Moved the callee predial parameter string processing to before the + string is passed to the dial API rather than having the dial API do it. + There are a few benefits do doing this. The first is the predial + parameter string processing doesn't need to be done for each channel + called by the dial API. The second is in async mode and the forwarded + channel is to have the predial handler executed on it then the + non-existent calling channel does not need to be present to process the + predial parameter string. + + * Don't start auto-service on a non-existent calling channel to execute + the predial handler when the dial API is in async mode and forwarding a + call. + + ASTERISK-25384 #close + Reported by: Chet Stevens + + Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981 + +2015-09-04 12:25 +0000 [b99a705262] Matt Jordan + + * ARI: Add the ability to subscribe to all events + + This patch adds the ability to subscribe to all events. There are two possible + ways to accomplish this: + (1) On initial WebSocket connection. This patch adds a new query parameter, + 'subscribeAll'. If present and True, Asterisk will subscribe the + applications to all ARI events. + (2) Via the applications resource. When subscribing in this manner, an ARI + client should merely specify a blank resource name, i.e., 'channels:' + instead of 'channels:12354'. This will subscribe the application to all + resources of the 'channels' type. + + ASTERISK-24870 #close + + Change-Id: I4a943b4db24442cf28bc64b24bfd541249790ad6 + +2015-09-21 18:06 +0000 [c74101509d] Kevin Harwell + + * app_record: RECORDED_FILE variable not being populated + + The RECORDED_FILE variable is empty unless a '%d' is specified in the filename. + This patch makes it so the variable is always set to the filename. + + ASTERISK-25410 #close + + Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653 + +2015-09-21 08:16 +0000 [a29cf45c76] Elazar Broad + + * core/logging: Fix logging to more than one syslog channel + + Currently, Asterisk will log to the last configured syslog + channel in logger.conf. This is due to the fact that the + final call to openlog() supersedes all of the previous calls. + This commit removes the call to openlog() and passes the + facility to ast_log_vsyslog(), along with utilizing the + LOG_MAKEPRI macro to ensure that the message is routed to + the correct facility and with the correct priority. + + ASTERISK-25407 #close + Reported by: Elazar Broad + Tested by: Elazar Broad + + Change-Id: Ie2a2416bc00cce1b04e99ef40917c2011953ddd2 +2015-09-04 12:24 +0000 [47813cc51c] Matt Jordan + + * res/res_stasis_device_state: Allow for subscribing to 'all' device state + + This patch adds support for subscribing to all device state changes. This is + done either by subscribing to an empty device, e.g., 'eventSource=deviceState:', + or by the WebSocket connection specifying that it wants all state in the + system. + + ASTERISK-24870 + + Change-Id: I9cfeca1c9e2231bd7ea73e45919111d44d2eda32 + +2015-09-03 21:19 +0000 [5206aa9d30] Matt Jordan + + * ARI: Add events for Contact and Peer Status changes + + This patch adds support for receiving events regarding Peer status changes + and Contact status changes. This is particularly useful in scenarios where + we are subscribed to all endpoints and channels, where we often want to know + more about the state of channel technology specific items than a single + endpoint's state. + + ASTERISK-24870 + + Change-Id: I6137459cdc25ce27efc134ad58abf065653da4e9 + +2015-09-19 12:49 +0000 [9200ad03a3] Alexander Traud + + * astfd: Adds a timestamp for each entry. + + Now with menuselect "DEBUG_FD_LEAKS" and CLI "core show fd", a timestamp is + shown with each file descriptor. This helps to debug leaked UDP/TCP ports on + long-lived servers, for example. + + ASTERISK-25405 #close + + Change-Id: I968339e5155a512eba1032a5263f1ec8b5e1f80b + +2015-09-16 08:22 +0000 [42a897c4c3] Joshua Colp + + * pbx: Update device and presence state when changing a hint extension. + + When changing a hint extension without removing the hint first the + device state and presence state is not updated. This causes the state + of the hint to be that of the previous extension and not the current + one. This state is kept until a state change occurs as a result of + something (presence state change, device state change). + + This change updates the hint with the current device and presence + state of the new extension when it is changed. Any state callbacks + which may have been added before the hint extension is changed are + also informed of the new device and presence state if either have + changed. + + ASTERISK-25394 #close + + Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f + +2015-09-17 16:34 +0000 [d9723d242a] Scott Griepentrog + + * CHAOS: avoid crash if string create fails + + Validate string buffer allocation before using them. + + ASTERISK-25323 + + Change-Id: Ib9c338bdc1e53fb8b81366f0b39482b83ef56ce0 + +2015-09-11 01:52 +0000 [99aa7cb26e] Rodrigo Ramírez Norambuena + + * dr_adaptive_odbc.c, cel_odbc.c, cel_pgsql.c: REFACTOR Macro LENGTHEN_BUF + + Remove repeated code on macro of assigned buffer to SQL vars + + Change-Id: Icb19ad013124498e172ea1d0b29ccd0ed17deef0 + +2015-09-17 04:52 +0000 [e4df271a3e] Walter Doekes + + * chan_sip: Fix From header truncation for extremely long CALLERID(name). + + The CALLERID(num) and CALLERID(name) and other info are placed into the + `char from[256]` in initreqprep. If the name was too long, the addr-spec + and params wouldn't fit. + + Code is moved around so the addr-spec with params is placed there first, + and then fitting in as much of the display-name as possible. + + ASTERISK-25396 #close + + Change-Id: I33632baf024f01b6a00f8c7f35c91e5f68c40260 + +2015-09-17 16:59 +0000 [e1927915bc] Richard Mudgett + + * CHAOS: res_pjsip_diversion avoid crash if allocation fails + + Validate ast_malloc buffer returned before using it in + set_redirecting_value(). + + ASTERISK-25323 + + Change-Id: I15d2ed7cb0546818264c0bf251aa40adeae83253 + +2015-09-17 16:47 +0000 [729a4325da] Kevin Harwell + + * app_queue: AgentComplete event has wrong reason + + When a queued caller transfers an agent to another extension sometimes the + raised AgentComplete event has a reason of "caller" and sometimes "transfer". + Since a transfer has taken place this should always be transfer. This occurs + because sometimes the stasis hangup event arrives before the transfer event + thus writing a different reason out. + + With this patch, when a hangup event is received during a transfer it will + check to see if the channel that is hanging up is part of a transfer. If so + it will return and let the subsequently received transfer event handler take + care of the cleanup. + + ASTERISK-25399 #close + + Change-Id: Ic63c49bd9a5ed463ea7a032fd2ea3d63bc81a50d + +2015-09-17 13:09 +0000 [87f04d5acf] Scott Griepentrog + + * PJSIP: avoid crash when getting rtp peer + + Although unlikely, if the tech private is returned as + a NULL, chan_pjsip_get_rtp_peer() would crash. + + ASTERISK-25323 + + Change-Id: Ie231369bfa7da926fb2b9fdaac228261a3152e6a + +2015-09-17 11:31 +0000 [63ede41227] Kevin Harwell + + * app_queue: Crash when transferring + + During some transfer scenarios involving queues Asterisk would sometimes + crash when trying to obtain a channel snapshot (could happen on caller or + member channels). This occurred because the underlying channel had already + disappeared when trying to obtain the latest snapshot. + + This patch adds a reference to both the member and caller channels that + extends to the lifetime of the queue'd call, thus making sure the channels + will always exist when retrieving the latest snapshots. + + ASTERISK-25185 #close + Reported by: Etienne Lessard + + Change-Id: Ic397fa68fb4ff35fbc378e745da9246a7b552128 + +2015-09-16 17:36 +0000 [e47396721f] Mark Michelson + + * res_pjsip_pubsub: Eliminate race during initial NOTIFY. + + There is a slim chance of a race condition occurring where two threads + can both attempt to manipulate the same area. + + Thread A can be handling an incoming initial SUBSCRIBE request. Thread A + lets the specific subscription handler know that the subscription has + been established. + + At this point, Thread B may detect a state change on the subscribed + resource and queue up a notification task on Thread C, the subscription + serializer thread. + + Now Thread A attempts to generate the initial NOTIFY request to send to + the subscriber at the same time that Thread C attempts to generate a + state change NOTIFY request to send to the subscriber. + + The result is that Threads A and C can step on the same memory area, + resulting in a crash. The crash has been observed as happening when + attempting to allocate more space to hold the body for the NOTIFY. + + The solution presented here is to queue the subscription establishment + and initial NOTIFY generation onto the subscription serializer thread + (Thread C in the above scenario). This way, there is no way that a state + change notification can occur before the initial NOTIFY is sent, and if + there is a quick succession of NOTIFYs, we can guarantee that the two + NOTIFY requests will be sent in succession. + + Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815 + +2015-08-28 15:42 +0000 [077adf48b8] Alexander Traud + + * translate: Fix transcoding while different in frame size. + + When Asterisk translates between codecs, each with a different frame size (for + example between iLBC 30 and Speex-WB), too large frames were created by + ast_trans_frameout. Now, ast_trans_frameout is called with the correct frame + length, creating several frames when necessary. Affects all transcoding modules + which used ast_trans_frameout: GSM, iLBC, LPC10, and Speex. + + ASTERISK-25353 #close + + Change-Id: I2e229569d73191d66a4e43fef35432db24000212 + +2015-09-10 17:19 +0000 [0a74c80300] Mark Michelson + + * scheduler: Use queue for allocating sched IDs. + + It has been observed that on long-running busy systems, a scheduler + context can eventually hit INT_MAX for its assigned IDs and end up + overflowing into a very low negative number. When this occurs, this can + result in odd behaviors, because a negative return is interpreted by + callers as being a failure. However, the item actually was successfully + scheduled. The result may be that a freed item remains in the scheduler, + resulting in a crash at some point in the future. + + The scheduler can overflow because every time that an item is added to + the scheduler, a counter is bumped and that counter's current value is + assigned as the new item's ID. + + This patch introduces a new method for assigning scheduler IDs. Instead + of assigning from a counter, a queue of available IDs is maintained. + When assigning a new ID, an ID is pulled from the queue. When a + scheduler item is released, its ID is pushed back onto the queue. This + way, IDs may be reused when they become available, and the growth of ID + numbers is directly related to concurrent activity within a scheduler + context rather than the uptime of the system. + + Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2 + +2015-09-03 21:15 +0000 [45cf79665c] Matt Jordan + + * main/config_options: Check for existance of internal object before derefing + + Asterisk can load and register an object type while still having an invalid + sorcery mapping. This can cause an issue when a creation call is invoked. + For example, mis-configuring PJSIP's endpoint identifier by IP address mapping + in sorcery.conf will cause the sorcery mechanism to be invalidated; however, a + subsequent ARI invocation to create the object will cause a crash, as the + internal type may not be registered as sorcery expects. + + Merely checking for a NULL pointer here solves the issue. + + Change-Id: I54079fb94a1440992f4735a9a1bbf1abb1c601ac + +2015-08-21 21:50 +0000 [34aa96bef4] Rodrigo Ramírez Norambuena + + * chan_sip.c: Validation on module reload + + Change validation on reload module because now used the cli function for + reload. The sip_reload() function never fail and ever return NULL for this + reason on reload() now use the call the sip_reload() and return + AST_MODULE_LOAD_SUCCESS. + + This problem is dectected on reload by PUT method on ARI, getting always + 404 http code when the module is reloaded. + + ASTERISK-25325 #close + Reporte by: Rodrigo Ramírez Norambuena + + Change-Id: I41215877fb2cfc589e0d4d464000cf6825f4d7fb + +2015-08-21 17:39 +0000 [69824fdfbf] Richard Mudgett + + * res_pjsip_pubsub.c: Mark ast_sip_create_subscription() as not used. + + Change-Id: I2b8db18eac36c01a5c7eb9467699124e203fd093 + +2015-09-09 12:24 +0000 [2526659432] Richard Mudgett + + * res_pjsip_pubsub.c: Add some notification comments. + + Change-Id: Ie62ff1f4b7adc1a12fa0303f53926af249b25e20 + +2015-08-21 18:01 +0000 [9b290dfe2f] Richard Mudgett + + * res_pjsip_pubsub.c: Set dlg_status code instead of sending SIP response. + + We should not try to send a SIP response message because we may be + restoring a persistent subscription where we are not responding to a SIP + request. + + Change-Id: Id89167ef90320c5563f37e632db0dda6cb9e7dec + +2015-08-21 17:40 +0000 [73eb132012] Richard Mudgett + + * res_pjsip_pubsub.c: Fix off-nominal memory leak. + + Fix off-nominal visited vector leak in build_resource_tree(). + + Change-Id: If0399c7941c9c0b1038bcfb7b9a371760977831c + +2015-08-21 15:26 +0000 [2b30fc2b2d] Richard Mudgett + + * res_pjsip_pubsub.c: Fix one byte buffer overrun error. + + ast_sip_pubsub_register_body_generator() did not account for the null + terminator set by sprintf() in the allocated output buffer. + + Change-Id: I388688a132e479bca6ad1c19275eae0070969ae2 + +2015-08-21 15:25 +0000 [08a182c8e6] Richard Mudgett + + * res_pjsip_pubsub.c: Use ast_alloca() instead of alloca(). + + Change-Id: Ia396096b4fedc2874649ca11137612c3f55e83e3 + +2015-08-21 11:04 +0000 [61f30db877] Richard Mudgett + + * res_pjsip_pubsub.c: Add missing error return in load_module(). + + Change-Id: I15debd0f717f16ee2f78e7f56151c3b3b97b72fc + +2015-08-21 11:03 +0000 [b8f07527b2] Richard Mudgett + + * res_pjsip/location.c: Use the builtin ao2_callback() match function instead. + + Change-Id: I364906d6d2bad3472929986704a0286b9a2cbe3f + +2015-09-10 09:49 +0000 [f1a2e82d49] Mark Michelson + + * res_pjsip: Copy default_from_user to avoid crash. + + The default_from_user retrieval function was pulling the + default_from_user from the global configuration struct in an unsafe way. + If using a database as a backend configuration store, the global + configuration struct is short-lived, so grabbing a pointer from it + results in referencing freed memory. + + The fix here is to copy the default_from_user value out of the global + configuration struct. + + Thanks go to John Hardin for discovering this problem and proposing the + patch on which this fix is based. + + ASTERISK-25390 #close + Reported by Mark Michelson + + Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c + +2015-09-10 08:39 +0000 [bd71dcd1da] Matt Jordan + + * res/res_pjsip_nat: Ignore REGISTER requests when looking for a Record-Route + + We will only rewrite the Contact header if there is no Record-Route header in + the received request. If a malfunctioning proxy places a Record-Route header + into a REGISTER request, we will decide that we shouldn't update the IP/port + in the Contact header, and we will end up storing a contact with an AoR that + contains the NAT'd IP address. + + While it is nice to have the proxy *not* send a Record-Route in a REGISTER + request, it's also a good idea to not process the header in a non-dialog + message. This patch updates the code to explicitly ignore the Record-Route + header in REGISTER requests. + + ASTERISK-25387 #close + + Change-Id: I4bd3bcccc4003d460cc354d986b0dea2e433ef3f + +2015-09-09 16:46 +0000 [5bd363010e] Alexander Anikin + + * chan_ooh323: Add ProgressIndicator IE with inband info available + + Add ProgressIndicator IE with inband info present to Progress and + Alerting Q.931 message + + ASTERISK-25227 #close + Reported by: Alexandr Dranchuk + + Change-Id: I326ad13cb1db9a72b3fd902bafed3c28a3684203 +2015-09-08 10:35 +0000 [fcea6910f6] Scott Griepentrog + + * pjsip: avoid possible crash req_caps allocation failure + + Make certain that the pjsip session has not failed to + allocate the format capabilities structure, which can + otherwise cause a crash when referenced. + + ASTERISK-25323 + + Change-Id: I602790ba12714741165e441cc64a3ecde4cb5750 + +2015-09-04 16:33 +0000 [8e5ed27a16] David M. Lee + + * res_rtp_asterisk: Add more ICE debugging + + In working through a recent ICE negotiation bug, I found the debug + logging in res_rtp_asterisk to be lacking. This patch adds a number of + debug and warning statements that were helpful. + + Change-Id: I950c6d8f13a41f14b3d6334b4cafe7d4e997be80 +2015-09-08 07:21 +0000 [3628e380b8] Joshua Colp + + * res_pjsip: Use hash for contact object identity instead of Contact URI. + + In the wild it is possible for Contact URIs to be quite long as + parameters can exist on them. This can present a problem when storing + them in the AstDB as the URI is used as part of the object name and + there is a fixed length limit for the AstDB. This will cause + the contact to not get stored. + + This change uses the MD5 hash of the Contact URI as part of the + object name instead. This has a fixed length which is guaranteed + to not exceed the AstDB length limit. + + ASTERISK-25295 #close + + Change-Id: Ie8252a75331ca00b41b9f308f42cc1fbdf701a02 + +2015-09-07 13:19 +0000 [d2106c0b21] Alexander Anikin + + * chan_ooh323: call ast_rtp_instance_stop on ooh323_destroy + + Call ast_rtp_instance_stop on ooh323_destroy to free resources + allocated by rtp instance + + ASTERISK-25299 #close + Report by: Alexandr Dranchuk + + Change-Id: I455096bd7da016b871afe90af86067c2c7c9f33f + +2015-09-07 11:15 +0000 [ef3358d0c0] Matt Jordan + + * res/res_pjsip: Purge contacts when an AoR is deleted + + When an AoR is deleted by an external mechanism, such as through ARI, we + currently do not remove dynamic contacts that were created for that AoR as a + result of a received REGISTER request. As a result, re-creating the AoR will + cause the dynamic contact to be interpreted as a persistent contact, leading + to some rather strange state being created for the contacts/endpoints. + + This patch adds a sorcery observer for the 'aor' object. When a delete is + issued on the underlying sorcery object, the observer is called, and all + contacts created and persisted in sorcery for that AoR are also removed. Note + that we don't want to perform this action when an AO2 object that is an AoR is + destroyed, as the AoR can still exist in the backing storage (and we would + thus be removing valid contacts from an AoR that still "exists".) + + ASTERISK-25381 #close + + Change-Id: I6697e51ef6b2858b5d63401f35dc378bb0f90328 + +2015-09-05 14:58 +0000 [86b02228f5] Matt Jordan + + * channels/pjsip/dialplan_functions: Add an option for extracting the SIP call-id + + This patch adds a new option to the CHANNEL function that allows for the + extraction of the SIP call-id. It is used in conjunction with the 'pjsip' + option, and will return the Call-ID of the INVITE request that established + the PJSIP channel. + + ASTERISK-25352 + + Change-Id: I278d1f8bcfe3a53c5aa1dadebc14e92b0abd476a + +2015-09-04 16:06 +0000 [27c89053b0] David M. Lee + + * Fix when remote candidates exceed PJ_ICE_MAX_CAND + + We were passing the wrong count into pj_ice_sess_create_check_list(), + causing the create to fail if we ever received more than PJ_ICE_MAX_CAND + candidates. + + Change-Id: I0303d8e1ecb20a8de9fe629a3209d216c4028378 + +2015-09-04 14:40 +0000 [993ae9a669] Mark Michelson + + * res_pjsip: Change default from user value. + + When Asterisk sends an outbound SIP request, if there is no direct + reason to place a specific value for the username in the From header, + Asterisk would generate a UUID. For example, this would happen when + sending outbound OPTIONS requests when qualifying or when sending + outbound INVITE requests when originating (if no explicit caller ID were + provided). The issue is that some SIP providers reject these sorts of + requests with a "Name too long" error response. + + This patch aims to fix this by changing the default outbound username in + From headers to "asterisk". This value can be overridden by changing the + default_from_user option in the global options if desired. + + ASTERISK-25377 #close + Reported by Mark Michelson + + Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190 + +2015-09-03 14:07 +0000 [7d981b787c] Jonathan Rose + + * ParkAndAnnounce: Add variable inheritance + + In Asterisk 11, the announcer channel would receive channel variables + from the channel being parked by means of normal channel inheritance. + This functionality was lost during the big res_parking project in + Asterisk 12. This patch restores that functionality. + + ASTERISK-25369 #close + Review: https://gerrit.asterisk.org/#/c/1180/ + + Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e + +2015-09-04 09:26 +0000 [7691035312] Scott Griepentrog + + * endpoint snapshot: avoid second cleanup on alloc failure + + In ast_endpoint_snapshot_create(), a failure to init the + string fields results in two attempts to ao2_cleanup the + same pointer. Removed RAII_VAR to eliminate problem. + + ASTERISK-25375 #close + Reported by: Scott Griepentrog + + Change-Id: If4d9dfb1bbe3836b623642ec690b6d49b25e8979 + +2015-09-04 05:33 +0000 [be31747db8] Martin Tomec + + * res/pjsip: Mark WSS transport as secure + + Pjsip is refusing to use unsecure transport with "sips" in url. + WSS should be considered as secure transport. + + ASTERISK-24602 #comment Partially fixed by setting WSS as secure + + Change-Id: Iddac406c6deba6240c41a603b8859dfefe1a5353 + +2015-09-01 10:16 +0000 [fbdb42c9fc] Guido Falsi + + * Core/General: Add #ifdef needed on FreeBSD. + + pthread_attr_init() defaults to PTHREAD_EXPLICIT_SCHED on FreeBSD + too. + + ASTERISK-25310 #close + Reported by: Guido Falsi + + Change-Id: Iae6befac9028b5b9795f86986a4a08a1ae6ab7c4 +2015-09-02 17:26 +0000 [c15d8cc0ed] Mark Michelson + + * res_pjsip: Fix contact refleak on stateful responses. + + When sending a stateful response, creation of the transaction can fail, + most commonly because we are trying to create a transaction from a + retransmitted request. When creation of the transaction fails, we end up + leaking a reference to a contact that was bumped when the response was + created. + + This patch adds the missing deref and fixes the reference leak. + + Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07 + +2015-09-02 12:41 +0000 [b51cf1e712] Joshua Colp + + * pbx: Fix crash when issuing "core show hints" with long pattern match. + + When issuing the "core show hints" CLI command a combination of both + the hint extension and context is created. This uses a fixed size + buffer expecting that the extension will not exceed maximum extension + length. When the extension is actually a pattern match this constraint + does not hold true, and the extension may exceed the maximum extension + length. In this case extra characters are written past the end of the + fixed size buffer. + + This change makes it so the construction of the combined hint extension + and context can not exceed the size of the buffer. + + ASTERISK-25367 #close + + Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499 + +2015-09-01 09:05 +0000 [beb568e51c] Mark Michelson + + * res_pjsip_pubsub: re-re-fix persistent subscription storage. + + A recent change to res_pjsip_pubsub switched to using pjsip_msg_print as + a means of writing an appropriate packet to persistent storage. While + this partially solved the issue, it had its own problems. + pjsip_msg_print will always add a Content-Length header to the message + it prints. Frequent restarts of Asterisk can result in persistent + subscriptions being written with five or more Content-Length headers. In + addition, sometimes some apparent corruption of individual headers could + be seen. + + This aims to fix the problem by not running a parsed message through an + interpreter but rather by taking the raw message and saving it. The + logic for what to save is going to be different depending on whether a + SUBSCRIBE was received from the wire or if it was pulled from + persistence. When receiving a packet from the wire, when using a + streaming transport, the rdata->pkt_info.packet may contain multiple SIP + messages or fragments. However, the rdata->msg_info.msg_buf will always + contain the current SIP message to be processed. When pulling from + persistence, though, the rdata->msg_info.msg_buf will be NULL since no + transport actually handled the packet. However, since we know that we + will always ever pull one SIP message from persistence, we are free to + save directly from rdata->pkt_info.packet instead. + + ASTERISK-25365 #close + Reported by Mark Michelson + + Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b + +2015-08-29 10:36 +0000 [fc4d4f5379] Joshua Colp + + * taskprocessor: Fix race condition between unreferencing and finding. + + When unreferencing a taskprocessor its reference count is checked + to determine if it should be unlinked from the taskprocessors + container and its listener shut down. In between the time when the + reference count is checked and unlinking it is possible for + another thread to jump in, find it, and get a reference to it. If + the thread then uses the taskprocessor it may find that it is not + in the state it expects. + + This change locks the taskprocessors container during almost the + entire unreference operation to ensure that any other thread which + may attempt to find the taskprocessor has to wait. + + ASTERISK-25295 + + Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c + +2015-08-28 20:22 +0000 [bb38010c67] Joshua Colp + + * res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items. + + The keepalive support in res_pjsip_sdp_rtp currently assumes + that a stream will only be negotiated once. This is false. + If the stream is replaced and later added back it can be + negotiated again causing multiple keepalive scheduled items + to exist. This change explicitly deletes the existing + keepalive scheduled item before adding the new one. + + The res_pjsip_sdp_rtp module also does not stop RTP + keepalives or timeout timer if the stream has been + replaced. This change adds a callback to the session media + interface to allow a media stream to be stopped without + the resources being destroyed. This allows the scheduled + items and RTP to be stopped when the stream no longer + exists. + + ASTERISK-25356 #close + + Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de + +2015-08-28 19:57 +0000 [c036e50fbe] Joshua Colp + + * sched: ast_sched_del may return prematurely due to spurious wakeup + + When deleting a scheduled item if the item in question is currently + executing the ast_sched_del function waits until it has completed. + This is accomplished using ast_cond_wait. Unfortunately the + ast_cond_wait function can suffer from spurious wakeups so the + predicate needs to be checked after it returns to make sure it has + really woken up as a result of being signaled. + + This change adds a loop around the ast_cond_wait to make sure that + it only exits when the executing task has really completed. + + ASTERISK-25355 #close + + Change-Id: I51198270eb0b637c956c61aa409f46283432be61 + +2015-08-27 12:26 +0000 [229b95d253] Joshua Colp + + * res_pjsip_session: Don't invoke session supplements twice for BYE requests. + + When a BYE request is received the PJSIP invite session implementation + creates and sends a 200 OK response before we are aware of it. This + causes the INVITE session state callback to be called into and ultimately + the session supplements run on the BYE request. Once this response has + been sent the normal transaction state callback is invoked which + invokes the session supplements on the BYE request again. This can + be problematic in particular with res_pjsip_rfc3326 as it may + attempt to update the hangup cause code on the channel while it is + in the process of being hung up. + + This change makes it so the session supplements are only invoked + once by the INVITE session state callback. + + ASTERISK-25318 #close + + Change-Id: I69c17df55ccbb61ef779ac38cc8c6b411376c19a + +2015-08-26 15:26 +0000 [6bfa14bdad] Scott Griepentrog + + * Chaos: handle failed allocation in get_media_encryption_type + + If the ast_strndup() call fails to allocate a copy of the + transport string for parsing, fail gracefully. + + ASTERISK-25323 + Reported by: Scott Griepentrog + + Change-Id: Ia4b905ce6d03da53fea526224455c1044b1a5a28 + +2015-08-26 14:25 +0000 [490db8ba94] Scott Griepentrog + + * Chaos: make hangup NULL tolerant + + In chan_pjsip_new, if allocation of the pvt + structure fails, ast_hangup is called. But + it was written to assume pvt was valid, and + this change corrects that. + + ASTERISK-25323 + Reported by: Scott Griepentrog + + Change-Id: I5f47860fe9cee4cd56abd3f79b108678ab72cc87 +2015-08-26 05:40 +0000 [d03d09aad3] Joshua Colp + + * chan_sip: Allow call pickup to set the hangup cause. + + The call pickup implementation in chan_sip currently sets the channel + hangup cause to "normal clearing" if call pickup is successfully + performed. This action overwrites the "answered elsewhere" hangup cause + set by the call pickup code and can result in the SIP device in + question showing a missed call when it should not. + + This change sets the hangup cause to "normal clearing" as a + default initially but allows the call pickup to change it as + needed. + + ASTERISK-25346 #close + + Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff + +2015-08-25 07:17 +0000 [d013ecf748] Joshua Colp + + * res_pjsip: Add common ast_sip_get_host_ip API. + + Modules commonly used the pj_gethostip function for retrieving the + IP address of the host. This function does not cache the result and may + result in a DNS lookup occurring, or additional work. If the DNS + server is unreachable or network issues arise this can cause the + pj_gethostip function to block for a period of time. + + This change adds an ast_sip_get_host_ip and ast_sip_get_host_ip_string + function which does the same thing but caches the host IP address at + module load time. This results in no additional work being done each + time the local host IP address is needed. + + ASTERISK-25342 #close + + Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e + +2015-08-24 06:21 +0000 [98d089fb9a] Joshua Colp + + * bridge: Kick channel from bridge if hung up during action. + + When executing an action in a bridge it is possible for the + channel to be hung up without the bridge becoming aware of it. + This is most easily reproducible by hanging up when the bridge + is streaming DTMF due to a feature timeout. This change makes + it so after action execution the channel is checked to determine + if it has been hung up and if it has it is kicked from the bridge. + + ASTERISK-25341 #close + + Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062 + +2015-08-24 11:04 +0000 [a408369bac] Joshua Colp + + * res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced + + When recreating a subscription it is possible for a freed sub_tree + to be referenced when the initial NOTIFY fails to be created. + + Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788 + +2015-08-23 18:26 +0000 [3af34441eb] Matt Jordan + + * res_pjsip/pjsip_configuration: Disregard empty auth values + + When an endpoint is backed by a non-static conf file backend (such as + the AstDB or Realtime), the 'auth' object may be returned as being an + empty string. Currently, res_pjsip will interpret that as being a valid + auth object, and will attempt to authenticate inbound requests. This + isn't desired; is an auth value is empty (which the name of an auth + object cannot be), we should instead interpret that as being an invalid + auth object and skip it. + + ASTERISK-25339 #close + + Change-Id: Ic32b0c6eb5575107d5164a8c40099e687cd722c7 + +2015-08-21 23:37 +0000 [89003ea320] Rodrigo Ramírez Norambuena + + * README*: Remove trailing whitespace + + Change-Id: I18b7d75187548a9ed55b4f258d21aaaf29d08874 + +2015-07-28 13:47 +0000 [857923d9c7] Richard Mudgett + + * chan_sip.c: Set preferred rx payload type mapping on incoming offers. + + ASTERISK-25166 + Reported by: Kevin Harwell + + ASTERISK-17410 + Reported by: Boris Fox + + Change-Id: I7f04d5c8bee1126fee5fe6afbc39e45104469f4e + +2015-07-24 18:46 +0000 [d643b206c6] Richard Mudgett + + * res_pjsip_sdp_rtp.c: Set preferred rx payload type mapping on incoming offers. + + ASTERISK-25166 + Reported by: Kevin Harwell + + ASTERISK-17410 + Reported by: Boris Fox + + Change-Id: I97ecebc1ab9b5654fb918bf1f4c98c956b852369 + +2015-07-27 19:19 +0000 [f7df3e1a01] Richard Mudgett + + * rtp_engine.c: Get current or create a needed rx payload type mapping. + + * Make ast_rtp_codecs_payload_code() get the current mapping or create a + rx payload type mapping. + + ASTERISK-25166 + Reported by: Kevin Harwell + + ASTERISK-17410 + Reported by: Boris Fox + + Change-Id: Ia4b2d45877a8f004f6ce3840e3d8afe533384e56 + +2015-07-27 19:15 +0000 [38854a9f7b] Richard Mudgett + + * rtp_engine.c: Extract rtp_codecs_payload_replace_rx(). + + ASTERISK-25166 + Reported by: Kevin Harwell + + ASTERISK-17410 + Reported by: Boris Fox + + Change-Id: I34e23bf5b084c8570f9c3e6ccd19b95fe85af239 + +2015-07-23 19:24 +0000 [1a549ed134] Richard Mudgett + + * rtp_engine.c: Initial split of payload types into rx and tx mappings. + + There are numerous problems with the current implementation of the RTP + payload type mapping in Asterisk. It uses only one mapping structure to + associate payload types to codecs. The single mapping is overkill if all + of the payload type values are well known values. Dynamic payload type + mappings do not work as well with the single mapping because RFC3264 + allows each side of the link to negotiate different dynamic mappings for + what they want to receive. Not only could you have the same codec mapped + for sending and receiving on different payload types you could wind up + with the same payload type mapped to different codecs for each direction. + + 1) An independent payload type mapping is needed for sending and + receiving. + + 2) The receive mapping needs to keep track of previous mappings because of + the slack to when negotiation happens and current packets in flight using + the old mapping arrive. + + 3) The transmit mapping only needs to keep track of the current negotiated + values since we are sending the packets and know when the switchover takes + place. + + * Needed to create ast_rtp_codecs_payload_code_tx() and make some callers + use the new function because ast_rtp_codecs_payload_code() was used for + mappings in both directions. + + * Needed to create ast_rtp_codecs_payloads_xover() for cases where we need + to pass preferred codec mappings to the peer channel for early media + bridging or when we need to prefer the offered mapping that RFC3264 says + we SHOULD use. + + * ast_rtp_codecs_payloads_xover() and ast_rtp_codecs_payload_code_tx() are + the only new public functions created. All the others were only used for + the tx or rx mapping direction so the function doxygen now reflects which + direction the function operates. + + * chan_mgcp.c: Removed call to ast_rtp_codecs_payloads_clear() as doing + that makes no sense when processing an incoming SDP. We would be wiping + out any mappings that we set for the possible outgoing SDP we sent + earlier. + + ASTERISK-25166 + Reported by: Kevin Harwell + + ASTERISK-17410 + Reported by: Boris Fox + + Change-Id: Iaf6c227bca68cb7c414cf2fd4108a8ac98bd45ac + +2015-08-19 12:10 +0000 [21d419e4fc] Richard Mudgett + + * ari/ari_websockets.c: Fix ast_debug parameter type mismatch. + + This is a type mismatch fix of the debugging commit + c63316eec10e1990a88bf4712238d6deb375bfa9 made to find out why + a testsuite test was failing only on one of the continuous + integration build agents. + + Change-Id: Iba34f6e87cec331f6ac80e4daff6476ea6f00a75 + +2015-08-19 10:30 +0000 [53e2a6a829] Scott Griepentrog + + * contrib: script install_prereq should install sqlite3 + + Asterisk needs the sqlite 3 library, which is package + sqlite-devel in CentOS. By adding this package to the + script, a problem with configure failing is resolved. + + ASTERISK-25331 #close + Reported by: Kevin Harwell + + Change-Id: I90efaf6a01914fea03f21e5cdbd91c348f44b0ec + +2015-08-18 15:07 +0000 [03eb6cbc10] Richard Mudgett + + * res_ari_events: Fix shutdown ref leak. + + ASTERISK-25308 #close + Reported by: Joshua Colp + + Change-Id: I592785bf70ff4b63d00e535b482f40da8e82a082 + +2015-08-18 14:24 +0000 [e1e7e205bc] Richard Mudgett + + * res_http_websocket.c: Add missing unref on an off nominal path. + + Change-Id: I228df6adecd4cb450d03e09e9a38c86bb566e811 + +2015-08-18 16:06 +0000 [59253a2262] Richard Mudgett + + * res_http_websocket.c: Fix some off nominal path cleanup. + + * Remove extraneous unlock on off-nominal path. + * Add missing HTTP error reply. + + Change-Id: I1f402bfe448fba8696b507477cab5f060ccd9b2b + +2015-08-18 14:46 +0000 [1f0a9f8a76] Richard Mudgett + + * res_ari.c: Add missing off nominal unlock and remove a RAII_VAR(). + + Change-Id: I0c5e7b34057f26dadb39489c4dac3015c52f5dbf + +2015-08-14 12:55 +0000 [9fb4a96e15] Richard Mudgett + + * app_queue.c: Fix setting QUEUE_MEMBER 'paused' and 'ringinuse'. + + Setting the 'paused' and 'ringinuse' options on a queue member using the + dialplan function QUEUE_MEMBER did not behave the same way as the + equivalent dialplan applications or AMI actions. + + * Made queue_function_mem_write() call the set_member_paused() and + set_member_value() for the 'paused' and 'ringinuse' options respectively. + A beneficial side effect is that the queue name is now optional and sets + the value in all queues the interface is a member. + + * Update QUEUE_MEMBER XML documentation. + + * Fix error checking in QUEUE_MEMBER() write. + + ASTERISK-25215 #close + Reported by: Lorne Gaetz + + Change-Id: I3a016be8dc94d63a9cc155295ff9c9afa5f707cb + +2015-08-17 16:41 +0000 [87b22969a4] Richard Mudgett + + * app_queue.c: Extract some functions for simpler code. + + * Extract set_queue_member_pause() from set_member_paused() for simpler + and more consistent code. + + * Extract set_queue_member_ringinuse() from + set_member_ringinuse_help_members() for simpler code. + + Change-Id: Iecc1f4119c63347341d7ea6b65f5fc4963706306 + +2015-08-17 13:34 +0000 [5cf98e2459] Richard Mudgett + + * app_queue.c: Fix error checking in QUEUE_MEMBER() read. + + Change-Id: I7294e13d27875851c2f4ef6818adba507509d224 + +2015-08-17 11:00 +0000 [178e1adffb] Scott Griepentrog + + * CHAOS: prevent sorcery object with null id + + When allocating a sorcery object, fail if the + id value was not allocated. + + ASTERISK-25323 + Reported by: Scott Griepentrog + + Change-Id: I152133fb7545a4efcf7a0080ada77332d038669e + +2015-08-14 15:46 +0000 [5a85711568] Mark Michelson + + * res_pjsip_sdp_rtp: Restore removed NULL check. + + When sending an RTP keepalive, we need to be sure we're not dealing with + a NULL RTP instance. There had been a NULL check, but the commit that + added the rtp_timeout and rtp_hold_timeout options removed the NULL + check. + + Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64 + +2015-08-13 12:30 +0000 [7c4cb8618d] Richard Mudgett + + * audiohook.c: Simplify variable usage in audiohook_read_frame_both(). + + Change-Id: I58bed58631a94295b267991c5b61a3a93c167f0c + +2015-08-13 12:22 +0000 [bb37473234] Richard Mudgett + + * audiohook.c: Fix MixMonitor crash when using the r() or t() options. + + The built frame format in audiohook_read_frame_both() is now set to a + signed linear format before the rx and tx frames are duplicated instead of + only for the mixed audio frame duplication. + + ASTERISK-25322 #close + Reported by Sean Pimental + + Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538 + +2015-08-12 12:59 +0000 [43bdddfc26] Kevin Harwell + + * chan_sip.c: wrong peer searched in sip_report_security_event + + In chan_sip, after handling an incoming invite a security event is raised + describing authorization (success, failure, etc...). However, it was doing + a lookup of the peer by extension. This is fine for register messages, but + in the case of an invite it may search and find the wrong peer, or a non + existent one (for instance, in the case of call pickup). Also, if the peers + are configured through realtime this may cause an unnecessary database lookup + when caching is enabled. + + This patch makes it so that sip_report_security_event searches by IP address + when looking for a peer instead of by extension after an invite is processed. + + ASTERISK-25320 #close + + Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4 +2015-08-13 05:26 +0000 [495dfb24b7] Joshua Colp + + * res_http_websocket: When shutting down a session don't close closed socket + + Due to the use of ast_websocket_close in session termination it is + possible for the underlying socket to already be closed when the + session is terminated. This occurs when the close frame is attempted + to be written out but fails. + + Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b +2015-08-11 05:24 +0000 [7e65be4ecd] Joshua Colp + + * res_http_websocket: Forcefully terminate on write errors. + + The res_http_websocket module will currently attempt to close + the WebSocket connection if fatal cases occur, such as when + attempting to write out data and being unable to. When the + fatal cases occur the code attempts to write a WebSocket close + frame out to have the remote side close the connection. If + writing this fails then the connection is not terminated. + + This change forcefully terminates the connection if the + WebSocket is to be closed but is unable to send the close frame. + + ASTERISK-25312 #close + + Change-Id: I10973086671cc192a76424060d9ec8e688602845 + +2015-08-09 18:42 +0000 [a87e2dd254] Matt Jordan + + * res/res_format_attr_silk: Expose format attributes to other modules + + This patch adds the .get callback to the format attribute module, such + that the Asterisk core or other third party modules can query for the + negotiated format attributes. + + Change-Id: Ia24f55cf9b661d651ce89b4f4b023d921380f19c + +2015-08-10 13:43 +0000 [87c92d2aee] Richard Mudgett + + * chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF. + + Pressing DTMF digits on a phone to go out on a DAHDI channel can result in + the digit not being recognized or even heard by the peer. + + Phone -> Asterisk -> DAHDI/channel + + Turns out the DAHDI behavior with DTMF generation (and any other generated + tones) is exposed by the "buffers=" setting in chan_dahdi.conf. When + Asterisk requests to start sending DTMF then DAHDI waits until its write + buffer is empty before generating any samples for the DTMF tones. When + Asterisk subsequently requests DAHDI to stop sending DTMF then DAHDI + immediately stops generating the DTMF samples. As a result, the more + samples there are in the DAHDI write buffer the shorter the time DTMF + actually gets sent on the wire. If there are more samples in the write + buffer than the time DTMF is supposed to be sent then no DTMF gets sent on + the wire. With the "buffers=12,half" setting and each buffer representing + 20 ms of samples then the DAHDI write buffer is going to contain around + 120 ms of samples. For DTMF to be recognized by the peer the actual sent + DTMF duration needs to be a minimum of 40 ms. Therefore, the intended + duration needs to be a minimum of 160 ms for the peer to receive the + minimum DTMF digit duration to recognize it. + + A simple and effective solution to work around the DAHDI behavior is for + Asterisk to flush the DAHDI write buffer when sending DTMF so the full + duration of DTMF is actually sent on the wire. When someone is going to + send DTMF they are not likely to be talking before sending the tones so + the flushed write samples are expected to just contain silence. + + * Made dahdi_digit_begin() flush the DAHDI write buffer after requesting + to send a DTMF digit. + + ASTERISK-25315 #close + Reported by John Hardin + + Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a + +2015-08-05 14:21 +0000 [b9b957d4e9] Richard Mudgett + + * chan_dahdi.c: Lock private struct for ast_write(). + + There is a window of opportunity for DTMF to not go out if an audio frame + is in the process of being written to DAHDI while another thread starts + sending DTMF. The thread sending the audio frame could be past the + currently dialing check before being preempted by another thread starting + a DTMF generation request. When the thread sending the audio frame + resumes it will then cause DAHDI to stop the DTMF tone generation. The + result is no DTMF goes out. + + * Made dahdi_write() lock the private struct before writing to the DAHDI + file descriptor. + + ASTERISK-25315 + Reported by John Hardin + + Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb + +2015-08-10 18:23 +0000 [f3f5b45d57] Richard Mudgett + + * res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message. + + If the saved SUBSCRIBE message is not parseable for whatever reason then + Asterisk could crash when libpjsip tries to parse the message and adds an + error message to the parse error list. + + * Made ast_sip_create_rdata() initialize the parse error rdata list. The + list is checked after parsing to see that it remains empty for the + function to return successful. + + ASTERISK-25306 + Reported by Mark Michelson + + Change-Id: Ie0677f69f707503b1a37df18723bd59418085256 + +2015-08-10 07:40 +0000 [991d4da1eb] Alexander Traud + + * chan_sip: Fix negotiation of iLBC 30. + + iLBC 20 was advertised in a SIP/SDP negotiation. However, only iLBC 30 is + supported. Removes "a=fmtp:x mode=y" from SDP. Because of RFC 3952 section 5, + only iLBC 30 is negotiated now. + + ASTERISK-25309 #close + + Change-Id: I92d724600a183eec3114da0ac607b994b1a793da + +2015-08-09 17:56 +0000 [e188192ad1] Matt Jordan + + * main/format: Add an API call for retrieving format attributes + + Some codecs that may be a third party library to Asterisk need to have + knowledge of the format attributes that were negotiated. Unfortunately, + when the great format migration of Asterisk 13 occurred, that ability + was lost. + + This patch adds an API call, ast_format_attribute_get, to the core + format API, along with updates to the unit test to check the new API + call. A new callback is also now available for format attribute modules, + such that they can provide the format attribute values they manage. + + Note that the API returns a void *. This is done as the format attribute + modules themselves may store format attributes in any particular manner + they like. Care should be taken by consumers of the API to check the + return value before casting and dereferencing. Consumers will obviously + need to have a priori knowledge of the type of the format attribute as + well. + + Change-Id: Ieec76883dfb46ecd7aff3dc81a52c81f4dc1b9e3 + +2015-08-07 22:11 +0000 [d5f0c27122] David M. Lee + + * Replace htobe64 with htonll + + We don't have a compatability function to fill in a missing htobe64; but + we already have one for the identical htonll. + + Change-Id: Ic0a95db1c5b0041e14e6b127432fb533b97e4cac + +2015-07-24 17:04 +0000 [40caf0ad9b] David M. Lee + + * Replaces clock_gettime() with ast_tsnow() + + clock_gettime() is, unfortunately, not portable. But I did like that + over our usual `ts.tv_nsec = tv.tv_usec * 1000` copy/paste code we + usually do when we want a timespec and all we have is ast_tvnow(). + + This patch adds ast_tsnow(), which mimics ast_tvnow(), but returns a + timespec. If clock_gettime() is available, it will use that. Otherwise + ast_tsnow() falls back to using ast_tvnow(). + + Change-Id: Ibb1ee67ccf4826b9b76d5a5eb62e90b29b6c456e + +2015-08-07 14:20 +0000 [12e6f5ac01] Scott Emidy + + * ARI: Retrieve existing log channels + + An http request can be sent to get the existing Asterisk logs. + + The command "curl -v -u user:pass -X GET 'http://localhost:8088 + /ari/asterisk/logging'" can be run in the terminal to access the + newly implemented functionality. + + * Retrieve all existing log channels + + ASTERISK-25252 + + Change-Id: I7bb08b93e3b938c991f3f56cc5d188654768a808 + +2015-08-07 11:14 +0000 [b91ca7ba49] Scott Emidy + + * ARI: Creating log channels + + An http request can be sent to create a log channel + in Asterisk. + + The command "curl -v -u user:pass -X POST + 'http://localhost:088/ari/asterisk/logging/mylog? + configuration=notice,warning'" can be run in the terminal + to access the newly implemented functionality for ARI. + + * Ability to create log channels using ARI + + ASTERISK-25252 + + Change-Id: I9a20e5c75716dfbb6b62fd3474faf55be20bd782 + +2015-08-06 15:18 +0000 [f19c4930c2] Scott Emidy + + * ARI: Deleting log channels + + An http request can be sent to delete a log channel + in Asterisk. + + The command "curl -v -u user:pass -X DELETE 'http://localhost:8088 + /ari/asterisk/logging/mylog'" can be run in the terminal + to access the newly implemented functionally for ARI. + + * Able to delete log channels using ARI + + ASTERISK-25252 + + Change-Id: Id6eeb54ebcc511595f0418d586ff55914bc3aae6 + +2015-08-06 12:48 +0000 [382334cc06] Mark Michelson + + * res_pjsip_pubsub: More accurately persist packet. + + The pjsip_rx_data structure has a pkt_info.packet field on it that is + the packet that was read from the transport. For datagram transports, + the packet read from the transport will correspond to the SIP message + that arrived. For streamed transports, however, it is possible to read + multiple SIP messages in one packet. + + In a recent case, Asterisk crashed on a system where TCP was being used. + This is because at some point, a read from the TCP socket resulted in a + 200 OK response as well as an incoming SUBSCRIBE request being stored in + rdata->pkt_info.packet. When the SUBSCRIBE was processed, the + combination 200 OK and SUBSCRIBE was saved in persistent storage. Later, + a restart of Asterisk resulted in the crash because the persistent + subscription recreation code ended up building the 200 OK response + instead of a SUBSCRIBE request, and we attempted to access + request-specific data. + + The fix here is to use the pjsip_msg_print() function in order to + persist SUBSCRIBE requests. This way, rather than using the raw socket + data, we use the parsed SIP message that PJSIP has given us. If we + receive multiple SIP messages from a single read, we will be sure only + to save off the relevant SIP message. There also is a safeguard put in + place to make sure that if we do end up reconstructing a SIP response, + it will not cause a crash. + + ASTERISK-25306 #close + Reported by Mark Michelson + + Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2 + +2015-08-04 16:12 +0000 [4b6c657a82] Joshua Colp + + * res_pjsip: Ensure sanitized XML is NULL terminated. + + The ast_sip_sanitize_xml function is used to sanitize + a string for placement into XML. This is done by examining + an input string and then appending values to an output + buffer. The function used by its implementation, strncat, + has specific behavior that was not taken into account. + If the size of the input string exceeded the available + output buffer size it was possible for the sanitization + function to write past the output buffer itself causing + a crash. The crash would either occur because it was + writing into memory it shouldn't be or because the resulting + string was not NULL terminated. + + This change keeps count of how much remaining space is + available in the output buffer for text and only allows + strncat to use that amount. + + Since this was exposed by the res_pjsip_pidf_digium_body_supplement + module attempting to send a large message the maximum allowed + message size has also been increased in it. + + A unit test has also been added which confirms that the + ast_sip_sanitize_xml function is providing NULL terminated + output even when the input length exceeds the output + buffer size. + + ASTERISK-25304 #close + + Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302 + +2015-08-05 05:23 +0000 [7351d33a1f] Joshua Colp + + * res_rtp_asterisk: Don't leak temporary key when enabling PFS. + + A change recently went in which enabled perfect forward secrecy for + DTLS in res_rtp_asterisk. This was accomplished two different ways + depending on the availability of a feature in OpenSSL. The fallback + method created a temporary instance of a key but did not free it. + This change fixes that. + + ASTERISK-25265 + + Change-Id: Iadc031b67a91410bbefb17ffb4218d615d051396 +2015-08-04 09:47 +0000 [c63316eec1] Mark Michelson + + * res_http_websocket: Debug write lengths. + + Commit 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee attempted to fix a + test failure observed on 32 bit test agents by ensuring that a cast from + a 32 bit unsigned integer to a 64 bit unsigned integer was happening in + a predictable place. As it turns out, this did not cause test runs to + succeed. + + This commit adds several redundant debug messages that print the payload + lengths of websocket frames. The idea here is that this commit will not + cause tests to succeed for the faulty test agent, but we might deduce + where the fault lies more easily this way by observing at what point the + expected value (537) changes to some ungangly huge number. + + If you are wondering why something like this is being committed to the + branch, keep in mind that in commit + 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee I noted that the observed test + failures only happen when automated tests are run. Attempts to run the + tests by hand manually on the test agent result in the tests passing. + + Change-Id: I14a65c19d8af40dadcdbd52348de3b0016e1ae8d + +2015-08-03 11:06 +0000 [35a98161df] Mark Michelson + + * res_http_websocket: Avoid passing strlen() to ast_websocket_write(). + + We have seen a rash of test failures on a 32-bit build agent. Commit + 48698a5e21d7307f61b5fb2bd39fd593bc1423ca solved an obvious problem where + we were not encoding a 64-bit value correctly over the wire. This + commit, however, did not solve the test failures. + + In the failing tests, ARI is attempting to send a 537 byte text frame + over a websocket. When sending a frame this small, 16 bits are all that + is required in order to encode the payload length on the websocket + frame. However, ast_websocket_write() thinks that the payload length is + greater than 65535 and therefore writes out a 64 bit payload length. + Inspecting this payload length, the lower 32 bits are exactly what we + would expect it to be, 537 in hex. The upper 32 bits, are junk values + that are not expected to be there. + + In the failure, we are passing the result of strlen() to a function that + expects a uint64_t parameter to be passed in. strlen() returns a size_t, + which on this 32-bit machine is 32 bits wide. Normally, passing a 32-bit + unsigned value to somewhere where a 64-bit unsigned value is expected + would cause no problems. In fact, in manual runs of failing tests, this + works just fine. However, ast_websocket_write() uses the Asterisk + optional API, which means that rather than a simple function call, there + are a series of macros that are used for its declaration and + implementation. These macros may be causing some sort of error to occur + when converting from a 32 bit quantity to a 64 bit quantity. + + This commit changes the logic by making existing ast_websocket_write() + calls use ast_websocket_write_string() instead. Within + ast_websocket_write_string(), the 64-bit converted strlen is saved in a + local variable, and that variable is passed to ast_websocket_write() + instead. + + Note that this commit message is full of speculation rather than + certainty. This is because the observed test failures, while always + present in automated test runs, never occur when tests are manually + attempted on the same test agent. The idea behind this commit is to fix + a theoretical issue by performing changes that should, at the least, + cause no harm. If it turns out that this change does not fix the failing + tests, then this commit should be reverted. + + Change-Id: I4458dd87d785ca322b89c152b223a540a3d23e67 + +2015-07-29 14:17 +0000 [1f02d20da4] Benjamin Ford + + * ARI: Rotate log channels. + + An http request can be sent to rotate a specified log channel. + If the channel does not exist, an error response will be + returned. + + The command "curl -v -u user:pass -X PUT 'http://localhost:8088 + /ari/asterisk/logging/logChannelName/rotate'" can be run in the + terminal to access this new functionality. + + * Added the ability to rotate log files through ARI + + ASTERISK-25252 + + Change-Id: Iaefa21cbbc1b29effb33004ee3d89c977e76ab01 + +2015-07-31 11:27 +0000 [fe804b09b3] Ashley Sanders + + * ARI: Channels added to Stasis application during WebSocket creation ... + + Prior to ASTERISK-24988, the WebSocket handshake was resolved before Stasis + applications were registered. This was done such that the WebSocket would be + ready when an application is registered. However, by creating the WebSocket + first, the client had the ability to make requests for the Stasis application + it thought had been created with the initial handshake request. The inevitable + conclusion of this scenario was the cart being put before the horse. + + ASTERISK-24988 resolved half of the problem by ensuring that the applications + were created and registered with Stasis prior to completing the handshake + with the client. While this meant that Stasis was ready when the client + received the green-light from Asterisk, it also meant that the WebSocket was + not yet ready for Stasis to dispatch messages. + + This patch introduces a message queuing mechanism for delaying messages from + Stasis applications while the WebSocket is being constructed. When the ARI + event processor receives the message from the WebSocket that it is being + created, the event processor instantiates an event session which contains a + message queue. It then tries to create and register the requested applications + with Stasis. Messages that are dispatched from Stasis between this point and + the point at which the event processor is notified the WebSocket is ready, are + stashed in the queue. Once the WebSocket has been built, the queue's messages + are dispatched in the order in which they were originally received and the + queue is concurrently cleared. + + ASTERISK-25181 #close + Reported By: Matt Jordan + + Change-Id: Iafef7b85a2e0bf78c114db4c87ffc3d16d671a17 + +2015-07-29 12:58 +0000 [86034227ca] Mark Michelson + + * dns_core: Allow zero-length DNS responses. + + A testsuite test recently failed due to a crash that occurred in the DNS + core. The problem was that the test could not resolve an address, did + not set a result on the DNS query, and then indicated the query was + completed. The DNS core does not handle the case of a query with no + result gracefully, and so there is a crash. + + This changeset makes the DNS system resolver set a result with a + zero-length answer in the case that a DNS resolution failure occurs + early. The DNS core now also will accept such a response without + treating it as invalid input. A unit test was updated to no longer treat + setting a zero-length response as off-nominal. + + Change-Id: Ie56641e22debdaa61459e1c9a042e23b78affbf6 + +2015-07-29 13:49 +0000 [f49bef08a2] Richard Mudgett + + * rtp_engine.c: Fix performance issue with several channel drivers that use RTP. + + ast_rtp_codecs_get_payload() gets called once or twice for every received + RTP frame so it would be nice to not allocate an ao2 object to then have + it destroyed shortly thereafter. The ao2 object gets allocated only if + the payload type is not set by the channel driver as a negotiated value. + The issue affects chan_skinny, chan_unistim, chan_rtp, and chan_ooh323. + + * Made static_RTP_PT[] an array of ao2 objects that + ast_rtp_codecs_get_payload() can return instead of an array of structs + that must be copied into a created ao2 object. + + ASTERISK-25296 #close + Reported by: Richard Mudgett + + Change-Id: Icb6de5cd90bfae07d44403a1352963db9109dac0 + +2015-07-29 17:00 +0000 [33a465249b] Richard Mudgett + + * res_rtp_asterisk.c: Fix off-nominal crash potential. + + ASTERISK-25296 + Reported by: Richard Mudgett + + Change-Id: I08549fb7c3ab40a559f41a3940f3732a4059b55b + +2015-07-29 13:48 +0000 [5f925d48b7] Richard Mudgett + + * rtp_engine.c: Must protect mime_types_len with mime_types_lock. + + Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e + +2015-07-24 18:38 +0000 [ba7dd38470] Richard Mudgett + + * res_pjsip_sdp_rtp.c: Fixup some whitespace. + + Change-Id: Ib4eb7ef7dcaf93ddc26538f0a498aaf110d7a973 + +2015-07-24 18:42 +0000 [3751bf0971] Richard Mudgett + + * res_pjsip_sdp_rtp.c: Fix processing wrong SDP media list. + + Change-Id: I7c076826c2d3c6ae8c923ca73b7a71980cca11f2 + +2015-07-27 19:10 +0000 [e2d5d4db35] Richard Mudgett + + * rtp_engine.h: No sense allowing payload types larger than RFC allows. + + * Tweaked add_static_payload() to not use magic numbers. + + Change-Id: I1719ff0f6d3ce537a91572501eae5bcd912a420b + +2015-07-23 14:04 +0000 [bc1eae55cb] Richard Mudgett + + * rtp_engine.c: Minor tweaks. + + * Fix off nominial ref leak of new_type in + ast_rtp_codecs_payloads_set_m_type(). + + * No need to lock static_RTP_PT_lock in + ast_rtp_codecs_payloads_set_m_type() and + ast_rtp_codecs_payloads_set_rtpmap_type_rate() before the payload type + parameter sanity check. + + * No need to create ast_rtp_payload_type ao2 objects with a lock since the + lock is not used. + + Change-Id: I64dd1bb4dfabdc7e981e3f61448beac9bb7504d4 + +2015-07-17 16:23 +0000 [d122c1e50b] Richard Mudgett + + * chan_sip.c: Tweak glue->update_peer() parameter nil value. + + Change glue->update_peer() parameter from 0 to NULL to better indicate it + is a pointer. + + Change-Id: I8ff2e5087f0e19f6998e3488a712a2470cc823bd + +2015-07-23 12:41 +0000 [d12dc97fc9] Richard Mudgett + + * rtp_engine.h: Misc comment fixes. + + Change-Id: If98139264d5d97427b4685ecbdc54518f725bc43 + +2015-07-30 17:05 +0000 [077c58cd5c] Richard Mudgett + + * res_pjsip_session.c: Fix crashes seen when call cancelled. + + Two testsuite tests crashed in the same place as a result of an INVITE + being CANCELed. + + tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_unspecified + tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_tcp + + The session pointer is no longer in the inv->mod_data[session_module.id] + location because the INVITE transaction has reached the terminated state. + + ASTERISK-25297 #close + Reported by: Richard Mudgett + + Change-Id: Idb75fdca0321f5447d5dac737a632a5f03614427 + +2015-07-29 14:35 +0000 [5fcd1bc556] Mark Michelson + + * res_http_websocket: Properly encode 64 bit payload + + A test agent was continuously failing all ARI tests when run against + Asterisk 13. As it turns out, the reason for this is that on those test + runs, for some reason we decided to use the super extended 64 bit + payload length for websocket text frames instead of the extended 16 bit + payload length. For 64-bit payloads, the expected byte order over the + network is + + 7, 6, 5, 4, 3, 2, 1, 0 + + However, we were sending the payload as + + 3, 2, 1, 0, 7, 6, 5, 4 + + This meant that we were saying to expect an absolutely MASSIVE payload + to arrive. Since we did not follow through on this expected payload + size, the client would sit patiently waiting for the rest of the payload + to arrive until the test would time out. + + With this change, we use the htobe64() function instead of htonl() so + that a 64-bit byte-swap is performed instead of a 32 bit byte-swap. + + Change-Id: Ibcd8552392845fbcdd017a8c8c1043b7fe35964a + +2015-07-29 12:23 +0000 [8fb8988fd4] Mark Michelson + + * Add a test event for inband ringing. + + This event is necessary for the bridge_wait_e_options test to be able to + confirm that ringing is being played on the local channel that runs the + BridgeWait() application with the e(r) option. + + ASTERISK-25292 #close + Reported by Kevin Harwell + + Change-Id: Ifd3d3d2bebc73344d4b5310d0d55c7675359d72e + +2015-07-28 05:33 +0000 [1d081ec970] Mark Duncan + + * res/res_rtp_asterisk: Add ECDH support + + This will add ECDH support to Asterisk. It will + detect auto ECDH support in OpenSSL + (1.0.2b and above) during ./configure. If this is + available, it will use it, + otherwise it will fall back to prime256v1 (this + behavior is consistent with + other projects such as Apache and nginx). + + This fixes WebRTC being broken in Firefox 38+ due + to Firefox now only supporting + ciphers with perfect forward secrecy. + + ASTERISK-25265 #close + + Change-Id: I8c13b33a2a79c0bde2e69e4ba6afa5ab9351465b + +2015-07-16 12:16 +0000 [687597ca8c] Jonathan Rose + + * holding_bridge: ensure moh participants get frames + + Currently, if a blank musiconhold.conf is used, musiconhold will fail + to start for a channel going into a holding bridge with an anticipation + of getting music on hold. That being the case, no frames will be written + to the channel and that can pose a problem for blind transfers in PJSIP + which may rely on frames being written to get past the REFER framehook. + This patch makes holding bridges start a silence generator if starting + music on hold fails and makes it so that if no music on hold functions + are installed that the ast_moh_start function will report a failure so + that consumers of that function will be able to respond appropriately. + + ASTERISK-25271 #close + + Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99 + (cherry picked from commit 8458b8d441c2f4143ff135163ff3da4f88fe14c8) + +2015-07-18 11:16 +0000 [309dd2a409] Joshua Colp + + * pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options. + + This change adds support for the 'rtp_timeout' and 'rtp_timeout_hold' + endpoint options. These allow the channel to be hung up if RTP + is not received from the remote endpoint for a specified number of + seconds. + + ASTERISK-25259 #close + + Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9 + +2015-07-24 09:46 +0000 [a0c31c7a05] Mark Michelson + + * res_pjsip: Add rtp_keepalive to sample config file. + + Change-Id: I5f62d0c5684f8b2335f9f8ac2d79ee04fbdafb19 + +2015-07-23 13:11 +0000 [d97bed46b7] Mark Michelson + + * Local channels: Alternate solution to ringback problem. + + Commit 54b25c80c8387aea9eb20f9f4f077486cbdf3e5d solved an issue where a + specific scenario involving local channels and a native local RTP bridge + could result in ringback still being heard on a calling channel even + after the call is bridged. + + That commit caused many tests in the testsuite to fail with alarming + consequences, such as not sending DialBegin and DialEnd events, and + giving incorrect hangup causes during calls. + + This commit reverts the previous commit and implements and alternate + solution. This new solution involves only passing AST_CONTROL_RINGING + frames across local channels if the local channel is in AST_STATE_RING. + Otherwise, the frame does not traverse the local channels. By doing + this, we can ensure that a playtones generator does not get started on + the calling channel but rather is started on the local channel on which + the ringing frame was initially indicated. + + ASTERISK-25250 #close + Reported by Etienne Lessard + + Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39 + +2015-07-22 12:24 +0000 [1cc99ba8b6] Joshua Colp + + * audiohook: Use manipulated frame instead of dropping it. + + Previous changes to sample rate support in audiohooks accidentally + removed code responsible for allowing the manipulate audiohooks + to work. Without this code the manipulated frame would be dropped + and not used. This change restores it. + + ASTERISK-25253 #close + + Change-Id: I3ff50664cd82faac8941f976fcdcb3918a50fe13 + +2015-07-22 09:46 +0000 [0b7148e262] Mark Michelson + + * Local channels: Do not block control -1 payloads. + + Control frames with a -1 payload are used as a special signal to stop + playtones generators on channels. This indication is sent both by + app_dial as well as by ast_answer() when a call is answered in case any + tones were being generated on a calling channel. + + This control frame type was made to stop traversing local channel pairs + as an optimization, because it was thought that it was unnecessary to + send these indications, and allowing such unnecessary control frames to + traverse the local channels would cause the local channels to optimize + away less quickly. + + As it turns out, through some special magic dialplan code, it is + possible to have a tones being played on a non-local channel, and it is + important for the local channel to convey that the tones should be + stopped. The result of having tones continue to be played on the + non-local channel is that the tones play even once the channel has been + bridged. By not blocking the -1 control frame type, we can ensure that + this situation does not happen. + + ASTERISK-25250 #close + Reported by Etienne Lessard + + Change-Id: I0bcaac3d70b619afdbd0ca8a8dd708f33fd2f815 + +2015-07-22 05:16 +0000 [e5fe8d40c8] Joshua Colp + + * audiohook: Read the correct number of samples based on audiohook format. + + Due to changes in audiohooks to support different sample rates the + underlying storage of samples is in the format of the audiohook + itself and not of the format being requested. This means that if a + channel is using G722 the samples stored will be at 16kHz. If + something subsequently reads from the audiohook at a format which + is not the same sample rate as the audiohook the number of samples + needs to be adjusted. + + Given the following example: + 1. Channel writing into audiohook at 16kHz (as it is using G722). + 2. Chanspy reading from audiohook at 8kHz. + + The original code would read 160 samples from the audiohook for + each 20ms of audio. This is incorrect. Since the audio in the + audiohook is at 16kHz the actual number needing to be read is 320. + Failure to read this much would cause the audiohook to reset + itself constantly as the buffer became full. + + This change adjusts the requested number of samples by determining + the duration of audio requested and then calculating how many + samples that would be in the audiohook format. + + ASTERISK-25247 #close + + Change-Id: Ia91ce516121882387a315fd8ee116b118b90653d + +2015-07-20 15:59 +0000 [293c9f6894] Elazar Broad + + * cdr/cdr_adaptive_odbc.c: Fix quoted identifier usage when inserting CDR records + + Commit a24ce38 added support for the use of quoted indentifiers when inserting + CDR records into the database. However, the if statement logic responsible for + determining whether to use those identifiers is reversed, resulting in a + reference to the quoted identifier character buffer which will be null, hence + null terminating the SQL query, resulting in a truncated statement which + fails to execute. + + ASTERISK-25263 #close + Reported by: Elazar Broad + Tested by: Elazar Broad + + Change-Id: I40da47309b67cc1572207b1515dcc08ec9b1f644 +2015-07-20 12:39 +0000 [d02196448b] Rusty Newton + + * Documentation: A couple of trivial fixes in sip.conf.sample and func_cdr.c + + * In sip.conf.sample fix sentence where we said that WS or WSS are supported + transports for use in an outbound register definition. They are not + supported in that case. + * In func_cdr.c made it clear that the Disable option for CDR_PROP can be used + to enable CDR on a channel. + + ASTERISK-24867 #close + Reported by: Rusty Newton + + ASTERISK-24853 #close + Reported by: PSDK + + Change-Id: I3d698bc6302b9d00a0a995b5c4ad9a42d69b48ca + +2015-07-09 14:17 +0000 [2b42264e66] Mark Michelson + + * res_pjsip: Add rtp_keepalive endpoint option. + + This adds an "rtp_keepalive" option for PJSIP endpoints. Similar to the + chan_sip option, this specifies an interval, in seconds, at which we + will send RTP comfort noise frames. This can be useful for keeping RTP + sessions alive as well as keeping NAT associations alive during lulls. + + ASTERISK-25242 #close + Reported by Mark Michelson + + Change-Id: I3b9903d99e35fe5d0b53ecc46df82c750776bc8d + +2015-07-16 09:13 +0000 [8b503f2a10] Michael Cargile + + * res/res_musiconhold: Add a warning when MOH does not exist + + Change-Id: Ifdfbd0b97cf31478d29923ec30aabce28d01740b + +2015-07-19 09:11 +0000 [9475dc9492] Matt Jordan + + * res/res_sorcery_config: Prevent crash from misconfigured sorcery.conf + + Misconfiguring sorcery.conf with a 'config' wizard with no extra data + will currently crash Asterisk on startup, as the wizard requires a comma + delineated list to parse. This patch updates res_sorcery_config to check + for the presence of the data before it starts manipulating it. + + Change-Id: I4c97512e8258bc82abe190627a9206c28f5d3847 + +2015-07-16 09:46 +0000 [649460aa44] Joshua Colp + + * chan_pjsip: Don't change formats when frame of unsupported format is received. + + Receipt of an RTP packet currently causes the formats on an PJSIP channel to + change to the format of the RTP packet. In some off-nominal cases it's possible + for this to be a format that has not been configured or negotiated. This change + makes it so only formats explicitly configured on the endpoint are allowed. + + ASTERISK-25258 #close + + Change-Id: If93d641fb6418a285928839300d7854cab8c1020 + +2015-07-14 16:55 +0000 [4a875e8082] Richard Mudgett + + * pbx.c: Post AMI VarSet event if delete a non-empty dialplan variable. + + ASTERISK-25256 #close + Reported by: Richard Mudgett + + Change-Id: I0b6be720b66fa956f6a798cd22ef8934eb0c0ff3 + +2015-07-17 04:59 +0000 [7908ae4934] Patric Marschall + + * sig_pri.h: force_restart_unavailable_chans in wrong scope + + In channels/sig_pri.h, struct sig_pri_span, the field + force_restart_unavailable_chans is only defined if + + #if defined(HAVE_PRI_MCID) is true. + + All other occurences of force_restart_unavailable_chans are outside of the + + #if defined(HAVE_PRI_MCID) + endif + + scope. + + ASTERISK-25257 #close + Reported by: Patric Marschall + + Change-Id: I071de89cc2cd0d85927a013036e235851f672549 + +2015-07-08 16:39 +0000 [254d07b15b] Matt Jordan + + * ARI: Add support for push configuration of dynamic object + + This patch adds support for push configuration of dynamic, i.e., + sorcery, objects in Asterisk. It adds three new REST API calls to the + 'asterisk' resource: + * GET /asterisk/{configClass}/{objectType}/{id}: retrieve the current + object given its ID. This returns back a list of ConfigTuples, which + define the fields and their present values that make up the object. + * PUT /asterisk/{configClass}/{objectType}/{id}: create or update an + object. A body may be passed with the request that contains fields to + populate in the object. The same format as what is retrieved using + the GET operation is used for the body, save that we specify that the + list of fields to update are contained in the "fields" attribute. + * DELETE /asterisk/{configClass}/{objectType}/{id}: remove a dynamic + object from its backing storage. + + Note that the success/failure of these operations is somewhat + configuration dependent, i.e., you must be using a sorcery wizard that + supports the operation in question. If a sorcery wizard does not support + the create or delete mechanisms, then the REST API call will fail with a + 403 forbidden. + + ASTERISK-25238 #close + + Change-Id: I28cd5c7bf6f67f8e9e437ff097f8fd171d30ff5c + +2015-07-15 15:40 +0000 [b34c4528ab] Richard Mudgett + + * strings.h: Fix issues with escape string functions. + + Fixes for issues with the ASTERISK-24934 patch. + + * Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is + an empty string. If it were an empty string the functions returned NULL + as if there were a memory allocation failure. This failure caused the AMI + VarSet event to not get posted if the new value was an empty string. + + * Fixed dest buffer overwrite potential in ast_escape() and + ast_escape_c(). If the dest buffer size is smaller than the space needed + by the escaped s parameter string then the dest buffer would be written + beyond the end by the nul string terminator. The num parameter was really + the dest buffer size parameter so I renamed it to size. + + * Made nul terminate the dest buffer if the source string parameter s was + an empty string in ast_escape() and ast_escape_c(). + + * Updated ast_escape() and ast_escape_c() doxygen function description + comments to reflect reality. + + * Added some more unit test cases to /main/strings/escape to cover the + empty source string issues. + + ASTERISK-25255 #close + Reported by: Richard Mudgett + + Change-Id: Id77fc704600ebcce81615c1200296f74de254104 + +2015-07-14 14:29 +0000 [097c15ac51] Richard Mudgett + + * parking_applications.c: Fix ast_verb() line terminator. + + Change-Id: I8797238c71563e243c48c6145b4f1ae58f91f775 + +2015-07-14 14:36 +0000 [8b620c555b] Richard Mudgett + + * res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park. + + setup_park_common_datastore() was assuming that a non-NULL string returned + for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty + strings. Things got crashy as a result. + + * Made setup_park_common_datastore() treat the channel variable values the + same whether they are NULL or empty for ATTENDEDTRANSFER and + BLINDTRANSFER. + + ASTERISK-25254 #close + Reported by: Richard Mudgett + + Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2 + +2015-07-10 18:01 +0000 [4af24ec74b] Richard Mudgett + + * res_pjsip_session.c: Extract sip_session_defer_termination_stop_timer(). + + Change-Id: I9e115dee74bd72e06081d0ee73ecdeb886caa5fb + +2015-07-10 10:42 +0000 [71b3bcf5e0] Richard Mudgett + + * res_pjsip_session.c: Add some helpful comments and minor tweaks. + + Change-Id: I742aeeaf5f760593f323a00fb691affe22e35743 + +2015-07-10 10:43 +0000 [53c91737a5] Richard Mudgett + + * res_pjsip_session.c: Fix off nominal crash potential in debug message. + + Change-Id: I09928297927ee85f7655289acee3a586816466bc + +2015-07-15 10:31 +0000 [eff6a88a88] Matt Jordan + + * apps/app_dictate: Fix typo in attribution + + Last time I checked, it's "Sangoma", not "Samgoma". Thanks to Brian + (GameGamer43) for pointing that out. + + Change-Id: I43d7b196f6d7a2b2517b84915e3a8dfbc2894106 + +2015-07-15 10:28 +0000 [e01d93e092] Benjamin Ford + + * ARI: Fixed unload mode for unload module. + + Changed the unload mode to AST_FORCE_SOFT from AST_FORCE_FIRM, + which would unload a module even if it was in use. + + * Changed unload mode to proper mode + + ASTERISK-25173 + + Change-Id: If2402487b5bce05d9770f25f65f5c8e292ad5533 + +2015-07-10 18:17 +0000 [1b666549f3] Richard Mudgett + + * res_pjsip_session.c: Fix crash on call disconnect. + + The crash fix for ASTERISK-25183 backported some code from master to try + to make sure that a BYE response is processed by the same serializer used + by the BYE request. The identified race condition causing that backport + was the BYE request code had not finished processing after sending the BYE + before the BYE response came in for processing under a different thread. + Unfortunately, there is still a race condition. Now the race condition is + between destroying the call session's serializer in + ast_taskprocessor_unreference() and using ast_taskprocessor_get() to get a + reference to the serializer for a BYE response. Even worse, the new race + condition is a design limitation of the taskprocessor implementation that + didn't matter in versions before v12. Back then, taskprocessors were only + destroyed when a module unloaded. Now res_pjsip can destroy them when a + call ends. + + However, as noted on the ASTERISK-25183 commit, + session_inv_on_state_changed() is disassociating the dialog from the + session when the invite dialog state becomes PJSIP_INV_STATE_DISCONNECTED. + This is a tad too soon because our BYE request transaction has not + completed yet. + + * Split session_end() that is called by session_inv_on_state_changed() to + hold off session destruction until the BYE transaction timeout occurs or a + failed initial INVITE transaction timeout occurs in + session_inv_on_tsx_state_changed(). + + ASTERISK-25201 #close + Reported by: Matt Jordan + + Change-Id: Iaf8dc8485fd8392a2a3ee4ad3b7f7f04a0dcc961 + +2015-07-14 13:12 +0000 [9d458b8311] Benjamin Ford + + * ARI: Added new functionality to reload a single module. + + An http request can be sent to reload an Asterisk module. If the + module can not be reloaded or is not already loaded, an error + response will be returned. + + The command "curl -v -u user:pass -X PUT 'http://localhost:8088 + /ari/asterisk/modules/{moduleName}'" (or something similar, based + on configuration) can be run in the terminal to access this new + functionality. + + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + + * Added new ARI functionality + * Asterisk modules can be reloaded through http requests + + ASTERISK-25173 + + Change-Id: I289188bcae182b2083bdbd9ebfffd50b62f58ae1 + +2015-07-14 08:55 +0000 [f64f1c2772] Benjamin Ford + + * ARI: Added new functionality to unload a single module. + + An http request can be sent to unload an Asterisk module. If the + module can not be unloaded or is already unloaded, an error response + will be returned. + + The command "curl -v -u user:pass -X DELETE 'http://localhost:8088 + /ari/asterisk/modules/{moduleName}'" (or something similar, depending + on configuration) can be run in the terminal to access this new + functionality. + + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + + * Added new ARI functionality + * Asterisk modules can be unloaded through http requests + + ASTERISK-25173 + + Change-Id: I535a95f5676deb02651522761ecbdc0b00b5ac57 + +2015-07-13 16:00 +0000 [aa5707b889] Benjamin Ford + + * ARI: Added new functionality to load a single module. + + An http request can be sent to load an Asterisk module. If the + module can not be loaded or is loaded already, an error response + will be returned. + + The command curl -v -u user:pass -X POST 'http://localhost:8088/ari + /asterisk/modules/{moduleName}'" (or something similar, depending on + configuration) can be run in the terminal to access this new + functionality. + + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + + * Added new ARI functionality + * Asterisk modules can be loaded through http requests + + ASTERISK-25173 + + Change-Id: I9e05d5b8c5c666ecfef341504f9edc1aa84fda33 + +2015-07-13 10:54 +0000 [6a764db370] Benjamin Ford + + * ARI: Added new functionality to get information on a single module. + + An http request can be sent to retrieve information on a single + module, including the resource name, description, use count, status, + and support level. + + The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari + /asterisk/modules/{moduleName}'" (or something similar, depending on + configuration) can be run in the terminal to access this new + functionality. + + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + + * Added new ARI functionality + * Information on a single module can now be retrieved + + ASTERISK-25173 + + Change-Id: Ibce5a94e70ecdf4e90329cf0ba66c33a62d37463 + +2015-07-08 14:56 +0000 [c855523519] Kevin Harwell + + * bridge.c: Fixed race condition during attended transfer + + During an attended transfer a thread is started that handles imparting the + bridge channel. From the start of the thread to when the bridge channel is + ready exists a gap that can potentially cause problems (for instance, the + channel being swapped is hung up before the replacement channel enters the + bridge thus stopping the transfer). This patch adds a condition that waits + for the impart thread to get to a point of acceptable readiness before + allowing the initiating thread to continue. + + ASTERISK-24782 + Reported by: John Bigelow + + Change-Id: I08fe33a2560da924e676df55b181e46fca604577 + +2015-05-13 16:22 +0000 [ef82190804] Matt Jordan + + * media cache: Add CLI commands + + This patch adds five CLI commands for the media cache: + * 'media cache show all' - display a summary of all items in the media + cache. + * 'media cache show ' - display detailed information about a + single item in the media cache. + * 'media cache delete ' - remove an item from the media cache, and + inform the bucket backend for the URI scheme to remove the item as + well. + * 'media cache refresh ' - refresh a URI. If the item does not + exist in the media cache, the bucket backend will pull down the media + associated with the URI and create the item in the cache. + * 'media cache create ' - create an item in the media cache from + some local media storage. Note that the bucket backend for the URI + scheme must still permit the item creation. + + Change-Id: Id1c5707a3b8e2d96b56e4691a46a936cd171f4ae + +2015-01-29 08:38 +0000 [3ea0d38396] Matt Jordan + + * media cache: Add a core API and facade for a backend agnostic media cache + + This patch adds a new API to the Asterisk core that acts as a media + cache. The core API itself is mostly a thin wrapper around some bucket + API provided implementation that itself acts as the mechanism of + retrieval for media. The media cache API in the core provides the + following: + * A very thin in-memory cache of the active bucket_file items. Unlike a + more traditional cache, it provides no expiration mechanisms. Most + queries that hit the in-memory cache will also call into the bucket + implementations as well. The bucket implementations are responsible + for determining whether or not the active record is active and valid. + This makes sense for the most likely implementation of a media cache + backend, i.e., HTTP. The HTTP layer itself is the actual arbiter of + whether or not a record is truly active; as such, the in-memory cache + in the core has to defer to it. + * The ability to create new items in the media cache from local + resources. This allows for re-creation of items in the cache on + restart. + * Synchronization of items in the media cache to the AstDB. This + also includes various pieces of important metadata. + + The API provides sufficient access that higher level APIs, such as the + file or app APIs, do not have to worry about the semantics of the bucket + APIs when needing to playback a resource. + + In addition, this patch provides unit tests for the media cache API. The + unit tests use a fake bucket backend to verify correctness. + + Change-Id: I11227abbf14d8929eeb140ddd101dd5c3820391e + +2015-07-11 20:25 +0000 [887945d410] Matt Jordan + + * main/bucket: Add a callback function for ast_bucket_file objects + + This patch adds a new function to the bucket API for ast_bucket_file + objects, ast_bucket_file_metadata_callback. It will call ao2_callback on + the ast_bucket_file's ao2_container of metadata, calling the provided + ao2_callback_fn callback on each piece of metadata associated with the + file. + + This is particularly useful when a bucket backend has added metadata, + and a higher level API wants to be aware of/access said metadata, + without knowing for sure what the key is. + + Change-Id: I96f6757717f47b650df91a437f7df16406227466 + +2015-07-08 16:28 +0000 [458715d088] Matt Jordan + + * main/sorcery: Don't fail object set creation from JSON if field fails + + Some individual fields may fail their conversion due to their default + values being invalid for their custom handlers. In particular, + configuration values that depend on others being enabled (and thus have + an empty default value) are notorious for tripping this routine up. An + example of this are any of the DTLS options for endpoints. Any of the + DTLS options will fail to be applied (as DTLS is not enabled), causing + the entire object set to be aborted. + + This patch makes it so that we log a debug message when skipping a + field, and rumble on anyway. + + ASTERISK-25238 + + Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76 + +2015-07-08 16:21 +0000 [6ed58014f5] Matt Jordan + + * main/format_cap: Parse capabilities generated by ast_format_cap_get_names + + We have a strange relationship between the parsing of format + capabilities from a string and their representation as a string. We + expect the format capabilities to be expressed as a string in the + following format: + + allow = !all,ulaw,alaw + disallow = g722 + + While we would generate the string representation of those formats as: + + allow = (ulaw|alaw) + disallow = (ulaw|alaw|g729...) + + When the configuration framework needs to store values as a string, it + generates the format capabilities using the second representation; this + representation however cannot be parsed when the entry is rehydrated. + This patch fixes that by updating + ast_format_cap_update_by_allow_disallow to parse an entry as if it were + in the generated format if it has a leading '(' and a trailing ')'. + + ASTERISK-25238 + + Change-Id: I904d43caf4cf45af06f6aee0c9e58556eb91d6ca + +2015-07-08 16:38 +0000 [e64e586900] Matt Jordan + + * res/res_sorcery_astdb: Add a debugging message for when retrieval by ID fails + + Having a debug message tell us that we attempted to look up an item but + failed is nice in circumstances when it isn't clear if the wizard was + queried correctly or not. + + Change-Id: I2600c3bbea87f252196358f62e73f4c7da8632f7 + +2015-07-08 16:37 +0000 [7c14dfdc61] Matt Jordan + + * res/res_pjsip_outbound_registration: Fix WARNING message + + Newlines are nice. + + Change-Id: Icf0d915db02882e47cd9077ed9009f5d44140d42 + +2015-07-08 16:35 +0000 [3e286e6b51] Matt Jordan + + * res_pjsip/configuration: Fix a variety of default value problems + + This patch fixes some bad default value handling in the following + settings: + + * The 'message_context' and 'accountcode' settings are not mandatory. As + such, we can allow their stringfield values to be empty. + * The 'media_encryption' setting applies a default value of 'none' to + the setting, which it then can't parse or understand. Since the value + is documented to be 'no', this will now apply that as the default + value. + + Change-Id: Ib9be7f97a7a5b9bc7aee868edf5acf38774cff83 + +2015-07-08 16:32 +0000 [ffadb5f1de] Matt Jordan + + * main/sorcery: Provide log messages when a wizard does not support an operation + + If a sorcery wizard does not support one of the 'optional' CRUD + operations (namely the CUD), log a WARNING message so we are aware of + why the operation failed. This also removes an assert in this case, as + the CUD operation may have been triggered by an external system, in + which case it is not a programming error but a configuration error. + + Change-Id: Ifecd9df946d9deaa86235257b49c6e5e24423b53 + +2015-06-27 17:53 +0000 [5266796432] Matt Jordan + + * tests/test_devicestate: Add additional tests for the device state API + + This patch adds more tests that exercise the device state API. This includes: + + * Tests that cover adding a device state provider, as well as deleting a + device state provider. This also verifies that you cannot add an + already added device state provider, and cannot delete an already + deleted device state provider. + * A test that covers changing device state and receiving said updates + from a device state subscriber. This also covers hitting both the + device state cache as well as a custom device state provider. + * A test that covers converting device state to channel state and device + state values to a string representation and back. + * A test that covers obtaining device state from an active channel and a + channel driver that provides its own device state. + + Change-Id: I2adca67ffb405cd8625a5d6df1e3f9b3d945c08d + +2015-06-27 17:51 +0000 [f77e688f20] Matt Jordan + + * main/devicestate: Prevent duplicate registration of device state providers + + Currently, the device state provider API will allow you to register a + device state provider with the same case insensitive name more than + once. This could cause strange issues, as the duplicate device state + providers will not be queried when a device's state has to be polled. + This patch updates the API such that a device state provider with the + same name as one that has already registered will be rejected. + + Change-Id: I4a418a12280b7b6e4960bd44f302e27cd036ceb2 + +2015-06-26 10:57 +0000 [1b7760a8aa] Benjamin Ford + + * ARI: Added new functionality to get all module information. + + An http request can be sent to retrieve a list of all existing modules, + including the resource name, description, use count, status, and + support level. + + The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari/ + asterisk/modules" (or something similar, depending on configuration) + can be run in the terminal to access this new functionality. + + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + + * Added new ARI functionality + * Information on modules can now be retrieved + + Change-Id: I63cbbf0ec0c3544cc45ed2a588dceabe91c5e0b0 + +2015-07-09 09:18 +0000 [4a25d55416] Joshua Colp + + * bridge_native_rtp.c: Don't start native RTP bridging after attended transfer. + + The bridge_native_rtp module adds a frame hook to channels which are in + a native RTP bridge. This frame hook is used to intercept when a hold + or unhold frame traverses the bridge so native RTP can be stopped or + started as appropriate. This is expected but exposes a specific bug + when attended transfers are involved. + + Upon completion of an attended transfer an unhold frame is queued up + to take one of the channels involved off hold. After this is done + the channel is moved between bridges. + + When the frame hook is involved in this case for the unhold it + releases the channel lock and acquires the bridge lock. This + allows the bridge core to step in and move the channel + (potentially changing the bridging techology) from another thread. + Once completed the bridge lock is released by the bridge core. + The frame hook is then able to acquire the bridge lock and + wrongfully starts native RTP again, despite the channel no longer + being in the bridge or needing to start native RTP. In fact at + this point the frame hook is no longer attached to the channel. + + This change makes it so the native RTP bridge data is available to + the frame hook when it is invoked. Whether the frame hook has + been detached or not is stored on the native RTP bridge data and + is checked by the frame hook before starting or stopping native + RTP bridging. If the frame hook has been detached it does nothing. + + ASTERISK-25240 #close + + Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2 + +2015-07-08 04:21 +0000 [9276415f65] Joshua Colp + + * res_rtp_asterisk: Ensure DTLS timeout timer is -1 if DTLS is not used. + + This change fixes a bug where the DTLS timeout timer would be + initialized to 0 if DTLS was not used for an RTP session. + + ASTERISK-25103 + + Change-Id: If8d26bb054f1d300838850da5b8db9044c2fe2ac + +2015-07-07 15:03 +0000 [3cdfd39af7] Ashley Sanders + + * DNS: Create a system-level DNS resolver + + Prior to this patch, the DNS core present in master had no default system-level + resolver implementation. Therefore, it was not possible for the DNS core to + perform resolutions unless the libunbound library was installed and the + res_resolver_unbound module was loaded. + + This patch introduces a system-level DNS resolver implementation that will + register itself with the lowest consideration priority available (to ensure + that it is to be used only as a last resort). The resolver relies on low-level + DNS search functions to perform a rudimentary DNS search based on a provided + query and then supplies the search results to the DNS core. + + ASTERISK-25146 #close + Reported By: Joshua Colp + + Change-Id: I3b36ea17b889a98df4f8d80d50bb7ee175afa077 + +2015-07-01 07:55 +0000 [5717340ab3] Joshua Colp + + * res_rtp_asterisk: Prevent simultaneous access to DTLS SSL context. + + This change moves logic for setting up the DTLS SSL contexts to + when the SDP is done being processed instead of when ICE negotiation + completes. It also stops handshakes from being initiated when we + are acting as a server. + + Manipulating the SSL context when ICE negotiation has completed + is problematic as the SSL context is not protected and if acting + as a client the remote side may have started DTLS negotiation + already. + + The retransmission timeout timer code has also been split up + and simplified some. Both RTP and RTCP now have their own timers + and the points at which the timer is stopped and started is now + more specific. When a packet is sent the timer is started. When + a response is received but before it is processed the timer is + stopped. This provides a guarantee that the timeout is not + occurring while the response is processed. + + ASTERISK-22805 #close + ASTERISK-24550 #close + ASTERISK-24651 #close + ASTERISK-24832 #close + ASTERISK-25103 #close + ASTERISK-25127 #close + + Change-Id: Ib75ea2546f29d6efc3d2d37c58df6986c7bd9b91 + +2015-06-26 18:48 +0000 [189841ddb7] Richard Mudgett + + * res_pjsip_mwi.c: Fix MWI subscription memory corruption crash. + + MWI subscriptions can crash or corrupt memory when using the subscription + datastore to access the MWI subscription object because the datastore is + not holding a reference to the object. + + * Give the subscription datastore a ref to the MWI subscription object. + It is unfortunate that the ref causes a circular ref chain that must be + explicitly broken to allow the memory to get released. The loop is broken + when the subscription is shutdown and if the subscription setup fails. + + ASTERISK-25168 #close + Reported by: Carl Fortin + + Change-Id: Ice4fa823f138ff10a6c74d280699c41a82836d4f + +2015-07-02 14:51 +0000 [7cd99be534] Richard Mudgett + + * PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error. + + When res_pjsip body generator modules were generating XML or XPIDF + response bodies, there was a chance that the generated body would be the + exact size of the supplied buffer. Adding the nul string terminator would + then write beyond the end of the buffer and potentially corrupt memory. + + * Fix MALLOC_DEBUG high fence violations caused by adding a nul string + terminator on the end of a buffer for XML or XPIDF response bodies. + + * Made calls to pj_xml_print() safer if the XML prolog is requested. Due + to a bug in pjproject, the return value could be -1 _or_ + AST_PJSIP_XML_PROLOG_LEN if the supplied buffer is not large enough. + + * Updated the doxygen comment of AST_PJSIP_XML_PROLOG_LEN to describe the + return value of pj_xml_print() when the supplied buffer is not large + enough. + + ASTERISK-25168 + Reported by: Carl Fortin + + Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de + +2015-06-26 10:36 +0000 [792ed7ce93] Richard Mudgett + + * PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences. + + When a caller calls a FAX number and then hangs up right after the call is + answered then the T.38 re-INVITE automatic reject timer may still be + running after the channel goes away. + + * Added session NULL channel checks on the code paths that get executed by + t38_automatic_reject() to prevent a crash when the T.38 re-INVITE + automatic reject timer expires. + + ASTERISK-25168 + Reported by: Carl Fortin + + Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403 + +2015-06-30 11:17 +0000 [030e8339dd] Richard Mudgett + + * res_pjsip_mwi.c: Use safer loop coding in mwi_subscription_mailboxes_str(). + + Change-Id: I6f39d809a6d1b47b35bb32b298f5a12f35d6f907 + +2015-06-30 11:14 +0000 [453d7b8d69] Richard Mudgett + + * res_pjsip_mwi.c: Eliminate a simple RAII_VAR. + + Change-Id: Ib1843f81e826a6c760c424c88eb70c350d9d61da + +2015-06-30 11:11 +0000 [786c6d42ef] Richard Mudgett + + * res_pjsip_mwi.c: Fix mid-line log message line breaks. + + * Add create_mwi_subscriptions_for_endpoint() doxygen comment. + + Change-Id: I3c3f921f4ec749fb65b62d2f6fa0d4d1888b94e2 + +2015-06-26 16:10 +0000 [1b91094edd] Richard Mudgett + + * res_pjsip_t38.c: Fix always false if test. + + Calling t38_change_state() sets the t38 state so it makes little sense to + then check the state right after the call for something else. + + * Made the code in t38_interpret_parameters() reject or exit T.38 mode as + intended but not implemented. + + Change-Id: Ib281263a6ed44da9448132c4e6df1e183b8a3df2 + +2015-06-30 15:19 +0000 [74135c8efa] Kevin Harwell + + * res_pjsip: Failover when server is not available + + Previously Asterisk did not properly failover to the next resolved DNS + address when a endpoint could not be reached. With this patch, and while + using res_pjsip, SIP requests (both in/out of dialog) now attempt to use + the next address in the list of resolved addresses until a proper response + is received or no more addresses are left. + + ASTERISK-25076 #close + Reported by: Joshua Colp + + Change-Id: Ief14f4ebd82474881f72f4538f4577f30af2a764 + +2015-07-06 09:24 +0000 [38a3c27a09] Joshua Colp + + * res_sorcery_memory_cache: Execute stale unit test last. + + In Jenkins there is currently a sporadic test failure of a + variable number of sorcery memory cache unit tests. I have not + been able to reproduce this on the build agents themselves or + on my development machine. + + My working theory is that the stale unit test is causing a + sorcery instance to persist longer than expected, causing subsequent + tests to fail when setting up and initializing the next + sorcery instance. + + To see if this is the case this change moves the stale unit test + to execute last so no subsequent unit tests can have issues + initializing their sorcery instance. + + Change-Id: Ifd6550a949613be774b75fa5db12c02110f82c4a + +2015-06-20 13:54 +0000 [ef8d3f6506] Matt Jordan + + * bucket: Add clone/staleness operations for ast_bucket/ast_bucket_file + + This patch enhances the bucket API in two ways. + + First, since ast_bucket and ast_bucket_file instances are immutable, a 'clone' + operation has been added that provides a 'clone' of an existing + ast_bucket/ast_bucket_file object. Note that this makes use of the + ast_sorcery_copy operation, along with the copy callback handler on the + "bucket" and "file" object types for the bucket sorcery instance. + + Second, there is a need for the bucket API to ask a wizard if an object + is stale. This is particularly useful with the upcoming media cache + enhancements, where we want to ask the backing data storage if the + object we are currently operating on has known updates. This patch adds + API calls for ast_bucket and ast_bucket_file objects, which callback + into their respective sorcery wizards via the sorcery API. + + Unit tests have also been added to cover the respective + ast_bucket/ast_bucket_file clone and staleness operations. + + Change-Id: Ib0240ba915ece313f1678a085a716021d75d6b4a + +2015-07-04 10:03 +0000 [b178f8701b] Matt Jordan + + * sorcery: Add support for object staleness + + This patch enhances the sorcery API to allow for sorcery wizards to + determine if an object is stale. This includes the following: + + * Sorcery objects now have a timestamp that is set on creation. Since + sorcery objects are immutable, this can be used by sorcery wizards to + determine if an object is stale. + + * A new API call has been added, ast_sorcery_is_stale. This API call + queries the wizards associated with the object, calling a new callback + function 'is_stale'. Note that if a wizard does not support the new + callback, objects are always assumed to not be stale. + + * Unit tests have been added that cover the new API call. + + Change-Id: Ica93c6a4e8a06c0376ea43e00cf702920b806064 + +2015-07-04 18:22 +0000 [f35a4b8525] Joshua Colp + + * res/res_http_websocket: Don't send HTTP response fragmented. + + This change makes it so that when accepting a WebSocket + connection the HTTP response is sent as one packet instead of + fragmented. Browsers don't like it when you send it fragmented. + + ASTERISK-25103 + + Change-Id: I9b82c4ec2949b0bce692ad0bf6f7cea9709e7f69 + +2015-06-27 18:47 +0000 [2c17515f3c] Matt Jordan + + * Makefile: Remove coverage files on 'make clean' + + This patch updates a variety of Makefiles in Asterisk's build system to + remove .gcda and .gcno files when 'make clean' is executed. These files + are generated when '--enable-coverage' is passed to the Asterisk + configure script. + + Change-Id: Ib70b41eea2ee2908885bff02e80faf9f40c84602 + +2015-07-02 09:08 +0000 [34323f9f95] Walter Doekes + + * chan_sip: Fix early call pickup channel leak. + + When handle_invite_replaces() was called, and either ast_bridge_impart() + failed or there was no bridge (because the channel we're picking up was + still ringing), chan_sip would leak a channel. + + Thanks Matt and Corey for checking the bridge path. + + ASTERISK-25226 #close + + Change-Id: Ie736bb182170a73eef5bcef0ab0376f645c260c8 + +2015-07-01 16:04 +0000 [ef74ccb18d] Matt Jordan + + * sorcery/realtime: Add a bit of debug and warning messages for bad configs + + When a mapping does not exist between a sorcery.conf defined object and + a realtime mapping in extconf, currently, the user will receive a slew + of ERROR messages that don't really tell what is happening. Some ERROR + messages may even be misleading, as they occur after the sorcery API has + already given up on the attempt to load and create the sorcery object. + + This patch adds a bit of debug and a useful WARNING message for when a + wizard's open callback fails for a particular object type. In the bad + configurations that resulted in this patch, this provided a 'root cause' + WARNING message that pointed in the right direction of the configuration + problem. + + Change-Id: I1cc7344f2b015b8b9c85a7e6ebc8cb4753a8f80b + +2015-07-02 06:54 +0000 [f18436642b] Joshua Colp + + * dns: Fix crash when invoking cancel in DNS recurring unit test. + + The recurring unit test expects the user data on a DNS query + created as a result of a recurring DNS query to be the recurring + structure itself. This is true, mostly. When invoking the user + provided callback this user data is changed to the user provided + data. This presents a race condition where the data may or may + not point to the recurring data. + + This change simplifies the callback of the user provided callback + by creating a new query and populating it with the expected values. + This leaves the recurring DNS query alone and fixes the race + condition. This is more in line with how the API should be used + overall. + + ASTERISK-25222 #close + + Change-Id: I10fb6deec025dff097157e7ec17e6e4921778478 + +2015-07-02 06:19 +0000 [6fbb58c7f7] Walter Doekes + + * chan_mgcp: Don't call close on fd -1. + + ASTERISK-25220 #close + + Change-Id: Ic48f3a82f51ada87f2fb0e016c9efe0ad56f1ee3 + +2015-07-02 06:10 +0000 [13a318bbb1] Walter Doekes + + * rtp_engine: Skip useless self-assignment in ast_rtp_engine_unload_format. + + When running valgrind on Asterisk, it complained about: + + ==32423== Source and destination overlap in memcpy(0x85a920, 0x85a920, 304) + ==32423== at 0x4C2F71C: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/...) + ==32423== by 0x55BA91: ast_rtp_engine_unload_format (rtp_engine.c:2292) + ==32423== by 0x4EEFB7: ast_format_attr_unreg_interface (format.c:1437) + + The code in question is a struct assignment, which may be performed by + memcpy as a compiler optimization. It is changed to only copy the struct + contents if source and destination are different. + + ASTERISK-25219 #close + + Change-Id: I6d3546c326b03378ca8e9b8cefd41c16e0088b9a + +2015-07-02 05:16 +0000 [40274e3652] Walter Doekes + + * astfd: Fix buffer overflow in DEBUG_FD_LEAKS. + + If DEBUG_FD_LEAKS was used and more file descriptors than the default of + 1024 were available, some DEBUG_FD_LEAKS-patched functions would + overwrite memory past the fixed-size (1024) fdleaks buffer. + + This change: + - adds bounds checks to __ast_fdleak_fopen and __ast_fdleak_pipe + - consistently uses ARRAY_LEN() instead of sizeof() or 1023 or 1024 + - stores pointers to constants instead of copying the contents + - reorders the fdleaks struct for possibly tighter packing + - adds a tiny bit of documentation + + ASTERISK-25212 #close + + Change-Id: Iacb69e7701c0f0a113786bd946cea5b6335a85e5 + +2015-07-02 04:57 +0000 [3fab8212e3] Walter Doekes + + * res_timing: Don't close FD 0 when out of open files. + + This fixes so a failure to get a timer file descriptor does not cascade + to closing FD 0. + + On error, both res_timing_kqueue and res_timing_timerfd would call the + destructor before setting the file handle. The file handle had been + initialized to 0, causing FD 0 to be closed. This in turn, resulted in + floods of "CLI>" messages and an unusable terminal. + + ASTERISK-19277 #close + Reported by: Barry Chern + + For the master branch, this was already fixed. This patch only ensures + that we do not attempt to close a negative file descriptor. + + Change-Id: I147d7e33726c6e5a2751928d56561494f5800350 + +2015-07-01 17:25 +0000 [41610df8d5] Richard Mudgett + + * chan_vpb.cc: Fix compiler warning Jenkins found. + + Change-Id: I0ec7fd10d56d90d5a60b12b5a7d6807f265ac5e0 + +2015-07-01 13:34 +0000 [537df26f9c] Scott Griepentrog + + * Channel alert pipe: improve diagnostic error return + + When a frame is queued on a channel, any failure in + ast_channel_alert_write is logged along with errno. + + This change improves the diagnostic message through + aligning the errno value with actual failure cases. + + ASTERISK-25224 + Reported by: Andrey Biglari + + Change-Id: I1bf7b3337ad392789a9f02c650589cd065d20b5b + +2015-06-29 12:45 +0000 [58d18324f0] Mark Michelson + + * res_sorcery_realtime: Fix leak of sorcery object type. + + This prevents a leak of a sorcery object type when realtime sorcery + objects are retrieved by fields or when multiple objects are retrieved. + + The extent of this leak is that sorcery object types would be leaked. + These are allocated whenever an object type is registered with sorcery, + meaning that on module shutdown, these objects would be leaked. This + could be problematic if many reloads were performed, but it is not as + severe as if every sorcery object retrieved from realtime were being + leaked. + + ASTERISK-25165 #close + Reported by Corey Farrell + + Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8 +2015-06-26 22:02 +0000 [80d97290bb] Matt Jordan + + * res/res_corosync: Always decline module load, instead of failing + + Returns a 'failure' from the module load routine indicates to Asterisk + that it should abort loading completely. This is rarely - in fact, + really, never - a good option. Aborting load of Asterisk from a dynamic + module implies that the core, and the rest of the dynamic modules, don't + matter: we should abandon all processing. + + res_corosync is really not that important. + + This patch updates the module such that, if it fails to load, it + politely declines (emitting ERROR messages along the way), and allows + Asterisk to continue to function. + + Note that this issue was keeping Asterisk unit tests from running on + certain build agents. + + Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f + +2015-06-26 20:38 +0000 [892cc5625f] Matt Jordan + + * main/pbx: Resolve case sensitivity regression in PBX hints + + When 8297136f was merged for ASTERISK-25040, a regression was introduced + surrounding the case sensitivity of device names within hints. + Previously, device names - such as 'sip/foo' - were compared in a case + insensitive fashion. Thus, 'sip/foo' was equivalent to 'SIP/foo'. After + that patch, only the case sensitive name would match, i.e., 'SIP/foo'. + As a result, some dialplan hints stopped working. + + This patch re-introduces case insensitive matching for device names in + hints. + + ASTERISK-25040 + + ASTERISK-25202 #close + + Change-Id: If5046a7d14097e1e3c12b63092b9584bb1e9cb4c + (cherry picked from commit 96bbcf495a1da9e607d9b04a44b5c4f49e83cc03) + +2015-06-26 16:12 +0000 [e18b22a806] Mark Michelson + + * res_pjsip_nat: Adjust when contact should be rewritten. + + A previous change made the contact only get rewritten if the dialog's + route set was not marked frozen. Unfortunately, while the intent of this + is correct, the dialog's route set actually gets marked as frozen + earlier than expected, especially for UAS dialogs. + + Instead, the idea is that the contact needs to not be rewritten if there + is a pre-existing route set on the dialog. This is now accomplished by + checking the dialog's route set list instead of checking if the route + set is frozen. + + Doing this causes some broken tests to begin passing again. + + ASTERISK-25196 + Reported by Mark Michelson + + Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e + +2015-06-19 18:27 +0000 [99b1aa6d26] Richard Mudgett + + * res_pjsip_outbound_registration.c: Add a serializer shutdown group. + + The client_state objects contain a serializer used to send the outbound + REGISTER messages. Once all those message transactions are complete then + the module can shutdown. + + ASTERISK-24907 #close + Reported by: Kevin Harwell + + Change-Id: Ibb2fe558f98190f2a06da830e0fadfa25516f547 + +2015-06-26 10:41 +0000 [f536e9b59c] Mark Michelson + + * res_pjsip_refer: Prevent sending duplicate headers. + + res_pjsip_refer will attempt to add Referred-By or Replaces headers to + outbound INVITEs at times. If the INVITE gets challenged for + authentication, then we will resend the INVITE. Prior to this patch, the + Referred-By or Replaces header would be re-added to the outbound INVITE, + resulting in duplicated headers. + + ASTERISK-25204 #close + Reported by Mark Michelson + + Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d + +2015-06-23 14:34 +0000 [c2d48a2a28] Richard Mudgett + + * AMI: Add Linkedid to the standard channel snapshot AMI event headers. + + ASTERISK-25189 #close + Reported by: John Hardin + + Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac +2015-06-23 17:43 +0000 [700606a659] Mark Michelson + + * res_pjsip_nat: Rewrite route set when required. + + When performing some provider testing, the rewrite_contact option was + interfering with proper construction of a route set when sending an ACK + after receiving a 200 OK response to an INVITE. + + The initial INVITE was sent to address sip:foo. The 200 OK had a Contact + header with URI sip:bar. In addition, the 200 OK had Record-Route + headers for sip:baz and sip:foo, in that order. Since the Record-Route + headers had the lr parameter, the result should have been: + + * Set R-URI of the ACK to sip:bar. + * Add Route headers for sip:foo and sip:baz, in that order. + + However, the rewrite_contact option resulted in our rewriting the + Contact header on the 200 OK to sip:foo. The result was: + + * R-URI remained sip:foo. + * We added Route headers for sip:foo and sip:baz, in that order. + + The result was that sip:bar was not indicated in the ACK at all, so the + far end never received our ACK. The call eventually dropped. + + The intention of rewrite_contact is to rewrite the most immediate + destination of our SIP request to be the same address on which we + received a request or response. In the case of processing a SIP response + with Record-Route headers, this means that instead of rewriting the + Contact header, we should instead rewrite the bottom-most Record-Route + header. In the case of processing a SIP request with Record-Route + headers, this means we rewrite the top-most Record-route header. + Like when we rewrite the Contact header, we also ensure to update + the dialog's route set if it exists. + + ASTERISK-25196 #close + Reported by Mark Michelson + + Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f +2015-06-19 16:16 +0000 [af4ae3095e] Richard Mudgett + + * threadpool, res_pjsip: Add serializer group shutdown API calls. + + A module trying to unload needs to wait for all serializers it creates and + uses to complete processing before unloading. + + ASTERISK-24907 + Reported by: Kevin Harwell + + Change-Id: I8c80b90f2f82754e8dbb02ddf3c9121e5e966059 + +2015-06-16 15:06 +0000 [4c133d81cd] Richard Mudgett + + * res_pjsip_outbound_registration.c: Fix handle_client_state_destruction() refs + + * handle_client_state_destruction() must always be passed a ref to + client_state because it will always unref client_state. + handle_registration_response() was not passing a client_state ref. + + * Made the final un-REGISTER message get sent normally using the pjproject + register control structure in handle_client_state_destruction(). The + previous code attempted to short circuit the response handling for the + module to unload. That doesn't work for a couple reasons. One, + pjsip_regc_send() may call the registered callback before it returns and + unbalance the client_state ref count. Two, the registered callback + handles any authentication for the un-REGISTER message. + + * Made the distinction between internal registration state and external + registration status with sip_outbound_registration_status_str(). This is + necessary to avoid altering documented AMI messages with internal + changes. + + * Removed references to client_state->client outside of the serializer + thread. When handle_client_state_destruction() destroys the pjproject + register control structure that memory is freed and cannot be referenced + anymore. These accesses were to provide information for debug and + off-nominal warning messages. + + * In sip_outbound_registration_timer_cb() you should not access entry->id + after unrefing client_state because the passed in entry is normally + pointing to the timer entry in the client_state object. + + ASTERISK-24907 + Reported by: Kevin Harwell + + Change-Id: Ia7b446d8644b6b4550ef5bea49527671de65183f + +2015-06-15 15:28 +0000 [dc63377c60] Richard Mudgett + + * res_pjsip_outbound_registration.c: Use ast_sorcery_object_unregister() API + + The sorcery pjsip 'registration' config object needs to be destroyed on + module unload. Otherwise, a reload of res_pjsip could try to use + callbacks for a previously unloaded instance of the module provided by + ast_sorcery_object_register() or one of the variants. Also, if + res_pjsip_outbound_registration were subsequently reloaded, the sorcery + config field objects would be registered in sorcery twice. + + ASTERISK-24907 + Reported by: Kevin Harwell + + Change-Id: I304fad13dece2604af48353f6c6d9d5c7b064697 + +2015-06-15 15:28 +0000 [9ec8a0f3cc] Richard Mudgett + + * sorcery: Add ast_sorcery_object_unregister() API call. + + Find and unlink the specified sorcery object type to complement + ast_sorcery_object_register(). Without this function you cannot + completely unload individual modules that use sorcery for configuration. + + ASTERISK-24907 + Reported by: Kevin Harwell + + Change-Id: I1c04634fe9a90921bf676725c7d6bb2aeaab1c88 + +2015-06-15 13:38 +0000 [77ff7325a2] Richard Mudgett + + * res_pjsip_outbound_registration.c: Reorder load_module() and unload_module(). + + It is best if the loading code creates and initializes the module's + infrastructure before letting the system know of its existence. The + unloading code needs to reverse the actions of the loading code and in the + reverse order. + + ASTERISK-24907 + Reported by: Kevin Harwell + + Change-Id: I5d151383e9787b5b60aa5e1627b10f040acdded4 + +2015-06-25 06:42 +0000 [8d6cf667dc] Joshua Colp + + * channel: Remove ignore of answer on non-outgoing channels. + + Due to the way that channels can now be moved around inside of + Asterisk it is possible for the outgoing flag of a channel to get + cleared before it has been answered. This results in the bridge + not receiving notification that the outgoing leg has been answered. + + This most easily exhibits itself with DTMF based blond transfers. + Since the answer of the outgoing leg is ignored the other party + continues to receive both a locally generated ringing and the + media stream of the outgoing leg upon its answer. This results + in no media being heard. + + This change removes the ignore of the answer and allows it + to pass through. + + ASTERISK-25171 #close + + Change-Id: I82aedcec4f89f34a2e5472086dfc9a6c775bca8e + +2015-06-24 14:30 +0000 [daaa551c92] Richard Mudgett + + * test.c: Add unit test registration checks for summary and description. + + Added checks when a unit test is registered to see that the summary and + description strings do not end with a new-line '\n' for consistency. + + The check generates a warning message and will cause the + /main/test/registrations unit test to fail. + + * Updated struct ast_test_info member doxygen comments. + + Change-Id: I295909b6bc013ed9b6882e85c05287082497534d + +2015-06-24 16:39 +0000 [71a4d1a033] Richard Mudgett + + * Unit tests: Fix more unit test description strings. + + Analyzing the code shows that the unit test summary and description + strings should not end with a new-line character. Where these strings are + used in the code a new-line is provided for output. + + Change-Id: I2f4f37988ec363c8d1c5077a2fc8ca841c5cd30c + +2015-06-24 14:39 +0000 [9c6d72e30d] Richard Mudgett + + * Unit tests: Fix unit test description strings. + + Analyzing the code shows that the unit test summary and description + strings should not end with a new-line character. Where these strings are + used in the code a new-line is provided for output. + + Change-Id: I129284f5e7ca93d82532334076da4c462d3d9fba + +2015-06-24 16:37 +0000 [a0c2d2089d] Richard Mudgett + + * DNS unit tests: Fix extraneous description string commas. + + Change-Id: Icf5f13c8e1c2c92a4473bb573ed2dd856ce1b64e + +2015-06-23 11:21 +0000 [3b2b004d69] Joshua Colp + + * app_dial: Hold reference to calling channel formats when dialing outbound. + + Currently when requesting a channel the native formats of the + calling channel are provided to the core for usage when dialing + the outbound channel. This occurs without holding the channel lock + or keeping a reference to the formats. This is problematic as + the channel driver may end up changing the formats during this time. + In the case of chan_sip this happens when an SDP negotiation + completes. + + This change makes it so app_dial keeps a reference to the native + formats of the calling channel which guarantees that they will + remain valid for the period of time needed. + + ASTERISK-25172 #close + + Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db + +2015-06-17 16:23 +0000 [af66b0f3f7] Richard Mudgett + + * res_pjsip_outbound_registration.c: Add missing line endings to CLI commands + + Change-Id: I39ae612746d892d2dbe86f3ff2d7027fa1da57f7 + +2015-06-12 14:29 +0000 [3f0708e5fe] Richard Mudgett + + * res_pjsip_outbound_registration.c: Eliminate simple RAII_VAR() usage. + + Change-Id: I399cb9d61bbba706b48c98e0bf75e98984cd9a9e + +2015-06-12 13:33 +0000 [9ceb848242] Richard Mudgett + + * res_pjsip_outbound_registration.c: Misc code cleanups. + + * Break some long lines. + + * Fix doxygen comment. + + Change-Id: I8f12ba6822f84d5e7bb575280270cd7e2fefb305 + +2015-06-22 15:11 +0000 [44c3c392e3] Kevin Harwell + + * bridge.c: Hangup attended transfer target if bridged + + After completing an attended transfer the transfer target channel was not being + hung up after leaving the bridge. Added an explicit softhangup to hangup said + channel, but only if it was previously bridged. + + ASTERISK-24782 #close + Reported by: John Bigelow + + Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada + +2015-06-17 05:04 +0000 [7846f73432] Joshua Colp + + * res_pjsip_mwi: Set up unsolicited MWI upon registration. + + The res_pjsip_mwi previously required a reload to set up the proper + subscriptions to allow unsolicited MWI to work. This change + makes it so the act of registering will also cause this to occur. + This is particularly useful if realtime is involved as no reload + needs to occur within Asterisk to cause the MWI information + to get sent. + + ASTERISK-25180 #close + + Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252 + +2015-06-22 13:57 +0000 [096b27d9d2] Richard Mudgett + + * res_pjsip_outbound_registration.c: Fix whitespace conflict potential. + + Change-Id: I82e6e388e3688aebe0783f16c9e0800a747584b5 + +2015-06-22 09:26 +0000 [1ad9a6b6b6] Alexander Traud (License 6520) + + * chan_sip: Reload peer without its old capabilities. + + On reload, previously allowed codecs were not removed. Therefore, it was not + possible to remove codecs while Asterisk was running. Furthermore, newly added + codecs got appended behind the previous codecs. Therefore, it was not possible + to add a codec with a priority of #1. This change removes the old capabilities + before the current ones are added. + + ASTERISK-25182 #close + Reported by: Alexander Traud + patches: + asterisk_13_allow_codec_reload.patch uploaded by Alexander Traud (License 6520) + + Change-Id: I62a06bcf15e08e8c54a35612195f97179ebe5802 + +2015-06-20 19:38 +0000 [5caefc98a1] Joshua Colp + + * chan_sip: Destroy peers without holding peers container lock. + + Due to the use of stasis_unsubscribe_and_join in the peer destructor + it is possible for a deadlock to occur when an event callback is + occurring at the same time. + + This happens because the peer may be destroyed while holding the + peers container lock. If this occurs the event callback will never + be able to acquire the container lock and the unsubscribe will + never complete. + + This change makes it so the peers that have been removed from the + peers container are not destroyed with the container lock held. + + ASTERISK-25163 #close + + Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33 + +2015-06-18 13:16 +0000 [d7a1e84a1e] Mark Michelson + + * Resolve race conditions involving Stasis bridges. + + This resolves two observed race conditions. + + First, a bit of background on what the Stasis application does: + + 1a Creates a stasis_app_control structure. This structure is linked into + a global container and can be looked up using a channel's unique ID. + 2a Puts the channel in an event loop. The event loop can exit either + because the stasis_app_control structure has been marked done, or + because of some other factor, such as a hangup. In the event loop, the + stasis_app_control determines if any specific ARI commands need to be + run on the channel and will run them from this thread. + 3a Checks if the channel is bridged. If the channel is bridged, then + ast_bridge_depart() is called since channels that are added to Stasis + bridges are always imparted as departable. + 4a Unlink the stasis_app_control from the container. + + When an ARI command is received by Asterisk, the following occurs + 1b A thread is spawned to handle the HTTP request + 2b The stasis_app_control(s) that corresponds to the channel(s) in the + request is/are retrieved. If the stasis_app_control cannot be + retrieved, then it is assumed that the channel in question has exited + the Stasis app or perhaps was never in Stasis in the first place. + 3b A command is queued onto the stasis_app_control, and the channel's + event loop thread is signaled to run the command. + 4b While most ARI commands do nothing further, some, such as adding or + removing channels from a bridge, will block until the command they + issued has been completed by the channel's event loop. + + The first race condition that is solved by this patch involves a crash + that can occur due to faulty detection of the channel's bridged status + in step 3a. What can happen is that in step 2a, the event loop may run + the ast_bridge_impart() function to asynchronously place the channel + into a bridge, then immediately exit the event loop because the channel + has hung up. In step 3a, we would detect that the channel was not + bridged and would not call ast_bridge_depart(). The reason that the + channel did not appear to be bridged was that the depart_thread that is + spawned by ast_bridge_impart() had not yet started. That is the thread + where the channel is marked as being bridged. Since we did not call + ast_bridge_depart(), the Stasis application would exit, and then the + channel would be destroyed Then the depart_thread would start up and + try to manipulate the destroyed channel, causing a crash. + + The fix for this is to switch from using ast_channel_is_bridged() to + checking the NULLity of ast_channel_internal_bridge_channel() to + determine if ast_bridge_depart() needs to be called. The channel's + internal bridge_channel is set when ast_bridge_impart() is called and + is NULLed by the call to ast_bridge_depart(). If the channel's internal + bridge_channel is non-NULL, then the channel must have been imparted + into the bridge and needs to be departed, even if the actual bridging + operation has not yet started. By departing the channel when necessary, + the thread that is running the Stasis application will block until the + bridge gives the okay that the depart_thread has exited. + + The second race condition that is solved by this patch involves a leak + of HTTP handler threads. The problem was that step 2b would successfully + retrieve a stasis_app_control structure. Then step 2a would exit the + channel from the event loop due to a hangup. Steps 3a and 4a would + execute, and then finally steps 3b and 4b would. The problem is that at + step 4b, when attempting to add a channel to a bridge, the thread would + block forever since the channel would never execute the queued command + since it was finished with the event loop. This meant that the HTTP + handling thread would be leaked, along with any references that thread + may have owned (in my case, I was seeing bridges leaked). + + The fix for this is to hone in better on when the channel has exited the + event loop. The stasis_app_control structure has an is_done field that + is now set at each point where the channel may exit the event loop. If + step 2b retrieves a valid stasis_app_control structure but the control + is marked as done, then the attempted operation exits immediately since + there will be nothing to service the attempted command. + + ASTERISK-25091 #close + Reported by Ilya Trikoz + + Change-Id: If66265b73b4c9f8f58599124d777fedc54576628 +2015-06-17 07:00 +0000 [9668a1acb5] Joshua Colp + + * res_sorcery_memory_cache: Remove 'prefetch' option. + + To prevent confusion I am removing the prefetch option until such + time as it is implemented. All other functionality, however, has + been implemented. + + ASTERISK-25067 + + Change-Id: I9ce6aa3e5c6c5bc3c5baa8ff90fa036d73939895 + +2015-06-16 11:13 +0000 [59552c2d08] Mark Michelson + + * Parking: Add documentation for AMI ParkedCallSwap event. + + This event was added some time ago in order to clarify when a channel + took the place of another channel in a parking lot. However, there was + no XML documentation added for the event. This patch adds the XML + documentation. + + ASTERISK-24900 #close + Reported by Rusty Newton + + Change-Id: I4cfe7777c4b94bbff91c9221c6096a7a02a92eac +2015-06-15 16:40 +0000 [ea9d5f155e] Corey Farrell + + * func_pjsip_aor: Fix leaked contact from iterator. + + ASTERISK-25162 #close + + Change-Id: Id79aa3c6fe490016ee98efc97ac4c1d3f461f97e + +2015-06-12 16:58 +0000 [93ac45d3bd] Kevin Harwell + + * res_pjsip: Add option to force G.726 to be treated as AAL2 packed. + + Some phones send g.726 audio packed for AAL2, which differs from what is + recommended by RFC 3351. If Asterisk receives audio formatted as such when + negotiating g.726 then it sounds a bit distorted. Added an option to + res_pjsip_endpoint that allows g.726 negotiated audio to be treated as g.726 + AAL2 packed. + + ASTERISK-25158 #close + Reported by: Steve Pitts + + Change-Id: Ie7e21f75493d7fe53e75e12c971e72f5afa33615 + +2015-06-14 19:48 +0000 [15c2208701] Matt Jordan + + * main/cdr: Carry over the disable flag when 'disable all' is specified + + The CDR_PROP function (as well as the NoCDR application) set the + 'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This + flag is supposed to be applied to all CDRs that are currently in the + chain, as well as all CDRs that may be created in the future. Currently, + however, the flag is only applied to the existing CDRs in the chain; new + CDRs do not receive the 'disable all' flag. In particular, this affects + parallel dials, which generate new CDRs for each pair of channels in + the dial attempt. + + This patch carries over the 'disable all' flag when it is specified on a + CDR and a new CDR is generated for the chain. + + ASTERISK-24344 #close + + Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e +2015-06-12 14:28 +0000 [b8bc15286f] Matt Jordan + + * main/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines + + When a parallel dial occurs, a new CDR will be created for each dial + attempt that is made. In most circumstances, the act of creating each + CDR in the chain will include a step that updates the Party A snapshot, + which causes the context/extension of the Party A to be copied onto the + CDR object. + + However, when the Party A is in a subroutine, we explicitly do *not* + copy the context/extension onto the CDR. This prevents the Macro or + GoSub routine name from blowing away the context/extension that the + channel was originally executing in. For the original CDR, this is not a + problem: the original CDR already recorded the last known 'good' state + of the channel just prior to it going into the subroutine. However, for + newly generated CDRs in a chain, there is no context/extension set on + them. Since we are in a subroutine, we will never set the Party A's + context/extension on the CDR, and we end up with a CDR with no + destination recorded on it. + + This patch updates the creation of a chained CDR such that it copies + over the original CDR's context/extension. This is the last known "good" + state of the CDR, and is a reasonable starting point for the newly + generated CDR. In the case where we are not in a subroutine, subsequent + code will update the location of the CDR from the Party A information; + in the case where we are in a subroutine, the context/extension on the + original CDR is the correct information. + + ASTERISK-24443 #close + + Change-Id: I6a3ef0d6e458d3b9b30572feaec70f2964f3bc2a + +2015-06-11 08:18 +0000 [19f60d9412] Damian Ivereigh + + * chan_sip.c: Update dialog fromtag after request with auth + + If a client sends and INVITE which is 401 rejected, then subsequently + sends a new INVITE with the auth info and uses a different fromtag + from the first INVITE, Asterisk will accept the new INVITE as part of + the original dialog - match_req_to_dialog() specifically ignores the + fromtag. However it does not update the stored dialog with the new + fromtag. + + This results in Asterisk being unable to match future packets that are + part of this dialog (such as the ACK to the OK or the OK to the BYE), + and the call is dropped. + + This problem was originally found when using an NEC-i SV8100-GE (NEC SIP + Card). + + * After a successful match of a packet to the dialog, if the packet is + not a SIP_RESPONSE, authentication is present and the fromtags are + different, the stored fromtag is updated with the one from the recent + INVITE. + + ASTERISK-25154 #close + Reported by: Damian Ivereigh + Tested by: Damian Ivereigh + + Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e + +2015-06-11 18:52 +0000 [bb00b26f35] Matt Jordan + + * chan_pjsip: Set the context and extension on the channel when created + + Prior to this patch, chan_pjsip was failing to pass the endpoint's + context and the desired extension to the ast_channel_alloc_* routine. + This caused a new channel snapshot to be issued without a context and + extension, which can cause some reporting issues for users of AMI, CEL, + and other APIs. The channel driver would later set the context and + extension on the channel such that the channel would start in the + correct location in the dialplan, but the information reported in the + initial event would be incorrect. + + This patch modifies the channel driver such that it now passes the + context and extension directly into the allocation routine. This + provides the information in the new channel snapshot published over + Stasis. + + ASTERISK-25156 #close + Reported by: cloos + + Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e + +2015-06-10 18:28 +0000 [7230ee2efe] Joshua Colp + + * bridge: When performing a blonde transfer update connected line information. + + When performing a blonde transfer the code uses the old masquerade + mechanism to move a channel around. As a result of this certain information, + such as connected line, is moved between the channels involved. Upon + completion of the move a frame is queued which is supposed to update the + connected line information on the channel. This does not occur as the + code considers it a redundant update since the masquerade operation + updated the channel (but did not inform it of the new connected line + information). The code also does not queue a connected line update + to be handled by the thread handling the channel. Without this any + other channel that may be loosely involved does not know it is + talking to a different caller. + + This change does the following to resolve this: + + 1. The indicated connected line information is cleared upon + completion of the masquerade operation when doing a blonde transfer. + This prevents the connected line update from being considered + redundant. + + 2. A connected line update frame is now queued upon the completion + of the masquerade operation so any other channel loosely involved + knows that there is a different caller. + + ASTERISK-25157 #close + Reported by: Joshua Colp + + Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20 + +2015-06-11 14:39 +0000 [a657ab12f9] Richard Mudgett + + * app_directory: Fix crash when using the alias option 'a'. + + The voicemail.conf mailbox key/value pair is defined as: + =[[,[,[,[,]]]]] + Where all fields in the value including the field values are optional. + + Since the parsing code for the mailbox key/value pair is sloppy, this + patch tightens the parsing for the directory information. + + * Renamed the 'pos' and 'bufptr' variables to 'name' and 'options' + respectively in search_directory_sub(). Those names make more sense. + + * Made sure that search_directory_sub() is dealing with the voicemail.conf + mailbox options field if it even exists when looking for the 'hidefromdir' + and 'alias' options. + + * Fix crash if a voicemail.conf mailbox is just + =, when the 'a' option is used. If there were no + fields after the name then the 'options' pointer was not checked for NULL. + + * Fix users.conf alias processing if the 'a' option is used. The wrong + variable was used. + + ASTERISK-25087 #close + Reported by: Chet Stevens + + Change-Id: I86052ea77307beddddba5279824d39dc0d593374 + +2015-06-05 15:37 +0000 [30cd559345] Richard Mudgett + + * DNS: Need to use the same serializer for a pjproject SIP transaction. + + All send/receive processing for a SIP transaction needs to be done under + the same threadpool serializer to prevent reentrancy problems inside + pjproject when using an external DNS resolver to process messages for the + transaction. + + * Add threadpool API call to get the current serializer associated with + the worker thread. + + * Pick a serializer from a pool of default serializers if the caller of + res_pjsip.c:ast_sip_push_task() does not provide one. + + This is a simple way to ensure that all outgoing SIP request messages are + processed under a serializer. Otherwise, any place where a pushed task is + done that would result in an outgoing out-of-dialog request would need to + be modified to supply a serializer. Serializers from the default + serializer pool are picked in a round robin sequence for simplicity. + + A side effect is that the default serializer pool will limit the growth of + the thread pool from random tasks. This is not necessarily a bad thing. + + * Made pjsip_resolver.c use the requesting thread's serializer to execute + the async callback. + + * Made pjsip_distributor.c save the thread's serializer name on the + outgoing request tdata struct so the response can be processed under the + same serializer. + + ASTERISK-25115 #close + Reported by: John Bigelow + + Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a + +2015-06-05 12:16 +0000 [b23f33e7e5] Richard Mudgett + + * DNS: Fix some corner cases. + + * Fix query_set destruction before we are done kicking the queries off. + + * Fixed no queries requested handling. + + * Add empty queries request unit test. + + * Added missing allocation check in ast_dns_query_set_add(). + + * Made initial pjsip resolving query vector slightly larger. + + ASTERISK-25115 + Reported by: John Bigelow + + Change-Id: Ie8be8347d0992e93946d72b6e7b1299727b038f2 + +2015-06-10 17:51 +0000 [ae589da466] Richard Mudgett + + * DNS: Remove trailing newline from summary and descriptions. + + Those trailing newlines mess up test formatting. + + Change-Id: I5e3f3a55b82c9d7acb9661201d4993d1958f1185 + +2015-06-05 11:43 +0000 [83bc9d366d] Richard Mudgett + + * pjsip_resolver.c: Fix debug code to only execute at acceptable debug level. + + Change-Id: I1716c93d6e097ad28128ecb9e806aac7a4180c8a + +2015-06-05 11:41 +0000 [6d49dccd85] Richard Mudgett + + * DNS: Fix doxygen comments. + + Change-Id: Icafea3fb4ea64ac027561b23cbfe2b17997dc549 + +2015-06-09 15:31 +0000 [b705c09dbb] Richard Mudgett + + * res_pjsip.h: Fix some doxygen comments. + + Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976 + +2015-06-05 13:46 +0000 [aa8479778e] Richard Mudgett + + * taskprocessor.c: Remove extra unref from off-nominal path. + + Change-Id: Iee3bd8c8a528776056972066698fe735f0f6cf60 + +2015-05-31 12:37 +0000 [07f5f45e5a] Ivan Poddubny + + * res_pjsip_transport_websocket: Fix use-after-free bugs. + + This patch fixes use-after-free bugs caught by AddressSanitizer. + + 1. PJSIP transport manager may decide to destroy transport on its own. + For example, when the contact registered via websocket has not renewed + its registration in time. The transport was destoyed, but the websocket + listener thread was still active until the socket closes, and then tried + to call transport_shutdown on transport that has been freed. + + Also, the transport destructor accessed wstransport->rdata.tp_info.pool + right after freeing memory that contained wstransport itself. + + This patch converts transport to an ao2 object, allowing it to be + refcounted, so that it is available until both websocket listener and + pjsip transport manager are finished with it. + + 2. The websocket listener deletes the last reference on websocket session + when the tcp connection is closed, and it gets destroyed, but + the transport manager may still use it, for example when disconnect + happens in the middle of a SIP transaction. + + A new reference to websocket session has been added that is released + with the transport to prevent this. + + ASTERISK-25096 #close + Reported by: Josh Kitchens + + ASTERISK-24963 #close + Reported by: Badalian Vyacheslav + + Change-Id: Idc0b63eb6e459c1ddfb2430127d34b3c4d8d373b + +2015-06-09 13:41 +0000 [f897f36721] ibercom + + * weakref attribute detection broken with gcc 4.6 and higher + + GCC 4.7 Manual: + http://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Function-Attributes.html + + weakref ("target") + + A weak reference is an alias that does not by itself require a definition + to be given for the target symbol. + + ASTERISK-22559 #close + Reported by: Ibercom + + Change-Id: I36a136cae947b65187a697533416f9ff9a0b8cdf + +2015-06-08 10:09 +0000 [80621ce3c5] Corey Farrell + + * Fix unsafe uses of ast_context pointers. + + Although ast_context_find, ast_context_find_or_create and + ast_context_destroy perform locking of the contexts table, + any context pointer can become invalid at any time that the + contexts table is unlocked. This change adds locking around + all complete operations involving these functions. + + Places where ast_context_find was followed by ast_context_destroy + have been replaced with calls ast_context_destroy_by_name. + + ASTERISK-25094 #close + Reported by: Corey Farrell + + Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa + +2015-06-08 09:44 +0000 [53c1126090] Kevin Harwell + + * AMI: Escape string values. + + So this issue is a bit complicated. Since it is possible to pass values to AMI + that contain a '\r\n' (or other similar sequences) these values need to be + escaped. One way to solve this is to escape the values and then pass the escaped + values to the AMI variable parameter string building function. However, this + puts the onus on the pre-build function to escape all string values. This + potentially requires a fair amount of changes along with a lot of string + allocations/freeing for all values. + + Surely there is a way to push this complexity down a level into the string + building function itself? This of course is possible, but ends up requiring a + way to distinguish between strings that need to be escaped and those that don't. + The best way to handle this is by introducing a new format specifier in the + format string. For instance a %s (no escape) and %S (escape). However, that is + a bit weird and unexpected. + + So faced with those possibilities this patch implements a limited version of the + first option. Instead of attempting to escape all string values this patch only + escapes those values that make sense. This approach limits the number of changes + and doesn't suffer from the odd format specifier problem. + + ASTERISK-24934 #close + Reported by: warren smith + + Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0 + +2015-06-02 15:07 +0000 [9fca378b36] David M. Lee + + * Fixes for OS X + + * Add some type casting so tv_usec can really be a long, instead of + some strange platform specific type. + + * Add some .dylib style files to .gitignore. + + * Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer + versions of GCC, when compiling the Homebrew formula for Asterisk, + are not properly passing the -Xlinker options to the linker. Given + that -Wl, does exactly the [same thing][], and does it properly, this + patch changes the -Xlinker options to use -Wl, instead. + + [reasons unknown]: http://bit.ly/1SUbEYx + [same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html + + Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd + +2015-06-04 07:14 +0000 [d463bac574] ibercom + + * CLI: Cosmetic issue - core show uptime + + Show uptime information ends with an unnecessary space. + + Now NEEDCOMMA is better defined. + + Change-Id: I11b360504a0703309ff51772ff8f672287f3c5a1 + +2015-06-04 13:11 +0000 [128fe4cee8] Joshua Colp + + * res_sorcery_memory_cache: Implement expire_on_reload option. + + This change implements the expire_on_reload option for memory caches. + If enabled and a reload is performed all objects within the cache + will be expired and the cache emptied. + + ASTERISK-25067 + Reported by: Matt Jordan + + Change-Id: Id46aa1957d660556700e689e195eed57c989b85e + +2015-06-02 10:20 +0000 [028edae82e] Joshua Colp + + * test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache. + + This change adds a CLI command which can perform memory cache thrashing as well + as unit tests which perform thrashing under the following configurations: + + 1. Low number of unique objects that go stale after 1 second + 2. Low number of unique objects that expire after 1 second + 3. Low number of unique objects which are constantly updated + 4. Large number of unique objects which exceed a defined cache size + 5. Large number of unique objects which exceed a defined cache size + that also expire and go stale rapidly + 6. Large number of unique objects which expire and go stale rapidly + 7. Large number of unique objects + + For all of the above there are a large number of threads constantly + attempting to retrieve random objects and each test runs for a few + seconds. + + ASTERISK-25067 + Reported by: Matt Jordan + + Change-Id: I8c8ceff977332c80ed4a31f10d694d48552b2f78 + +2015-06-04 05:33 +0000 [19de2bbc5f] Joshua Colp + + * res_sorcery_memory_cache: Add test event when a refresh occurs. + + This change adds a testsuite event for when a refresh occurs. + This is useful as it provides a guaranteed mechanism of knowing when + it has occurred instead of waiting an arbitrary amount of time. + + ASTERISK-25067 + Reported by: Matt Jordan + + Change-Id: Iaa6b8d2d6bab7f99ee08e1c8908b8272a8987e65 + +2015-06-03 20:12 +0000 [6737ded058] Rodrigo Ramírez Norambuena + + * install_prereq: Check if is installed aptitude otherwise to install. + + If in Debian or system based, dont have aptitude installed the script do + nothing. This patch checked if aptitude installed, if not installed. + + Also, if execute script with all packages installed yet, the script not show + nothing and return exit 1 because the command 'grep' get nothing from pipe from + 'awk'. + + ASTERISK-25113 #close + Reported By: Rodrigo Ramírez Norambuena + + Change-Id: Iebdff55805d3917166e5e08e0a1e2176f36ff27f + +2015-06-03 17:41 +0000 [92ccffd9e6] Mark Michelson + + * res_pjsip: Prevent access of NULL channels. + + It is possible to receive incoming requests or responses after the channel + on an ast_sip_session has been destroyed and NULLed out. Handlers of these + sorts of requests or responses need to be prepared for the possibility + that the channel is NULL or else they could cause a crash. + + While several places have been amended to deal with NULL channels, there + were still a couple of places that needed updating. + + res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to + return early if there is no channel on the session. + + res_pjsip_session.c: When handling a 302 response, we need to stop the + redirecting attempt if there is no channel on the session. + + ASTERISK-25148 #close + reported by Mark Michelson + + Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9 + +2015-06-03 13:17 +0000 [d355ee7ff3] George Joseph + + * res_pjsip/location: Fix ref leak in contact_apply_handler + + contact_apply_handler calls ast_res_pjsip_find_or_create_contact_status + to force the creation of a contact_status object whenever a new + contact is added but it didn't unref the returned object. + + Added an ao2_cleanup(status) to plug the leak. + + ASTERISK-25141 + + Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40 + Reported-by: Corey Farrell + +2015-06-02 13:02 +0000 [6d8dc9bb5c] Richard Mudgett + + * res_pjsip: Remove outgoing authentication code no longer needed. + + Associated with ASTERISK-25131 + + Change-Id: Iefa3b2066cfd8b108a90d2dd4a64d92c3a195d33 + +2015-06-02 12:55 +0000 [00a47ffc7e] Richard Mudgett + + * res_pjsip_session: Fix cherry pick to master compile error. + + ASTERISK-25131 + Reported by: Richard Mudgett + + Change-Id: I87c9c96ae4a8fe2bc8a0ddea6958a2ad9cefd8e3 + +2015-06-02 12:27 +0000 [9472bbaa95] Joerg Sonnenberger + + * Remove const cast from leaf functions. + + app_control_register_rule and app_control_unregister_rule lock/unlock + the queue, which is a mutating operation according to the + ao2_lock/_unlock prototype. Depending on the specific (implicit) casts + in SCOPED_LOCK and RAII_VAR, the compiler may warn or not. As the only + callers of those functions do not have the const, get consistent results + by just dropping it. + + Change-Id: Ib9e6296155a39bc5d627142a3828180c3cfe8fbb + +2015-06-02 11:35 +0000 [5f712e82ac] Joerg Sonnenberger + + * tcptls.c: Don't use OpenSSL functions when no SSL support is present. + + Change-Id: I68a85a7fcbdb282140ff333c6274b6763d5f82a3 +2015-06-01 12:08 +0000 [2cd40c2bd7] Rodrigo Ramírez Norambuena + + * cdr/cdr_csv.c: Set file name for csv master to the module when (re)loaded. + + Compute the location for the csv master file when the module is + loaded or reload. Before it was calculated every time a log + entry was written. + + Change-Id: I3ed9f6a8f965308099db70b71128f43d4d3f5585 +2015-05-26 13:56 +0000 [5cdcae5240] Richard Mudgett + + * res_pjsip_session: Fix in-dialog authentication. + + When the remote peer requires authentication for in-dialog requests then + re-INVITEs to the peer cause the call to be disconnected and other + in-dialog requests to the peer like MESSAGE just don't go through. + + * Made session_inv_on_tsx_state_changed() handle in-dialog authentication + for re-INVITEs and other methods. Initial INVITEs cannot be handled here + because the INVITE transaction must be restarted earlier. + + * Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in + preparation for removing the file. The generic outbound authentication + code did not work as well as anticipated. + + * Created outbound_invite_auth() to only handle initial outbound INVITEs. + Re-INVITEs cannot be handled here. The re-INVITE transaction is still in + progress and the PJSIP library cannot handle the overlapping INVITE + transactions. Other method types should not be handled here as this code + only works on outgoing calls and we need to handle incoming and outgoing + calls. + + ASTERISK-25131 #close + Reported by: Richard Mudgett + + Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0 + +2015-05-30 20:22 +0000 [9f1939ee27] Corey Farrell + + * pjsip_configuration: Fix leak in persistent_endpoint_update_state. + + The loop to find the first available contact of an endpoint grabbed + contact from the iterator, then checked for offline state. This + caused the first contact after the state was found to leak a reference. + + ASTERISK-25141 + + Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08 + +2015-05-31 11:33 +0000 [0a5f8c0d73] Ivan Poddubny + + * Fix buffer overflow in slin sample frames generation. + + The length of frames retured by sample functions was twice as large as + real, what caused global buffer overflow caught by AddressSanitizer. + + ASTERISK-24717 #close + Reported by: Badalian Vyacheslav + + Change-Id: Iec2fe682aef13e556684912f906bedf7c18229c6 + +2015-05-29 16:19 +0000 [bef000dd7c] George Joseph + + * res_pjsip/location: Fix memory leak in permanent_uri_handler + + When permanent_uri_handler was creating the contact status + object for each contact, it wasn't unreffing it at the + end of the loop. + + ASTERISK-25141 #close + Reported-by: Corey Farrell + + Change-Id: I7bb127994677bb3d459f87952f8425c9b9967b12 + +2015-05-29 14:52 +0000 [82716410a4] George Joseph + + * Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change" + + This reverts commit 6fca75bb628dfff2ab112e80b0228cf3ac0b8a05. + + Change-Id: Ifee026cc63e22c5ac5717c37867a9f036373ae5a + +2015-05-26 07:34 +0000 [dfc45254d1] Joshua Colp + + * res_sorcery_memory_cache: Add CLI commands and AMI actions. + + This change adds the following CLI commands and AMI actions: + + sorcery memory cache show + sorcery memory cache dump + sorcery memory cache expire + sorcery memory cache stale + + SorceryMemoryCacheExpire + SorceryMemoryCacheExpireObject + SorceryMemoryCacheStale + SorceryMemoryCacheStaleObject + + These allow both examination and manipulation of sorcery memory + caches from external sources. + + Cached objects can be explicitly expired from a cache or marked + as stale. If expired they are immediately removed. If marked as + stale they will be background refreshed when next retrieved. + + ASTERISK-25067 + Reported by Matt Jordan + + Change-Id: I68e03cfd8c34b5e07f4b6ee4fd93a3f4a00a3d9e + +2015-05-27 13:22 +0000 [6fca75bb62] George Joseph + + * endpoint/stasis: Eliminate duplicate events on endpoint status change + + When an endpoint was created, it's messages were being forwarded to + both the tech endpoint topic and the all endpoints topic. Since + the tech topic was also forwarded to all, this was resulting in + duplicate messages whenever an endpoint published. This patch + causes the endpoint to only forward to the tech topic and lets + the tech topic forward to all. + + To accomplish this, the existing stasis_cp_single_create function + (which both creates and forwards) was cloned and split into 2 + functions, one that creates the topic and one that sets up the + forwarding. This allows endpoint_internal_create to create + the topic from the endpoint_all cache without forwarding it there, + then allows it to do the forward to the tech's topic. + + ASTERISK-25137 #close + Reported-by: Vitezslav Novy + ASTERISK-25116 #close + Reported-by: George Joseph + Tested-by: George Joseph + + Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c + +2015-05-26 13:01 +0000 [2e54e7227c] Mark Michelson + + * res_sorcery_memory_cache: Add support for refreshing stale objects. + + This change introduces a check of object_lifetime_stale when retrieving + cached objects. If the amount of time the object has been in the cache + exceeds the lifetime, then a task is scheduled to update the cached + object based on an object retrieved from other sorcery wizards instead. + + To prevent the cached object from being retrieved during a refresh, + thread-local storage is used to mark the thread as being a stale object + update. This results in the cache returning no object, leading to + sorcery querying other wizards for the object instead. + + A test has been added for stale objects as well. This test ensures that + stale objects are retrieved the same as freshly-cached objects. The test + also ensures that after an object is stale, changes in the backend are + reflected in the cache, to include if the object has been deleted from + the backend. + + ASTERISK-25067 + Reported by Matt Jordan + + Change-Id: I9bd7c049adf6939bfe2899f393c2bfbbf412d217 +2015-05-21 17:21 +0000 [b8ac683822] George Joseph + + * res_pjsip: Add AMI events for chan_pjsip contact lifecycle changes + + Add a new ContactStatus AMI event. + Publish the following status/state changes: + Created + Removed + Reachable + Unreachable + Unknown + + Contact URI, new status/state, aor and endpoint names, and the + last qualify rtt result are included in the event. + + ASTERISK-25114 #close + + Change-Id: Id25aae5f7122facba183273efb3e8f36c20fb61e + Reported-by: George Joseph + Tested-by: George Joseph + +2015-05-07 11:18 +0000 [95b186a174] Rodrigo Ramírez Norambuena + + * res/res_config_pgsql.c: Use PQescapeStringConn for escaping names. + + Use function PQescapeStringConn for escaping the name of the table and + schema instead of doing it manually. + + ASTERISK-25132 #close + Reported By: Rodrigo Ramírez Norambuena + + Change-Id: I302a263f7210d20925f14716b508b081998b7608 + +2015-05-26 07:44 +0000 [a7af6bca3c] Joshua Colp + + * sorcery: Fix cache creation callback. + + The cache creation callback function expects to receive a sorcery_details + structure and not just a standalone object. + + Change-Id: I3e4a5a137cb25292eb52d7a14cbb6daa09213450 + +2015-05-24 13:47 +0000 [23a798fecc] Ivan Poddubny + + * Astobj2: Correctly treat hash_fn returning INT_MIN + + The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0. + However, abs(INT_MIN) = INT_MIN and is still negative, as well as + abs(INT_MIN) % num_buckets, and as a result this led to a crash. + + One way to trigger the bug is using host=::80 or 0.0.0.128 in peer + configuration section in chan_sip or chan_iax. + + This patch takes the remainder before applying abs, so that bucket + number is always in range. + + ASTERISK-25100 #close + Reported by: Mark Petersen + + Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899 +2015-05-23 04:36 +0000 [70d54ab6c4] Ivan Poddubny + + * res_pjsip_transport_websocket: Fix crash on receiving large SIP packets + + Incoming SIP packets larger than PJSIP_MAX_PKT_LEN were themselves + truncated before passing to pjsip_tpmgr_receive_packet, but the length + was passed unaltered, thus causing memory corruption and segfault. + + ASTERISK-25122 #close + + Change-Id: I608a6b6b7f229eacc33a0a7d771d18e27e5b08ab + +2015-05-22 21:50 +0000 [50044fdc15] Corey Farrell + + * Stasis: Fix unsafe use of stasis_unsubscribe in modules. + + Many uses of stasis_unsubscribe in modules can be reached through unload. + These have been switched to stasis_unsubscribe_and_join. + + Some subscription callbacks do nothing, for these I've created a noop + callback function in stasis.c. This is used by some modules that monitor + MWI topics in order to enable cache, since the callback does not become + invalid after dlclose it is safe to use stasis_unsubscribe on these, even + during module unload. + + ASTERISK-25121 #close + + Change-Id: Ifc2549fbd8eef7d703c222978e8f452e2972189c + +2015-05-22 16:52 +0000 [5a1f2a5884] Corey Farrell + + * Astobj2: Run weakproxy subscription callbacks in reverse order. + + Modify ao2_weakproxy_subscribe so each new subscription is added + to the head of the list. This ensures that when other objects + are allocated and use a subscription to the weakproxy for cleanup, + cleanup will occur in the correct order. + + ASTERISK-25120 #close + + Change-Id: Ie0476f08ec21330de1b3f5a2dd3d9eb683df3d3d + +2015-05-22 12:22 +0000 [f66c41e668] Matt Jordan + + * res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS + + In addition to specifying lists of 'presence' and 'message-summary', + users can also create lists of type 'dialog'. These should be treated in + the same fashion as 'presence'. + + Change-Id: I583bb69cd9f88b0b29bf09ddaddeac4e84189f6e + +2015-05-22 12:18 +0000 [ad7192a8fd] Matt Jordan + + * res/res_pjsip_exten_state: Fix confusing NOTICE message + + When a SUBSCRIBE request is made to a dialplan hint that doesn't exist, + the current NOTICE message informing users of this swaps the context and + extension parameters. This can cause a bit of confusion. + + Thanks to CptBurger in #asterisk for helping to point this out. + + Change-Id: Ie584d1a58ae217385c87a450ca25b55ca0e36e43 + +2015-05-17 20:36 +0000 [9cffcca5f9] Matt Jordan + + * res/ari: Register Stasis application on WebSocket attempt + + Prior to this patch, when a WebSocket connection is made, ARI would not + be informed of the connection until after the WebSocket layer had + accepted the connection. This created a brief race condition where the + ARI client would be notified that it was connected, a channel would be + sent into the Stasis dialplan application, but ARI would not yet have + registered the Stasis application presented in the HTTP request that + established the WebSocket. + + This patch resolves this issue by doing the following: + * When a WebSocket attempt is made, a callback is made into the ARI + application layer, which verifies and registers the apps presented in + the HTTP request. Because we do not yet have a WebSocket, we cannot + have an event session for the corresponding applications. Some + defensive checks were thus added to make the application objects + tolerant to a NULL event session. + * When a WebSocket connection is made, the registered application is + updated with the newly created event session that wraps the WebSocket + connection. + + ASTERISK-24988 #close + Reported by: Joshua Colp + + Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636 + +2015-05-20 11:11 +0000 [29ef6571cb] George Joseph + + * res_pjsip: Refactor endpt_send_transaction (qualify_timeout) + + This patch refactors the transaction timeout processing to eliminate + calling the lower level public pjsip functions and reverts to calling + pjsip_endpt_send_request again. This is the result of me noticing + a possible incompatibility with pjproject-2.4 which was causing + contact status flapping. + + The original version of this feature used the lower level calls to + get access to the tsx structure in order to cancel the transaction + when our own timer expires. Since we no longer have that access, + if our own timer expires before the pjsip timer, we call the callbacks + and just let the pjsip transaction take it's own course. When the + transaction ends, it discovers the callbacks have already been run + and just cleans itself up. + + A few messages in pjsip_configuration were also added/cleaned up. + + ASTERISK-25105 #close + + Change-Id: I0810f3999cf63f3a72607bbecac36af0a957f33e + Reported-by: George Joseph + Tested-by: George Joseph +2015-05-20 17:35 +0000 [81d375baad] Joshua Colp + + * res_sorcery_memory_cache: Add support for object_lifetime_maximum. + + This makes the "object_lifetime_maximum" option operational. + + On the addition of an object to an empty memory cache a scheduled + task is created which, when invoked, expires objects from the cache + which have exceeded their lifetime. If more objects have been added + the remaining life of the oldest object is used to schedule the + next invocation of the scheduled task. + + If the oldest object is removed from the cache before it can be + expired automatically the scheduled task is cancelled, if possible, + and the lifetime of the next oldest is used to schedule the task. + + If during these two operations no additional objects exist in the + cache then no task is scheduled. + + An additional unit test has been added which verifies this + functionality. + + ASTERISK-25067 + Reported by: Matt Jordan + + Change-Id: I87409674674a508e7717ee20739ca15cec6ba7b6 + +2015-05-20 00:45 +0000 [9e2a582d2d] demon-ru + + * res_pjsip_outbound_registration: Check request URI for line. + + When an inbound call is received the To header is checked + for the "line" option. Some remote servers will place this + in the request URI instead. This adds an additional check for + the option in the request URI. + + ASTERISK-25072 #close + Reported by: Dmitriy Serov + + Change-Id: Id4e44debbb80baad623b914a88574371575353c8 + +2015-05-20 15:19 +0000 [071b3d43cb] Mark Michelson + + * res_sorcery_memory_cache: Add support for maximum_objects. + + This makes the "maximum_objects" option operational. + + A heap has been added alongside the hash table in the cache. When + objects are added to the cache, they are also added to the heap. + Similarly, when objects are removed from the cache, they are removed + from the heap. + + The heap's use comes into play when an item is to be added to a "full" + cache. When the cache is full, the oldest item is removed from the + cache, using the heap to determine the oldest item. + + A unit test has been added that verifies that the maximum_objects option + works as expected and that the oldest object is removed from the cache + when an object beyond the maximum is added. + + ASTERISK-25067 #close + Reported by Matt Jordan + + Change-Id: I490658830e9c4cbf0b3051e4cdc4913cf9f1b73a + +2015-05-16 17:02 +0000 [f2cc766d81] Joshua Colp + + * res_sorcery_memory_cache: Add basic module implementation. + + This change adds a basic res_sorcery_memory_cache module which implements + configuration option parsing, configuration file parsing for threading, + sorcery interface implementation, and unit tests. + + Objects can be added, updated, deleted, and retrieved from the memory + cache. Automatic expiration and stale handling will be added in the + future. + + Note that unit tests exist within the module itself in case the + threading done as a result of expiration results in asynchronous + actions (which it likely will). Providing access and a notification + mechanism for an external test module would be complicated and + not worth it. + + ASTERISK-25067 #close + Reported by: Matt Jordan + + Change-Id: Id8a6a357ef5a83d466f81eee56a67d13eeb118b9 + +2015-05-21 17:51 +0000 [36e5402885] Corey Farrell + + * res_mwi_external_ami: Use module version of AMI registration. + + Use ast_manager_register_xml for res_mwi_external_ami manager + actions. This ensures the module is held open while any of + the actions are being run. + + ASTERISK-25117 #close + Reported by: Corey Farrell + + Change-Id: Iececfdc2da498b2c32b9e09042f5f12292007ac7 + +2015-05-21 13:05 +0000 [3e2a994c71] Matt Jordan + + * ARI: Update version to 1.7.0 + + This patch updates the version of ARI to 1.7.0 to reflect the backwards + compatible changes that will be introduced in 13.4.0. + + Change-Id: I6c36e6144da426412f25828a868e4df916bff60a + (cherry picked from commit 9d8a462356a938eea82e8424242d89a682495b57) + +2015-05-20 20:53 +0000 [d067847695] Corey Farrell + + * Logger: Reset defaults before processing config. + + Reset options to default values before reloading config. This ensures + that if a setting is removed or commented out of the configuration file + it is unset on reload. + + ASTERISK-25112 #close + Reported by: Corey Farrell + + Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd + +2015-05-20 19:05 +0000 [31f0d78d7b] George Joseph + + * app_playback: Suppress warnings on playback if channel hung up + + If a channel hangs up while an audio file is playing, there's + no need to clutter up the logs with a warning so suppress it + if ast_check_hangup returns true. + + Also, change warning to debug/2 in file.c if writing a frame + fails. Same reasoning. + + Change-Id: I2e66191af3c5b6e951c98e8f1c3fe3cf2cf7ed89 + Reported-by: George Joseph + Tested-by: George Joseph + +2015-04-20 16:00 +0000 [83ff268b9e] Yousf Ateya + + * chan_iax2: Prevent deadlock between hangup and sending lagrq/ping + + channels/chan_iax.c: Prevent the deadlock between iax2_hangup and send_lagrq/ + send_ping. This deadlock happens because the scheduled task send_lagrq(or + send_ping) starts execution after the call hangup procedure starts but before + it deletes the tasks in the scheduler. + + The solution is to delete scheduled lagrq (and ping) task asynchronously + (i.e. schedule AST_SCHED_DEL for these tasks); By this, AST_SCHED_DEL will + be called in a new context (doesn't have callno locked). + + This commit also cleans up the procedure of sending LAGRQ and PING. + + main/sched.c: Do not assert when deleting non existant entry from scheduler. + This assert seems to be the reason for a lot of awkward code to avoid it. + + ASTERISK-24983 #close + Reported by: Y Ateya + + Change-Id: I03bec1fc8faacb89630269e935fa667c6d6c080c + +2015-05-14 15:21 +0000 [7bf88eb60d] Kevin Harwell + + * audiohook.c: Difference in read/write rates caused continuous buffer resets + + Currently, everytime a sample rate change occurs (on read or write) the + associated factory buffers are reset. If the requested sample rate on a + read differed from that of a write then the buffers are continually reset + on every read and write. This has the side effect of emptying the buffer, + thus there being no data to read and then write to a file in the case of + call recording. + + This patch fixes it so that an audiohook_list's rate always maintains the + maximum sample rate among hooks and formats. Audiohook sample rates are + only overwritten by this value when slin native compatibility is turned on. + Also, the audiohook sample rate can only overwrite the list's sample rate + when its rate is greater than that of the list or if compatibility is + turned off. This keeps the rate from constantly switching/resetting. + + ASTERISK-24944 #close + Reported by: Ronald Raikes + + Change-Id: Idab4dfef068a7922c09cc631dda27bc920a6c76f + +2015-05-13 09:55 +0000 [5ce54ed74a] Matt Jordan + + * res/res_http_websocket: Add a pre-session established callback + + This patch updates http_websocket and its corresponding implementation + with a pre-session established callback. This callback allows for + WebSocket server consumers to be notified when a WebSocket connection is + attempted, but before we accept it. Consumers can choose to reject the + connection, if their application specific logic allows for it. + + As a result, this patch pulls out the previously private + websocket_protocol struct and makes it public, as + ast_websocket_protocol. In order to preserve backwards compatibility + with existing modules, the existing APIs were left as-is, and new APIs + were added for the creation of the ast_websocket_protocol as well as for + adding a sub-protocol to a WebSocket server. + + In particular, the following new API calls were added: + * ast_websocket_add_protocol2 - add a protocol to the core WebSocket + server + * ast_websocket_server_add_protocol2 - add a protocol to a specific + WebSocket server + * ast_websocket_sub_protocol_alloc - allocate a sub-protocol object. + Consumers can populate this with whatever callbacks they wish to + support, then add it to the core server or a specified server. + + ASTERISK-24988 + Reported by: Joshua Colp + + Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2 + +2015-05-20 12:55 +0000 [ddb7cbef8e] John Bigelow + + * res/res_resolver_unbound.c: Add missing include of signal.h + + ASTERISK-25110 #close + Reported by: John Bigelow + + Change-Id: I99a9d93f066f265357b647b8e99a75e45da5a39f + +2015-05-06 21:18 +0000 [9c3c7797e5] Rodrigo Ramírez Norambuena + + * cel, cdr: Assigned separator for column name and values. + + Use a separator string between column names and values for SQL sentences + instead of evaluating the separator to use each time. + + This change adds a space after the comma in constructing SQL sentences. + Before the SQL was created like "INSERT INTO cdr(calldate,clid,dst" + without spaces between column name and values. + + The files applied this change are cdr/cdr_adaptive_odbc.c, cdr/cdr_pgsql.c, + cel/cel_odbc.c + + ASTERISK-25109 #close + Reported By: Rodrigo Ramírez Norambuena + + Change-Id: Ia5a1a161f5e26e1643703b30f8cc9cf0860cc7ea + +2015-05-17 07:15 +0000 [d8698b7f3f] Matt Jordan + + * doxygen: Fix doxygen errors + + This patch fixes a number of errors and warning messages in the doxygen + log. Specifically, it addresses: + * A number of files incorrectly places a '\brief' tag immediately after + a '\file' tag. Doing so emits a warning, as '\file' takes an optional + argument specifying which file the doxygen comment is for. As '\brief' + is not a file, doxygen was unamused. + * A grouping of Stasis Topics and Messages in rtp_engine.h was + incorrectly terminated. We now correctly terminate the grouping, which + prevents members of rtp_engine.h from showing up in the wrong group. + * Group indicators which are not part of the Stasis Topics and Messages + group were removed. Group indicators without an \addtogroup or + \ingroup have no meaning. + + Change-Id: Ia1415ffec6767e27233ae1cae5ed5970de5656d4 + +2015-05-19 13:01 +0000 [d2e998cd68] Corey Edwards + + * main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits + + ASTERISK-24887 #close + Reported by: Makoto Dei + Tested by: tensai + + Change-Id: I6a96f572adb17f76b3acafe503a01c48eb5dd9bf +2015-05-14 22:05 +0000 [17129d2c29] snuffy + + * chan_pjsip: Fix crash during off-nominal when no endpoint specified. + + Add missing return -1 when no endpoint name is specified. + + ASTERISK-25086 #close + Reported by: snuffy + + Change-Id: I9de76c2935a1f4e3f0cffe97a670106f5605e89e +2015-05-14 18:01 +0000 [5d93928175] George Joseph + + * res_pjsip_config_wizard/config: Fix template processing + + The config wizard was always pulling the first occurrence of + a variable from an ast_variable list but this gets the template + value from the list instead of any overridden value. This patch + creates ast_variable_find_last_in_list() in config.c and updates + res_pjsip_config_wizard to use it instead of + ast_variable_find_in_list. Now the overridden values, where they + exist, are used instead of template variables. + + Updated test_config to test the new API. + + ASTERISK-25089 #close + + Reported-by: George Joseph + Tested-by: George Joseph + Change-Id: Ifa7ddefc956a463923ee6839dd1ebe021c299de4 + +2015-05-15 01:54 +0000 [e48d29054f] snuffy + + * cdr: Fix 'core show channel' CDR variable truncation. + + When the new Bridging API was implemented, the workspace variable + changed to a malloc'd string, causing sizeof() to always be 8 (char). + + Revert back to stored on stack string for workspace. + + ASTERISK-25090 #close + + Change-Id: I51e610ae87371df771ce7693a955510efb90f8f7 +2015-05-10 09:55 +0000 [8f3f414d8c] Alexander Traud (License 6520) + + * tcptls: Enable multiple TLS certificate chains (RSA+ECC+DSA) for server socket. + + When a client connects to a server via SSL/TLS, the server commonly utilizes an + RSA key-pair. However, other such algorithms exist (i.e. DSA and ECDSA), and if + the server socket is configured with a certificate for either one of those, it + would lose its compatibility with RSA-only clients. + + Now, the server socket can be configured with up to one RSA, ECDSA and DSA key + each. For example, if a client is not compatible with SHA-2 hashed certificates + like Nokia mobile phones, the server socket still can use RSA/SHA-1 for legacy + clients and ECDSA/SHA-2 for everyone else. + + ASTERISK-24815 #close + Reported by: Alexander Traud + patches: + tls_rsa_ecc_dsa.patch uploaded by Alexander Traud (License 6520) + + Change-Id: Iada5e00d326db5ef86e0af7069b4dfa1b979da9a + +2015-05-14 17:12 +0000 [2415a14ce9] Maciej Szmigiero + + * Add X.509 subject alternative name support to TLS certificate + verification. + + This way one X.509 certificate can be used for hosts that + can be reached under multiple DNS names or for multiple hosts. + + Signed-off-by: Maciej Szmigiero + + ASTERISK-25063 #close + + Change-Id: I13302c80490a0b44c43f1b45376c9bd7b15a538f + +2015-05-13 15:41 +0000 [3e89f01b55] Jonathan Rose + + * Message.c: Clear message channel frames on cleanup + + The message channel is a special channel that doesn't actually process frames. + However, certain actions can cause frames to be placed in the channel's read + queue including the Hangup application which is called on the channel after + each message is processed. Since the channel will continually be reused for + many messages, it's necessary to flush these frames at some point. + + ASTERISK-25083 #close + Reported by: Jonathan Rose + + Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f + +2015-05-14 00:06 +0000 [0a46d43b9c] Corey Farrell + + * Fix potential crash after unload of func_periodic_hook or test_message. + + These modules save a pointer to the context they create on load, and + use that pointer to destroy the context at unload. It is not safe + to save this pointer, it is replaced during load of pbx_config, + pbx_lua or pbx_ael. + + This change causes the modules to pass NULL to ast_context_destroy, + a safer way to perform the unregistration since it does not use + a pointer that could become invalid. + + ASTERISK-25085 #close + Reported by: Corey Farrell + + Change-Id: I6a00ec8e38046058f97dc703e1adcde9bf517835 + +2015-05-12 08:58 +0000 [478fb4a388] Corey Farrell + + * MALLOC_DEBUG: Replace WRAP_LIBC_MALLOC with ASTMM_LIBC. + + There are 3 ways that calls directly to standard allocator functions can + be dealt with: + 1. Block their use, cause them to generate an error. This is the default. + 2. Replace them with the Asterisk equivalent function calls. + 3. Leave them alone. + + This change allows one of these 3 options to be selected by any source. + The source just needs to define ASTMM_LIBC to ASTMM_BLOCK, ASTMM_REDIRECT, + or ASTMM_IGNORE to use option 1, 2 or 3 respectively. Normally ASTMM_BLOCK + is the correct option, so it is default when ASTMM_LIBC is not defined. + In some cases when building 3rd party code it is desirable to have it use + Asterisk functions, without changing the whole source - ASTMM_REDIRECT + accomplishes this. When using 3rd party libraries sometimes a static + inline function will make use of malloc or free. In these cases it may + be unsafe to replace the allocator in the header, as it's possible the + memory could be freed by the library using standard allocators. For + those cases ASTMM_IGNORE is needed. + + Change-Id: I8afef4bc7f3b93914263ae27d3a5858b69663fc7 + +2015-05-05 19:49 +0000 [eec010829a] Rodrigo Ramírez Norambuena + + * AST_MODULE_INFO: Format corrections to the usages of AST_MODULE_INFO macro. + + Change-Id: Icf88f9f861c6b2a16e5f626ff25795218a6f2723 +2015-05-06 05:28 +0000 [46bb8449e8] Rodrigo Ramírez Norambuena + + * cel/cel_pgsql.c: Use the 'SEP' macro when appending a column name + + When appending a column name to the sql buffer, the predicate, "if first is + non-null, use empty string; else, use comma", is identical to the 'SEP' macro + definition. Since they are the same, this patch replaces the redundant + predicate statement with the 'SEP' macro. + + Change-Id: Ib8b6138b06a48381723108a05ab8752cb8700509 +2015-05-12 17:45 +0000 [0d97d7cb94] Jonathan Rose + + * app_voicemail: fix moving when old messages full + + When completing voicemail playback of a message in the 'INBOX', the + message gets moved to the 'Old' messages folder. Without this patch, if + the 'Old' folder is already at its set limit, then the 'INBOX' message will + simply be deleted. With this patch, the flag to delete the message will be + removed if the save_to_folder function indicates that the message could + not be moved due to a full folder. + + ASTERISK-25082 #close + Reported by: Jonathan Rose + Review: https://gerrit.asterisk.org/#/c/448/ + + Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f +2015-05-12 17:34 +0000 [0bb0d4a603] Richard Mudgett + + * chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision. + + If an ISDN call is hungup by both sides at the same time a crash could + happen. + + * Added missing NULL checks for the owner channel after calling + pri_queue_pvt_cause_data() in two places. Code after those calls need to + check the owner channel pointer for NULL before use because + pri_queue_pvt_cause_data() needs to do deadlock avoidance to lock the + owner and the owner may get hung up. + + ASTERISK-21893 #close + Reported by: Alexandr Gordeev + + Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a + +2015-05-06 08:31 +0000 [57386dcb67] Corey Farrell + + * Allow command-line options to override asterisk.conf. + + Previous versions of Asterisk processed command-line options before + processing asterisk.conf. This meant that if an option was set in + asterisk.conf, it could not be overridden with the equivelent command + line option. This change causes Asterisk to process the command-line + twice. First it processes options that are needed to load asterisk.conf, + then it processes the remaining options after the config is read. + + This changes the function of -X slightly. Previously using -X without + disabling execincludes in asterisk.conf caused #exec to be usable in any + config. Now -X only enables #exec for the load of asterisk.conf, if it + is wanted in the rest of the system it must be enabled with execincludes + in asterisk.conf. Updated 'asterisk -h' and 'man asterisk' to reflect + the limited function of -X. + + ASTERISK-25042 #close + Reported by: Corey Farrell + + Change-Id: I1450d45c15b4467274b871914d893ed4f6564cd7 + +2015-05-05 15:32 +0000 [52407088f8] George Joseph + + * sorcery: Add API to insert/remove a wizard to/from an object type's list + + Currently you can 'apply' a wizard to an object type but the wizard + always goes at the end of the object type's wizard list. This patch + adds a new ast_sorcery_insert_wizard_mapping function that allows + you to insert a wizard anyplace in the list. I.E. You could + add a caching wizard to an object type and place it before all + wizards. + + ast_sorcery_get_wizard_mapping_count and + ast_sorcery_get_wizard_mapping were added to allow examination + of the mapping list. + + ast_sorcery_remove_mapping was added to remove a mapping by name. + + As part of this patch, the object type's wizard list was converted + from an ao2_container to an AST_VECTOR_RW. + + A new test was added to test_sorcery for this capability. + + ASTERISK-25044 #close + + Change-Id: I9d2469a9296b2698082c0989e25e6848dc403b57 + +2015-05-12 01:31 +0000 [cc853dcf90] Corey Farrell + + * Fix processing of asterisk.conf debug=yes. + + The code which reads asterisk.conf supports processing the debug + option with ast_true, but ast_true returns -1. This causes debug + to still be off, convert to 1 so debug will be on as requested. + + ASTERISK-25042 + Reported by: Corey Farrell + + Change-Id: I3c898b7d082d914b057e111b9357fde46bad9ed6 + +2015-05-10 02:26 +0000 [c624e4bae1] Sebastian Kemper + + * General: Fix recent menuselect-related cross compile regression + + MAKE_MENUSELECT currently sets CC to CC, which is the compiler for the + target platform. But menuselect is to be run on the build system, so + BUILD_CC needs to be used instead - like it was in the past, before the + recent changes (https://reviewboard.asterisk.org/r/4370/). This is the + patch for ASTERISK-25074. + + ASTERISK-25074 #close + Reported by: Sebastian Kemper + Tested by: Sebastian Kemper + + Change-Id: I8a2b1fc5deb6ad2b80f49baca35b1b13d468ebf8 +2015-05-01 12:22 +0000 [e6daafb8a6] Rodrigo Ramírez Norambuena + + * cdr_pgsql, cel_pgsql: Store maximum buffer size to prevent reallocation + + The code previously used a fixed size of 512 for the SQL + queries. Depending on the size this may require it to grow. + + This change makes it so if the buffer size does grow the size + is stored and next time the buffer will be large enough. + + Change-Id: I55385899f1c06dee47e4274c2d21538037b2d895 +2015-05-09 16:58 +0000 [87d8b36755] George Joseph + + * vector: Add REMOVE, ADD_SORTED and RESET macros + + Based on feedback from Corey Farrell and Y Ateya, a few new + macros have been added... + + AST_VECTOR_REMOVE which takes a parameter to indicate if + order should be preserved. + + AST_VECTOR_ADD_SORTED which adds an element to + a sorted vector. + + AST_VECTOR_RESET which cleans all elements from the vector + leaving the storage intact. + + Change-Id: I41d32dbdf7137e0557134efeff9f9f1064b58d14 + +2015-05-11 07:07 +0000 [e6ebddd9ae] Ivan Poddubny + + * pbx/pbx_spool: Fix issue when call files were executed too early + + pbx_spool used to delete/move the call file upon successful outgoing + call completion, but did not delete it from in-memory list of files + (dirlist, used only when compiled with inotify/kqueue support). + That resulted in an extra attempt to process that filename after + retrytime seconds. + Then, if a new file with the same name appears that is scheduled + in future further than the completed one plus its retrytime, + then it gets executed earlier than expected. + + This patch fixes remove_from_queue function to also remove the entry + from the dirlist. + + ASTERISK-17069 #close + Reported by: Jeremy Kister + + ASTERISK-24442 #close + Reported by: tootai + + Change-Id: If9ec9b88073661ce485d6b008fd0b2612e49a28b + +2015-05-01 23:43 +0000 [c61b146238] Rodrigo Ramírez Norambuena + + * cdr_pgsql: Use PQescapeStringConn for escaping names. + + Use function PQescapeStringConn for escaping the name + of the table and schema instead of doing it manually. + + Change-Id: I6709165e2d00463e9c813d24f17830ad4910b599 +2015-05-10 07:37 +0000 [2ab5d22c0d] Yousf Ateya + + * res_rtp_asterisk: Correction for the limit which detects that a packet is DTLS. + + First byte of DTLS packet shall be in range 20-63, not 20-64. Refer to RFC + https://tools.ietf.org/html/rfc5764#section-5.1.2 for correct values. + + Change-Id: Iae6fa0d72b37c36a27fe40686e0ae6fba3afec31 + +2015-05-10 08:36 +0000 [f82bd76e3c] Joshua Colp + + * dns_srv: Fix SRV sorting when records with priority zero exist with non-zero. + + The DNS SRV sorting code currently has an issue when records with a priority + of zero exist with records of a non-zero priority. This occurs because the + sorting code considers zero to mean unset when in reality is a valid + value. If the current priority is zero it will get replaced with any remaining + record that has a priority of non-zero, until no records of those exist after + which the records of priority zero are handled. + + This change makes it so that the priority of the first remaining record is + the current starting priority. There is also a small optimization to prevent + iterating records when the starting priority is already zero. + + Change-Id: I103511f35b50428f770bd4db3ffef70fb6f82d35 + +2015-05-08 18:01 +0000 [1503d0c14c] Alexandre Fournier + + * res_config_mysql: Fix broken column type checking + + MySQL configuration engine contains a bug in require_mysql(). This + function is used for column type checking in tables. This bug only + affects DATETIME, DATE and FLOAT types. + + It came from mixing the first condition (switch-case-like + if/then/else), to check the expected column type, with the second + condition, to check the actual column type against the expected column + type. Both conditions must be checked separately in order to avoid the + execution of the wrong block. + + ASTERISK-18252 #comment This patch might fix the issue + Reported by: Gareth Blades + + ASTERISK-25041 #close + Reported by: Alexandre Fournier + Tested by: Alexandre Fournier + + Change-Id: I0b8bf7e68ab938be8e6525a249260cb648cb0bfa + +2015-05-08 14:47 +0000 [5e361e1476] Rusty Newton + + * configs/basic-pbx: Modified main IVR to play new Allison prompt. + + The main IVR was playing demo-congrats. I've switched it over to the + basic-pbx-ivr-main file that we added in core sounds 1.4.27. This prompt + has Allison prompting the user with the actual IVR menu. + + ASTERISK-24892 #close + + Change-Id: Ifb749616ff8e156a1031ddaddfcc9244767a095d + +2015-05-08 12:30 +0000 [2d4dc0c963] Corey Farrell + + * Fix error's produced by astmm.h when standard allocators are used. + + astmm.h includes defines that are meant to cause error's when standard + allocators (malloc, calloc, free, etc) are used. It actually only + causes a warning, which is not always caught on certain sources. In + modules this unknown symbol is not detected until runtime, where the + module fails to load. This modifies the define's so that using one + of the blocked functions will cause a compile error regardless of + CFLAGS. + + Moved spandsp header includes to before asterisk.h so the static inline + functions can continue using malloc and free. Although these functions + are never called and optimized away, the updated replacement macro's + would still cause a failure. + + Change-Id: I532640aca0913ba9da3b18c04a0f010ca1715af5 + +2015-05-08 10:39 +0000 [63c71c9f4a] Sean Bright + + * res_rtp_asterisk: Issue ERROR if res_srtp is not found. + + While trying to get WebRTC working with chan_pjsip, I was running + into the following error: + + Attempted to set an invalid DTLS-SRTP configuration on RTP + instance... + + Josh helpfully pointed out that res_srtp.so might not be loaded, and + sure enough, it wasn't. This patch adds a ERROR indiciating as much + to hopefully help others having a similar problem. + + Change-Id: I13aa477b47b299876728a21b130998a0ea6cd19f + +2015-05-07 17:49 +0000 [60bf9ed91a] Rusty Newton + + * sounds: Add Swedish sounds to Makefile and XML + + Added the necessary lines to the Makefile and sounds.xml so we'll have the + Swedish sounds in all available formats in menuselect. + + See also: Swedish sounds were added into the core sounds release 1.4.27. + + ASTERISK-24744 #close + + Reported by: Tove Hjelm + Tested by: Rusty Newton + + Change-Id: Ib6f4fd177afd1667b2402735034001d4d055a908 + +2015-05-08 10:30 +0000 [f93b3a22d6] Corey Farrell + + * Fix crash in codec_lpc10 when MALLOC_DEBUG is enabled. + + This switches codecs/lpc10/lpcini.c back to including "asterisk.h" + instead of . lpcini.c allocates memory that is freed by + codec_lpc10.c, so it is important to use MALLOC_DEBUG allocator. + Added #define WRAP_LIBC_MALLOC to the start of the source to prevent + runtime symbol link error's. + + Change-Id: I74f63fd09fdeb673ee7753122c3bb4722ab6e1ac + +2015-05-07 14:54 +0000 [cf637f2510] George Joseph + + * doc: Make progdocs play nice with git + + Moved contrib/asterisk-ng-doxygen to doc/asterisk-ng-doxygen.in + + Changed /Makefile to copy asterisk-ng-doxygen.in to + asterisk-ng-doxygen then modify it with version instead of + modifying asterisk-ng-doxygen directly. Updated clean + targets as well. + + Updated /.gitignore and doc/.gitignore. + + Change-Id: I38712d3e334fa4baec19d30d05de8c6f28137622 + +2015-05-04 14:43 +0000 [b885f719bf] Ivan Poddubny + + * contrib/editors: Fix vim syntax highlighting of comments in config files + + * Added a lookbehind to one-line comment matcher to skip escaped + semicolons. + * Added support for block comments. + + Change-Id: Id17dfaeda8ed4be572e8107a0c010066584aaee7 + +2015-05-06 13:24 +0000 [e33682cae2] Joshua Colp + + * res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination + + The res_pjsip_exten_state module currently has a race condition between + processing the extension state callback from the PBX core and processing + the subscription shutdown callback from res_pjsip_pubsub. There is currently + no synchronization between the two. This can present a problem as while + the SIP subscription will remain valid the tree it points to may not. + This is in particular a problem as a task to send a NOTIFY may get queued + which will try to use the tree that may no longer be valid. + + This change does the following to fix this problem: + + 1. All access to the subscription tree is done within the task that + sends the NOTIFY to ensure that no other thread is modifying or + destroying the tree. This task executes on the serializer for the + subscriptions. + + 2. A reference to the subscription serializer is kept to ensure it + remains valid for the lifetime of the extension state subscription. + + 3. The NOTIFY task has been changed so it will no longer attempt + to send a NOTIFY if the subscription has already been terminated. + + ASTERISK-25057 #close + Reported by: Matt Jordan + + Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643 + +2015-05-05 20:22 +0000 [c886be5df2] George Joseph + + * vector: Additional enhancements and fixes + + After using the new vector stuff for real I found... + + A bug in AST_VECTOR_INSERT_AT that could cause a seg fault. + + The callbacks needed to be closer to ao2_callback in behavior + WRT to CMP_MATCH and CMP_STOP behavior and the ability to return + a vector of matched entries. + + A pre-existing issue with APPEND and REPLACE was also fixed. + + I also added a new macro to test.h that acts like ast_test_validate + but also accepts a return code variable and a cleanup label. As well + as printing the error, it sets the rc variable to AST_TEST_FAIL and + does a goto to the specified label on error. I had a local version + of this in test_vector so I just moved it. + + ASTERISK-25045 + + Change-Id: I05e5e47fd02f61964be13b7e8942bab5d61b29cc + +2015-05-06 17:37 +0000 [1f5db1c7e3] Kevin Harwell + + * res_stasis_snoop: Spying on a single direction continually increases CPU + + Creating a snoop channel in ARI and spying only on a single direction (in or + out) results in CPU utilization continually increasing until the CPU is fully + consumed. This occurs because frames are being put in the opposing direction's + slin factory queue, but not being removed. + + Fixed the problem by always reading and disposing of frames from the opposite + queue of the direction selected. + + ASTERISK-24938 #closes + + Change-Id: I935bfd15f1db958f364d9d6b3b45582c0113dd60 + +2015-05-06 16:00 +0000 [7103b374ef] Richard Mudgett + + * chan_dahdi: Improve force_restart_unavailable_chans option description. + + ASTERISK-25034 + Reported by: Richard Mudgett + + Change-Id: I1ff8f02124d2f4abd632a050da52c64285bb7f30 + +2015-05-06 04:32 +0000 [d2e2271874] Joshua Colp + + * manager: Fix build due to missing variable usage. + + Change-Id: I26d4d2cb9cee924632ff59ef0b30a7e6a1e2b00d + +2015-05-04 20:11 +0000 [6b40bbf5bb] Rodrigo Ramírez Norambuena + + * main/manager.c: Bugfix sort action_manager by alphabetically + + Fix the alphabetic order added on ast_manager_register_struct. The order + for struct manager_action added is not working, this change fixes the + problem. + + Change-Id: I149da0cd06c3c4445d7516cc303358e9f26f8b4b + +2015-05-05 18:17 +0000 [6c4d1c3223] Richard Mudgett + + * features: Fix crash when transferee hangs up during DTMF attended transfer. + + A crash happens with this sequence of steps: + 1) Party A is connected to party B. + 2) Party B starts a DTMF attended transfer. + 3) Party A hangs up while party B is dialing party C. + + When party A hangs up the bridge that party A and party B are in is + dissolved and party B is kicked out of the bridge. When party B finishes + dialing party C he attempts to move to the new bridge with party C. Since + party B is no longer in a bridge the attempted move dereferences a NULL + bridge_channel pointer and crashes. + + * Made the hold(), unhold(), ringing(), and the bridge_move() functions + tolerant of the channel not being in a bridge. The assertion that party B + is always in a bridge is not true if the bridged peer of party B hangs up + and dissolves the bridge. Being tolerant of not being in a bridge allows + the peer hangup stimulus to be processed by the FSM. + + * Made the bridge_move() function return void since where the return value + for a failed move was checked generated a FSM coding ERROR message for a + normal off-nominal condition. + + * Eliminated most uses of RAII_VAR in bridge_basic.c. + + ASTERISK-25003 #close + Reported by: Artem Volodin + + Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada + +2015-05-05 14:48 +0000 [90bfc02e84] Ivan Poddubny + + * app_queue: Fix queue_log EXITWITHTIMEOUT containing only 1 parameter + + This patch fixes EXITWITHTIMEOUT queue_log entry to always come with 3 + parameters: position, original position and waiting time. + + ASTERISK-25038 #close + Reported by: Etienne Lessard + + Change-Id: I0c62045922e26bee2125e93aee1dee17eee79618 + +2015-05-05 13:34 +0000 [bebf0b9b27] Joshua Colp + + * chan_unistim: Fix build failure due to ACL changes. + + Change-Id: I57081045c72b9fcf12d5c84493278f9272c31b32 + +2015-05-05 11:35 +0000 [247fef6653] Alexander Traud (License 6520) + + * tcptls: Avoiding ERR_remove_state in OpenSSL. + + ERR_remove_state was deprecated with OpenSSL 1.0.0 and was replaced by + ERR_remove_thread_state. ERR_load_SSL_strings and ERR_load_BIO_strings were + called by SSL_load_error_strings already and got removed. These changes allow + OpenSSL forks like BoringSSL to be used with Asterisk. + + ASTERISK-25043 #close + Reported by: Alexander Traud + patches: + asterisk_with_BoringSSL.patch uploaded by Alexander Traud (License 6520) + + Change-Id: If1c0871ece21a7e0763fafbd2fa023ae49d4d629 +2015-05-05 09:47 +0000 [c541923ac3] Corey Farrell + + * res_ari_bridges: Add missing dependencies. + + Missed this module in the previous commit. res_ari_bridges uses symbols + from res_stasis_playback and res_stasis_recording. + + ASTERISK-25027 #close + Reported by: Corey Farrell + + Change-Id: I90bf756abd25adfc4920d2869ebe7feb636b8c5f + +2015-05-05 09:27 +0000 [8a3e93a349] Corey Farrell + + * pbx_config: Register manager actions with module version of macro. + + Switch manager actions in pbx_config to use the registration macro that + passes the module pointer, allowing pbx_config reference to be bumped + while the manager actions run. + + ASTERISK-25061 #close + Reported by: Corey Farrell + + Change-Id: I422c50dd74814616ac10c5e9c6598a0b1bc2c44e + +2015-05-01 22:14 +0000 [cb79b8ab80] Rodrigo Ramírez Norambuena + + * cel_pgsql: Add support for setting schema + + Add feature to set optional schema parameter on configuration file via + 'schema' setting. + + Fix query to get columns from table while considering schema. If in + the database there exists two tables with same name in distinct schemas + it will return an error when inserting record. + + ASTERISK-24967 #close + + Change-Id: I691fd2cbc277fcba10e615f5884f8de5d8152f2c + +2015-05-04 12:16 +0000 [11f650c6ac] Joshua Colp + + * stasis: Fix dial masquerade datastore lifetime + + A recent change went into Asterisk which added reference counts to the + channels stored in a dial masquerade datastore. Unfortunately this + included a reference to the caller in a dialing operation. While all + of the dialed targets have the datastore removed from them upon dialing + completion this did not occur for the caller, causing it to have a + reference to itself that could go never go away (as it depended on + the destruction of the datastore which only happened when the channel + was destroyed). This resulted in the caller channel remaining on the + system despite it having hung up. + + This change does the following to fix this issue: + + 1. The dial masquerade datastore is now removed from the caller upon + dialing completion, just like the dialed targets. + 2. Upon destruction of the caller all the dialed targets are also + removed from the dial masquerade datastore (just in case). + 3. The reference to the caller has been removed as it should not be + possible for the datastore to now be valid/useful after the lifetime + of the caller has ended. + + ASTERISK-25025 #close + + Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f + +2015-04-21 17:27 +0000 [a24ce38e5e] Rodrigo Ramírez Norambuena + + * cdr_adaptive_odbc: Add ability to set character for quoted identifiers. + + 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. + + ASTERISK-25006 + + Change-Id: I0b9a56b79ca13a727a803d88ed3b8643e37632b8 + +2015-05-04 22:57 +0000 [39cf642d40] Rodrigo Ramírez Norambuena + + * cdr: standardizes tab for options of AST_MODULE_INFO + + Change-Id: I3c6de30b4859717873100092a7c06e206713a301 + +2015-05-04 16:41 +0000 [df6c1d755f] Corey Farrell + + * CLI: Enable automatic references to modules. + + * Pass module to ast_cli_register and ast_cli_register_multiple. + * Add a module reference before executing any CLI callback, remove + the reference when complete. + + ASTERISK-25049 #close + Reported by: Corey Farrell + + Change-Id: I7aafc7c9f2b912918f28fe51d51e9e8a755750e3 + +2015-05-04 14:26 +0000 [a8bfa9e104] Corey Farrell + + * Modules: Make ast_module_info->self available to auxiliary sources. + + ast_module_info->self is often needed to register items with the core. Many + modules have ad-hoc code to make this pointer available to auxiliary sources. + This change updates the module build process to make the needed information + available to all sources in a module. + + ASTERISK-25056 #close + Reported by: Corey Farrell + + Change-Id: I18c8cd58fbcb1b708425f6757becaeca9fa91815 + +2015-05-01 19:25 +0000 [6d5941297b] George Joseph + + * vector: Traversal, retrieval, insert and locking enhancements + + Renamed AST_VECTOR_INSERT to AST_VECTOR_REPLACE because it really + does replace not insert. The few users of AST_VECTOR_INSERT were + refactored. Because these are macros, there should be no ABI + compatibility issues. + + Added AST_VECTOR_INSERT_AT that actually inserts an element into the + vector at a specific index pushing existing elements to the right. + + Added AST_VECTOR_GET_CMP that can retrieve from the vector based + on a user-provided compare function. + + Added AST_VECTOR_CALLBACK function that will execute a function + for each element in the vector. Similar to ao2_callback and + ao2_callback_data functions although the vector callback can take + a variable number of arguments. This should allow easy migration + to a vector where a container might be too heavy. + + Added read/write locked vector and lock manipulation macros. + + Added unit tests. + + ASTERISK-25045 #close + + Change-Id: I2e07ecc709d2f5f91bcab8904e5e9340609b00e0 + +2015-05-03 13:55 +0000 [4f4aaa0c30] Corey Farrell + + * main/test.c: Add test to verify there were no registration errors. + + This adds a test that will fail if any test failed to register. Also fail + if any test registration produced a warning about missing a leading or + trailing slash. + + ASTERISK-25053 #close + Reported by: Corey Farrell + + Change-Id: I93e50b8fcbcfa7f1f5b41b2c44a51685c09529c3 + +2015-04-21 11:52 +0000 [ebe371357e] Martin Tomec + + * res_odbc: Use negative connection cache for all connections + + Apply the negative connection cache setting to all connections, + even those that are not pooled. This ensures that the connection + will not be re-established before the negative connection cache + time is met. + + ASTERISK-22708 #close + + Change-Id: I431cc2e8584ab0b6908b3523d0a0e18c9a527271 +2015-05-03 21:03 +0000 [981084f08c] Corey Farrell + + * Format Interfaces: Prevent unload except by shutdown. + + Format interfaces cannot be unregistered, so the modules that provide them + need to be held open except by shutdown. + + ASTERISK-25054 #close + Reported by: Corey Farrell + + Change-Id: Iadbd9675bf0d30b8fded5a739b163db3ea2db8f3 + +2015-05-03 20:28 +0000 [75c0aa6979] Matt Jordan + + * contrib/ast-db-manage: Add Postgres ENUM type support in auto DTMF mode update + + The upgrade script for auto DTMF mode (31cd4f4891ec) added in 88b0fa7755 + failed to add ENUM support for Postgres databases. This requires a + specific import from the sqlalchemy.dialects.postgresql package. This + patch corrects this error, which allows for Postgres update scripts to + be generated. + + ASTERISK-24706 + + Change-Id: I4742ac8efa533cd6f18e0bdd907b339a9aedf015 + +2015-05-03 13:36 +0000 [1368dae773] Corey Farrell + + * main/presencestate.c: Add trailing slash to test category. + + ASTERISK-25053 + Reported by: Corey Farrell + + Change-Id: I8c0375dd0818747b2d2e1ceaea87bfbeb2daf8d4 + +2015-04-20 13:03 +0000 [305ce3defd] Diederik de Groot + + * Update configure.ac/Makefile for clang + + Created autoconf/ast_check_raii.m4: contains AST_CHECK_RAII which + checks compiler requirements for RAII: + gcc: -fnested-functions support + clang: -fblocks (and if required -lBlocksRuntime) + The original check was implemented in configure.ac and now has it's + own file. This function also sets C_COMPILER_FAMILY to either gcc or + clang for use by makefile + + Created autoconf/ast_check_strsep_array_bounds.m4 (contains + AST_CHECK_STRSEP_ARRAY_BOUNDS): + which checks if clang is able to handle the optimized strsep & strcmp + functions (linux). If not, the standard libc implementation should be + used instead. Clang + the optimized macro's work with: + strsep(char *, char []), but not with strsepo(char *, char *). + Instead of replacing all the occurences throughout the source code, + not using the optimized macro version seemed easier + + See 'define __strcmp_gc(s1, s2, l2) in bits/string2.h': + llvm-comment: Normally, this array-bounds warning are suppressed for + macros, so that unused paths like the one that accesses __s1[3] are + not warned about. But if you preprocess manually, and feed the + result to another instance of clang, it will warn about all the + possible forks of this particular if statement. Instead of switching + of this optimization, another solution would be to run the preproces- + sing step with -frewrite-includes, which should preserve enough + information so that clang should still be able to suppress the diag- + nostic at the compile step later on. + + See also "https://llvm.org/bugs/show_bug.cgi?id=20144" + See also "https://llvm.org/bugs/show_bug.cgi?id=11536" + + Makefile.rules: If C_COMPILER_FAMILY=clang then add two warning + suppressions: + -Wno-unused-value + -Wno-parentheses-equality + In an earlier review (reviewboard: 4550 and 4554), they were deemed a + nuisace and less than benefitial. + + configure.ac: + Added AST_CHECK_RAII() see earlier + Added AST_CHECK_STRSEP_ARRAY_BOUNDS() see earlier + Removed moved content + + ASTERISK-24917 + Change-Id: I12ea29d3bda2254ad3908e279b7effbbac6a97cb + +2015-04-28 04:49 +0000 [8886b724ae] Rodrigo Ramírez Norambuena + + * cdr/cdr_csv.c: Add a new option to enable columns added in Asterisk 1.8 + + This patch adds a new option to cdr.conf, 'newcdrcolumns', that will handle CDR + columns added in Asterisk 1.8. The columns are: + * peeraccount + * linkedid + * sequence + When enabled, the columns in the database entry will be populated with the data + from the CDR. + + ASTERISK-24976 #close + + Change-Id: I51a57063f4ae5e194a9d933a8df45dc8a4534f0b +2015-05-03 04:39 +0000 [94532b2c22] Rodrigo Ramírez Norambuena + + * main/asterisk.c: Update Asterisk copyright year + + Change-Id: I5e75d7f7e2c096d74edd9e8735268a894f4b93ab + +2015-05-03 04:09 +0000 [2ed5e6a9ba] Rodrigo Ramírez Norambuena + + * utils: Remove trailing whitespace + + Change-Id: I4644f43a6a1ca9b5130cd2a6746772b888eb4f7a + +2015-05-02 18:58 +0000 [c3ec5da156] Corey Farrell + + * Remove unneeded uses of optional_api providers. + + A few cases exist where headers of optional_api provders are included but + not needed. This causes unneeded calls to ast_optional_api_use. + + * Don't include optional_api.h from sip_api.h. + * Move 'struct ast_channel_monitor' to channel.h. + * Don't include monitor.h from chan_sip.c, channel.c or features.c. + + The move of struct ast_channel_monitor is needed since channel.c depends on + it. This has no effect on users of monitor.h since channel.h is included + from monitor.h. + + ASTERISK-25051 #close + Reported by: Corey Farrell + + Change-Id: I53ea65a9fc9693c89f8bcfd6120649bfcfbc3478 + +2015-05-02 02:15 +0000 [44bbdbe3a4] Corey Farrell + + * res_pjsip_dlg_options: Fix MODULEINFO section. + + Removed the extra space before "MODULEINFO" in res_pjsip_dlg_options. + This extra space prevented any of the dependencies from being seen by + menuselect, so building with default options would fail if PJSIP was + not installed. + + This also makes the tool that extracts information for menuselect + tolerant of multiple spaces in the future. + + ASTERISK-25033 #close + Reported by: Peter Whisker + + Change-Id: Iccd54846f70c4a7a50cb5bf70b7bb5cb4bab3698 + +2015-05-01 19:50 +0000 [e4f0a55f7f] D Tucny + + * term: send proper reset sequence when black background is forced + + When using the force black background command-line option or configuration + option an invalid reset sequence is sent following a coloured output item + in the CLI, the result is that the colour is not 'turned off' and continues + until the next non-default coloured text output. + + A reset sequence is already defined in term.c, but the ast_term_reset + function doesn't use it, instead building it's own invalid sequence and + returning that. + + This patch changes that behaviour, removing the building of a reset sequence + and instead using the pre-built constant 'enddata' which is a suitable reset + sequence for this purpose. + + ASTERISK-24896 #close + Reported by: Dan Tucny + + Change-Id: I56323899123ae3264900389cae1f5b252aa3bf43 +2015-05-01 13:22 +0000 [8f3cee1258] Corey Farrell + + * Astobj2: Fix initialization order of refdebug and AO2_DEBUG. + + This ensures that refdebug is initialized before AO2_DEBUG if + both are enabled, since AO2_DEBUG allocates a container. + + This change also makes AO2_DEBUG initialization critical, a + failure will abort Asterisk startup. This is needed since + the failure would be caused by reg_containers allocation + failure, and that would result in a segmentation fault by + ao2_container_register later in startup. + + ASTERISK-25048 #close + Reported by: Corey Farrell + + Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244 + +2015-04-29 14:49 +0000 [7ac28be04b] Matt Jordan + + * main/pbx: Improve performance of dialplan reloads with a large number of hints + + The PBX core maintains two hash tables for hints: a container of the + actual hints (hints), along with a container of devices that are watching that + hint (hintdevices). When a dialplan reload occurs, each hint in the hints + container is destroyed; this requires a lookup in the container of devices to + find the device => hint mapping object. In the current code, this performs an + ao2_callback, iterating over each of the device to hint objects in the + hintdevices container. For a large number of hints, this is extremely + expensive: dialplan reloads with 20000 hints could take several minutes + in just this phase. + + This patch improves the performance of this step in the dialplan reloads + by caching which devices are watching a hint on the hint object itself. + Since we don't want to create a circular reference, we just cache the + name of the device. This allows us to perform a smarter ao2_callback on + the hintdevices container during hint removal, hashing on the name of the + device and returning an iterator to the matching names. The overall + performance improvement is rather large, taking this step down to a number of + seconds as opposed to minutes. + + In addition, this patch also registers the hint containers in the PBX + core with the astobj2 library. This allows for reasonable debugging to + hash collisions in those containers. + + ASTERISK-25040 #close + Reported by: Matt Jordan + + Change-Id: Iedfc97a69d21070c50fca42275d7b3e714e59360 + +2015-04-30 15:54 +0000 [6b208d8c3b] Corey Farrell + + * Sample Configs: Fix syntax error in pjsip.conf + + The sample pjsip.conf has a few comment lines that are missing the + semicolons at the start of the comment, causing the config to fail + load. + + Change-Id: I776a38c916a7df7ee3e072fd0b21dbf4cc457352 + +2015-04-30 15:20 +0000 [dc23204aca] Mark Michelson + + * Prevent potential crash on blond transfer. + + Scenario: + Alice calls Bob. Bob performs a blond transfer to Carol. Carol rejects + the incoming call (or some other immediate circumstance causes Carol not + to answer the call) + + What occurs in this case is that when the bridge between Alice and Bob + breaks, Alice is told to masquerade into Bob's channel that had placed + the call to Carol. The actual masquerade goes down without a hitch. + However, a channel fixup callback that attempts to publish dial events + over Stasis has a crash. The reason for this crash is that the datastore + on Bob's channel that placed the outbound call to Carol only had a bare + pointer to Carol's channel. Since Carol rejected the incoming call, + Carol's channel has been hung up and freed, meaning accessing her + channel results in a crash. + + The fix here is simple. The dial fixup code has been altered to hold + references to the involved channels and to drop those references when + freeing data. + + ASTERISK-25025 #close + Reported by Chet Stevens + + Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197 + +2015-04-30 14:40 +0000 [47fa2ad10b] Corey Farrell + + * Build System: Fix issue with addons moduleinfo. + + The build system now scans additional sources when generating + moduleinfo for menuselect. Unfortunately the extra sources + for format_mp3 only exist if downloaded. + + Use the Makefile macro 'wildcard' to allow moduleinfo generator + to ignore sources that do not exist. + + Change-Id: I596604713b7345ce994f32197f8f6bfd9bcf4170 + +2015-04-30 13:42 +0000 [bb6ddb3dc8] Joshua Colp + + * res_ari_device_states: Fix dependency on res_stasis_device_state. + + The res_ari_device_states module depends on res_stasis_device_state, + not res_stasis_device_states. + + Change-Id: I26e02ad37f9e36bcc859867e2fad1b90452ec3de + +2015-04-28 17:00 +0000 [11ffcf662f] Mark Michelson + + * Restrict functionality when ACLs are misconfigured. + + This patch has two main purposes: + + 1) Improve warning messages when ACLs are configured improperly. + 2) Prevent misconfigured ACLs from allowing potentially unwanted + traffic. + + To acomplish point (2) in most cases, whatever configuration object that + the ACL belonged to was not allowed to load. + + The one exception is res_pjsip_acl. In that case, ACLs are their own + configuration object. Furthermore, the module loading code has no + indication that a ACL configuration had a failure. So the tactic taken + here is to create an ACL that just blocks everything. + + ASTERISK-24969 + Reported by Corey Farrell + + Change-Id: I2ebcb6959cefad03cea4d81401be946203fcacae + +2015-04-29 14:29 +0000 [03c51cf525] Richard Mudgett + + * chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option. + + Some telco switches occasionally ignore ISDN RESTART requests. The fix + for ASTERISK-19608 added an escape clause for B channels in the restarting + state if the telco ignores a RESTART request. If the telco fails to + acknowledge the RESTART then Asterisk will assume the telco acknowledged + the RESTART on the second call attempt requesting the B channel by the + telco. The escape clause is good for dealing with RESTART requests in + general but it does cause the next call for the restarting B channel to be + rejected if the telco insists the call must go on that B channel. + + chan_dahdi doesn't really need to issue a RESTART request in response to + receiving a cause 44 (Requested channel not available) code. Sending the + RESTART in such a situation is not required (nor prohibited) by the + standards. I think chan_dahdi does this for historical reasons to deal + with buggy peers to get channels unstuck in a similar fashion as the + chan_dahdi.conf resetinterval option. + + * Add the chan_dahdi.conf force_restart_unavailable_chans compatability + option that when disabled will prevent chan_dahdi from trying to RESTART + the channel in response to a cause 44 code. + + ASTERISK-25034 #close + Reported by: Richard Mudgett + + Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65 +2015-04-29 21:54 +0000 [556653d937] Rodrigo Ramírez Norambuena + + * cdr/cdr_csv.c: Refactor, function to write content of csv file. + + Create a function for write content of CDR on csv files. Before used same + code for write two distinct files (account and master cdr) instead use a + function for thats. + + Reduced to one lock when files are written. + + Change-Id: Idce707f4c108083252e0aeb948f421d924953e65 + +2015-04-30 06:04 +0000 [80aa9aee5d] Joshua Colp + + * res_pjsip_outbound_registration: Fix double unref on error return. + + When the PJSIP pjsip_regc_send function is invoked and an error + status returned the caller currently decrements the reference count + of the client state that it just incremented, assuming the + registration callback would not have been invoked. In practice + this is not correct. If the failure happens after the transaction + has been set up the callback will still be invoked. This will + cause the reference count to be incorrectly decremented twice, once + by the registration callback and second by the caller of + pjsip_regc_send. + + This change makes it so that whether the callback is invoked or + not is known by the caller of pjsip_regc_send. Depending on + this it can know whether it is responsible for decrementing the + reference count of the client state or not. + + ASTERISK-25037 #close + Reported by: Joshua Colp + + Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de + +2015-04-30 02:07 +0000 [7ff3b2d479] Rodrigo Ramírez Norambuena + + * include/asterisk/channel.h: Fix typo + + Change-Id: Ie584b85e16a94c255e60d0b1732ef9686464fef3 + +2015-04-29 16:15 +0000 [39d3e1ef6e] Matt Jordan + + * main/rtp_engine: Fix DTLS double-free introduced by 0b6410c4f8 + + The patch in 0b6410c4f8 did correctly fix a memory leak of the DTLS + structures in the RTP engine. However, when a 'core reload' is issued, a + double free of the memory pointed to by the char *'s in the DTLS + configuration struct can occur, as ast_rtp_dtls_cfg_free does not set + the pointers to NULL when they are freed. + + This patch sets those pointers to NULL, preventing a second call to + ast_rtp_dtls_cfg_free from corrupting memory. + + ASTERISK-25022 + + Change-Id: I820471e6070a37e3c26f760118c86770e12f6115 + +2015-04-29 13:05 +0000 [5d0c182885] Kevin Harwell + + * res_fax: allow 2400 transmission rate according to v.27ter standard + + A previous set of patches (see: ASTERISK-22790 & ASTERISK-23231) made it so + a v.27 modem was not allowed to have a minimum transmission rate of 2400 bits + per second. This reverts all or some of those patches since according to the + v.27ter standard a rate of 2400 bits per second is also supported. + + One of the original patches also added 9600 bits per second support for v.27. + This patch also removes that since v.27ter only supports 2400/4800 bits per + second. + + Also, since Asterisk specifically supports v.27ter the enum was renamed to + better reflect this. + + ASTERISK-24955 #close + Reported by: Matt Jordan + + Change-Id: I4b9dfb6bf7eff08463ab47ee1a74224f27cae733 + +2015-04-28 23:35 +0000 [c9c03998cc] Corey Farrell + + * Astobj2: Add ao2_weakproxy_ref_object function. + + This function allows code to run ao2_ref against the real + object associated with a weakproxy. It is useful when + all of the following conditions are true: + * You have a pointer to weakproxy. + * You do not have or need a pointer to the real object. + * You need to ensure the real object exists and is not + destroyed during a process. + + In this case it's wasteful to store a pointer to the real + object just for the sake of releasing it later. + + Change-Id: I38a319b83314de75be74207a8771aab269bcca46 + +2015-04-27 16:13 +0000 [4f1db2070d] Mark Michelson + + * res_pjsip_outbound_registration: Don't fail on delayed processing. + + Odd behaviors have been observed during outbound registrations. The most + common problem witnessed has been one where a request with + authentication credentials cannot be created after receiving a 401 + response. Other behaviors include apparently processing an incorrect SIP + response. + + Inspecting the code led to an apparent issue with regards to how we + handle transactions in outbound registration code. When a response to a + REGISTER arrives, we save a pointer to the transaction and then push a + task onto the registration serializer. Between the time that we save the + pointer and push the task, it's possible for the transaction to be + destroyed due to a timeout. It's also possible for the address to be + reused by the transaction layer for a new transaction. + + To allow for authentication of a REGISTER request to be authenticated + after the transaction has timed out, we now hold a reference to the + original REGISTER request instead of the transaction. The function for + creating a request with authentication has been altered to take the + original request instead of the transaction where the original request + was sent. + + ASTERISK-25020 + Reported by Mark Michelson + + Change-Id: I756c19ab05ada5d0503175db9676acf87c686d0a +2015-04-29 10:46 +0000 [ed5715eb39] Joshua Colp + + * res_sorcery_config: Fix build issue due to syntax error. + + Change-Id: Ic8322f04e37842848ad72cf2871bd0378f67c4ac + +2015-04-29 06:46 +0000 [f226bd6f60] Corey Farrell + + * ARI: Fix missing dependencies. + + ARI modules that are generated by 'make ari-stubs' are all dependent on + res_ari_model. Additionally some of the same modules depend on one or more + res_stasis_* modules. + + ASTERISK-25027 #close + Reported by: Corey Farrell + + Change-Id: I8e07fe7e81fedacb87232f2b6f8b5f47927b4153 + +2015-04-29 06:26 +0000 [881844297a] Corey Farrell + + * res_pjsip: Remove incorrect MODULEINFO from presence_xml.c. + + Remove incorrect MODULEINFO block and unneeded header includes + from presence_xml.c. + + ASTERISK-25027 + Reported by: Corey Farrell + + Change-Id: I977c609ab9d1fe05373027c4138900f6985990eb + +2015-04-29 06:17 +0000 [c232ff3af0] Corey Farrell + + * Git Migration: Create doc/rest-api when needed. + + Create the directory './doc/rest-api' at the start of 'make ari-stubs' + to prevent an error when documentation is generated. The directory is + also added to git ignores. + + ASTERISK-25027 + Reported by: Corey Farrell + + Change-Id: Iaccc7f0138501c23aa78feaca2f3cce9e68cbc1b + +2015-04-29 03:03 +0000 [5d997ecc83] Corey Farrell + + * Build System: Prevent unneeded changes to asterisk/buildopts.h. + + * Add AST_DEVMODE to BUILDOPTS + * Use BUILDOPTS to generate AST_BUILDOPT_SUM. + * Remove loop that defined AST_MODULE_* + + These changes ensure that only ABI effecting options are considered for + AST_BUILDOPT_SUM. This also reduces unneeded full system rebuilds caused + by enabling or disabling one module that another is dependent on. + + ASTERISK-25028 #close + Reported by: Corey Farrell + + Change-Id: I2c516d93df9f6aaa09ae079a8168c887a6ff93a2 + +2015-04-29 00:02 +0000 [55a780d211] Corey Farrell + + * Git Conversion: Switch Non-C files to ASTERISK_REGISTER_FILE. + + This switches files used to generate other sources to use the new + ASTERISK_REGISTER_FILE macro. + + ASTERISK-25026 #close + Reported by: Corey Farrell + + Change-Id: Ieb2537b83421cad07c8955e5f90c405ccf079740 + +2015-04-28 13:28 +0000 [5ebfed8ef3] Yousf Ateya + + * chan_iax2: Ensure that IAX flags are 64 bits. + + Flags are 64 bits. Without LLU suffix the value of 1<<31 is negative. + Although it doesn't have an effect on the current implementation, it will + be problem if more flags are added. + + Change-Id: Ic290c81cfbbbf062872392d99d3322932cc49487 +2015-04-28 00:29 +0000 [46cf643c75] Ashley Sanders + + * chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR + Sections Exist in pjsip.conf + + This patch modifies the current loading strategy of the pjsip configuration. If + duplicate sections (e.g. sections containing the same [id/type]) are defined in + [pjsip.conf], the loader will consider the configuration for the given type as + invalid when the duplicate section is encountered. The entire configuration + (including what was previously loaded) for the duplicate [id/type] sections + will be rejected and destroyed, an error message is logged and the load + processing for the given stops. + + ASTERISK-24996 + Reported By: Ashley Sanders + + Change-Id: I35090ca4cd40f1f34881dfe701a329145c347aef +2015-04-28 11:50 +0000 [0bbe2c35cf] Richard Mudgett + + * chan_vpb: Fix compile error due to use of ASTERISK_FILE_VERSION. + + Change-Id: I51179e2a83937423676da522b766f1126de4059e +2015-04-27 14:44 +0000 [f47fed2e12] Mark Michelson + + * res_pjsip_outbound_registration: Add debugging messages. + + When problems occur regarding outbound registrations, it currently + is difficult to debug. Most off-nominal paths had warning messages, + but sometimes we want to know what's going on before hitting the + off-nominal path. This patch adds lots of debugging output that + should give a clearer picture of what is happening with regards + to outbound registrations. + + ASTERISK-25020 + Reported by Mark Michelson + + Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45 + +2015-04-28 05:38 +0000 [5e96584829] Steve Davies + + * res_rtp_asterisk: Resolve 2 discrete memory leaks in DTLS + + ao2 ref leak in res_rtp_asterisk.c when a DTLS policy is created. + The resources are linked into a table, but the original alloc refs + are never released. ast_strdup leak in rtp_engine.c. If + ast_rtp_dtls_cfg_copy() is called twice on the same destination struct, + a pointer to an alloc'd string is overwritten before the string is free'd. + + ASTERISK-25022 + Reported by: one47 + + Change-Id: I62a8ceb8679709f6c3769136dc6aa9a68202ff9b + +2015-04-28 04:28 +0000 [d6a2d92353] Rodrigo Ramírez Norambuena + + * cdr/cdr_csv.c: Add missing space after comma. + + Change-Id: I3866a20019b1a3a2f10fe36640053929330b0fcb + +2015-04-27 22:01 +0000 [542bfee881] Rodrigo Ramírez Norambuena + + * CHANGES: Add missing spaces. + + Change-Id: I534ea0f22759e3633585dfa9b145b4a284efe67f + +2015-04-17 02:16 +0000 [5c1d07baf0] Corey Farrell + + * Astobj2: Allow reference debugging to be enabled/disabled by config. + + * The REF_DEBUG compiler flag no longer has any effect on code that uses + Astobj2. It is used to determine if reference debugging is enabled by + default. Reference debugging can be enabled or disabled in asterisk.conf. + * Caller information is provided in logger errors for ao2 bad magic numbers. + * Optimizes AO2 by merging internal functions with the public counterpart. + This was possible now that we no longer require a dual ABI. + + ASTERISK-24974 #close + Reported by: Corey Farrell + + Change-Id: Icf3552721fe999365ba8a8cf00a965aa6b897cc1 + +2015-04-27 12:11 +0000 [356568dc7f] George Joseph + + * res_pjsip: Fix SEGV on pending-qualify contacts + + Permanent contacts that hadn't been qualified yet were missing + their contact_status entries causing SEGVs when running CLI + commands. + + This patch makes sure that contact_statuses are created for + both dynamic and permanent contacts when they are created. + It also adds checks in the CLI code to make sure there's a + contact_status, just in case. + + ASTERISK-25018 #close + Reported-by: Ivan Poddubny + Tested-by: Ivan Poddubny + Tested-by: George Joseph + + Change-Id: I3cc13e5cedcafb24c400368b515b02d7fb81e029 + +2015-04-15 18:55 +0000 [358080e86e] Rodrigo Ramírez Norambuena + + * cdr/cdr_odbc.c: Added to record new columns add on CDR 1.8 Asterisk Version + + Add new column to INSERT new columns added in cdr 1.8 version. The columns are: + * peeraccount + * linkedid + * sequence + This feature is configurable in cdr_odbc.conf using a new configuration + option, 'newcdrcolumns'. + + ASTERISK-24976 #close + + Change-Id: Ibe0c7540a88305c6012786f438a0813ad8b19127 +2015-04-26 17:21 +0000 [d7f4788341] Matt Jordan + + * channels/chan_skinny: Fix compilation error introduced in f8e21a1adf + + A typo in commit f8e21a1adf resulted in a compilation error in + chan_skinny. This patch fixes the typo. + + ASTERISK-24917 + + Change-Id: Id7f4ad1fe948eb2408622e80c27936ce4516c33c + +2015-04-23 17:29 +0000 [9f65ea482e] Kevin Harwell + + * app_confbridge: Default the template option to a compatible default profile. + + Confbridge dynamic profiles did not have a default profile unless you + explicitly used Set(CONFBRIDGE(bridge,template)=default_bridge). If a + template was not set prior to the bridge being created then some + options were left with no default values set. This patch makes it so + the default templates are set to the default bridge and user profiles. + + ASTERISK-24749 #close + Reported by: philippebolduc + + Change-Id: I1bd6e94b38701ac2112d842db68de63d46f60e0a + +2015-04-23 07:31 +0000 [cafdb7a049] Olle E. Johansson + + * CREDITS: Update credits for Olle Johansson + + Change-Id: I8f3d0a6c3f1075a1f7d8308593394611a96749de +2015-04-24 09:17 +0000 [bd61c9300c] Mark Michelson + + * res_pjsip_outbound_authenticator: Increase CSeq on authed requests. + + The way PJSIP generates an authenticated request is to use a previous + request as a template. This means that the authenticated request will + have the same Call-ID, From header (including tag), and CSeq as the + original request. PJSIP generates a new branch on the Via header to + indicate that this is a new transaction, though. + + There are some SIP implementations, though, that do not notice the + change in the branch and therefore will match the authed request to the + original request's transaction. Since the CSeq is the same, the server + will repeat the response it sent to the original request. + + This patch aids interoperability by increasing the CSeq of the authed + request by one. + + ASTERISK-24845 #close + Reported by: Carl Fortin + Tested by: Carl Fortin + + Change-Id: I39c4ca52e688a9f83bcc1878371334becdc5be01 + +2015-04-22 04:17 +0000 [f8e21a1adf] Diederik de Groot + + * Clang: Fix some more tautological-compare warnings. + + clang can warn about a so called tautological-compare, when it finds + comparisons which are logically always true, and are therefor deemed + unnecessary. + + Exanple: + unsigned int x = 4; + if (x > 0) // x is always going to be bigger than 0 + + Enum Case: + Each enumeration is its own type. Enums are an integer type but they + do not have to be *signed*. C leaves it up to the compiler as an + implementation option what to consider the integer type of a particu- + lar enumeration is. Gcc treats an enum without negative values as + an int while clang treats this enum as an unsigned int. + + rmudgett & mmichelson: cast the enum to (unsigned int) in assert. + The cast does have an effect. For gcc, which seems to treat all enums + as int, the cast to unsigned int will eliminate the possibility of + negative values being allowed. For clang, which seems to treat enums + without any negative members as unsigned int, the cast will have no + effect. If for some reason in the future a negative value is ever + added to the enum the assert will still catch the negative value. + + ASTERISK-24917 + Change-Id: Ief23ef68916192b9b72dabe702b543ecfeca0b62 + +2015-04-20 13:06 +0000 [1e74793061] Diederik de Groot + + * Example script for scan-build (the llvm static analyzer) + + - Added Pre-amble (Options / Flags / Usage Example / GNU License) + - Extended Configurability + - Made Executable + + ASTERISK-24917 + Change-Id: I70405fe54e4be7dbfbcb62e291690069b88617a8 + +2015-04-23 12:54 +0000 [89a3fc0572] Mark Michelson + + * res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX. + + When Asterisk originates a channel to an application, the channel is + hung up once the application finishes executing. When the application + in question is SendFax, the Asterisk PJSIP code will attempt to reinvite + the T.38 session to audio after the FAX completes. The hangup of the + channel happens in the midst of this reinvite transaction. In most + circumstances, this works out okay because the BYE is delayed until the + reinvite transaction can complete. + + However, if the reinvite that Asterisk sends receives a 401/407 + response, then Asterisk's attempt to re-send the reinvite with + authentication will fail. This is because the session supplement in + res_pjsip_t38 makes the assumption that the channel on the session will + always be non-NULL. Since the channel has been hung up, though, the + channel is now NULL. Attempting to operate on the channel causes a + crash. + + This patch fixes the issue by ensuring that the channel on the session + is not NULL before attempting to mess with the T.38 framehook. + + This patch also contains some corrections for comments that were + incorrect and really confused me when I first started looking at the + code. + + ASTERISK-25004 #close + Reported by Mark Michelson + + Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0 + +2015-04-23 09:16 +0000 [75666ad7c6] George Joseph + + * res_pjsip: Validate that contact uris start with sip: or sips: + + Currently we use pjsip_parse_hdr to validate contact uris but it + appears that it allows uris without a scheme if there's a port + supplied. I.E myexample.com will fail but myexample.com:5060 will + pass even though it has no scheme. This causes SEGVs later on + whenever the uri is used. + + To prevent this, permanent_contact_validate has been updated to check + that the scheme is either 'sip' or 'sips'. + + 2 uses of possibly-null endpoint have also been fixed in + create_out_of_dialog_request. + + ASTERISK-24999 + + Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2 + Reported-by: Brad Latus + +2015-04-23 08:00 +0000 [ca7193167e] Diederik de Groot + + * Clang: change previous tautological-compare fixes. + + clang can warn about a so called tautological-compare, when it finds + comparisons which are logically always true, and are therefor deemed + unnecessary. + + Exanple: + unsigned int x = 4; + if (x > 0) // x is always going to be bigger than 0 + + Enum Case: + Each enumeration is its own type. Enums are an integer type but they + do not have to be *signed*. C leaves it up to the compiler as an + implementation option what to consider the integer type of a particu- + lar enumeration is. Gcc treats an enum without negative values as + an int while clang treats this enum as an unsigned int. + + rmudgett & mmichelson: cast the enum to (unsigned int) in assert. + The cast does have an effect. For gcc, which seems to treat all enums + as int, the cast to unsigned int will eliminate the possibility of + negative values being allowed. For clang, which seems to treat enums + without any negative members as unsigned int, the cast will have no + effect. If for some reason in the future a negative value is ever + added to the enum the assert will still catch the negative value. + + ASTERISK-24917 + + Change-Id: I0557ae0154a0b7de68883848a609309cdf0aee6a + +2015-04-22 16:22 +0000 [cc77440deb] George Joseph + + * res_corosync: Add check for config file before calling corosync apis + + On some systems, res_corosync isn't compatible with the installed version of + corosync so corosync_cfg_initialize fails, load_module returns LOAD_FAILURE, + and Asterisk terminates. The work around has been to remember to add + res_corosync as a noload in modules.conf. A better solution though is to have + res_corosync check for its config file before attempting to call corosync apis + and return LOAD_DECLINE if there's no config file. This lets Asterisk loading + continue. + + If you have a res_corosync.conf file and res_corosync fails, you get the same + behavior as today and the fatal error tells you something is wrong with the + install. + + ASTERISK-24998 + + Change-Id: Iaf94a9431a4922ec4ec994003f02135acfdd3889 +2015-04-22 15:17 +0000 [c231c85ea4] Corey Farrell + + * Astobj2: Ensure all calls to __adjust_lock pass a valid object. + + __adjust_lock doesn't check for invalid objects, and doesn't have an + appropriate return value for invalid objects. Most callers of + __adjust_lock pass objects that have already been confirmed valid, + this change adds checks before the remaining calls. + + ASTERISK-24997 #close + Reported by: Corey Farrell + + Change-Id: I669100f87937cc3f867cec56a27ae9c01292908f + +2015-04-22 16:32 +0000 [0722e11f26] George Joseph + + * .gitignore: Add .gcno and .gcda + + Products of --enable-coverage + + Change-Id: Ie20882d64b60692e2c941ea8872ab82a86ce77a3 + +2015-04-22 11:28 +0000 [7216e3c608] Joshua Colp + + * dns: Make query sets hold on to queries for their lifetime. + + The query set documentation states that upon completion queries can be + retrieved for the lifetime of the query set. This is a reasonable + expectation but does not currently occur. This was originally done + to resolve a circular reference between queries and query sets, but + in practice the query can be kept. + + This change makes it so a query does not have a reference to the + query set until it begins resolving. It also makes it so that the + reference is given up upon the query being completed. This allows + the queries to remain for the lifetime of the query set. As the + query set on the query is only useful to the query set functionality + and only for the lifetime that the query is resolving this is safe + to do. + + ASTERISK-24994 #close + Reported by: Joshua Colp + + Change-Id: I54e09c0cb45475896654e7835394524e816d1aa0 + +2015-04-20 13:01 +0000 [09c7c678a3] Diederik de Groot + + * Fix/Update clang-RAII macro implementation + + - When you need to refer to 'variable XXX' outside a block, it needs + to be declared as '__block XXX', otherwise it will not be available with- + in the block, making updating that variable hard to do, and ast_free + lead to issues. + + - Removed the #error message + because it creates complications when compiling external projects + against asterisk For example when using a different compiler than the + one used to compile asterisk. The warning/error should be generated + during the configure process not the compilation process + + ASTERISK-24917 + Change-Id: I12091228090e90831bf2b498293858f46ea7a8c2 + +2015-04-14 14:04 +0000 [190fa4f333] Joshua Colp + + * res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers. + + Currently the res_pjsip_mwi module only sends an unsolicited MWI NOTIFY upon + a mailbox state change (such as a new message being left, or one being deleted). + In practice this is not sufficient to keep clients aware of the current MWI status. + + This change makes the module send unsolicited MWI NOTIFY on startup so that + clients are guaranteed to have the most up to date MWI information. It also makes + clients receive an unsolicited MWI NOTIFY upon registration so if they are unaware + of the current MWI status they receive it. + + ASTERISK-24982 #close + Reported by: Joshua Colp + + Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58 + +2015-04-21 17:45 +0000 [2a36bb5d9a] Rodrigo Ramírez Norambuena + + * CHANGES remove tab space + + Change-Id: I6b43e43474bf6fb77b8227eadb036036f8e90521 + +2015-04-21 15:17 +0000 [5757d2d30d] Corey Farrell + + * Check for ao2_alloc failure in __ast_channel_internal_alloc. + + Fix a crash that could occur in __ast_channel_internal_alloc if + ao2_alloc fails. + + ASTERISK-24991 #close + + Change-Id: I4ca89189eb22f907408cb87d0a1645cfe1314a90 + +2015-04-20 14:30 +0000 [6331be0638] Mark Michelson + + * res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs. + + When SUBSCRIBE dialogs were established, we never associated + the endpoint that created the subscription with the dialog + we end up creating. In most cases, this ended up not causing + any problems. + + The actual bug that was observed was that when a device that + was behind NAT established a subscription with Asterisk, Asterisk + would end up sending in-dialog NOTIFY requests to the device's + private IP addres instead of the public address of the NAT router. + + When Asterisk receives the initial SUBSCRIBE from the device, + res_pjsip_nat rewrites the contact to the public address on which the + SUBSCRIBE was received. This allows for the dialog to have its target + address set to the proper public address. Asterisk then would send a 200 + OK response to the SUBSCRIBE, then a NOTIFY with the initial + subscription state. The device would then send a 200 OK response to + Asterisk's NOTIFY. + + Here's where things went wrong. When the 200 OK arrived, res_pjsip_nat + did not rewrite the address in the Contact header. Then, when the PJSIP + dialog layer processed the 200 OK, PJSIP would perform a comparison + between the IP address in the Contact header and its saved target + address for the dialog. Since they differed, PJSIP would update the + target dialog address to be the address in the Contact header. From this + point, if Asterisk needed to send a NOTIFY to the device, the result was + that the NOTIFY would be sent to the private address that the device + placed in the Contact header. + + The reason why res_pjsip_nat did not rewrite the address when it + received the 200 OK response was that it could not associate the + incoming response with a configured endpoint. This is because on a + response, the only way to associate the response to an endpoint is by + finding the dialog that the response is associated with and then finding + the endpoint that is associated with that dialog. We do not perform + endpoint lookups on responses. res_pjsip_pubsub skipped the step of + associating the endpoint with the dialog we created, so res_pjsip_nat + could not find the associated endpoint and therefore couldn't rewrite + the contact. + + This commit message is like 50x longer than the actual fix. + + ASTERISK 24981 #close + Reported by Mark Michelson + + Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd +2015-04-16 22:34 +0000 [2f418c052e] Gareth Palmer + + * New AMI Command Output Format + + This change modifies how the the output from a CLI command is sent + to a client over AMI. + + Output from the CLI command is now sent as a series of zero-or-more + Output: headers. + + Additionally, commands that fail to execute (eg: no such command, + invalid syntax etc.) now cause an Error response instead of Success. + + If the command executed successfully, but the manager unable to + provide the output the reason will be included in the Message: + header. Otherwise it will contain 'Command output follows'. + + Depends on a new version of starpy (> 1.0.2) that supports the new + output format. + + See pull-request https://github.com/asterisk/starpy/pull/34 + + ASTERISK-24730 + + Change-Id: I6718d95490f0a6b3f171c1a5cdad9207f9a44888 +2015-04-20 18:00 +0000 [614f506690] Richard Mudgett + + * chan_dahdi/sig_pri: Make post AMI HangupRequest events on PRI channels. + + The chan_dahdi channel driver is a very old driver. The ability for it to + support ISDN was added well after the initial analog support. Setting the + softhangup flags is a carry over from the original analog code. The + driver was not updated to call ast_queue_hangup() which will post the AMI + HangupRequest event. + + * Changed sig_pri.c to call ast_queue_hangup() instead of setting the + softhangup flag when the remote party initiates a hangup. + + ASTERISK-24895 #close + Reported by: Andrew Zherdin + + Change-Id: I5fe2e48556507785fd8ab8e1c960683fd5d20325 + +2015-04-20 13:40 +0000 [bff3064578] Rodrigo Ramírez Norambuena + + * cdr/cdr_adaptive_odbc.c: Refactor concatenate columns name. + + The concatenate for columns name to INSERT INTO is always the same. It is + possible to do it on one line. + + ASTERISK-24980 + + Change-Id: Ib8bb53c42535378581d4ef729cc5ebbb22b067ac +2015-04-20 09:53 +0000 [06ba1e59cb] George Joseph + + * pjsip_options: Fix format specifier for int64_t rtt. + + Contact status rtt is an int64_t and needs the PRId64 macro to + properly create the format specifier on 32-bit systems. + + Change-Id: I4b8ab958fc1e9a179556a9b4ffa49673ba9fdec7 + +2015-04-18 13:36 +0000 [298faf7c50] George Joseph + + * pjsip_options: Fix non-qualified contacts showing as unavailable + + The "Add qualify_timeout processing and eventing" patch introduced + an issue where contacts that had qualify_frequency set to 0 were + showing Unavailable instead Unknown. This patch checks for + qualify_frequency=0 and create an "Unknown" contact_status + with an RTT = 0. + + Previously, the lack of contact_status implied Unknown but since + we're now changing endpoint state based on contact_status, I've + had to add new UNKNOWN status so that changes could trigger the + appropriate contact_status observers. + + ASTERISK-24977: #close + + Change-Id: Ifcbc01533ce57f0e4e584b89a395326e098b8fe7 + +2015-04-19 15:49 +0000 [8e903b17ea] Matt Jordan + + * main/pbx: Don't attempt to destroy a previously destroyed exten/priority tuple + + When a PBX registrar is unloaded, it will fail to remove its extension from + the context root_table if a dialplan application used by that extension is + still loaded. This can be the case for AGI, which can be unloaded after several + of the standard PBX providers. Often, this is harmless; however, if the + extension's priorities are removed during the failed unloading *and* the + dialplan application later unregisters, it leaves a ticking timebomb for the + next PBX provider that attempts to iterate over the extensions. When that + occurs, the peer_table pointer on the extension will already be set to NULL. + The current code does not check to see if the pointer is NULL before passing + it to a hashtab function this is not NULL tolerant. + + Since it is possible for the peer_table to be NULL when we normally would not + expect that to be the case, the solution in this patch is to simply skip over + processing an extension's priorities if peer_table is NULL. + + Prior to this patch, the tests/pbx/callerid_match test would crash during + module unload. With this patch, the test no longer crashes after running. + + ASTERISK-24774 #close + Reported by: Corey Farrell + + Change-Id: I2bbeecb7e0f77bac303a1b9135e4cdb4db6d4c40 + +2015-04-17 18:05 +0000 [1269dd06bc] Richard Mudgett + + * res_fax: Fix latent bug exposed by ASTERISK-24841 changes. + + Three fax related tests started failing as a result of changes made for + ASTERISK-24841: + tests/fax/pjsip/gateway_t38_g711 + tests/fax/sip/gateway_mix1 + tests/fax/sip/gateway_mix3 + + Historically, ast_channel_make_compatible() did nothing if the channels + were already "compatible" even if they had a sub-optimal translation path + already setup. With the changes from ASTERISK-24841 this is no longer + true in order to allow the best translation paths to always be picked. In + res_fax.c:fax_gateway_framehook() code manually setup the channels to go + through slin and then called ast_channel_make_compatible(). With the + previous version of ast_channel_make_compatible() this was always a + no-operation. + + * Remove call to ast_channel_make_compatible() in fax_gateway_framehook() + that now undoes what was just setup when the framehook is attached. + + * Fixed locking around saving the channel formats in + fax_gateway_framehook() to ensure that the formats that are saved are + consistent. + + * Fix copy pasta errors in fax_gateway_framehook() that confuses read and + write when dealing with saved channel formats. + + ASTERISK-24841 + Reported by: Matt Jordan + + Change-Id: I6fda0877104a370af586a5e8cf9e161a484da78d + +2015-04-17 16:19 +0000 [c1d44ff043] Corey Farrell + + * Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled. + + When DEBUG_THREADLOCALS is enabled it causes the threadlocal cleanup to be + called as a function. This causes a compile error with raw threadstorage as + it uses NULL for cleanup. This fix uses a macro that provides NULL when + DEBUG_THREADLOCALS is disabled, and replaces the call to "c_cleanup(data);" + with "{};" when DEBUG_THREADLOCALS is enabled. + + ASTERISK-24975 #close + Reported by: Ashley Sanders + + Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402 + +2015-04-15 10:38 +0000 [aae45acbda] Mark Michelson + + * Detect potential forwarding loops based on count. + + A potential problem that can arise is the following: + + * Bob's phone is programmed to automatically forward to Carol. + * Carol's phone is programmed to automatically forward to Bob. + * Alice calls Bob. + + If left unchecked, this results in an endless loops of call forwards + that would eventually result in some sort of fiery crash. + + Asterisk's method of solving this issue was to track which interfaces + had been dialed. If a destination were dialed a second time, then + the attempt to call that destination would fail since a loop was + detected. + + The problem with this method is that call forwarding has evolved. Some + SIP phones allow for a user to manually forward an incoming call to an + ad-hoc destination. This can mean that: + + * There are legitimate use cases where a device may be dialed multiple + times, or + * There can be human error when forwarding calls. + + This change removes the old method of detecting forwarding loops in + favor of keeping a count of the number of destinations a channel has + dialed on a particular branch of a call. If the number exceeds the + set number of max forwards, then the call fails. This approach has + the following advantages over the old: + + * It is much simpler. + * It can detect loops involving local channels. + * It is user configurable. + + The only disadvantage it has is that in the case where there is a + legitimate forwarding loop present, it takes longer to detect it. + However, the forwarding loop is still properly detected and the + call is cleaned up as it should be. + + Address review feedback on gerrit. + + * Correct "mfgium" to "Digium" + * Decrement max forwards by one in the case where allocation of the + max forwards datastore is required. + * Remove irrelevant code change from pjsip_global_headers.c + + ASTERISK-24958 #close + + Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23 +2015-04-16 10:51 +0000 [56a2baa21d] Kevin Harwell + + * bridge.c: NULL app causes crash during attended transfer + + Due to a race condition there was a chance that during an attended transfer the + channel's application would return NULL. This, of course, would cause a crash + when attempting to access the memory. This patch retrieves the channel's app + at an earlier time in processing in hopes that the app name is available. + However, if it is not then "unknown" is used instead. Since some string value + is now always present the crash can no longer occur. + + ASTERISK-24869 #close + Reported by: viniciusfontes + Review: https://gerrit.asterisk.org/#/c/133/ + + Change-Id: I5134b84c4524906d8148817719d76ffb306488ac + +2015-04-11 17:04 +0000 [c6ed681638] George Joseph + + * res_pjsip: Add global option to limit the maximum time for initial qualifies + + Currently when Asterisk starts initial qualifies of contacts are spread out + randomly between 0 and qualify_timeout to prevent network and system overload. + If a contact's qualify_frequency is 5 minutes however, that contact may be + unavailable to accept calls for the entire 5 minutes after startup. So while + staggering the initial qualifies is a good idea, basing the time on + qualify_timeout could leave contacts unavailable for too long. + + This patch adds a new global parameter "max_initial_qualify_time" that sets the + maximum time for the initial qualifies. This way you could make sure that all + your contacts are initialy, randomly qualified within say 30 seconds but still + have the contact's ongoing qualifies at a 5 minute interval. + + If max_initial_qualify_time is > 0, the formula is initial_interval = + min(max_initial_interval, qualify_timeout * random(). If not set, + qualify_timeout is used. + + The default is "0" (disabled). + + ASTERISK-24863 #close + + Change-Id: Ib80498aa1ea9923277bef51d6a9015c9c79740f4 + Tested-by: George Joseph + +2015-04-16 13:20 +0000 [664d3263e4] Scott Griepentrog + + * res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced + + This change makes the send_notify of the sub_tree + not happen when the sub_tree has been deleted due + to the notify call failing, which avoids a crash. + + ASTERISK-24970 #close + + Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf +2015-04-11 16:56 +0000 [51886c68dc] George Joseph + + * pjsip_options: Add qualify_timeout processing and eventing + + This is the second follow-on to https://reviewboard.asterisk.org/r/4572/ and the + discussion at + http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html + + The basic issues are that changes in contact status don't cause events to be + emitted for the associated endpoint. Only dynamic contact add/delete actions + update the endpoint. Also, the qualify timeout is fixed by pjsip at 32 seconds + which is a long time. + + This patch makes use of the new transaction timeout feature in r4585 and + provides the following capabilities... + + 1. A new aor/contact variable 'qualify_timeout' has been added that allows the + user to specify the maximum time in milliseconds to wait for a response to an + OPTIONS message. The default is 3000ms. When the timer expires, the contact is + marked unavailable. + + 2. Contact status changes are now propagated up to the endpoint as follows... + When any contact is 'Available', the endpoint is marked as 'Reachable'. When + all contacts are 'Unavailable', the endpoint is marked as 'Unreachable'. The + existing endpoint events are generated appropriately. + + ASTERISK-24863 #close + + Change-Id: Id0ce0528e58014da1324856ea537e7765466044a + Tested-by: Dmitriy Serov + Tested-by: George Joseph + +2015-04-11 16:39 +0000 [ab6382cafd] George Joseph + + * res_pjsip: Refactor endpt_send_request to include transaction timeout + + This is the first follow-on to https://reviewboard.asterisk.org/r/4572/ and the + discussion at + http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html + + Since we currently have no control over pjproject transaction timeout, this + patch pulls the pjsip_endpt_send_request function out of pjproject and into + res_pjsip/endpt_send_transaction in order to implement that capability. + + Now when the transaction is initiated, we also schedule our own pj_timer with + our own desired timeout. + + If the transaction completes before either timeout, pjproject cancels its timer, + and calls our tsx callback where we cancel our timer and run the app callback. + + If the pjproject timer times out first, pjproject calls our tsx callback where + we cancel our timer and run the app callback. + + If our timer times out first, we terminate the transaction which causes + pjproject to cancel its timer and call our tsx callback where we run the app + callback. + + Regardless of the scenario, pjproject is calling the tsx callback inside the + group_lock and there are checks in the callback to make sure it doesn't run + twice. + + As part of this patch ast_sip_send_out_of_dialog_request was created to replace + its similarly named private function. It takes a new timeout argument in + milliseconds (<= 0 to disable the timeout). + + ASTERISK-24863 #close + Reported-by: George Joseph + Tested-by: George Joseph + + Change-Id: I0778dc730d9689c5147a444a04aee3c1026bf747 +2015-04-15 16:08 +0000 [043c38f6de] George Joseph + + * More .gitignore updates + + Added .pyc and .sha1 to the top-level .gitignore. + + Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a + Tested-by: George Joseph + +2015-04-14 02:36 +0000 [abf10a1d4c] Corey Farrell + + * Build System: Enable use of ~/.asterisk.makeopts and /etc/asterisk.makeopts. + + The Makefile claims that you can set default menuselect options by creating + ~/.asterisk.makeopts or /etc/asterisk.makeopts, but they are never read. + The rule for menuselect.makeopts is only allowed to run if the active target + is 'menuselect', but the menuselect target doesn't depend on + menuselect.makeopts. A dot (wildcard character) was added so the rule will + be active for the targets that cause it to run: nmenuselect, cmenuselect, + and gmenuselect. + + ASTERISK-13271 #close + Reported by: John Nemeth + + Change-Id: Ibde804ff196283def49ccb9432fbf224a22586e2 +2015-04-13 08:47 +0000 [a3cec44a0a] Joshua Colp + + * res_pjsip: Add external PJSIP resolver implementation using core DNS API. + + This change adds the following: + + 1. A query set implementation. This is an API that allows queries to be executed in parallel and once all have completed a callback is invoked. + 2. Unit tests for the query set implementation. + 3. An external PJSIP resolver which uses the DNS core API to do NAPTR, SRV, AAAA, and A lookups. + + For the resolver it will do NAPTR, SRV, and AAAA/A lookups in parallel. If NAPTR or SRV + are available it will then do more queries. And so on. Preference is NAPTR > SRV > AAAA/A, + with IPv6 preferred over IPv4. For transport it will prefer TLS > TCP > UDP if no explicit + transport has been provided. Configured transports on the system are taken into account to + eliminate resolved addresses which have no hope of completing. + + ASTERISK-24947 #close + Reported by: Joshua Colp + + Change-Id: I56cb03ce4f9d3d600776f36928e0b3e379b5d71e + +2015-04-14 13:16 +0000 [33a319ae73] Rodrigo Ramírez Norambuena + + * cel_pgsql: Fix name string for log on unable allocate memory. + + The LOG_ERROR has reference to CDR instead of CEL for LENGTHEN_BUF1 and + LENGTHEN_BUF2. + + ASTERISK-24965 #close + Reported by: Rodrigo Ramirez Norambuena + + Change-Id: Icc818697d7d66d34bfe3048cdd15ca2b06c89744 +2015-04-14 15:59 +0000 [f89481e39c] Corey Farrell + + * test_astobj2_weaken: Fix source file registration. + + Update test_astobj2_weaken to use the new AST_REGISTER_FILE macro. + + Change-Id: Ieedadf16610f2e042f393e0501a36447cd07f83d + +2015-04-13 05:28 +0000 [62508d6891] Corey Farrell + + * Build System: Create Makefile macro MOD_ADD_SOURCE. + + This new macro allows a single line to add all additional + sources to a module. This helps prevent modules from + missing steps, and makes future changes easier since + they can be made in a single place. + + ASTERISK-24960 #close + Reported by: Corey Farrell + + Change-Id: I38f12d8b72c5e7bb37a879b2fb51761a2855eb4b + +2015-04-12 09:08 +0000 [23a180cade] Rodrigo Ramírez Norambuena + + * cdr_pgsql: Fix CLI "cdr show pgsql status" command. + + The command always showed the usage information. + + * Fix the error in command validation for CLI_SHOWUSAGE. + + ASTERISK-24959 #close + Reported by: Rodrigo Ramirez Norambuena + + Change-Id: I584f0936bb01001336a468a55c1d05d79fe795d5 +2015-04-13 19:06 +0000 [bf46ef35ca] George Joseph + + * .gitignore updates for master/13 + + Added products of ./bootstrap + + Added nmenuselect and gmenuselect to menuselect/ + + Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35 + +2015-04-13 06:52 +0000 [62e95065d6] Corey Farrell + + * AMI: Fix improper handling of lines that are exactly 1025 bytes long. + + When AMI receives a line that is 1025 bytes long, it sends two error + messages. Copy the last byte in the buffer to the first postiion, + set the length to 1. + + ASTERISK-20524 #close + Reported by: David M. Lee + + Change-Id: Ifda403e2713b59582c715229814fd64a0733c5ea + +2015-04-12 03:22 +0000 [cb6bf3094e] Corey Farrell + + * astobj2: Add support for weakproxy objects. + + This implements "weak" references. The weakproxy object is a real ao2 with + normal reference counting of its own. When a weakproxy is pointed to a normal + object they hold references to each other. The normal object is automatically + freed when a single reference remains (the weakproxy). The weakproxy also + supports subscriptions that will notify callbacks when it does not point + to any real object. + + ASTERISK-24936 #close + Reported by: Corey Farrell + + Change-Id: Ib9f73c02262488d314d9d9d62f58165b9ec43c67 + +2015-04-13 14:41 +0000 [a573b77f78] David M. Lee + + * Fixing extconf compile + + During the mass code deletion for clang support, a stray backslash was + left behind that was causing utils to fail to compile. + + Change-Id: I60e5fa58c9a5b248bde23aaada79ff663f87a2a1 + +2015-04-13 09:54 +0000 [3f9aa29945] Matt Jordan + + * build_tools/make_version: Update version parsing for Git migration + + External systems - such as the Asterisk Test Suite - require knowledge of the + upstream branch. Unfortunately, after moving to Git, the Asterisk version + currently consists of only a 'GIT" prefix followed by an object blob, + e.g., GIT-as08d7. This makes it difficult for such systems to know what + features are available in a particular check out of Asterisk. + + This patch fixes this by hardcoding the branch in a variable in the + make_version script. Since the mainline branches are not changed often - + typically only once a year - this is a reasonable approach to solving + the problem, and is more reliable than parsing the output of 'git branch + -vv'. Branches that track off of an upstream primary branch will then get the + benefit of knowing which mainline branch they are currently based off + of. + + ASTERISK-24954 #close + + Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799 + +2015-04-13 05:57 +0000 [fbc8ddfe63] Corey Farrell + + * Optional API: Fix handling of sources that are both provider and user. + + OPTIONAL_API has conditionals to define AST_OPTIONAL_API and + AST_OPTIONAL_API_ATTR differently based on if AST_API_MODULE is defined. + Unfortunately this is inside the include protection block, so only the + first status of AST_API_MODULE is respected. For example res_monitor + is an optional API provider, but uses func_periodic_hook. This makes + func_periodic_hook non-optional to res_monitor. + + This changes optional_api.h so that AST_OPTIONAL_API and + AST_OPTIONAL_API_ATTR is redefined every time the header is included. + + ASTERISK-17608 #close + Reported by: Warren Selby + + Change-Id: I8fcf2a5e7b481893e17484ecde4f172c9ffb5679 + +2015-04-11 21:38 +0000 [4a58261694] Matt Jordan + + * git migration: Refactor the ASTERISK_FILE_VERSION macro + + Git does not support the ability to replace a token with a version + string during check-in. While it does have support for replacing a + token on clone, this is somewhat sub-optimal: the token is replaced + with the object hash, which is not particularly easy for human + consumption. What's more, in practice, the source file version was often + not terribly useful. Generally, when triaging bugs, the overall version + of Asterisk is far more useful than an individual SVN version of a file. As a + result, this patch removes Asterisk's support for showing source file + versions. + + Specifically, it does the following: + + * Rename ASTERISK_FILE_VERSION macro to ASTERISK_REGISTER_FILE, and + remove passing the version in with the macro. Other facilities + than 'core show file version' make use of the file names, such as + setting a debug level only on a specific file. As such, the act of + registering source files with the Asterisk core still has use. The + macro rename now reflects the new macro purpose. + + * main/asterisk: + - Refactor the file_version structure to reflect that it no longer + tracks a version field. + - Remove the "core show file version" CLI command. Without the file + version, it is no longer useful. + - Remove the ast_file_version_find function. The file version is no + longer tracked. + - Rename ast_register_file_version/ast_unregister_file_version to + ast_register_file/ast_unregister_file, respectively. + + * main/manager: Remove value from the Version key of the ModuleCheck + Action. The actual key itself has not been removed, as doing so would + absolutely constitute a backwards incompatible change. However, since + the file version is no longer tracked, there is no need to attempt to + include it in the Version key. + + * UPGRADE: Add notes for: + - Modification to the ModuleCheck AMI Action + - Removal of the "core show file version" CLI command + + Change-Id: I6cf0ff280e1668bf4957dc21f32a5ff43444a40e + +2015-04-12 06:12 +0000 [5d34bce635] Corey Farrell + + * main/editline: Add .gitignore. + + This patch adds a .gitignore for main/editline to ignore all build results. + + Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d + +2015-04-11 23:22 +0000 [d6605b3c10] Matt Jordan + + * .gitignore: Ignore tarballs (*.gz) + + This patch updates the root .gitignore file to ignore files with a .gz + extension. This will cause git to ignore downloaded sound tarballs in + the the sounds/ directory. + + Change-Id: Ie84f085cc0fa51262209e7bfc1b1ba8c04a1ef59 + +2015-04-11 13:20 +0000 [b35e184d41] George Joseph + + * Add .gitignore and .gitreview files + + Add the .gitignore and .gitreview files to the asterisk repo. + + NB: You can add local ignores to the .git/info/exclude file + without having to do a commit. + + Common ignore patterns are in the top-level .gitignore file. + Subdirectory-specific ignore patterns are in their own .gitignore + files. + + Change-Id: I842a1588ff27d8a0189f12d597f0a7af033d6c69 + Tested-by: George Joseph + +2015-04-11 10:27 +0000 [356b770632] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix various warnings for tests + + This patch fixes a variety of clang compiler warnings for unit tests. This + includes autological comparison issues, ignored return values, and + interestingly enough, one embedded function. Fun! + + Review: https://reviewboard.asterisk.org/r/4555 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4555.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434705 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434706 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434707 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-11 10:11 +0000 [5f181bcccd] Juergen Spies (License 6698) + + * res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram + + Prior to this patch, the far_max_datagram value on the UDPTL structure would + remain -1 if the remote endpoint fails to provide the SDP media attribute + T38FaxMaxDatagram. This can result in the INVITE request being rejected. With + this patch, we will now properly initialize the value with either the default + value or with the value provided by pjsip.conf's t38_udptl_maxdatagram + parameter. + + Review: https://reviewboard.asterisk.org/r/4589 + + ASTERISK-24928 #close + Reported by: Juergen Spies + Tested by: Juergen Spies + patches: + pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698) + ........ + + Merged revisions 434688 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434689 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 18:37 +0000 [c499cabf53] Richard Mudgett + + * chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices. + + With this patch, chan_pjsip/res_pjsip now sets the native formats to the + codecs negotiated by a call. + + * The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native + formats to include all the negotiated audio codecs instead of only the + initial preferred audio codec and later the currently received audio + codec. + + * The audio frame handling in channel.c:ast_read() is more streamlined and + will automatically adjust to changes in received frame formats. The new + policy is to remove translation and pass the new frame format to the + receiver except if the translation was to a signed linear format. A more + long winded version is commented in ast_read() along with some caveats. + + * The audio frame handling in channel.c:ast_write() is more streamlined + and will automatically adjust any needed translation to changes in the + frame formats sent. Frame formats sent can change for many reasons such + as a recording is being played back or the bridged peer changed the format + it sends. Since it is a normal expectation that sent formats can change, + the codec mismatch warning message is demoted to a debug message. + + * Removed the short circuit check in + channel.c:ast_channel_make_compatible_helper(). Two party bridges need to + make channels compatible with each other. However, transfers and moving + channels among bridges can result in otherwise compatible channels having + sub-optimal translation paths if the make compatible check is short + circuited. A result of forcing the reevaluation of channel compatibility + is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc + options take effect consistently now. It is unfortunate that these two + options are enabled by default and negate some of the benefits to the + changes in channel.c:ast_read() by forcing translation through signed + linear on a two party bridge. + + * Improved the softmix bridge technology to better control the translation + of frames to the bridge. All of the incoming translation is now normally + handled by ast_read() instead of splitting any translation steps between + ast_read() and the slin factory. If any frame comes in with an unexpected + format then the translation path in ast_read() is updated for the next + frame and the slin factory handles the current frame translation. + + This is the final patch in a series of patches aimed at improving + translation path choices. The other patches are on the following reviews: + https://reviewboard.asterisk.org/r/4600/ + https://reviewboard.asterisk.org/r/4605/ + + ASTERISK-24841 #close + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4609/ + ........ + + Merged revisions 434671 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434672 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 16:06 +0000 [66f3fd0028] Kevin Harwell + + * chan_sip: make progressinband default to no + + After the "progressinband" value setting of "never" was updated to never send a + 183 this separated its use from the "no" value. Since "never" was the default, + but most users probably expect "no" this patch updates the default for the + "progressinband" setting to "no." + + ASTERISK-24835 #close + Reported by: Andrew Nagy + Review: https://reviewboard.asterisk.org/r/4606/ + ........ + + Merged revisions 434654 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434655 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 12:56 +0000 [8bae18ab93] yaron nahum (License 6676) + + * res_pjsip: Add an 'auto' option for DTMF Mode + + This patch adds support for automatically detecting the type of DTMF that a + PJSIP endpoint supports. When the 'dtmf_mode' endpoint option is set to 'auto', + the channel created for an endpoint will attempt to determine if RFC 4733 + DTMF is supported. If so, it will use that DTMF type. If not, the DTMF type + for the channel will be set to inband. + + Review: https://reviewboard.asterisk.org/r/4438 + + ASTERISK-24706 #close + Reported by: yaron nahum + patches: + yaron_patch_3_Feb.diff submitted by yaron nahum (License 6676) + ........ + + Merged revisions 434637 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434638 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 12:00 +0000 [f69e46de25] George Joseph + + * res_pjsip_config_wizard: Cleanup load unload + + While investigating other unload issues I realized that the load/unload process + for the config wizard was pretty ugly so I've refactored it as follows... + + When the res_pjsip sorcery instance is created the config_wizard bumps it's own + module reference to prevent it from unloading while the sorcery instance is + still active. When res_pjsip unloads and it's sorcery instance is destroyed, + the config wizard unrefs itself which then allows itself to unload cleanly. + Since the config wizard now can't load after res_pjsip or unload before it + (which should have been the correct behavior all along), I was able to remove + the chunks of code in both load_module and unload_module that handled that case. + + Ran the testsuite tests to insure there were no functional changes and REF_DEBUG + to insure that Asterisk was shutting down cleanly with no FRACKs or leaks. + + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4610/ + ........ + + Merged revisions 434619 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434620 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 11:38 +0000 [6f1a7fe05f] Richard Mudgett + + * bridge_softmix.c,channel.c: Minor code simplification and cleanup. + + * Made code easier to follow in bridge_softmix.c:analyse_softmix_stats() + and made some debug messages more helpful. + + * Made some debug and warning messages more helpful in + channel.c:set_format(). + + Review: https://reviewboard.asterisk.org/r/4607/ + ........ + + Merged revisions 434617 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434618 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 11:32 +0000 [0b805cb875] Richard Mudgett + + * translate.c: Only select audio codecs to determine the best translation choice. + + Given a source capability of h264 and ulaw, a destination capability of + h264 and g722 then ast_translator_best_choice() would pick h264 as the + best choice even though h264 is a video codec and Asterisk only supports + translation of audio codecs. When the audio starts flowing, there are + warnings about a codec mismatch when the channel tries to write a frame to + the peer. + + * Made ast_translator_best_choice() only select audio codecs. + + * Restore a check in channel.c:set_format() lost after v1.8 to prevent + trying to set a non-audio codec. + + This is an intermediate patch for a series of patches aimed at improving + translation path choices for ASTERISK-24841. + + This patch is a complete enough fix for ASTERISK-21777 as the v11 version + of ast_translator_best_choice() does the same thing. However, chan_sip.c + still somehow tries to call ast_codec_choose() which then calls + ast_best_codec() with a capability set that doesn't contain any audio + formats for the incoming call. The remaining warning message seems to be + a benign transient. + + ASTERISK-21777 #close + Reported by: Nick Ruggles + + ASTERISK-24380 #close + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4605/ + ........ + + Merged revisions 434614 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434615 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434616 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 09:56 +0000 [894153b8b1] Matt Jordan + + * res/ari: Fix model validation for ChannelHold event + + When the ChannelHold event was added, the 'musicclass' parameter was + erroneously removed. This caused the ChannelHold events to be rejected as + they failed model validation. This patch updates the Swagger schema such that + it now properly reflects the event that is being created. + + Hooray for tests that catch things like this. + ........ + + Merged revisions 434597 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434598 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 08:32 +0000 [02a0a4d65f] Joshua Colp + + * dns: Fix build when TEST_FRAMEWORK is not defined. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434583 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 07:40 +0000 [80c443bea4] Y Ateya (License 6693) + + * channels/chan_iax2: Improve POKE expiration time calculation for lossy networks + + POKE is used to check for peer availability; however, in networks with packet + loss, the current calculations may result in POKE expiration times that are too + short. This patch alters the expiration/retry time logic to take into account + the last known qualify round trip time, as opposed to always using a static + value for each peer. + + Review: https://reviewboard.asterisk.org/r/4536 + + ASTERISK-22352 #close + Reported by: Frederic Van Espen + + ASTERISK-24894 #close + Reported by: Y Ateya + patches: + poke_noanswer_duration.diff submitted by Y Ateya (License 6693) + ........ + + Merged revisions 434564 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434565 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434566 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-10 07:23 +0000 [b3d01f1fbf] Y Ateya (License 6693) + + * channels/chan_iax2: Add a configuration parameter for call token expiration + + This patch adds a new configuration parameter, 'calltokenexpiration', that + controls how long before an authentication call token is expired. The default + maintains the RFC specified 10 seconds. Setting it to a higher value may be + useful in lossy networks. + + Review: https://reviewboard.asterisk.org/r/4588 + + ASTERISK-24939 #close + Reported by: Y Ateya + patches: + ctoken_configuration.diff submitted by Y Ateya (License 6693) + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434563 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 18:12 +0000 [ed6b6e3c03] George Joseph + + * res_pjsip_phoneprov_provider: Fix reference leak on unload + + res_pjsip_phoneprov_provider was leaking references to phoneprov objects due to + a missing OBJ_NODATA in an ao2_callback in load_users(). Rather than adding the + OBJ_NODATA, I changed load_users to use a more straightforward ao2_iterator. + This plugged the leak but exposed an unload order issue between + res_pjsip_phoneprov_provider, res_phoneprov and res_pjsip. + + res_pjsip_phoneprov_provider unloads first, then res_phoneprov, then res_pjsip. + Since res_pjsip_phoneprov_provider uses res_pjsip's sorcery instance, when it + unloads, it's objects are still in the sorcery instance. When res_pjsip + unloads, it destroys all its objects including res_pjsip_phoneprov_provider's. + The phoneprov destructor then attempts to unregister the extension from + res_phoneprov but because res_phoneprov is already cleaned up, its users + container is gone and we get a FRACK. + + Simple solution, check for the NULL users container before attempting to remove + the entry. Duh. + + Ran tests/res_phoneprov/res_phoneprov_provider. No leaks in + res_pjsip_phoneprov_provider and no FRACKs. + + Reported-by: Corey Farrell + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4608/ + ASTERISK-24935 #close + ........ + + Merged revisions 434545 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434547 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 18:08 +0000 [9a63ada03a] George Joseph + + * loader/main: Don't set ast_fully_booted until deferred reloads are processed + + Until we have a true module management facility it's sometimes necessary for one + module to force a reload on another before its own load is complete. If + Asterisk isn't fully booted yet, these reloads are deferred. The problem is + that asterisk reports fully booted before processing the deferred reloads which + means Asterisk really isn't quite ready when it says it is. + + This patch moves the report of fully booted after the processing of the deferred + reloads is complete. + + Since the pjsip stack has the most number of related modules, I ran the + channels/pjsip testsuite to make sure there aren't any issues. All tests + passed. + + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4604/ + ........ + + Merged revisions 434544 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434546 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 17:07 +0000 [520b9f2174] Kevin Harwell + + * res_pjsip: add CLI command to show global and system configuration + + Added a new CLI command for res_pjsip that shows both global and system + configuration settings: pjsip show settings + + ASTERISK-24918 #close + Reported by: Scott Griepentrog + Review: https://reviewboard.asterisk.org/r/4597/ + ........ + + Merged revisions 434527 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434528 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 11:09 +0000 [b2b1f24af6] Richard Mudgett + + * chan_iax2.c: Fix ref leak in iax2_request(). + + * Increased warning message format capability string buffer size in + iax2_request(). + + Review: https://reviewboard.asterisk.org/r/4601/ + ........ + + Merged revisions 434510 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434511 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 11:05 +0000 [459171be12] Richard Mudgett + + * bridge_native_rtp.c: Defer allocation and check if it fails in native_rtp_bridge_compatible(). + + Review: https://reviewboard.asterisk.org/r/4601/ + ........ + + Merged revisions 434508 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434509 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 10:43 +0000 [3ef0a17b1f] yaron nahum (License 6676) + + * res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests + + This patch adds a new session supplement that handles in-dialog OPTIONS + requests. Said OPTIONS requests are sent a 200 OK, as an endpoint lookup + for the OPTIONS request would already have been done by the time the + session supplement receives the inbound request. + + ASTERISK-24862 #close + Reported by: yaron nahum + patches: + res_pjsip_dlg_options.c submitted by yaron nahum (License 6676) + ........ + + Merged revisions 434506 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434507 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 09:58 +0000 [c08ebc6eeb] Mark Michelson + + * Reduce duplication of common DNS code. + + The NAPTR and SRV branches were worked on independently and + resulted in some code being duplicated in each. Since both + have been merged into trunk now, this patch reduces the + duplication by factoring out common code into its own + source files. + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434490 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-09 07:57 +0000 [ea0098724e] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix autological comparisons + + This fixes autological comparison warnings in the following: + * chan_skinny: letohl may return a signed or unsigned value, depending on the + macro chosen + * func_curl: Provide a specific cast to CURLoption to prevent mismatch + * cel: Fix enum comparisons where the enum can never be negative + * enum: Fix comparison of return result of dn_expand, which returns a signed + int value + * event: Fix enum comparisons where the enum can never be negative + * indications: tone_data.freq1 and freq2 are unsigned, and hence can never be + negative + * presencestate: Use the actual enum value for INVALID state + * security_events: Fix enum comparisons where the enum can never be negative + * udptl: Don't bother to check if the return value from encode_length is less + than 0, as it returns an unsigned int + * translate: Since the parameters are unsigned int, don't bother checking + to see if they are negative. The cast to unsigned int would already blow + past the matrix bounds. + * res_pjsip_exten_state: Use a temporary value to cache the return of + ast_hint_presence_state + * res_stasis_playback: Fix enum comparisons where the enum can never be + negative + * res_stasis_recording: Add an enum value for the case where the recording + operation is in error; fix enum comparisons + * resource_bridges: Use enum value as opposed to -1 + * resource_channels: Use enum value as opposed to -1 + + Review: https://reviewboard.asterisk.org/r/4533 + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4533.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434469 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434470 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434471 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 21:05 +0000 [2201e27340] Stefan Engström (License 6691) + + * apps/app_queue: Prevent possible crash when evaluating queue penalty rules + + Although it only occurred once, a crash occurred when a queue attempted to + evaluate a queue penalty rule that appeared to have already been destroyed. + In many locations in app_queue, a test is done to see if qe->pr is NULL; + however, when we dispose of a queue's penalty rules, we don't set the pointer + to NULL after free'ing it. This patch does that to prevent any dangling + pointers from lingering on the queue object. + + Review: https://reviewboard.asterisk.org/r/4522 + + ASTERISK-23319 #close + Reported by: Vadim + patches: + rb4552.patch submitted by Stefan Engström (License 6691) + ........ + + Merged revisions 434448 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434449 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434450 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 13:32 +0000 [a759714101] Jonathan Rose + + * res_pjsip_t38: Fix FAX failures when using PJSIP with authentication + + Without this patch, if a PJSIP endpoint with udptl enabled and authentication + set attempted to use sendFax, the FAX session would fail during setup. This + was because the invite issued in response to being auth challenged would cause + the PJSIP channel performing the FAX to receive a second T38 framehook and + this would cause frames to be consumed in an inappropriate manner. + + ASTERISK-24933 #close + Reported by: Jonathan Rose + Review: https://reviewboard.asterisk.org/r/4577/ + ........ + + Merged revisions 434425 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434431 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 13:20 +0000 [09df34d880] Richard Mudgett + + * Bridging: Eliminate the unnecessary make channel compatible with bridge operation. + + When a channel enters the bridging system it is first made compatible with + the bridge and then the bridge technology makes the channel compatible + with the technology. For all but the DAHDI native and softmix bridge + technologies the make channel compatible with the bridge step is an + effective noop because the other technologies allow all audio formats. + For the DAHDI native bridge technology it doesn't matter because it is not + an initial bridge technology and chan_dahdi allows only one native format + per channel. For the softmix bridge technology, it is a noop at best and + harmful at worst because the wrong translation path could be setup if the + channel's native formats allow more than one audio format. + + This is an intermediate patch for a series of patches aimed at improving + translation path choices. + + * Removed code dealing with the unnecessary step of making the channel + compatible with the bridge. + + ASTERISK-24841 + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4600/ + ........ + + Merged revisions 434424 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434430 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 11:49 +0000 [8ec9a82b9a] Maciej Szmigiero (license 6085) + + * Security/tcptls: MitM Attack potential from certificate with NULL byte in CN. + + When registering to a SIP server with TLS, Asterisk will accept CA signed + certificates with a common name that was signed for a domain other than the + one requested if it contains a null character in the common name portion of + the cert. This patch fixes that by checking that the common name length + matches the the length of the content we actually read from the common name + segment. Some certificate authorities automatically sign CA requests when + the requesting CN isn't already taken, so an attacker could potentially + register a CN with something like www.google.com\x00www.secretlyevil.net + and have their certificate signed and Asterisk would accept that certificate + as though it had been for www.google.com - this is a security fix and is + noted in AST-2015-003. + + ASTERISK-24847 #close + Reported by: Maciej Szmigiero + Patches: + asterisk-null-in-cn.patch submitted by mhej (license 6085) + ........ + + Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434384 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434385 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 11:31 +0000 [2bd9e008a7] Richard Mudgett + + * format_cache.c: Add missing slin12 format to ast_format_cache_is_slinear(). + ........ + + Merged revisions 434357 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434383 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 07:02 +0000 [3f54af689f] Matt Jordan + + * chan_iax2: Fix compilation issue due to funky merge + + Don't mix declarations and code! + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434294 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 07:00 +0000 [a9b6a62461] Jaco Kroon (License 5671) + + * chan_iax2: Fix crash caused by unprotected access to iaxs[peer->callno] + + This patch fixes an access to the peer callnumber that is unprotected by a + corresponding mutex. The peer->callno value can be changed by multiple threads, + and all data inside the iaxs array must be procted by a corresponding lock + of iaxsl. + + The patch moves the unprotected access to a location where the mutex is + safely obtained. + + Review: https://reviewboard.asterisk.org/r/4599/ + + ASTERISK-21211 #close + Reported by: Jaco Kroon + patches: + asterisk-11.2.1-iax2_poke-segfault.diff submitted by Jaco Kroon (License 5671) + ........ + + Merged revisions 434291 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434292 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434293 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 06:54 +0000 [477536ef25] Valentin Vidić (License 6697) + + * chan_sip: Handle IPv4 mapped IPv6 clients when NAT is enabled + + When udpbindaddr is set to the IPv6 bind all address of '::', Asterisk will + attempt to handle both IPv4 and IPv6 addresses, although the information will + be stored in a struct with an AF_INET6 address type. However, the current + NAT handling code won't handle the IPv4 mapped IPv6 addresses correctly. + This patch adds an additional check for the mapped address case, allowing + the NAT code to handle clients even when the address is IPv6. + + Review: https://reviewboard.asterisk.org/r/4563/ + + ASTERISK-18032 #close + Reported by: Christoph Timm + patches: + nat_with_ipv6.diff submitted by Valentin Vidić (License 6697) + ........ + + Merged revisions 434288 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434289 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434290 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 06:45 +0000 [b8fa8aa775] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix pointer-bool-converesion warnings + + This patch fixes several warnings pointed out by the clang compiler. + * chan_pjsip: Removed check for data->text, as it will always be non-NULL. + * app_minivm: Fixed evaluation of etemplate->locale, which will always + evaluate to 'true'. This patch changes the evaluation to use + ast_strlen_zero. + * app_queue: + - Fixed evaluation of qe->parent->monfmt, which always evaluates to + true. Instead, we just check to see if the dereferenced pointer + evaluates to true. + - Fixed evaluation of mem->state_interface, wrapping it with a call to + ast_strlen_zero. + * res_smdi: Wrapped search_msg->mesg_desk_term with calls to ast_strlen_zero. + + Review: https://reviewboard.asterisk.org/r/4541 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4541.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434285 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434286 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434287 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-08 06:35 +0000 [016fba12e2] Rodrigo Ramirez Norambuena (License 6577) + + * cel_pgsl: Add support for GMT timestamps + + This patch adds a new option to cel_pgsl, "usegmtime", which causes timestamps + to be logged in GMT. + + Review: https://reviewboard.asterisk.org/r/4571/ + + ASTERISK-23186 #close + Reported by: Rodrigo Ramirez Norambuena + patches: + cel_pgsql.c_add_usegmtime2.patch submitted by Rodrigo Ramirez Norambuena (License 6577) + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434284 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-07 14:40 +0000 [d923ec80b9] Scott Griepentrog + + * pjsip: resolve compatibility problem with ast_sip_session + + A change in r430179 inserted a variable near the top of a + structure caused a problem when running DPMA in a version + of Asterisk compiled across the change. This patch moves + the new variable to the end of the structure, eliminating + the problem. + + Review: https://reviewboard.asterisk.org/r/4574/ + ........ + + Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13 + ........ + + Merged revisions 434261 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434263 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-07 11:42 +0000 [153c4044e4] Kevin Harwell + + * bridge.c: Hangup attended transfer target after it has been swapped out + + After completing an attended transfer the transfer target channel (the one that + gets swapped out) was not being hung up after leaving the bridge. This resulted + in a channel possibly being left around. Added an explicit softhangup for the + channel in question after the transfer is successfully completed in order to + make sure the channel is hung up. + + ASTERISK-24782 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4575/ + ........ + + Merged revisions 434240 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434241 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-07 10:34 +0000 [1eba6abae5] Mark Michelson + + * Do not queue message requests that we do not respond to. + + If we receive a MESSAGE request that we cannot send a response + to, we should not send the incoming MESSAGE to the dialplan. + + This commit should help the bouncing message_retrans test to + pass consistently. + ........ + + Merged revisions 434218 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434219 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-07 10:22 +0000 [c2f50ba6f4] Matt Jordan + + * ARI: Add the ability to intercept hold and raise an event + + For some applications - such as SLA - a phone pressing hold should not behave + in the fashion that the Asterisk core would like it to. Instead, the hold + action has some application specific behaviour associated with it - such as + disconnecting the channel that initiated the hold; only playing MoH to channels + in the bridge if the channels are of a particular type, etc. + + One way of accomplishing this is to use a framehook to intercept the + hold/unhold frames, raise an event, and eat the frame. Tasty. This patch + accomplishes that using a new dialplan function, HOLD_INTERCEPT. + + In addition, some general cleanup of raising hold/unhold Stasis messages was + done, including removing some RAII_VAR usage. + + Review: https://reviewboard.asterisk.org/r/4549/ + + ASTERISK-24922 #close + ........ + + Merged revisions 434216 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434217 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 21:10 +0000 [af4d802773] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix sometimes-initialized warning in func_math + + This patch fixes a bug in a unit test in func_math where a variable could be + passed to ast_free that wasn't allocated. This patch corrects the issue and + ensures that we only attempt to free a variable if we previously allocated + it. + + Review: https://reviewboard.asterisk.org/r/4552 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4552.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434190 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434191 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434192 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 21:03 +0000 [c1cfe3fae2] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix non-literal-null-conversion warnings + + Clang will flag errors when a char pointer is set to '\0', as opposed to a + value that the char pointer points to. This patch fixes this warning + in a variety of locations. + + Review: https://reviewboard.asterisk.org/r/4551 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4551.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434187 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434188 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434189 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 16:54 +0000 [79fb8c32a6] Mark Michelson + + * Uncomment test case. + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434170 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 16:13 +0000 [fc314cb43f] Mark Michelson + + * Add missing DNS NAPTR test file. + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434154 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 14:23 +0000 [87d7c90e4e] Kevin Harwell + + * res_pjsip: config option 'timers' can't be set to 'no' + + When setting the configuration option 'timers' equal to 'no' the bit flag was + not properly negated. This patch clears all associated flags and only sets the + specified one. pjsip will handle any necessary flag combinations. Also went + ahead and did similar for the '100rel' option. + + ASTERISK-24910 #close + Reported by: Ray Crumrine + Review: https://reviewboard.asterisk.org/r/4582/ + ........ + + Merged revisions 434131 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434132 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 14:04 +0000 [e48f2e7897] George Joseph + + * build: Fixes for gcc 5 compilation + + These are fixes for compilation under gcc 5.0... + + chan_sip.c: In parse_request needed to make 'lim' unsigned. + inline_api.h: Needed to add a check for '__GNUC_STDC_INLINE__' to detect C99 + inline semantics (same as clang). + ccss.c: In ast_cc_set_parm, needed to fix weird comparison. + dsp.c: Needed to work around a possible compiler bug. It was throwing + an array-bounds error but neither + sgriepentrog, rmudgett nor I could figure out why. + manager.c: In action_atxfer, needed to correct an array allocation. + + This patch will go to 11, 13, trunk. + + Review: https://reviewboard.asterisk.org/r/4581/ + Reported-by: Jeffrey Ollie + Tested-by: George Joseph + ASTERISK-24932 #close + ........ + + Merged revisions 434113 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434114 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434115 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 13:18 +0000 [0543879228] Diederik de Groot (License 6600) + + * clang compiler warnings: Remove large chunks of unused code from extconf + + This patch fixes a warning caught by clang, in which it detected that large + chunks of extconf were unused. Frankly, I wish we could pretend that all of + extconf was unused, but alas, that is not yet the case. + + A few extraneous functions in the parking tests were removed as well, for + the same reason. + + Review: https://reviewboard.asterisk.org/r/4553 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4553.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434093 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434097 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434099 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 13:03 +0000 [e309a91e2d] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix sometimes-uninitialized warning in pbx_config + + This patch fixes a warning caught by clang, in which a char pointer could be + assigned to before it was initialized. The patch re-organizes the code to + ensure that the pointer is always initialized, even on off nominal paths. + + Review: https://reviewboard.asterisk.org/r/4529 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4529.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434090 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434091 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 12:52 +0000 [ed3cf8761b] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix format specified in framehook + + This patch fixes an invalid format specifier used in the formatting of an + ERROR message in the framehook code. The format specifier specifies a + type of 'unsigned short', but the argument passed to it is of type 'int'. + The patch changes the format specifier to 'i'. + + Review: https://reviewboard.asterisk.org/r/4540 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4535.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 434087 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 434088 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434089 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 12:05 +0000 [0a26602b8c] Mark Michelson + + * Merge NAPTR support into trunk. + + This adds NAPTR record allocation and sorting, as well as + unit tests that verify that NAPTR records are parsed and + sorted correctly. + + Review: https://reviewboard.asterisk.org/r/4542 + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434068 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 11:02 +0000 [edf9da4365] Mark Michelson + + * Ensure that a non-zero sample rate is returned for all formats. + + Versions of Asterisk prior to 12 defaulted to 8000 as a sample rate + if one was not provided by a format. In Asterisk 13, this was removed. + The result was that some calculations which involve dividing by the + sample rate resulted in dividing by 0. The fix being put in place + here is to have the same default fallback that was present in previous + versions of Asterisk. + + Asterisk-24914 #close + Reported by Marcello Ceschia + ........ + + Merged revisions 434046 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434047 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 10:17 +0000 [ffd7319df3] Corey Farrell + + * res_pjsip_phoneprov_provider: Revert 433996 / 433997. + + res_pjsip_phoneprov_provider is using ao2_callback with OBJ_MULTIPLE, then + ignoring the return. OBJ_NODATA flag was to prevent a reference leak, but + this caused the module to FRACK on unload. Revert change until this can + be investigated further. + + ASTERISK-24935 + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4578/ + ........ + + Merged revisions 434025 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434026 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-06 09:51 +0000 [53af579d4c] Mark Michelson (license #5049) + + * ParkedCall: Don't allow dialplan fallthrough after retrieving parked call. + + This is a change to align behavior with that of Asterisk 11 and previous versions. + In those versions, if a parked call were retrieved, and the call ended, the parked + call retriever would be hung up after the ParkedCall application ran. Prior to this + patch, in Asterisk 13, the same situation would result in the parked call retriever + falling through to additional priorities in the extension where the ParkedCall + application was called. With this patch, the behavior between Asterisk 11 and 13 + aligns. + + ASTERISK-24899 #close + Reported by Malcolm Davenport + Patches: + ASTERISK-24899.patch uploaded by Mark Michelson(license #5049) + ........ + + Merged revisions 434022 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434023 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-05 07:55 +0000 [e6f0410028] Corey Farrell + + * res_pjsip_phoneprov_provider: Fix leaked OBJ_MULTIPLE iterator. + + res_pjsip_phoneprov_provider was using ao2_callback with OBJ_MULTIPLE, then + ignoring the return. Added OBJ_NODATA flag to prevent a reference leak. + + ASTERISK-24935 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4578/ + ........ + + Merged revisions 433996 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433997 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-03 16:54 +0000 [3439487a81] Mark Michelson + + * res_pjsip_messaging: Serialize outbound SIP MESSAGEs + + Outbound SIP MESSAGEs had the potential to be sent out + of order from how they were specified in a set of + dialplan steps. + + This change creates a serializer for sending outbound + MESSAGE requests on. This ensures that the MESSAGEs are + sent by Asterisk in the same order that they were sent + from the dialplan. + + ASTERISK-24937 #close + Reported by Mark Michelson + + Review: https://reviewboard.asterisk.org/r/4579 + ........ + + Merged revisions 433968 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433969 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-02 09:56 +0000 [6e5efe04bd] Scott Griepentrog + + * pjsip: resolve compatibility problem with ast_sip_session + + A change in r430179 inserted a variable near the top of a + structure caused a problem when running DPMA in a version + of Asterisk compiled across the change. This patch moves + the new variable to the end of the structure, eliminating + the problem. + + Review: https://reviewboard.asterisk.org/r/4574/ + ........ + + Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433945 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-02 05:38 +0000 [154ba47766] Corey Farrell + + * Tell menuselect that MALLOC_DEBUG conflicts with DEBUG_CHAOS. + + DEBUG_CHAOS was marked as conflicting with MALLOC_DEBUG, but + for this to work correctly MALLOC_DEBUG must also be marked + as conflicting with DEBUG_CHAOS. + + Review: https://reviewboard.asterisk.org/r/4557/ + ........ + + Merged revisions 433923 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433924 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-01 11:30 +0000 [a217d2d1db] Ashley Sanders + + * stasis: set a channel variable on websocket disconnect error + + Resolve compile errors caused by r433863 by fixing the + documentation xml to comply with the schema. + ........ + + Merged revisions 433888 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433891 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-01 11:27 +0000 [39824e3d01] Joshua Colp + + * dns: Add support for SRV record parsing and sorting. + + This change adds support for parsing SRV records and consuming their values + in an easy fashion. It also adds automatic sorting of SRV records according + to RFC 2782. + + Tests have also been included which cover parsing, sorting, and off-nominal + cases where the record is corrupted. + + ASTERISK-24931 #close + Reported by: Joshua Colp + + Review: https://reviewboard.asterisk.org/r/4528/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433889 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-04-01 08:35 +0000 [da13d15425] Mark Michelson + + * stasis: set a channel variable on websocket disconnect error + + Resolve compile errors caused by r433839 by included the missing + header file, pbx.h. + ........ + + Merged revisions 433863 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-31 17:49 +0000 [06578ef407] Ashley Sanders + + * stasis: set a channel variable on websocket disconnect error + + When an error occurs while writing to a web socket, the web socket is + disconnected and the event is logged. A side-effect of this, however, is that + any application on the other side waiting for a response from Stasis is left + hanging indefinitely (as there is no mechanism presently available for + notifying interested parties about web socket error states in Stasis). + + To remedy this scenario, this patch introduces a new channel variable: + STASISSTATUS. + + The possible values for STASISSTATUS are: + SUCCESS - The channel has exited Stasis without any failures + FAILED - Something caused Stasis to croak. Some (not all) possible + reasons for this: + - The app registry is not instantiated; + - The app requested is not registered; + - The app requested is not active; + - Stasis couldn't send a start message + + ASTERISK-24802 + Reported By: Kevin Harwell + Review: https://reviewboard.asterisk.org/r/4519/ + ........ + + Merged revisions 433839 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433845 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-31 12:04 +0000 [2d28fa678e] Richard Mudgett + + * chan_sip: Fix expression in unit test /channels/chan_sip/test_sip_rtpqos. + + Fix misplaced parentheses in original fabs() expression. + ........ + + Merged revisions 433816 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433817 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433818 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-31 06:55 +0000 [076fc12afb] Corey Farrell + + * Blocked revisions 433795 + + ........ + Re-add _ast_mem_backtrace_buffer variable for ABI compatibility. + + Modules built prior to commit of r4502 expect to link at runtime + to the variable _ast_mem_backtrace_buffer. This change re-adds + the variable to the C file only. + + Review: https://reviewboard.asterisk.org/r/4558/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433796 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-30 06:43 +0000 [8d12288d8a] Corey Farrell + + * Fix an ABI compatibility issue with ast_log_safe for modules. + + Binary modules are sometimes built against the latest release of + Asterisk in each branch, and need to be compatible with all + releases of that branch. This change ensures that utils.h only + uses ast_log_safe from the core. For modules and utilities ast_log + is used instead. + + Review: https://reviewboard.asterisk.org/r/4548/ + ........ + + Merged revisions 433772 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433773 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433774 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-29 21:45 +0000 [7bc2345fb1] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix -Wabsolute-value warnings + + This patch fixes several warnings caught by clang - in this case, usage of the + abs function on non-integer values. This patch uses labs and fabs, as + appropriate, in the various affected files. + + Review: https://reviewboard.asterisk.org/r/4525 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4525.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433749 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433750 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433751 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-29 21:39 +0000 [ce59fabd5c] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix invalid enum conversion + + This patch fixes some invalid enum conversion warnings caught by clang. In + particular: + * chan_sip: Several functions mixed usage of the st_refresher_param + enum and st_refresher enum. This patch corrects the functions to use the + right enum. + * chan_pjsip: Fixed mixed usage of ast_sip_session_t38state and ast_t38_state. + * strings: Fixed incorrect usage of AO2 flags with strings container. + * res_stasis: Change a return enumeration to stasis_app_user_event_res. + + Review: https://reviewboard.asterisk.org/r/4535 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4535.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433746 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433747 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433748 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-29 21:29 +0000 [61577cbee6] Matt Jordan + + * main/stdtime/localtime: Fix warning introduced in r433720 + + The patch in r433720 caused a warning to be kicked back by gcc. It occurred + due to this check in unistd.h: + + if (__nbytes > __bos0 (__buf)) + return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf)); + + That is, if __nbytes is greater than the result of GCC's built-in object size + for the struct, we'll kick back a warning. + + As it turns out, this is because there is an error in the code in the patch. + We are passing the address of the pointer to the struct, not iev, which is a + pointer to the struct. Hence, the number of bytes is probably going to be lot + larger than the number of bytes that make up a pointer! This patch changes + the code just read from the pointer to the struct - which fixes the warning. + + ASTERISK-24917 + ........ + + Merged revisions 433743 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433744 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433745 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-29 20:57 +0000 [072734692e] Diederik de Groot (License 6600) + + * clang compiler warnings: Ignore -Wunused-command-line-argument + + Asterisk's build system has a tendency to pass include directives for libraries + to everything compiled within a particular group of source files. This means + we pass the header for libxml2 to things that don't necessarily need it. As a + result, we ignore this particular warning. + + Review: https://reviewboard.asterisk.org/r/4545/ + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4545.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433720 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433721 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433722 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-29 20:53 +0000 [1cf949c489] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix warning for -Wgnu-variable-sized-type-not-at-end + + This patch fixes a warning caught by clang, wherein a variable sized struct is + not located at the end of a struct. While the code in question actually + expected this, this is a good warning to watch for. Hence, this patch refactors + the code in question to not have two variable length elements in the same + struct. + + Review: https://reviewboard.asterisk.org/r/4530/ + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4530.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433717 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433718 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433719 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-28 07:56 +0000 [d2776d4d45] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix a variety of "unused" warnings + + This patch fixes the -Wunused-value -Wunused-variable -Wunused-const-variable + errors caught by clang. Specifically: + + * apps/app_queue.c: removed unused qpm_cmd_usage[], qum_cmd_usage[], + qsmp_cmd_usage[] + * cel/cel_sqlite3_custom.c: removed unused name[] = "cel_sqlite3_custom" + * channels/chan_pjsip.c: removed unused desc[] = "PJSIP Channel" + * codecs/gsm/src/gsm_create.c: removed unused ident[] = "$Header$" + * funcs/func_env.c:729: Fixed ast_str_append_substr. + * main/editline/np/strlcat.c: removed unused rcsid variable + * main/editline/np/strlcpy.c: removed unused rcsid variable + * main/security_events.c: removed unused TIMESTAMP_STR_LEN + * utils/conf2ael.c: removed unused cfextension_states + * utils/extconf.c: removed unused cfextension_states + + Review: https://reviewboard.asterisk.org/r/4526 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4526.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433693 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433694 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433695 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-28 07:48 +0000 [cb7b6bc4be] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix -Wself-assign + + Assigning a variable to itself isn't super useful. However, the WAV format + modules make use of this in order to perform byte endian checks. This patch + works around the warning by only performing the self assignment if we are + going to do more than just assign it to ourselves. Which is odd, but true. + + Review: https://reviewboard.asterisk.org/r/4544/ + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4544.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433690 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433691 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433692 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-28 07:41 +0000 [e9520dbe0d] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix -Wparantheses-equality warnings + + Clang will treat ((a == b)) as a warning, as it reasonably expects that the + developer may have intended to write (a == b) or ((a = b)). This patch cleans + up all instances where equality, not assignment, was intended between two + parantheses. + + Review: https://reviewboard.asterisk.org/r/4531/ + + ASTERISK-24917 + Repoted by: dkdegroot + patches: + rb4531.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433687 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433688 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433689 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-28 07:33 +0000 [fd50e5bfb5] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix -Wbitfield-constant-conversion warning + + In chan_iax2, we attempt to assign a -1 to a bitfield. This gets caught by + clang, as it will truncate the -1 to a 1 implicitly. + + Instead, we just assign the value a '1'. + + Review: https://reviewboard.asterisk.org/r/4537/ + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4537.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433683 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433684 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433686 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-28 07:32 +0000 [c747b3b12a] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix -Winitializer-overrides + + This patch fixes clange compiler warnings for initializer overrides. + Specifically: + + res_pjsip/config_transport maps PJSIP_TLSV1_METHOD to the same enumeration + value as PJSIP_SSL_DEFAULT_METHOD. When initializing an array containing + those enum values, we therefore initialize the value twice to two different + values, "tlsv1" and "default". This patch changes it to just initialize + the index in the array to "tlsv1". + + Review: https://reviewboard.asterisk.org/r/4539/ + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4539.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433682 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433685 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-28 07:20 +0000 [d6173cd1d0] Diederik de Groot (License 6600) + + * clang compiler warnings: Fix -Wunused-function; make inline function static + + This patch fixes clang compilers warnings for unused functions. Specifically: + * channels/chan_iax2: removed user_ref function + * main/dsp.c: removed goertzel_update function + * main/config.c: made variable_list_switch static + + Review: https://reviewboard.asterisk.org/r/4527 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4527.patch submitted by dkdegroot (License 6600) + ........ + + Merged revisions 433678 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433680 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433681 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 17:26 +0000 [b56592e3ae] Jonathan Rose + + * SAC: Add conferencing extensions and configuration + + Review: https://reviewboard.asterisk.org/r/4504/ + ........ + + Merged revisions 433656 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433657 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 16:21 +0000 [c21e2e45a8] Rusty Newton + + * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 2 + + Example configuration files for a "basic PBX" deployment for the fictitious + Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4488/ + and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company + + Patch 4488 includes all functionality needed for SAC's outside connectivity + and some externally accessed features, as well as outbound dialing. + + Reported by: Malcolm Davenport + Tested by: Rusty Newton + + Review: https://reviewboard.asterisk.org/r/4488/ + ........ + + Merged revisions 433624 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433637 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 16:06 +0000 [2659e48d9d] Richard Mudgett + + * res_pjsip_registrar_expire.c: Made use ao2 container template routines and eliminated some RAII_VAR() usage. + + * Converted the contact_autoexpire container to use the ao2 template hash + and cmp functions. Also made use the OBJ_SEARCH_xxx names instead of the + deprecated names. + + * Eliminates several unnecessary uses of RAII_VAR(). + + Review: https://reviewboard.asterisk.org/r/4524/ + ........ + + Merged revisions 433622 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 15:46 +0000 [0b62e41654] Mark Michelson + + * Add stateful PJSIP response API call, and use it for out-of-dialog responses. + + Asterisk had an issue where retransmissions of MESSAGE requests resulted in + Asterisk processing the retransmission as if it were a new MESSAGE request. + + This patch fixes the issue by creating a transaction in PJSIP on the incoming + request. This way, if a retransmission arrives, the PJSIP transaction layer + will resend the response and Asterisk will not ever see the retransmission. + + ASTERISK-24920 #close + Reported by Mark Michelson + + Review: https://reviewboard.asterisk.org/r/4532/ + ........ + + Merged revisions 433619 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433620 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 15:23 +0000 [a18da4eaf2] Richard Mudgett + + * res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown. + + Contact expiration object refs were leaked when the module was unloaded. + + * Made empty the scheduler of entries before destroying it to release the + object ref held by the scheduler entry. + + Review: https://reviewboard.asterisk.org/r/4523/ + ........ + + Merged revisions 433596 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433617 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 12:58 +0000 [cb1c639817] Richard Mudgett + + * Add missing file. ASTERISK-24781 + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433597 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 09:41 +0000 [a024af1156] Justin T. Gibbs (License 6692) + + * res/res_timing_kqueue: Update the module to conform to current timer API + + This patch updates the kqueue timing module to conform to current timer API. + + This fixes issues with using the kqueue timing source on Asterisk 13 on + FreeBSD 10. These issues include: + + - Remove support for kevent64(). The values used to support Asterisk timers + fit within 32bits and so can be handled on all platforms via kevent(). + + - Provide debug logging for, but do not track, unacked events. This matches + the behavior of all other timer implementations. + + - Implement continuous mode by triggering and leaving active, a user event. + This ensures that the file descriptor for the timer returns immediately from + poll(), without placing the load of a high speed timer on the kernel. + + - In kqueue_timer_get_max_rate(), don't overstate the capability of the timer. + On some platforms, UINT_MAX is greater than INTPTR_MAX, the largest integer + type kqueue supports for timers. + + - In kqueue_timer_get_event(), assume the caller woke up from poll() and just + return the mode the timer is currently in. This matches all other timer + implementations. + + - Adjust the test code now that unacked events are not tracked. + + Review: https://reviewboard.asterisk.org/r/4465/ + + ASTERISK-24857 #close + Reported by: scsiguy + Tested by: Ed Hynan + patches: + rb4465.patch submitted by scsiguy (License 6692) + ........ + + Merged revisions 433574 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433575 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 07:27 +0000 [10458d2878] Corey Farrell + + * Fix link error for utils/aelparse. + + Use the standard ast_log instead of ast_log_safe for STANDALONE programs. + + Review: https://reviewboard.asterisk.org/r/4538/ + ........ + + Merged revisions 433549 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433550 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433551 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-27 02:12 +0000 [28e3bd0af7] Corey Farrell + + * Improved and portable ast_log recursion avoidance + + This introduces a new logger routine ast_log_safe. This routine should be + used for all error messages in code that can be run as a result of ast_log. + ast_log_safe does nothing if run recursively. All error logging in + astobj2.c, strings.c and utils.h have been switched to ast_log_safe. + + This required adding support for raw threadstorage. This provides direct + access to the void* pointer in threadstorage. In ast_log_safe, NULL is used + to signify that this thread is not already running ast_log_safe, (void*)1 when + it is already running. This was done since it's critical that ast_log_safe + do nothing that could log during recursion checking. + + ASTERISK-24155 #close + Reported by: Timo Teräs + Review: https://reviewboard.asterisk.org/r/4502/ + ........ + + Merged revisions 433522 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433523 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433524 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-26 18:09 +0000 [554eb74516] Corey Farrell + + * Fix compile errors caused by r4500 / r4501. + + * Add ast_register_cleanup to utils/clicompat.c to deal with + any utils that copy sources from main. + * Asterisk 13+: remove unused variables from core_local.c. + + Review: https://reviewboard.asterisk.org/r/4534/ + ........ + + Merged revisions 433499 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433500 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433501 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-26 17:24 +0000 [3ddd92902a] Corey Farrell + + * Replace most uses of ast_register_atexit with ast_register_cleanup. + + Since 'core stop now' and 'core restart now' do not stop modules, + it is unsafe for most of the core to run cleanups. Originally all + cleanups used ast_register_atexit, and were only changed when it + was shown to be unsafe. ast_register_atexit is now used only when + absolutely required to prevent corruption and close child processes. + + Exceptions that need to use ast_register_atexit: + * CDR: Flush records. + * res_musiconhold: Kill external applications. + * AstDB: Close the DB. + * canary_exit: Kill canary process. + + ASTERISK-24142 #close + Reported by: David Brillert + + ASTERISK-24683 #close + Reported by: Peter Katzmann + + ASTERISK-24805 #close + Reported by: Badalian Vyacheslav + + ASTERISK-24881 #close + Reported by: Corey Farrell + + Review: https://reviewboard.asterisk.org/r/4500/ + Review: https://reviewboard.asterisk.org/r/4501/ + ........ + + Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433497 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433498 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-26 12:47 +0000 [d7fc85e69d] Corey Farrell + + * res_pjsip: Enable unload of all modules at shutdown. + + * Move most of res_pjsip:module_unload to unload_pjsip to resolve crashes + caused by running PJSIP functions from non-PJSIP threads. + * Remove call to pjsip_endpt_destroy(ast_pjsip_endpoint), it was causing + crashes in some cases. In theory pj_shutdown() should take care of this. + * Mark res_pjsip_keepalive and res_pjsip_session as allowed to unload at + shutdown. + * Resolve leaked config global in res_pjsip_notify. + * Unregister pubsub pjsip service module. + * Implement cleanup for res_pjsip_session. + + ASTERISK-24731 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4498/ + ........ + + Merged revisions 433469 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433470 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-26 12:13 +0000 [ab674f67b5] Kevin Harwell + + * app_confbridge: file playback blocks dtmf + + Attempting to execute DTMF in a confbridge while file playback (prompt, + announcement, etc) is occurring is not allowed. You have to wait until + the sound file has completed before entering DTMF. This patch fixes it + so that app_confbridge now monitors for dtmf key presses during menu + driven file playback. If a key is pressed playback stops and it executes + the matched menu option. + + ASTERISK-24864 #close + Reported by: Steve Pitts + Review: https://reviewboard.asterisk.org/r/4510/ + ........ + + Merged revisions 433445 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433446 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433447 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-25 13:37 +0000 [e953d15223] Richard Mudgett + + * A couple minor cleanup tweaks. + + * In res/res_sorcery_realtime.c: Broke long line. + + * In main/bucket.c: Eliminated unnecessary NULL check as + ast_sorcery_unref() is NULL tolerant and set the global object to NULL + after unref in the system shutdown bucket_cleanup(). + ........ + + Merged revisions 433420 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433421 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-25 10:31 +0000 [47156aab92] Simon Arlott (License 5756) + + * res_xmpp: Buddies are always auto-registered when processing the roster + + Due to a quirk in the configuration handling of res_xmpp, the 'autoregister' + setting was never actually processed. This was due to not properly copying + over the global settings to the client settings when applying the + configuration to the run-time object. + + Review: https://reviewboard.asterisk.org/r/4496/ + + ASTERISK-14233 + ASTERISK-24780 #close + Reported by: Simon Arlott + patches: + asterisk-13.1.0-24780 uploaded by Simon Arlott (License 5756) + ........ + + Merged revisions 433395 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433396 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433397 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-25 07:32 +0000 [abf3e40902] Joshua Colp + + * dns: Add core DNS API + unit tests and res_resolver_unbound module + unit tests. + + This change adds an abstracted core DNS API which resembles the API described + here[1]. The API provides a pluggable mechanism for resolvers and also a + consistent view for records. Both synchronous and asynchronous queries are + supported. + + This change also adds a res_resolver_unbound module which uses the libunbound + library to provide resolution. + + Unit tests have also been written for all of the above to confirm the API and + functionality. + + ASTERISK-24834 #close + Reported by: Matt Jordan + + ASTERISK-24836 #close + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4474/ + Review: https://reviewboard.asterisk.org/r/4512/ + + [1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+DNS+API + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433370 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-24 14:41 +0000 [4c2fc5b811] Richard Mudgett + + * chan_pjsip: Add "rpid_immediate" option to prevent unnecessary "180 Ringing" messages. + + Incoming PJSIP call legs that have not been answered yet send unnecessary + "180 Ringing" or "183 Progress" messages every time a connected line + update happens. If the outgoing channel is also PJSIP then the incoming + channel will always send a "180 Ringing" or "183 Progress" message when + the outgoing channel sends the INVITE. + + Consequences of these unnecessary messages: + + * The caller can start hearing ringback before the far end even gets the + call. + + * Many phones tend to grab the first connected line information and refuse + to update the display if it changes. The first information is not likely + to be correct if the call goes to an endpoint not under the control of the + first Asterisk box. + + When connected line first went into Asterisk in v1.8, chan_sip received an + undocumented option "rpid_immediate" that defaults to disabled. When + enabled, the option immediately passes connected line update information + to the caller in "180 Ringing" or "183 Progress" messages as described + above. + + * Added "rpid_immediate" option to prevent unnecessary "180 Ringing" or + "183 Progress" messages. The default is "no" to disable sending the + unnecessary messages. + + ASTERISK-24781 #close + Reported by: Richard Mudgett + + Review: https://reviewboard.asterisk.org/r/4473/ + ........ + + Merged revisions 433338 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433339 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-22 19:05 +0000 [60f01520e7] snuffy (License 5024) + + * Fix compilations errors on 64-bit OpenBSD systems + + In versiong 5.5, OpenBSD went to 64-bit time values. This requires a cast to + (long) when printing members of certain time structs. + + Review: https://reviewboard.asterisk.org/r/4507 + + ASTERISK-24879 #close + Reported by: snuffy + Tested by: snuffy + patches: + openbsd-time64.diff uploaded by snuffy (License 5024) + ........ + + Merged revisions 433268 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433269 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433270 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-22 18:11 +0000 [66670f02e6] snuffy (License 5024) + + * Fix compilation issues for OpenBSD + + This patch addresses compilation issues for OpenBSD. Specifically, it + addresses: + * It allows including in asterisk.c + * Provides a needed (size_t) cast in xmldoc.c + + In 13+, it also addresses a conditional inclusion in loader.c. + + Review: https://reviewboard.asterisk.org/r/4506 + + ASTERISK-24880 #close + Reported by: snuffy + Tested by: snuffy + patches: + misc-openbsd.diff uploaded by snuffy (License 5024) + ........ + + Merged revisions 433245 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433247 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433248 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-20 14:54 +0000 [7e097bce86] Richard Mudgett + + * Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks. + + Valgrind found some memory leaks associated with + ast_pjsip_rdata_get_endpoint(). The leaks would manifest when sending + responses to OPTIONS requests, processing MESSAGE requests, and + res_pjsip supplements implementing the incoming_request callback. + + * Fix ast_pjsip_rdata_get_endpoint() endpoint ref leaks in + res/res_pjsip.c:supplement_on_rx_request(), + res/res_pjsip/pjsip_options.c:send_options_response(), + res/res_pjsip_messaging.c:rx_data_to_ast_msg(), and + res/res_pjsip_messaging.c:send_response(). + + * Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in + res/res_pjsip_nat.c:nat_on_rx_message(). + + * Fixed inconsistent but benign return value in + res/res_pjsip/pjsip_options.c:options_on_rx_request(). + + Review: https://reviewboard.asterisk.org/r/4511/ + ........ + + Merged revisions 433222 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433223 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-20 13:27 +0000 [148e8799fe] Richard Mudgett + + * res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively. + + Valgrind found a memory leak and invalid access. + + * Fix invalid access by sscanf() being fed a non-nul terminated string of + digits in res/res_pjsip_sdp_rtp.c:get_codecs(). + + * Fix memory leak in main/sorcery.c:sorcery_object_field_destructor(). + + * Fix potential NULL pointer dereference in + main/xmldoc.c:xmldoc_get_syntax_config_option(). + + Review: https://reviewboard.asterisk.org/r/4513/ + ........ + + Merged revisions 433199 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433200 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-19 14:20 +0000 [627cc16a8d] Matt Jordan + + * funcs/func_env: Fix regression caused in FILE read operation + + When r432935 was merged, it did correctly fix a situation where a FILE read + operation on the middle of a file buffer would not read the requested length + in the parameters passed to the FILE function. Unfortunately, it would also + allow the FILE function to append more bytes than what was available in the + buffer if the length exceeded the end of the buffer length. + + This patch takes the minimum of the remaining bytes in the buffer along with + the calculated length to append provided by the original patch, and uses + that as the length to append in the return result. This patch also updates + the unit tests with the scenarios that were originally pointed out in + ASTERISK-21765 that the original implementation treated incorrectly. + + ASTERISK-21765 + ........ + + Merged revisions 433173 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433174 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433175 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-19 10:27 +0000 [79a81fed59] Kevin Harwell + + * alemebic scripts: endpoint identifier order option + + The script was added in 13, but when committed to trunk it caused a branch to + occur due to some trunk only alemebic changes. This fixes it so that the new + 'add_pjsip_endpoint_identifier_order script points to the correct down revision. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433152 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-19 05:21 +0000 [3aa0a869c2] Corey Farrell + + * logger: Apply default console logging when configuration cannot be loaded. + + When logger.conf is missing or invalid enable console logging and display + an error message. + + ASTERISK-24817 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4497/ + ........ + + Merged revisions 433122 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433126 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433130 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-19 04:57 +0000 [d486659502] Corey Farrell + + * chan_sip: Simplify dialog/peer references, improve REF_DEBUG output. + + * Replace functions for ref/undef of dialogs and peers with macro's + to call ao2_t_bump/ao2_t_cleanup. + * Enable passthough of REF_DEBUG caller information to sip_alloc and + find_call. + + ASTERISK-24882 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4189/ + ........ + + Merged revisions 433115 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433116 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-19 04:46 +0000 [2c83ac4364] Corey Farrell + + * chan_sip: Fix dialog reference leaked to scheduler for reinvite_timeout. + + Release the scheduler reference to the dialog for reinvite timeout during + dialog_unlink_all. + + ASTERISK-24876 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4491/ + ........ + + Merged revisions 433112 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433113 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433114 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 21:42 +0000 [e0ea490a11] Richard Mudgett + + * res_pjsip_session: Fix off-nominal extra unref of session. + ........ + + Merged revisions 433088 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433089 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 17:15 +0000 [8c65c9167e] Scott Griepentrog + + * Various: bugfixes found via chaos + + Using DEBUG_CHAOS several instances of a null + pointer crash, and one uninitialized variable + were uncovered and fixed. Also added details + on why Asterisk failed to initialize. + + Review: https://reviewboard.asterisk.org/r/4468/ + ........ + + Merged revisions 433064 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433065 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 17:03 +0000 [f25b265329] Scott Griepentrog + + * core: Introduce chaos into memory allocations + + Locate potential crashes by exercising seldom + used code paths. This patch introduces a new + define DEBUG_CHAOS, and mechanism to randomly + return an error condition from functions that + will seldom do so. Functions that handle the + allocation of memory get the first treatment. + + Review: https://reviewboard.asterisk.org/r/4463/ + ........ + + Merged revisions 433060 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433063 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 17:03 +0000 [62cf2a2c02] Scott Griepentrog + + * Reverting accidental ci of wrong change in r433061 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433062 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 17:00 +0000 [cb6c7eecfd] Scott Griepentrog + + * various: cleanup issues found during leak hunt + + In this collection of small patches to prevent + Valgrind errors are: fixes for reference leaks + in config hooks, evaluating a parameter beyond + bounds, and accessing a structure after a lock + where it could have been already free'd. + + Review: https://reviewboard.asterisk.org/r/4407/ + ........ + + Merged revisions 431583 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433061 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 16:52 +0000 [c41dd32b94] Richard Mudgett + + * Audit ast_sockaddr_resolve() usage for memory leaks. + + Valgrind found some memory leaks associated with ast_sockaddr_resolve(). + Most of the leaks had already been fixed by earlier memory leak hunt + patches. This patch performs an audit of ast_sockaddr_resolve() and found + one more. + + * Fix ast_sockaddr_resolve() memory leak in + apps/app_externalivr.c:app_exec(). + + * Made main/netsock2.c:ast_sockaddr_resolve() always set the addrs + parameter for safety so the pointer will never be uninitialized on return. + The same goes for res/res_pjsip_acl.c:extract_contact_addr(). + + * Made functions that call ast_sockaddr_resolve() with RAII_VAR() + controlling the addrs variable use ast_free instead of ast_free_ptr to + provide better MALLOC_DEBUG information. + + Review: https://reviewboard.asterisk.org/r/4509/ + ........ + + Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 433057 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433058 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 13:35 +0000 [803a916334] Kevin Harwell + + * res_pjsip: Allow configuration of endpoint identifier query order + + Updated some documentation stating that endpoint identifiers registered without + a name are place at the front of the lookup list. Also renamed register method + 'ast_sip_register_endpoint_identifier_by_name' to + 'ast_sip_register_endpoint_identifier_with_name' + + ASTERISK-24840 + Reported by: Mark Michelson + ........ + + Merged revisions 433031 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433032 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 13:22 +0000 [aef7278af6] Kevin Harwell + + * res_pjsip: Allow configuration of endpoint identifier query order + + This patch fixes previously reverted code that caused binary incompatibility + problems with some modules. And like the original patch it makes sure that + no matter what order the endpoint identifier modules were loaded, priority is + given based on the ones specified in the new global 'endpoint_identifier_order' + option. + + ASTERISK-24840 + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4489/ + ........ + + Merged revisions 433028 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433029 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-17 11:11 +0000 [259e833e88] Richard Mudgett + + * res_pjsip: Add reason comment. + ........ + + Merged revisions 433005 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433006 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 21:29 +0000 [e89f83b3ad] Matt Jordan + + * main/frame: Don't report empty disallow values as an error + + In realtime, it is normal to have a database with both 'allow' and 'disallow' + columns in the schema. It is perfectly valid to have an 'allow' value of + '!all,g722,ulaw,alaw' and no 'disallow' value. Unlike in static conf files, + you can't *not* provide the disallow value. Thus, the empty disallow value + causes a spurious WARNING message, which is kind of annoying. + + This patch makes it so that a 'disallow' value with no ... value ... is + ignored. Granted, you can still screw this up as well, as technically + specifying 'disallow=all,!ulaw' allows only ulaw, and then you would have no + 'allow' value in your database. But really, why would you do that? WHY? + + ASTERISK-16779 #close + Reported by: Atis Lezdins + ........ + + Merged revisions 432970 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432971 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432972 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 21:01 +0000 [0d52907d2b] Joshua Colp + + * func_curl: Don't hold exclusive lock when performing HTTP request. + + This code originally kept a lock held when performing the HTTP + request to ensure that the options provided to curl remain valid. + This doesn't seem to be necessary these days and holding the lock + caused requests to happen sequentially instead of in parallel. + + ASTERISK-18708 #close + Reported by: Dave Cabot + ........ + + Merged revisions 432948 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432949 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432950 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 20:53 +0000 [ac1214d9d4] Jan Juergens (License 6538) + + * apps/app_sms: Add an option to prevent SMS content from being logged + + In some countries, privacy laws specify that SMS content cannot be saved by a + provider. This patch adds a new option to the SMS application, 'n', which + prevents the SMS content from being written to the SMS log. + + ASTERISK-22591 #close + Reported by: Jan Juergens + patches: + DisableSmsContentLoggingByParam.patch uploaded by Jan Juergens (License 6538) + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432947 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 20:37 +0000 [b3fa35786f] Joshua Colp + + * core: Fix tab completion of "core set debug channel" CLI command. + + The "core set debug channel" CLI command mistakenly had source filenames + added to its tab completion. This occurred because the CLI generator fell back + to the "core set debug" command which permits setting debug at a source + filename level. + + ASTERISK-21038 #close + Reported by: Richard Kenner + ........ + + Merged revisions 432944 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432945 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432946 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 20:22 +0000 [b4cc056067] Di-Shi Sun (License 5076) + + * FILE: fix retrieval of file contents when offset is specified + + The loop that reads in a file was not correctly using the offset when + determining what bytes to append to the output. This patch corrects + the logic such that the correct portion of the file is extracted when an + offset is specified. + + ASTERISK-21765 + Reported by: John Zhong + Tested by: Matt Jordan, Di-Shi Sun + patches: + file_read_390821.patch uploaded by Di-Shi Sun (License 5076) + ........ + + Merged revisions 432935 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432938 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432940 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 19:24 +0000 [dc752f515b] Matt Jordan + + * apps/app_amd: Document maximum_word_length option; fix AMDCAUSE documentation + + This patch corrects the documentation for the AMD application. Specifically: + * It documents the maximum_word_length option, which limits the maximum allowed + length of a single utterance. + * It clarifies the AMDCAUSE values MAXWORDS and MAXWORDLENGTH. MAXWORDLENGTH + was documented as MAXWORDS, while MAXWORDS was undocumented. + + Thanks to the issue reporter, Frank DiGennaro, for pointing out the issues. + + ASTERISK-19470 #close + Reported by: Frank DiGennaro + ........ + + Merged revisions 432918 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432920 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432921 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 12:06 +0000 [c52adca396] Richard Mudgett + + * chan_pjsip: AMI action PJSIPShowEndpoint closes AMI connection on error. + + Also fixed similar problem with AMI action PJSIPShowEndpoints. + + ASTERISK-24872 #close + Reported by: Dmitriy Serov + + Review: https://reviewboard.asterisk.org/r/4487/ + ........ + + Merged revisions 432894 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432895 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 11:37 +0000 [636d82f4d8] Richard Mudgett + + * chan_pjsip/res_pjsip_callerid: Make Party ID handling simpler and consistent. + + The res_pjsip modules were manually checking both name and number + presentation values when there is a function that determines the combined + presentation for a party ID struct. The function takes into account if + the name or number components are valid while the manual code rarely + checked if the data was even valid. + + * Made use ast_party_id_presentation() rather than manually checking party + ID presentation values. + + * Ensure that set_id_from_pai() and set_id_from_rpid() will not return + presentation values other than what is pulled out of the SIP headers. It + is best if the code doesn't assume that AST_PRES_ALLOWED and + AST_PRES_USER_NUMBER_UNSCREENED are zero. + + * Fixed copy paste error in add_privacy_params() dealing with RPID + privacy. + + * Pulled the id->number.valid test from add_privacy_header() and + add_privacy_params() up into the parent function add_id_headers() to skip + adding PAI/RPID headers earlier. + + * Made update_connected_line_information() not send out connected line + updates if the connected line number is invalid. Lower level code would + not add the party ID information and thus the sent message would be + unnecessary. + + * Eliminated RAII_VAR usage in send_direct_media_request(). + + Review: https://reviewboard.asterisk.org/r/4472/ + ........ + + Merged revisions 432892 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432893 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 09:55 +0000 [d42c6adb1a] Kevin Harwell + + * Revert - res_pjsip: Allow configuration of endpoint identifier query order + + Due to a break in binary compatibility with some other modules these changes + are being reverted until the issue can be resolved. + + ASTERISK-24840 + Reported by: Mark Michelson + ........ + + Merged revisions 432868 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432869 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-12 21:10 +0000 [f2c21ead1f] Corey Farrell + + * Logger: Fix MALLOC_DEBUG build error. + + Revision 432834 introduced a build error when MALLOC_DEBUG + is used. Switch callid threadstorage to simple + AST_THREADSTORAGE since we no longer need custom cleanup. + + Reported by: Corey Farrell + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432851 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-12 20:12 +0000 [c08fd275bf] Corey Farrell + + * Logger: Convert 'struct ast_callid' to unsigned int. + + Switch logger callid's from AO2 objects to simple integers. + This helps in two ways. Copying integers is faster than + referencing AO2 objects, so this will result in a small + reduction in logger overhead. This also erases the possibility + of an infinate loop caused by an invalid callid in + threadstorage. + + ASTERISK-24833 #comment Committed callid conversion to trunk. + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4466/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432834 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-12 07:58 +0000 [38ee441ea7] Matt Jordan + + * main/audiohook: Update internal sample rate on reads + + When an audiohook is created (which is used by the various Spy applications + and Snoop channel in Asterisk 13+), it initially is given a sample rate of + 8kHz. It is expected, however, that this rate may change based on the media + that passes through the audiohook. However, the read/write operations on the + audiohook behave very differently. + + When a frame is written to the audiohook, the format of the frame is checked + against the internal sample rate. If the rate of the format does not match + the internal sample rate, the internal sample rate is updated and a new SLIN + format is chosen based on that sample rate. This works just fine. + + When a frame is read, however, we do something quite different. If the format + rate matches the internal sample rate, all is fine. However, if the rates + don't match, the audiohook attempts to "fix up" the number of samples that + were requested. This can result in some seriously large number of samples + being requested from the read/write factories. + + Consider the worst case - 192kHz SLIN. If we attempt to read 20ms worth of + audio produced at that rate, we'd request 3840 samples (192000 / (1000 / 20)). + However, if the audiohook is still expecting an internal sample rate of 8000, + we'll attempt to "fix up" the requested samples to: + + samples_converted = samples * (ast_format_get_sample_rate(format) / + (float) audiohook->hook_internal_samp_rate); + + which is: + + 92160 = 3840 * (192000 / 8000) + + This results in us attempting to read 92160 samples from our factories, as + opposed to the 3840 that we actually wanted. On a 64-bit machine, this + miraculously survives - despite allocating up to two buffers of length 92160 + on the stack. The 32-bit machines aren't quite so lucky. Even in the case where + this works, we will either (a) get way more samples than we wanted; or (b) get + about 3840 samples, assuming the timing is pretty good on the machine. + + Either way, the calculation being performed is wrong, based on the API users + expectations. + + My first inclination was to allocate the buffers on the heap. As it is, + however, there's at least two drawbacks with doing this: + (1) It's a bit complicated, as the size of the buffers may change during the + lifetime of the audiohook (ew). + (2) The stack is faster (yay); the heap is slower (boo). + + Since our calculation is flat out wrong in the first place, this patch fixes + this issue by instead updating the internal sample rate based on the format + passed into the read operation. This causes us to read the correct number of + samples, and has the added benefit of setting the audihook with the right + SLIN format. + + Note that this issue was caught by the Asterisk Test Suite as a result of + r432195 in the 13 branch. Because this issue is also theoretically possible + in Asterisk 11, the change is being made here as well. + + Review: https://reviewboard.asterisk.org/r/4475/ + ........ + + Merged revisions 432810 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432811 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432812 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-12 07:40 +0000 [29304d10a0] Diederik de Groot (License 6600) + + * Add support for the clang compiler; update RAII_VAR to use BlocksRuntime + + RAII_VAR, which is used extensively in Asterisk to manage reference counted + resources, uses a GCC extension to automatically invoke a cleanup function + when a variable loses scope. While this functionality is incredibly useful + and has prevented a large number of memory leaks, it also prevents Asterisk + from being compiled with clang. + + This patch updates the RAII_VAR macro such that it can be compiled with clang. + It makes use of the BlocksRuntime, which allows for a closure to be created + that performs the actual cleanup. + + Note that this does not attempt to address the numerous warnings that the clang + compiler catches in Asterisk. + + Much thanks for this patch goes to: + * The folks on StackOverflow who asked this question and Leushenko for + providing the answer that formed the basis of this code: + http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang + * Diederik de Groot, who has been extremely patient in working on getting this + patch into Asterisk. + + Review: https://reviewboard.asterisk.org/r/4370/ + + ASTERISK-24133 + ASTERISK-23666 + ASTERISK-20399 + ASTERISK-20850 #close + Reported by: Diederik de Groot + patches: + RAII_CLANG.patch uploaded by Diederik de Groot (License 6600) + ........ + + Merged revisions 432807 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432808 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432809 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-11 11:39 +0000 [4115e327ac] Richard Mudgett + + * res_pjsip: Move internal init/destroy prototypes to private header file. + + Done as a separate commit from a finding in + https://reviewboard.asterisk.org/r/4467/ + ........ + + Merged revisions 432787 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432788 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-11 10:26 +0000 [89b65f5dda] Richard Mudgett + + * res_pjsip: Fix pjsip.conf type=global object default value handling. + + When a type=global section is not defined in pjsip.conf the global + defaults are not applied. As a result the mandatory Max-Forwards header + is not added to SIP messages for res_pjsip/chan_pjsip. + + The handling of pjsip.conf type=global objects has several problems: + + 1) If the global object is missing the defaults are not applied. + + 2) If the global object is missing the default_outbound_endpoint's default + value is not returned by ast_sip_global_default_outbound_endpoint(). + + 3) Defines are needed so default values only need to be changed in one + place. + + * Added a sorcery instance observer callback to check if there were any + type=global sections loaded. If there were more than one then issue an + error message. If there were none then apply the global defaults. + + * Fixed ast_sip_global_default_outbound_endpoint() to return the + documented default when no type=global object is defined. + + * Made defines for the global default values. + + * Increased the default_useragent[] size because SVN version strings can + get lengthy and 128 characters may not be enough. + + * Fixed an off-nominal code path ref leak in global_alloc() if the string + fields fail to initialize. + + * Eliminated RAII_VAR in get_global_cfg() and + ast_sip_global_default_outbound_endpoint(). + + ASTERISK-24807 #close + Reported by: Anatoli + + Review: https://reviewboard.asterisk.org/r/4467/ + ........ + + Merged revisions 432766 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432767 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-11 10:22 +0000 [185d2e082a] Richard Mudgett + + * res_pjsip: Fixed invalid empty Server and User-Agent SIP headers. + + Setting pjsip.conf useragent to an empty string results in an empty SIP + header being sent. + + * Made not add an empty SIP header item to the global SIP headers list. + + Review: https://reviewboard.asterisk.org/r/4467/ + ........ + + Merged revisions 432764 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432765 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-10 18:09 +0000 [2889f074a0] Joshua Colp + + * core: Don't create snapshots with locks. + + Snapshots are immutable and are never changed. Allocating them + with a lock is wasteful. + + Review: https://reviewboard.asterisk.org/r/4469/ + ........ + + Merged revisions 432742 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432743 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-10 16:33 +0000 [15d266bf85] Javier Acosta (License 6690) + + * res/res_config_odbc: Fix improper escaping of backslashes with MySQL + + When escaping backslashes with MySQL, the proper way to escape the characters + in a LIKE clause is to escape the '\' four times, i.e., '\\\\'. To quote the + MySQL manual: + + "Because MySQL uses C escape syntax in strings (for example, “\n” to represent + a newline character), you must double any “\” that you use in LIKE strings. + For example, to search for “\n”, specify it as “\\n”. To search for “\”, + specify it as “\\\\”; this is because the backslashes are stripped once by the + parser and again when the pattern match is made, leaving a single backslash to + be matched against." + + ASTERISK-24808 #close + Reported by: Javier Acosta + patches: + res_config_odbc.diff uploaded by Javier Acosta (License 6690) + ........ + + Merged revisions 432720 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432721 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432722 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-10 13:13 +0000 [ab6e2c93f3] Graham Barnett (License 6685) + + * app_voicemail: Fix crash with IMAP backends when greetings aren't present + + When an IMAP backend is in use and greetings are set to be used, but aren't + present for a user in their IMAP folder, Asterisk will crash. This occurs + due to the mailstream being set to the 'greetings' folder and being left + in that particular state, regardless of the success/failure of the attempt + to access the folder the mailstream points to. Later access of the mailstream + assumes that it points to the 'INBOX' (or some other folder), resulting in + either a crash (if the greetings folder didn't exist and the mailstream is + invalid) or an inability to read messages from the 'INBOX' folder. + + This patch restores the mailstream to its correct state after accessing the + greetings. This fixes the crash, and sets the mailstream to the state that + VoiceMailMain expects. + + Note that while ASTERISK-23390 also contained a patch for this issue, the + patch on ASTERISK-24786 is the one being merged here. + + Review: https://reviewboard.asterisk.org/r/4459/ + + ASTERISK-23390 #close + Reported by: Ben Smithurst + + ASTERISK-24786 #close + Reported by: Graham Barnett + Tested by: Graham Barnett + patches: + app_voicemail.c.patch.SIGSEGV3rev2 uploaded by Graham Barnett (License 6685) + ........ + + Merged revisions 432695 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432696 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432697 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-10 13:05 +0000 [79e9b37ad0] Ed Hynan (Licnese 6680) + + * localtime: Fix file descriptor leak on kqueue(2) systems + + The localtime management in the Asterisk core contains a thread that watches + for changes in the local timezone. On systems where the directory containing + /etc/localtime is modified frequently, the thread monitoring the changes will + be woken up to determine if any changes in timezone have occurred. When using + kqueue(2), this can cause a leak of file descriptors due to some improper + management of resources. + + This patch updates the kqueue(2) handling in localtime, such that is no longer + leaks resources. + + Review: https://reviewboard.asterisk.org/r/4450/ + + ASTERISK-24739 #close + Reported by: Ed Hynan + patches: + 11.15.0-u.diff uploaded by Ed Hynan (Licnese 6680) + 11.7.0-u.diff uploaded by Ed Hynan (License 6680) + svn-trunk-Jan-26-2015-u.diff uploaded by Ed Hynan (License 6680) + ........ + + Merged revisions 432691 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432693 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432694 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-10 11:08 +0000 [e7ee83ea90] Richard Mudgett + + * res_pjsip_refer: Fix occasional unexpected BYE sent after receiving a REFER. + + A race condition happened between initiating a transfer and requesting + that a dialog termination be delayed. Occasionally, the transferrer + channels would exit the bridge and hangup before the dialog termination + delay was requested. + + * Made request dialog termination delay before initiating the transfer + action. If the transfer fails then cancel the delayed dialog termination + request. + + ASTERISK-24755 #close + Reported by: John Bigelow + + Review: https://reviewboard.asterisk.org/r/4460/ + ........ + + Merged revisions 432668 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432669 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-09 11:13 +0000 [1ce529d30e] Kevin Harwell + + * res_pjsip: allow configuration of endpoint identifier query order + + It's possible to have a scenario that will create a conflict between endpoint + identifiers. For instance an incoming call could be identified by two different + endpoint identifiers and the one chosen depended upon which identifier module + loaded first. This of course causes problems when, for example, the incoming + call is expected to be identified by username, but instead is identified by ip. + This patch adds a new 'global' option to res_pjsip called + 'endpoint_identifier_order'. It is a comma separated list of endpoint + identifier names that specifies the order by which identifiers are processed + and checked. + + ASTERISK-24840 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4455/ + ........ + + Merged revisions 432638 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432639 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-07 19:47 +0000 [a5f80f1781] Joshua Colp + + * res_rtp_asterisk: Fix wrongful use of USE_PJPROJECT define. + + As pjproject is now used as a shared library a different define, + HAVE_PJPROJECT, is used to specify if pjproject is present. + + ASTERISK-24830 #close + Reported by: Stefan Engström + ........ + + Merged revisions 432614 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432615 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-06 16:59 +0000 [affcf1d766] Richard Mudgett + + * res_pjsip_refer: Make safely get the context for a blind transfer. + + Made safely get the TRANSFER_CONTEXT channel value while the channel is + locked in refer_incoming_attended_request() and + refer_incoming_blind_request(). The pointer returned by + pbx_builtin_getvar_helper() is only valid while the channel is locked. + ........ + + Merged revisions 432594 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432595 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-06 16:18 +0000 [090ab1735b] Richard Mudgett + + * res_pjsip_refer: Made refer_attended_alloc() not create the ao2 object with a lock. + + The lock is unused. + ........ + + Merged revisions 432574 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432579 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-06 15:38 +0000 [b85cb7ea1b] Jonathan Rose + + * app: Add functions to swap voicemail function table for testing purposes + ........ + + Merged revisions 432556 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-06 14:24 +0000 [c7cc1b3059] Richard Mudgett + + * chan_dahdi/sig_analog: Fix distinctive ring detection to suck less. + + The distinctive ring feature interferes with detecting Caller ID and + appears to have been broken for years. What happens is if you have a + ring-ring cadence as used in the UK you get too many DAHDI events for the + distinctive ring pattern array and Caller ID detection is aborted. I + think when Zapata/DAHDI added the ring begin event it broke distinctive + ring. More events happen than before and the code does no filtering of + which event times are recorded in the pattern array. + + * Made distinctive ring only record the ringt count when the ring ends + instead of on just any DAHDI event. Distinctive ring can be ring, + ring-ring, ring-ring-ring, or different ring durations for the up to three + rings. + + * Fixed the distinctive ring detection enable (chan_dahdi.conf option + usedistinctiveringdetection) to be per port instead of somewhat per port + and somewhat global. This has been broken since v1.8. + + * Fixed using the default distinctive ring context when the detected + pattern does not match any configured dringX patterns. The default + context did not get set when the previous call was a matched distinctive + ring pattern and the current call is not matched. This has been broken + since v1.8. + + * Made distinctive ring have no effect on Caller ID detection when it is + disabled. Caller ID detection just monitors for 10 seconds before giving + up. + + * Fixed leak of struct callerid_state memory when a polarity reversal + during Caller ID detection causes the incoming call to be aborted. + + DAHDI-1143 + AST-1545 + ASTERISK-24825 #close + Reported by: Richard Mudgett + + ASTERISK-17588 + Reported by: Daniel Flounders + + Review: https://reviewboard.asterisk.org/r/4444/ + ........ + + Merged revisions 432530 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432534 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432551 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-06 13:34 +0000 [f1ab2c5e8b] Richard Mudgett + + * chan_sip: Fix realtime locking inversion when poking a just built peer. + + When a realtime peer is built it can cause a locking inversion when the + just built peer is poked. If the CLI command "sip show channels" is + periodically executed then a deadlock can happen because of the locking + inversion. + + * Push the peer poke off onto the scheduler thread to avoid the locking + inversion of the just built realtime peer. + + AST-1540 + ASTERISK-24838 #close + Reported by: Richard Mudgett + + Review: https://reviewboard.asterisk.org/r/4454/ + ........ + + Merged revisions 432526 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432528 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432529 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-05 10:40 +0000 [5c3e33b3ca] George Joseph + + * app_voicemail: Fix compile breaking in app_voicemail with IMAP_STORAGE. + + There is a leftover "assert" in app_voicemail/__messagecount that references + variables that don't exist. This causes the compile to fail when + --enable-dev-mode and IMAP_STORAGE are selected. + + This patch removes the assert. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4461/ + ........ + + Merged revisions 432484 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432485 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432486 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-04 12:55 +0000 [41ba8fd7c0] Matt Jordan + + * translate: Prevent invalid memory accesses on fast shutdown + + When a 'core restart now' or 'core stop now' is executed and a channel is + currently in a media operation, the translator matrix can be destroyed while a + channel is currently blocked on getting the best translation choice + (see ast_translator_best_choice). When the channel gets the mutex, the + translation matrix now has invalid memory, and Asterisk crashes. + + This patch does two things: + (1) We now only clean up the translation matrix on a graceful shutdown. In that + case, there are no channels, and so there is no risk of this occurring. + (2) We also now set the __matrix and __indextable to NULL. In some initial + backtraces when this occurred, it looked as if there was a memory corruption + occurring, and it wasn't until we determined that something had restarted + Asterisk that the issue became clear. By setting these to NULL on shutdown, + it becomes a bit easier to determine why a crash is occurring. + + Note that we could litter the code with NULL checks on the __matrix, but the + act of making the translation matrix cleaned up on shutdown should preclude + this issue from occurring in the first place, and this part of the code needs + to be as fast as possible. + + Review: https://reviewboard.asterisk.org/r/4457/ + ........ + + Merged revisions 432453 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432455 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-02 13:15 +0000 [278ea2f468] Matt Jordan + + * res/res_pjsip_sdp_rtp: Revert portion of r432195 + + Unfortunately, while initial testing with ConfBridge did not reproduce the + audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing + did show that bridge_softmix and/or ConfBridge has a severe problem bridging + two or more participants at different sampling rates. Sometimes, it even picks + odd sampling rates that cause hideous audio problems. + + This patch backs out the offending portion of the code until the issues in + the affected bridging modules can be more properly analyzed. + + ASTERISK-24841 + ........ + + Merged revisions 432423 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432425 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-27 12:31 +0000 [9e841e4fb6] Richard Mudgett + + * ARI: Fix crash if integer values used in JSON payload 'variables' object. + + Sending the following ARI commands caused Asterisk to crash if the JSON + body 'variables' object passes values of types other than strings. + + POST /ari/channels + POST /ari/channels/{channelid} + PUT /ari/endpoints/sendMessage + PUT /ari/endpoints/{tech}/{resource}/sendMessage + + * Eliminated RAII_VAR usage in ast_ari_channels_originate_with_id(), + ast_ari_channels_originate(), ast_ari_endpoints_send_message(), and + ast_ari_endpoints_send_message_to_endpoint(). + + ASTERISK-24751 #close + Reported by: jeffrey putnam + + Review: https://reviewboard.asterisk.org/r/4447/ + ........ + + Merged revisions 432404 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432405 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-26 12:53 +0000 [d79670b269] Scott Griepentrog + + * Dial API: add self destruct option when complete + + This patch adds a self-destruction option to the + dial api. The usefulness of this is mostly when + using async mode to spawn a separate thread used + to handle the new call, while the calling thread + is allowed to go on about other business. + + The only alternative to this option would be the + calling thread spawning a new thread, or hanging + around itself waiting to destroy the dial struct + after completion. + + Example of use (minus error checking): + + struct ast_dial *dial = ast_dial_create(); + + ast_dial_append(dial, "PJSIP", "200", NULL); + + ast_dial_option_global_enable(dial, AST_DIAL_OPTION_ANSWER_EXEC, "Echo"); + ast_dial_option_global_enable(dial, AST_DIAL_OPTION_SELF_DESTROY, NULL); + + ast_dial_run(dial, NULL, 1); + + The dial_run call will return almost immediately + after spawning the new thread to run and monitor + the dial. If the call is answered, it is placed + into the echo app. When completed, it will call + ast_dial_destroy() on the dial structure. + + Note that any allocations made to pass values to + ast_dial_set_user_data() or dial options must be + free'd in a state callback function on any of: + AST_DIAL_RESULT_UNASWERED, + AST_DIAL_RESULT_ANSWERED, + AST_DIAL_RESULT_HANGUP, or + AST_DIAL_RESULT_TIMEOUT. + + Review: https://reviewboard.asterisk.org/r/4443/ + ........ + + Merged revisions 432385 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432386 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-26 11:12 +0000 [d04fbb0f9d] Kevin Harwell + + * app_chanspy, channel: fix frame leaks + + Fixed a couple of frame leaks that were found during testing. + + ASTERISK-24828 #close + Reported by: John Hardin + Review: https://reviewboard.asterisk.org/r/4445/ + ........ + + Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432363 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432364 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-25 22:58 +0000 [8a16c2f0c2] Matt Jordan + + * make: Remove 'res_features' from libraries to link against with cygwin/mingw32 + + Both the apps and channels Makefiles still listed 'res_features' as modules to + link against when compiling for cygwin or mingw32. This module hasn't existed + for quite some time. + + ASTERISK-18105 #close + Reported by: feyfre + ........ + + Merged revisions 432341 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432342 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432343 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-25 21:03 +0000 [3725173b9e] Makoto Dei (License 5027) + + * channels/chan_sip: Don't send a BYE after final response when PBX thread fails + + When Asterisk fails to start a PBX thread for a new channel - for example, when + the maxcalls setting in asterisk.conf is exceeded - we currently send a final + response, and then attempt to send a BYE request to the UA. Since that's all + sorts of wrong, this patch fixes that by setting sipalreadygone on the sip_pvt + such that we don't get stuck sending BYE requests to something that does not + want it. + + Note that this patch is a slight modification of the one on ASTERISK-15434. + For clarity, it explicitly calls sipalreadygone with the calls to transmit a + final response. + + ASTERISK-21845 + ASTERISK-15434 #close + Reported by: Makoto Dei + Tested by: Matt Jordan + patches: + sip-pbxstart-failed.patch uploaded by Makoto Dei (License 5027) + ........ + + Merged revisions 432320 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432321 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432322 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-25 17:49 +0000 [e484140aed] Rusty Newton + + * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 1 + + Example configuration files for a "basic PBX" deployment for the fictitious + Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4379/ + and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company + + Reported by: Malcolm Davenport + Tested by: Rusty Newton + + Review: https://reviewboard.asterisk.org/r/4379/ + ........ + + Merged revisions 432301 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432302 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-25 17:09 +0000 [ced84d7e62] Matt Jordan + + * configure: Promote SQLite3 "not installed" warning to error + + Since Asterisk won't build without the library, not having it is definitely + an error. Thanks to Kyle Kurz for pointing this out. + ........ + + Merged revisions 432280 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432281 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432282 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-25 17:05 +0000 [4b63da7f7d] Matt Jordan + + * channels/chan_sip: Clarify WARNING message in mismatched SRTP scenario + + When we receive an SDP as part of an offer/answer for a peer/friend has been + configured to require encryption, and that SDP offer/answer failed to provide + acceptable crypto attributes, we currently issue a WARNING that uses the phrase + "we" and "requested". In this case, both of those terms are ambiguous - the + user will probably think "we" is Asterisk (it most likely isn't) and it may + not be a "request", so much as an SDP that was received in some fashion. + + This patch makes the WARNING messages slightly less bad and a bit more + accurate as well. + + ASTERISK-23214 #close + Reported by: Rusty Newton + ........ + + Merged revisions 432277 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432278 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432279 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-25 15:42 +0000 [d68012d1a3] Olle Johansson (License 5267) + + * channels/sip/sdp_crypto: Handle SRTP keys negotiated with key lifetime/MKI + + Prior to this patch, SDP offers negotiating SDES-SRTP crypto attributes would + be rejected if those crypto attributes contained either a key lifetime or a + MKI parameter. While from a theoretical point of view this was defensible - + Asterisk does not support key lifetimes or multiple crypto keys - from a + practical point of view, this is quite a problem. A large number of endpoints + offer lifetimes/MKI, which Asterisk can tolerate so long as it doesn't actually + have to support anything more than a single key or refresh the key. + In reality, this is (so far as we've seen) always the case. + + This patch is a forward port of Olle's work in the lingon-srtp-key-lifetime-1.8 + branch. To quote Olle from ASTERISK-17721, it handles lifetime/MKI parameters + in the following fashion: + + > The Lingon branch now handle lifetime and MKI parameters. + > + > We only accept lifetimes up to max for the crypto and higher than 10 hours + > for packetization of 20 ms (50 pps). + > + > We only handle MKI with index 1. + > + > We do not really bother with counting packets and reinviting at end of + > lifetime, so the min of 10 hours kind of takes care of most calls. If there + > are longer ones, we rely on the other side for re-invites. + > + > It's still not perfect, but I personally think this is an improvement. A + > configuration option for minimum lifetime accepted could be added. + + When the patch was ported forward, I decided against adding a configuration + option as Olle's handling was more than sufficient for every case I've seen + come through the issue tracker or through interoperability testing. We can + revisit that decision if it proves to be false. + + A few small other tweaks were made to the surrounding code to reduce + indentation and provide better type safety for the 'tag' parameter. + + Review: https://reviewboard.asterisk.org/r/4419/ + Review: https://reviewboard.asterisk.org/r/4418/ + + ASTERISK-17721 #close + Reported by: Terry Wilson + + ASTERISK-17899 #close + Reported by: Dwayne Hubbard + patches: + lingon-srtp-key-lifetime-1.8.diff uploaded by oej (License 5267) + + ASTERISK-20233 + Reported by: tootai + + ASTERISK-22748 + Reported by: Alejandro Mejia + ........ + + Merged revisions 432239 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432258 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432259 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-25 14:47 +0000 [ff642289f4] David M. Lee + + * Increase WebSocket frame size and improve large read handling + + Some WebSocket applications, like [chan_respoke][], require a larger + frame size than the default 8k; this patch bumps the default to 16k. + This patch also fixes some problems exacerbated by large frames. + + The sanity counter was decremented on every fread attempt in + ws_safe_read(), regardless of whether data was read from the socket or + not. For large frames, this could result in loss of sanity prior to + reading the entire frame. (16k frame / 1448 bytes per segment = 12 + segments). + + This patch changes the sanity counter so that it only decrements when + fread() doesn't read any bytes. This more closely matches the original + intention of ws_safe_read(), given that the error message is + "Websocket seems unresponsive". + + This patch also properly logs EOF conditions, so disconnects are no + longer confused with unresponsive connections. + + [chan_respoke]: https://github.com/respoke/chan_respoke + + Review: https://reviewboard.asterisk.org/r/4431/ + ........ + + Merged revisions 432236 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432237 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432238 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-24 17:00 +0000 [57525c3cf2] Richard Mudgett + + * config.h: Use real parameter names for ast_variable_new() define. + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432220 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-24 16:14 +0000 [8574c4d197] Matt Jordan + + * channels/chan_sip: Fix crash when transmitting packet after thread shutdown + + When the monitor thread is stopped, its pthread ID is set to a specific value + (AST_PTHREADT_STOP) so that later portions of the code can determine whether + or not it is safe to manipulate the thread. Unfortunately, __sip_reliable_xmit + failed to check for that value, checking instead only for AST_PTHREAD_STOP. + Passing the invalid yet very specific value to pthread_kill causes a crash. + + This patch adds a check for AST_PTHREADT_STOP in __sip_reliable_xmit such that + it doesn't attempt to poke the thread if the thread has already been stopped. + + ASTERISK-24800 #close + Reported by: JoshE + ........ + + Merged revisions 432198 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432199 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432200 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-24 16:00 +0000 [a528dfc9a7] Matt Jordan + + * ARI/PJSIP: Apply requesting channel's format cap to created channels + + This patch addresses the following problems: + * ari/resource_channels: In ARI, we currently create a format capability + structure of SLIN and apply it to the new channel being created. This was + originally done when the PBX core was used to create the channel, as there + was a condition where a newly created channel could be created without any + formats. Unfortunately, now that the Dial API is being used, this has two + drawbacks: + (a) SLIN, while it will ensure audio will flows, can cause a lot of + needless transcodings to occur, particularly when a Local channel is + created to the dialplan. When no format capabilities are available, the + Dial API handles this better by handing all audio formats to the requsted + channels. As such, we defer to that API to provide the format + capabilities. + (b) If a channel (requester) is causing this channel to be created, we + currently don't use its format capabilities as we are passing in our own. + However, the Dial API will use the requester channel's formats if none + are passed into it, and the requester channel exists and has format + capabilities. This is the "best" scenario, as it is the most likely to + create a media path that minimizes transcoding. + Fixing this simply entails removing the providing of the format capabilities + structure to the Dial API. + + * chan_pjsip: Rather than blindly picking the first format in the format + capability structure - which actually *can* be a video or text format - we + select an audio format, and only pick the first format if that fails. That + minimizes the weird scenario where we attempt to transcode between video/audio. + + * res_pjsip_sdp_rtp: Applied the joint capapbilites to the format structure. + Since ast_request already limits us down to one format capability once the + format capabilities are passed along, there's no reason to squelch it here. + + * channel: Fixed a comment. The reason we have to minimize our requested + format capabilities down to a single format is due to Asterisk's inability + to convey the format to be used back "up" a channel chain. Consider the + following: + + PJSIP/A => L;1 <=> L;2 => PJSIP/B + g,u,a g,u,a g,u,a u + + That is, we have PJSIP/A dialing a Local channel, where the Local;2 dials + PJSIP/B. PJSIP/A has native format capabilities g722,ulaw,alaw; the Local + channel has inherited those format capabilities down the line; PJSIP/B + supports only ulaw. According to these format capabilities, ulaw is + acceptable and should be selected across all the channels, and no + transcoding should occur. However, there is no way to convey this: when L;2 + and PJSIP/B are put into a bridge, we will select ulaw, but that is not + conveyed to PJSIP/A and L;1. Thus, we end up with: + + PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B + g g X u u + + Which causes g722 to be written to PJSIP/B. + + Even if we can convey the 'ulaw' choice back up the chain (which through + some severe hacking in Local channels was accomplished), such that the chain + looks like: + + PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B + u u u u + + We have no way to tell PJSIP/A's *channel driver* to Answer in the SDP back + with only 'ulaw'. This results in all the channel structures being set up + correctly, but PJSIP/A *still* sending g722 and causing the chain to fall + apart. + + There's a lot of difficulty just in setting this up, as there are numerous + race conditions in the act of bridging, and no clean mechanism to pass the + selected format backwards down an established channel chain. As such, the + best that can be done at this point in time is clarifying the comment. + + Review: https://reviewboard.asterisk.org/r/4434/ + + ASTERISK-24812 #close + Reported by: Matt Jordan + ........ + + Merged revisions 432195 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432196 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-24 12:38 +0000 [91733b5d15] Kevin Harwell + + * bridge_softmix: G.729 codec license held + + When more than one call using the same codec type enters into a softmix bridge + and no audio is present for a channel the bridge optimizes the out frame by + using the same one for all channels with the same codec type. Unfortunately, + when that number (channels with same codec type) dropped to <= 1 the codec + was not dereferenced. At least not until all parties left the bridge. Thus in + the case of G.729 the license was not released. This patch ensures that the + codec is dereferenced immediately when the optimization no longer applies. + + ASTERISK-24797 #close + Reported by: Luke Hulsey + Review: https://reviewboard.asterisk.org/r/4429/ + ........ + + Merged revisions 432174 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432175 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432176 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-21 14:48 +0000 [bedf51b2ce] Joshua Colp + + * res_ari_channels: Return a 404 response when a requested channel variable does not exist. + + This change makes it so that if a channel variable is requested and it does not exist + a 404 response will be returned instead of an allocation failed response. This makes + it easier to debug and figure out what is going on for a user. + + ASTERISK-24677 #close + Reported by: Joshua Colp + ........ + + Merged revisions 432154 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432155 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-21 13:28 +0000 [87b7060f36] Joshua Colp + + * res_pjsip_registrar: Add Expires header to 200 OK if present in REGISTER. + + Some implementations don't pay attention to the expires for individual contacts. + In this case they may consider the lack of an Expires header in the 200 OK as + unregistered. This change makes it so if an Expires header is present in the REGISTER + we will add one in the 200 OK. + + ASTERISK-24785 #close + Reported by: Ross Beer + ........ + + Merged revisions 432136 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432137 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-21 12:53 +0000 [283bb15c16] Joshua Colp + + * res_pjsip: Add a log message when creating a UAC dialog to a target URI that is invalid. + + ASTERISK-24499 #close + Reported by: Rusty Newton + ........ + + Merged revisions 432118 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432119 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-21 11:36 +0000 [b3c1ad5d73] Graham Barnett (License 6685) + + * apps/app_voicemail: Demote an ERROR message to a WARNING message + + When using IMAP voicemail with FreePBX, you will often get ERROR messages + complaining about not being able to find a mailbox. This is due to how FreePBX + handles voicemail mailboxes. Unfortunately, app_voicemail has to consider this + a configuration error, as in any other system it would be indicative of + someone misconfiguring their system. + + Regardless, a misconfiguration is a WARNING, and not an ERROR. This patch + demotes the message so that system administrators can hopefully reduce some + of the noise in their log files. + + Note that in the original patch this was made into a NOTICE, but that's a + too forgiving. + + ASTERISK-24790 #close + Reported by: Graham Barnett + patches: + app_voicemail.c.patch_noise uploaded by Graham Barnett (License 6685) + ........ + + Merged revisions 432098 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432099 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432100 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-21 08:06 +0000 [2ea7ccbf70] Joshua Colp + + * http: Add missing html tag to 'httpstatus' functionality. + + ASTERISK-24724 #close + Reported by: Ashley Sanders + ........ + + Merged revisions 432078 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432079 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432080 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-20 20:58 +0000 [e66b874f5d] Corey Farrell + + * Allow shutdown to unload modules that register bucket scheme's or codec's. + + * Change __ast_module_shutdown_ref to be NULL safe (11+). + * Allow modules that call ast_bucket_scheme_register or ast_codec_register + to be unloaded during graceful shutdown only (13+ only). + + ASTERISK-24796 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4428/ + ........ + + Merged revisions 432058 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432059 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432060 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-20 20:51 +0000 [bb71672a47] Corey Farrell + + * main/asterisk.c: Reverse #if statement in listener() to fix code folding. + + listener() opens the same code block in two places (#if and #else). This + confuses some folding editors causing it to think that an extra code block + was opened. Folding in 'geany' causes all code after listener() to be + folded as if it were part of that procedure. + + ASTERISK-24813 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4435/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432057 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-20 20:47 +0000 [ce50fa314a] Corey Farrell + + * asterisk/lock.h: Fix syntax errors for non-gcc OSX with 64-bit integers. + + Add a couple of missing closing brackets / parenthesis. + + ASTERISK-24814 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4436/ + ........ + + Merged revisions 432054 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432055 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432056 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-20 11:55 +0000 [bb06603d5f] Richard Mudgett + + * chan_dahdi/sig_analog: Put log message strings on one line. + + With the log messages on one line, you can search for the log message seen + in the log and expect to find it. + ........ + + Merged revisions 432032 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432034 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432036 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-20 11:53 +0000 [340818ad12] Matt Hoskins (license 6688) + + * ASTERISK-24811: Add ast_sorcery_apply_config() to res_pjsip_publish_asterisk. + + Matt Hoskins reported that res_pjsip_publish_asterisk wouldn't pull config from + realtime. Turns out it was just missing a call ast_sorcery_apply_config(). + + res_pjsip_acl was missing it as well, so I added it. The other pjsip modules + looked OK. + + ASTERISK-24811 #close + Reported-by: Matt Hoskins + Tested-by: George Joseph + Tested-by: Matt Hoskins + patches: + res_pjsip_publish_asterisk.c.patch submitted by Matt Hoskins (license 6688) + + Review: https://reviewboard.asterisk.org/r/4433/ + ........ + + Merged revisions 432033 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432035 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-20 09:47 +0000 [4dab71831f] Graham Barnett (License 6685) + + * apps/app_voicemail: Fix IMAP header compatibility issue with Microsoft Exchange + + When interfacing with Microsoft Exchange, custom headers will be returned as + all lower case. Currently, the IMAP header code will fail to parse the returned + custom headers, as it will be performing a case sensitive comparison. This can + cause playback of messages to fail, as needed information - such as origtime - + will not be present. + + This patch updates app_voicemail's header parsing code to perform a case + insensitive lookup for the requested custom headers. Since the headers are + specific to Asterisk, e.g., 'x-asterisk-vm-orig-time', and headers should be + unique in an IMAP message, this should cause no issues with other systems. + + ASTERISK-24787 #close + Reported by: Graham Barnett + patches: + app_voicemail.c.patch_MSExchange uploaded by Graham Barnett (License 6685) + ........ + + Merged revisions 432012 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 432013 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432014 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-19 15:26 +0000 [05cc6d6d55] Richard Mudgett + + * chan_dahdi: Remove some dead code. + ........ + + Merged revisions 431992 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431993 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431994 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-19 12:26 +0000 [252aee4228] Richard Mudgett + + * ISDN AOC: Fix crash from an AOC-E message that doesn't have a channel association. + + Processing an AOC-E event that does not or no longer has a channel + association causes a crash. + + The problem with posting AOC events to the channel topic is that AOC-E + events don't always have a channel association and posting the event to + the all channels topic is just wrong. AOC-E events do however have their + own charging association method to refer to the agreement with the + charging entity. + + * Changed the AOC events to post to the AMI manager topic instead of the + channel topics. If a channel is associated with the event then channel + snapshot information is supplied with the AMI event. + + * Eliminated RAII_VAR() usage in aoc_to_ami() and ast_aoc_manager_event(). + + This patch supercedes the patch on Review: https://reviewboard.asterisk.org/r/4427/ + + ASTERISK-22670 #close + Reported by: klaus3000 + + ASTERISK-24689 #close + Reported by: Marcel Manz + + ASTERISK-24740 #close + Reported by: Panos Gkikakis + + Review: https://reviewboard.asterisk.org/r/4430/ + ........ + + Merged revisions 431974 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431975 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-19 11:37 +0000 [6992b2e8fa] Richard Mudgett + + * res_pjsip_refer: Handle INVITE with Replaces failure after answer. + + * Fixed hangup handling of the session->channel after answer if the + ast_channel_move() or ast_bridge_impart() fails. We are still the thread + controlling the session->channel so we need to call ast_hangup() to kill + the channel. + + * Fixed debug messages in refer_incoming_invite_request() referencing + incorrect channnels on success. Code comments now say why the + session->channel cannot be used. + + Review: https://reviewboard.asterisk.org/r/4422/ + ........ + + Merged revisions 431956 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431957 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-19 09:28 +0000 [e3fd826cdb] Alexander Traud (License 6520) + + * tcptls: Handle new OpenSSL compile time option to disable SSLv3 + + Some distributions are going to disable SSLv3 at compile time. This option can + be checked using the directive OPENSSL_NO_SSL3_METHOD. This patch updates the + TCP/TLS handling in Asterisk to look for that directive before attempting to + use the SSLv3 specific methods. + + ASTERISK-24799 #close + Reported by: Alexander Traud + patches: + no-ssl3-method.patch uploaded by Alexander Traud (License 6520) + ........ + + Merged revisions 431936 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431937 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431938 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-18 20:03 +0000 [a4774ceaa5] Corey Farrell + + * Create work around for scheduler leaks during shutdown. + + * Added ast_sched_clean_by_callback for cleanup of scheduled events + that have not yet fired. + * Run all pending peercnt_remove_cb and replace_callno events in chan_iax2. + Cleanup of replace_callno events is only run 11, since it no longer + releases any references or allocations in 13+. + + ASTERISK-24451 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4425/ + ........ + + Merged revisions 431916 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431917 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431918 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-17 09:34 +0000 [09bfe4b208] Richard Mudgett + + * res_pjsip_refer: Fix crash from a REFER and BYE collision. + + Analyzing a one-off crash on a busy system showed that processing a REFER + request had a NULL session channel pointer. The only way I can think of + that could cause this is if an outgoing BYE transaction overlapped the + incoming REFER transaction in a collision. Asterisk sends a BYE while the + phone sends a REFER to complete an attended transfer. + + * Made check the session channel pointer before processing an incoming + REFER request in res_pjsip_refer. + + * Fixed similar crash potential for res_pjsip supplement incoming request + processing for res_pjsip_sdp_rtp INFO, res_pjsip_caller_id INVITE/UPDATE, + res_pjsip_messaging MESSAGE, and res_pjsip_send_to_voicemail REFER + messages. + + * Made res_pjsip_messaging respond to a message body too large with a 413 + instead of ignoring it. + + ASTERISK-24700 #close + Reported by: Zane Conkle + + Review: https://reviewboard.asterisk.org/r/4417/ + ........ + + Merged revisions 431898 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431899 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-16 15:29 +0000 [d808eace5c] Matt Jordan + + * res/res_rtp_asterisk: Fix crash in debug from RTCP reports without report block + + When RTCP debugging was enabled, an RTCP report without a report block would + cause a crash. This was due to the verbose output not checking to see if the + report_block pointer was NULl before dereferencing it. + + This patch adds the necessary check to prevent printing any verbose output + if the far side hasn't provided us the information they should have. + + ASTERISK-24791 #close + Reported by: JoshE + Tested by: JoshE + ........ + + Merged revisions 431879 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431880 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-15 13:01 +0000 [55eb8fc068] Joshua Colp + + * pjsip: Remove "contact" type from pjsip.conf.sample + + The "contact" object is not meant to be configured from the pjsip.conf + configuration file. It is meant to be created as a result of a registration + and stored elsewhere. + + ASTERISK-24085 #close + Reported by: Rusty Newton + ........ + + Merged revisions 431860 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431861 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-15 12:00 +0000 [55709bc1f7] Joshua Colp + + * install_prereq: Tweak flags when configuring pjproject. + + This change does two things: + 1. Disables debugging so assertions which can return an error do, + instead of asserting. + 2. Enables IPv6 support. + + ASTERISK-24632 #close + Reported by: Rusty Newton + ........ + + Merged revisions 431843 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431844 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-15 11:43 +0000 [e78dd39885] Joshua Colp + + * res_sorcery_config: Improve object lookup times. + + The res_sorcery_config module currently uses a fixed bucket + size of 53. This means that depending on the number of objects + you either end up with excess buckets or a lot of collisions. + Due to the way that res_sorcery_config is implemented it's actually + possible to make the bucket size dynamic based on the number of + objects. This is due to the fact that each loading of the config file + produces a new container and does not modify the existing one. + This change uses the number of expected objects and finds a prime + number near it. In practice depending on the number of objects this + can speed up lookups anywhere from 2X to 15X. This change also removes + the lock from the container as it is not needed. + + Review: https://reviewboard.asterisk.org/r/4423/ + ........ + + Merged revisions 431841 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431842 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-15 10:01 +0000 [e6fe69b76c] Joshua Colp + + * res_pjsip: Add "pjsip show version" CLI command. + + When debugging things it can be useful to know absolutely what + version of pjproject res_pjsip is running against. This change + adds a "pjsip show version" CLI command which can be used to + query for this. + + ASTERISK-24685 #close + Reported by: Joshua Colp + + Review: https://reviewboard.asterisk.org/r/4424/ + ........ + + Merged revisions 431824 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431825 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-15 06:41 +0000 [17f9e0cacc] Matthias Urlichs (license 5508) + + * res_timing_pthread: Fix leaky pipes. + + During some refactoring the way private information for timers + was stored was changed. As a result of this the action which normally + removed the timer upon closure in res_timing_pthread was also removed + causing the timer to remain after it should using up resources. + This change ensures that the timer is removed upon closure. + + ASTERISK-24768 #close + Reported by: Matthias Urlichs + patches: + timer.patch submitted by Matthias Urlichs (license 5508) + ........ + + Merged revisions 431807 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431808 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-14 18:33 +0000 [d1bd8b091b] Matt Jordan + + * apps/app_mixmonitor: Move Test Event for MIXMONITOR_END to after it finishes + + The Test Event for MIXMONITOR_END - which signals that a MixMonitor has + completed - technically fired before the filestream was closed. If a test + used this to trigger a condition to verify that the file was written, it + could result in a race condition where the file size would not be what the + test expected. + + Luckily, no tests were using this (although they should have been). Since the + test event needed to be moved after the point where the MixMonitor autochan has + been destroyed, the test event no longer emits the channel name. Luckily, + nothing needs it. + ........ + + Merged revisions 431788 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431789 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431790 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-14 13:46 +0000 [455a98a2f8] Joshua Colp + + * sorcery: Output an error message if a wizard is specified for an object type and it isn't found. + + ASTERISK-24612 #close + Reported by: Joshua Colp + ........ + + Merged revisions 431771 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431772 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-14 12:31 +0000 [fae6bf8ace] Joshua Colp + + * res_pjsip_exten_state: Improve log message when a subscription is attempted to a non-existent extension. + + ASTERISK-24716 #close + Reported by: Rusty Newton + ........ + + Merged revisions 431754 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431755 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-14 12:21 +0000 [cc96e4a7ef] Joshua Colp + + * Multiple revisions 431751-431752 + + ........ + r431751 | file | 2015-02-14 14:19:07 -0400 (Sat, 14 Feb 2015) | 5 lines + + chan_pjsip: Fix crash when CHANNEL dialplan function is invoked with pjsip argument and no type. + + ASTERISK-24771 #close + Reported by: Niklas Larsson + ........ + r431752 | file | 2015-02-14 14:20:27 -0400 (Sat, 14 Feb 2015) | 2 lines + + 'information' ends with an 'n'. + ........ + + Merged revisions 431751-431752 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431753 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-13 11:24 +0000 [f00ebf0a2d] Richard Mudgett + + * res_pjsip_session: Fix double re-INVITE collision crash. + + A multi-asterisk box setup with direct media enabled would occasionally + crash when two re-INVITE collisions on a call leg happen in a row. + + The re-INVITE logic only had one timer struct to defer the re-INVITE. + When the second collision happens the timer struct is overwritten and put + into the timer heap again. Resources for the first timer are leaked and + the heap has two positions occupied by the same timer struct. Now the + heap ordering is potentially corrupted, the timer will fire twice, and any + resources allocated for the second timer will be released twice. + + * The solution is to put the collided re-INVITE into the delayed requests + queue with all the other delayed requests and cherry pick the next request + that can come off the queue when an event happens. + + * Changed to put delayed BYE requests at the head of the delayed queue. + There is no sense in processing delayed UPDATEs and re-INVITEs when a BYE + has been requested. + + * Made the start of a BYE request flush the delayed requests queue to + prevent a delayed request from overlapping the BYE transaction. I saw a + few cases where a delayed re-INVITE got started after the BYE transaction + started. + + * Changed the delayed_request struct to use an enum instead of a string + for the request method. Cherry picking the queue is easier with an enum + than string comparisons and the compiler can warn if a switch statement + does not cover all defined enum values. + + * Improved the debug output to give more information. It helps to know + which channel is involved with an endpoint. Trunks can have many channels + associated with the endpoint at the same time. + + ASTERISK-24727 #close + Reported by: Mark Michelson + + Review: https://reviewboard.asterisk.org/r/4414/ + ........ + + Merged revisions 431734 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431735 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-12 14:34 +0000 [29f66b0429] Matt Jordan + + * ARI/PJSIP: Add the ability to redirect (transfer) a channel in a Stasis app + + This patch adds a new feature to ARI to redirect a channel to another server, + and fixes a few bugs in PJSIP's handling of the Transfer dialplan + application/ARI redirect capability. + + *New Feature* + A new operation has been added to the ARI channels resource, redirect. With + this, a channel in a Stasis application can be redirected to another endpoint + of the same underlying channel technology. + + *Bug fixes* + In the process of writing this new feature, two bugs were fixed in the PJSIP + stack: + (1) The existing .transfer channel callback had the limitation that it could + only transfer channels to a SIP URI, i.e., you had to pass + 'PJSIP/sip:foo@my_provider.com' to the dialplan application. While this is + still supported, it is somewhat unintuitive - particularly in a world full + of endpoints. As such, we now also support specifying the PJSIP endpoint to + transfer to. + (2) res_pjsip_multihomed was, unfortunately, trying to 'help' a 302 redirect by + updating its Contact header. Alas, that resulted in the forwarding + destination set by the dialplan application/ARI resource/whatever being + rewritten with very incorrect information. Hence, we now don't bother + updating an outgoing response if it is a 302. Since this took a looong time + to find, some additional debug statements have been added to those modules + that update the Contact headers. + + Review: https://reviewboard.asterisk.org/r/4316/ + + ASTERISK-24015 #close + Reported by: Private Name + + ASTERISK-24703 #close + Reported by: Matt Jordan + ........ + + Merged revisions 431717 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431718 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-11 12:03 +0000 [9d081ed06c] Kevin Harwell + + * res_pjsip: dtls_handler causes Asterisk to crash + + There have been a couple of times where a crash occurred in the dtls_handler + section of the code for res_pjsip. Unfortunately, in working this issue the + problem was unable to be reproduced. After looking at the backtraces and + through the code the current best guess as to why this happened might be due + to a reentrance problem and the strtok function. So, the current fix is to + convert the strtok function into the reentrant version of the function, + strtok_r. + + ASTERISK-24741 #close + Reported by: Zane Conkle + Review: https://reviewboard.asterisk.org/r/4409/ + ........ + + Merged revisions 431698 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431699 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-11 11:45 +0000 [cc85e55d88] Kevin Harwell + + * ari_websockets: removed extra check on websocket session read + + When merging the websocket timeout issue (ASTERISK-24701) an extra, almost + duplicate, check was left in the code that should not have been. This removes + it. + + ASTERISK-24701 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4412/ + ........ + + Merged revisions 431693 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431695 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-11 11:39 +0000 [e2d3215b83] Richard Mudgett + + * HTTP: Stop accepting requests on final system shutdown. + + There are three CLI commands to stop and restart Asterisk each. + + 1) core stop/restart now - Hangup all calls and stop or restart Asterisk. + New channels are prevented while the shutdown request is pending. + + 2) core stop/restart gracefully - Stop or restart Asterisk when there are + no calls remaining in the system. New channels are prevented while the + shutdown request is pending. + + 3) core stop/restart when convenient - Stop or restart Asterisk when there + are no calls in the system. New calls are not prevented while the + shutdown request is pending. + + ARI has made stopping/restarting Asterisk more problematic. While a + shutdown request is pending it is desirable to continue to process ARI + HTTP requests for current calls. To handle the current calls while a + shutdown request is pending, a new committed to shutdown phase is needed + so ARI applications can deal with the calls until the system is fully + committed to shutdown. + + * Added a new shutdown committed phase so ARI applications can deal with + calls until the final committed to shutdown phase is reached. + + * Made refuse new HTTP requests when the system has reached the final + system shutdown phase. Starting anything while the system is actively + releasing resources and unloading modules is not a good thing. + + * Split the bridging framework shutdown to not cleanup the global bridging + containers when shutting down in a hurry. This is similar to how other + modules prevent crashes on rapid system shutdown. + + * Moved ast_begin_shutdown(), ast_cancel_shutdown(), and + ast_shutting_down(). You should not have to include channel.h just to + access these system functions. + + ASTERISK-24752 #close + Reported by: Matthew Jordan + + Review: https://reviewboard.asterisk.org/r/4399/ + ........ + + Merged revisions 431692 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431694 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-11 11:13 +0000 [5a17ed7a38] Richard Miller (License 5685) + + * channels/chan_sip: Fix RealTime error during SIP unregistration with MariaDB + + When a SIP device that has its registration stored in RealTime unregisters, + the entry for that device is updated with blank values, i.e., "", indicating + that it is no longer registered. Unfortunately, one of those values that is + 'blanked' is the device's port. If the column type for the port is not a + string datatype (the recommended type is integer), an ODBC or database error + will be thrown. MariaDB does not coerce empty strings to a valid integer value. + + This patch updates the query run from chan_sip such that it replaces the port + value with a value of '0', as opposed to a blank value. This is the value that + other database backends coerce the empty string ("") to already, and the + handling of reading a RealTime registration value from a backend already + anticipates receiving a port of '0' from the backends. + + ASTERISK-24772 #close + Reported by: Richard Miller + patches: + chan_sip.diff uploaded by Richard Miller (License 5685) + ........ + + Merged revisions 431673 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431674 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431675 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-11 11:03 +0000 [8cc50b1ebc] Corey Farrell + + * Enable REF_DEBUG for ast_module_ref / ast_module_unref. + + Add ast_module_shutdown_ref for use by modules that can + only be unloaded during graceful shutdown. + + When REF_DEBUG is enabled: + * Add an empty ao2 object to struct ast_module. + * Allocate ao2 object when the module is loaded. + * Perform an ao2_ref in each place where mod->usecount is manipulated. + * ao2_cleanup on module unload. + + ASTERISK-24479 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4141/ + ........ + + Merged revisions 431662 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431663 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431672 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-11 10:52 +0000 [137c4b0778] Kevin Harwell + + * res_http_websocket: websocket write timeout fails to fully disconnect + + When writing to a websocket if a timeout occurred the underlying socket did not + get closed/disconnected. This patch makes sure the websocket gets disconnected + on a write timeout. Also a notice is logged stating that the websocket was + disconnected. + + ASTERISK-24701 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4412/ + ........ + + Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431670 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431671 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-10 17:17 +0000 [49161d8df8] George Joseph + + * res_pjsip_config_wizard: Add ability to auto-create hints. + + Looking at the Super Awesome Company sample reminded me that creating hints is + just plain gruntwork. So you can now have the pjsip conifg wizard auto-create + them for you. + + Specifying 'hint_exten' in the wizard will create + 'exten => ,hint/PJSIP/' + in whatever is specified for 'hint_context'. + + Specifying 'hint_application' in the wizard will create + 'exten => ,1,' + in whatever is specified for 'hint_context'. + + The default for 'hint_context' is the endpoint's context. + There's no default for 'hint_application'. If not specified, no app is added. + There's no default for 'hint_exten'. If not specified, neither the hint itself + nor the application will be created. + + Some may think this is the slippery slope to users.conf but hints are a basic + necessity for phones unlike voicemail, manager, etc that users.conf creates. + + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4383/ + ........ + + Merged revisions 431643 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431644 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-08 21:12 +0000 [858e825568] Ben Merrills (License 6678) + + * res/ari/resource_channels: Add missing 'no_answer' reason to DELETE /channels + + One of the canonical reasons for hanging up a channel is because the far end + failed to answer - or because someone else answered, and we want to get rid of + this channel. This patch adds the missing value to the 'reason' query parameter + for the DELETE /channels operation. + + Review: https://reviewboard.asterisk.org/r/4400 + + ASTERISK-24745 #close + Reported by: Ben Merrills + patches: + add_no_answer_ari_hangup_cause.diff uploaded by Ben Merrills (License 6678) + ........ + + Merged revisions 431622 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-08 20:35 +0000 [17247daae6] ibercom (License 6599) + + * res/res_odbc: Remove unneeded queries when determining if a table exists + + This patch modifies the ast_odbc_find_table function such that it only performs + a lookup of the requested table if the table is not already known. Prior to + this patch, a queries would be executed against the database even if the table + was already known and cached. + + Review: https://reviewboard.asterisk.org/r/4405/ + + ASTERISK-24742 #close + Reported by: ibercom + patches: + patch.diff uploaded by ibercom (License 6599) + ........ + + Merged revisions 431617 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431618 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431619 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-08 11:24 +0000 [2ebe811d80] Matt Jordan + + * res/res_pjsip_sdp_rtp: Fix leak of local ICE candidates when applying to SDP + + When an SDP is created for an outgoing request/response, the ICE candidates + obtained from the RTP instance are currently leaked. This causes the ao2 + container that holds the candidates to never properly be reclaimed when the + RTP instance is destroyed. + + This patch properly decrements the ICE candidates' container if it is + successfully obtained. + + ASTERISK-24769 #close + Reported by: Matt Jordan + ........ + + Merged revisions 431600 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431601 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-06 15:26 +0000 [7ca1a0da04] Scott Griepentrog + + * various: cleanup issues found during leak hunt + + In this collection of small patches to prevent + Valgrind errors are: fixes for reference leaks + in config hooks, evaluating a parameter beyond + bounds, and accessing a structure after a lock + where it could have been already free'd. + + Review: https://reviewboard.asterisk.org/r/4407/ + ........ + + Merged revisions 431583 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431584 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-03 19:27 +0000 [a79c920aa1] Joshua Colp + + * res_pjsip_keepalive: Don't crash if PJSIP module is not loaded. + ........ + + Merged revisions 431555 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431556 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-03 18:59 +0000 [03ce56d6c5] Joshua Colp + + * sorcery: Don't try to load object types which haven't been defined. + + The act of defining wizards for an object type in sorcery.conf will + create a minimal object type. This can cause a problem when a module + has multiple sorcery instances (which all get the wizards from sorcery.conf + applied) but the sorcery instances do not all contain full information + about the object types. Upon loading errors will occur stating that + the objects can not be created. This is confusing and is actually + perfectly fine. + + This change makes it so that only object types which have been fully + defined will be loaded. + + ASTERISK-24748 #close + Reported by: Joshua Colp + ........ + + Merged revisions 431538 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431539 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-31 10:28 +0000 [14a57782a6] Joshua Colp + + * res_format_attr_h264: Fix crash when determining joint capability. + + The res_format_attr_h264 module currently incorrectly attempts to + copy SPS and PPS information from the wrong attribute. This change + fixes that. + + ASTERISK-24616 #close + Reported by: Yura Kocyuba + + Review: https://reviewboard.asterisk.org/r/4392/ + ........ + + Merged revisions 431521 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431522 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-30 11:49 +0000 [23bb5f6a73] Richard Mudgett + + * app_agent_pool: Fix initial module load agent device state reporting. + + When the app_agent_pool module initially loads there is a race condition + between the thread loading agents.conf and the device state internal + processing thread. If the device state internal processing thread handles + the agent creation state updates before the thread that loaded agents.conf + registers the device state provider callback then the cached agent state + is "Invalid". When a consumer module like app_queue asks for the agent state + it gets the cached "Invalid" state instead of the real state from the provider. + + * Moved loading the agents.conf configuration to the last thing setup by + app_agent_pool in load_module(). Now the device state provider callback + is registered before the config is loaded so the agent creation state + updates are guaranteed to get the initial device state. + + * Removed some now redundant config cleanup on error in load_config(). + + * Added lock protection when accessing the device state in + agent_pvt_devstate_get() and eliminated the RAII_VAR() usage. + + ASTERISK-24737 #close + Reported by: Steve Pitts + + Review: https://reviewboard.asterisk.org/r/4390/ + ........ + + Merged revisions 431492 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431493 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-30 11:41 +0000 [5c9f1b3f51] Kevin Harwell + + * res_pjsip_outbound_publish: eventually crashes when no response is ever received + + When Asterisk attempts to send SIP outbound publish information and no response + is ever received (no 200 okay, 412, 423) the system eventually crashes. A + response is never received because the system Asterisk is attempting to send + publish information to is not available. The underlying pjsip framework attempts + to send publish information. After several attempts it calls back into the + Asterisk outbound publish code. At this point if the "client->queue" is empty + Asterisk attempts to schedule a refresh which utilizes "rdata" and since no + response was received the given "rdata" struture is NULL. Attempting to + dereference a NULL object of course results in a crash. + + The fix here removes the dependency on rdata for schedule_publish_refresh. + Instead param->expiration is now passed to it as this is set to -1 if no + response is received. Also added a notification when no response is received. + + ASTERISK-24635 #close + Reported by: Marco Paland + Review: https://reviewboard.asterisk.org/r/4384/ + ........ + + Merged revisions 431490 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431491 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-30 11:21 +0000 [6a76740b83] Ashley Sanders + + * HTTP: For httpd server, need option to define server name for security purposes + + Added a new config property [servername] to the http.conf file; updated the http server to use the new property when sending responses, for showing http status through the CLI and when reporting status through the 'httpstatus' webpage. In this version, [servername] is uncommented by default. + + ASTERISK-24316 #close + Reported By: Andrew Nagy + Review: https://reviewboard.asterisk.org/r/4374/ + ........ + + Merged revisions 431471 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431484 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-30 10:49 +0000 [bd0bdf1e41] Mark Michelson + + * Fix some memory leaks. + + These memory leaks were found and fixed by John Hardin. I'm just + committing them for him. + + ASTERISK-24736 #close + Reported by Mark Michelson + + Review: https://reviewboard.asterisk.org/r/4389 + ........ + + Merged revisions 431468 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431469 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-29 17:03 +0000 [388d691f34] Scott Griepentrog + + * stasis transfer: fix stasis bridge push race part two + + When swapping a Local channel in place of one already + in a bridge (to complete a bridge attended transfer), + the channel that was swapped out can actually be hung + up before the stasis bridge push callback executes on + the independant transfer thread. This results in the + stasis app loop dropping out and removing the control + that has the the app name which the local replacement + channel needs so it can re-enter stasis. + + To avoid this race condition a new push_peek callback + has been added, and called from the ast_bridge_impart + thread before it launches the independant thread that + will complete the transfer. Now the stasis push_peek + callback can copy the stasis app name before the swap + channel can hang up. + + ASTERISK-24649 + Review: https://reviewboard.asterisk.org/r/4382/ + ........ + + Merged revisions 431450 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431451 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-29 15:20 +0000 [f61c80a8f7] Mark Michelson + + * Allow disabling of 100rel support on PJSIP endpoints. + + Due to an inversion error, setting 100rel=no would not actually + change the current value of the setting (which defaulted to "yes"). + With this fix, the inversion is corrected. + ........ + + Merged revisions 431420 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431436 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-29 15:02 +0000 [034798e37e] Mark Michelson + + * Use SIPS URIs in Contact headers when appropriate. + + RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific + scenarios when we are required to use SIPS URIs in Contact + headers. Asterisk's non-compliance with this could actually + cause calls to get dropped when communicating with clients + that are strict about checking the Contact header. + + Both of the SIP stacks in Asterisk suffered from this issue. + This changeset corrects the behavior in res_pjsip/chan_pjsip.c + + Review: https://reviewboard.asterisk.org/r/4345 + ........ + + Merged revisions 431426 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431427 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-29 14:54 +0000 [fe76d4829f] Mark Michelson + + * Use SIPS URIs in Contact headers when appropriate. + + RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific + scenarios when we are required to use SIPS URIs in Contact + headers. Asterisk's non-compliance with this could actually + cause calls to get dropped when communicating with clients + that are strict about checking the Contact header. + + Both of the SIP stacks in Asterisk suffered from this issue. + This changeset corrects the behavior in chan_sip. + + ASTERISK-24646 #close + Reported by Stephan Eisvogel + + Review: https://reviewboard.asterisk.org/r/4346 + ........ + + Merged revisions 431423 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431424 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431425 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-29 10:47 +0000 [8357ffab9c] George Joseph + + * res_pjsip_exten_state: Reduce log clutter... change a WARNING to a VERBOSE/2 + + Reduce log clutter by changing the "Watcher for hint %s (removed|deactivated)" + message from WARNING to VERBOSE/2. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4387/ + ........ + + Merged revisions 431403 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431404 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-29 06:09 +0000 [9893ba7ffb] Joshua Colp + + * res_rtp_asterisk: Fix DTLS when used with OpenSSL 1.0.1k + + A recent security fix for OpenSSL broke DTLS negotiation for many + applications. This was caused by read ahead not being enabled when it + should be. While a commit has gone into OpenSSL to force read ahead + on for DTLS it may take some time for a release to be made and the + change to be present in distributions (if at all). As enabling read + ahead is a simple one line change this commit does that and fixes + the issue. + + ASTERISK-24711 #close + Reported by: Jared Biel + ........ + + Merged revisions 431384 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431385 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431386 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-28 11:42 +0000 [b3ff43a4e8] Mark Michelson + + * Fix file descriptor leak in RTP code. + + SIP requests that offered codecs incompatible with configured values + could result in the allocation of RTP and RTCP ports that would not get + reclaimed later. + + ASTERISK-24666 #close + Reported by Y Ateya + + Review: https://reviewboard.asterisk.org/r/4323 + + AST-2015-001 + ........ + + Merged revisions 431300 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 431303 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431304 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-28 11:34 +0000 [3cccfac399] Mark Michelson + + * Multiple revisions 431297-431298 + + ........ + r431297 | mmichelson | 2015-01-28 11:05:26 -0600 (Wed, 28 Jan 2015) | 17 lines + + Mitigate possible HTTP injection attacks using CURL() function in Asterisk. + + CVE-2014-8150 disclosed a vulnerability in libcURL where HTTP request injection + can be performed given properly-crafted URLs. + + Since Asterisk makes use of libcURL, and it is possible that users of Asterisk may + get cURL URLs from user input or remote sources, we have made a patch to Asterisk + to prevent such HTTP injection attacks from originating from Asterisk. + + ASTERISK-24676 #close + Reported by Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4364 + + AST-2015-002 + ........ + r431298 | mmichelson | 2015-01-28 11:12:49 -0600 (Wed, 28 Jan 2015) | 3 lines + + Fix compilation error from previous patch. + ........ + + Merged revisions 431297-431298 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431299 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 431301 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431302 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-28 06:19 +0000 [f080ca6536] Sean Bright + + * media formats: update res_format_attr_opus & silk + + In r419044, we changed how formats were handled, but the return value + of the format_parse_sdp_fmtp functions in res_format_attr_opus and + res_format_attr_silk were not updated, causing calls to fail. Ran + into this when getting codec_opus working with Asterisk 13. + + Once the return value was corrected, we were crashing in opus_getjoint + because of NULL format attributes. I've fixed this as well in this + patch. + + Review: https://reviewboard.asterisk.org/r/4371/ + ........ + + Merged revisions 431267 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431268 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 22:29 +0000 [69e107b24e] Richard Mudgett + + * res_pjsip_outbound_registration: Fix reload race condition. + + Performing a CLI "module reload" command when there are new pjsip.conf + registration objects defined frequently failed to load them correctly. + + What happens is a race condition between res_pjsip pushing its reload into + an asynchronous task processor task and the thread that does the rest of + the reloads when it gets to reloading the res_pjsip_outbound_registration + module. A similar race condition happens between a reload and the CLI/AMI + show registrations commands. The reload updates the current_states + container and the CLI/AMI commands call get_registrations() which builds a + new current_states container. + + * Made res_pjsip.c reload_module() use ast_sip_push_task_synchronous() + instead of ast_sip_push_task() to eliminate two threads processing config + reloads at the same time. + + * Made get_registrations() not replace the global current_states container + so the CLI/AMI show registrations command cannot interfere with reloading. + You could never add/remove objects in the container without the + possibility of the container being replaced out from under you by + get_registrations(). + + * Added a registration loaded sorcery instance observer to purge any dead + registration objects since get_registrations() cannot do this job anymore. + The struct ast_sorcery_instance_observer callbacks must be used because + the callback happens inline with the load process. The struct + ast_sorcery_observer callbacks are pushed to a different thread. + + * Added some global current_states NULL pointer checks in case the + container disappears because of unload_module(). + + * Made sorcery's struct ast_sorcery_instance_observer.object_type_loaded + callbacks guaranteed to be called before any struct + ast_sorcery_observer.loaded callbacks will be called. + + * Moved the check for non-reloadable objects to before the sorcery + instance loading callbacks happen to short circuit unnecessary work. + Previously with non-reloadable objects, the sorcery instance + loading/loaded callbacks would always happen, the individual wizard + loading/loaded would be prevented, and the non-reloadable type logging + message would be logged for each associated wizard. + + ASTERISK-24729 #close + Review: https://reviewboard.asterisk.org/r/4381/ + ........ + + Merged revisions 431243 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431251 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 16:58 +0000 [c7591ef6bc] Kevin Harwell + + * tcptls: Bad file descriptor error when reloading chan_sip + + While running through some scenarios using chan_sip and tcp a problem would + occur that resulted in a flood of bad file descriptor messages on the cli: + + tcptls.c:712 ast_tcptls_server_root: Accept failed: Bad file descriptor + + The message is received because the underlying socket has been closed, so is + valid. This is probably happening because unloading of chan_sip is not atomic. + That however is outside the scope of this patch. This patch simply stops the + logging of multiple occurrences of that message. + + ASTERISK-24728 #close + Reported by: Thomas Thompson + Review: https://reviewboard.asterisk.org/r/4380/ + ........ + + Merged revisions 431218 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431219 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431220 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 13:31 +0000 [e826cb8a26] Jonathan Rose + + * Manager: Fix Manager Action ModuleLoad to give correct response when reloading + + Prior to this patch, ModuleLoad would respond with an error indicating that + the requested module wasn't found in spite of finding and reloading the + module. + + Review: https://reviewboard.asterisk.org/r/4373/ + ASTERISK-24721 #close + ........ + + Merged revisions 431153 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 13:22 +0000 [3b0f03ef7b] Kevin Harwell + + * chan_sip: stale nonce causes failure + + When refreshing (with a small expiration) a registration that was sent to + chan_sip the nonce would be considered stale and reject the registration. + What was happening was that the initial registration's "dialog" still existed + in the dialogs container and upon refresh the dialog match algorithm would + choose that as the "dialog" instead of the newly created one. This occurred + because the algorithm did not check to see if the from tag matched if + authentication info was available after the 401. So, it ended up assuming + the original "dialog" was a match and stopped the search. The old "dialog" + of course had an old nonce, thus the stale nonce message. + + This fix attempts to leave the original functionality alone except in the case + of a REGISTER. If a REGISTER is received if searches for an existing "dialog" + matching only on the callid. If the expires value is low enough it will reuse + dialog that is there, otherwise it will create a new one. + + ASTERISK-24715 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4367/ + ........ + + Merged revisions 431187 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431194 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 13:12 +0000 [e62bd46511] Corey Farrell (license 5909) + + * res_pjsip: make it unloadable (take 2) + + Due to the original patch causing memory corruptions it was removed until the + problem could be resolved. This patch is the original patch plus some added + locking around stasis router subcription that was needed to avoid the memory + corruption. + + Description of the original problem and patch (still applicable): + + The res_pjsip module was previously unloadable. With this patch it can now + be unloaded. + + This patch is based off the original patch on the issue (listed below) by Corey + Farrell with a few modifications. Namely, removed a few changes not required to + make the module unloadable and also fixed a bug that would cause asterisk to + crash on unloading. + + This patch is the first step (should hopefully be followed by another/others at + some point) in allowing res_pjsip and the modules that depend on it to be + unloadable. At this time, res_pjsip and some of the modules that depend on + res_pjsip cannot be unloaded without causing problems of some sort. + + The goal of this patch is to get res_pjsip and only res_pjsip to be able to + unload successfully and/or shutdown without incident (crashes, leaks, etc...). + Other dependent modules may still cause problems on unload. + + Basically made sure, with the patch applied, that res_pjsip (with no other + dependent modules loaded) could be succesfully unloaded and Asterisk could + shutdown without any leaks or crashes that pertained directly to res_pjsip. + + ASTERISK-24485 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4363/ + patches: + pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909) + ........ + + Merged revisions 431179 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431180 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 11:48 +0000 [94eebd5ba5] Richard Mudgett + + * app_confbridge: Repeatedly starting and stopping recording ref leaks the recording channel. + + Starting and stopping conference recording more than once causes the + recording channels to be leaked. For v13 the channels also show up in the + CLI "core show channels" output. + + * Reworked and simplified the recording channel code to use + ast_bridge_impart() instead of managing the recording thread in the + ConfBridge code. The recording channel's ref handling easily falls into + place and other off nominal code paths get handled better as a result. + + ASTERISK-24719 #close + Reported by: John Bigelow + + Review: https://reviewboard.asterisk.org/r/4368/ + Review: https://reviewboard.asterisk.org/r/4369/ + ........ + + Merged revisions 431135 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431160 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431161 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 11:34 +0000 [a43d24a9d3] Joshua Colp + + * bridge / res_pjsip_sdp_rtp: Fix issues with media not being reinvited during direct media. + + This change fixes two issues: + + 1. During a swap operation bridging added the new channel before having the swap channel + leave. This was not handled in bridge_native_rtp and could result in a channel not getting + reinvited back to Asterisk. After this change the swap channel will leave first and the + new channel will then join. + + 2. If a re-invite was received after a session had been established any upstream elements + (such as bridge_native_rtp) were not notified that they may want to re-evaluate things. + After this change an UPDATE_RTP_PEER control frame is queued when this situation occurs + and upstream can react. + + AST-1524 #close + + Review: https://reviewboard.asterisk.org/r/4378/ + ........ + + Merged revisions 431157 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431158 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 11:21 +0000 [fb8a2e0399] Matt Jordan + + * ARI: Improve wiki documentation + + This patch improves the documentation of ARI on the wiki. Specifically, it + addresses the following: + * Allowed values and allowed ranges weren't documented. This was particularly + frustrating, as Asterisk would reject query parameters with disallowed values + - but we didn't tell anyone what the allowed values were. + * The /play/id operation on /channels and /bridges failed to document all of + the added media resource types. + * Documentation for creating a channel into a Stasis application failed to + note when it occurred, and that creating a channel into Stasis conflicts with + creating a channel into the dialplan. + * Some other minor tweaks in the mustache templates, including italicizing the + parameter type, putting the default value on its own sub-bullet, and some + other nicities. + + Review: https://reviewboard.asterisk.org/r/4351 + ........ + + Merged revisions 431145 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431148 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 11:16 +0000 [aa8fd7d1b9] Matt Jordan + + * app_confbridge: Restore user's menu name to CLI output of 'confbridge list' + + When issuing a 'confbridge list XXXX' CLI command, the resulting output no + longer displays the menu associated with a ConfBridge participant. + + The issue was caused by ASTERISK-22760. When that patch was done, it removed + the copying of the menu name associated with the user from the actual user + profile. + + This patch fixes the issue by copying the menu name over to the user profile + when the menu hooks are applied to the user. Since that function now does a + little bit more than just apply the hooks, the name of the function has been + changed to cover the copying of the menu name over as well. + + In addition, there is a disparity between the menu name length as it is stored + on the conf_menu structure and the confbridge_user structure; this patch makes + the lengths match so that a strcpy can be used. + + Review: https://reviewboard.asterisk.org/r/4372/ + + ASTERISK-24723 #close + Reported by: Steve Pitts + ........ + + Merged revisions 431134 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431136 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-27 05:47 +0000 [2504f97b01] Joshua Colp + + * res_parking: Fix crash due to race condition when unloading. + + There is currently a race condition when unloading the res_parking + module. Depending on the will of the universe the subscription + invocation may occur AFTER the module is unloaded. This is because + the module does NOT use stasis_unsubscribe_and_join when terminating + the subscription. It merely uses stasis_unsubscribe. + + This change makes it use stasis_unsubscribe_and_join which is documented + for usage in this exact scenario. + + AST-1520 #close + + Review: https://reviewboard.asterisk.org/r/4375/ + ........ + + Merged revisions 431114 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431115 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-26 08:50 +0000 [965777ccfc] David M. Lee + + * Various fixes for OS X + + This patch addresses compilation errors on OS X. It's been a while, so + there's quite a few things. + + * Fixed __attribute__ decls in route.h to be portable. + * Fixed htonll and ntohll to work when they are defined as macros. + * Replaced sem_t usage with our ast_sem wrapper. + * Added ast_sem_timedwait to our ast_sem wrapper. + * Fixed some GCC 4.9 warnings using sig*set() functions. + * Fixed some format strings for portability. + * Fixed compilation issues with res_timing_kqueue (although tests still fail + on OS X). + * Fixed menuconfig /sbin/launchd detection, which disables res_timing_kqueue + on OS X). + + ASTERISK-24539 #close + Reported by: George Joseph + + ASTERISK-24544 #close + Reported by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4327/ + ........ + + Merged revisions 431092 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431093 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-25 07:43 +0000 [a8ae5a7bcb] Matt Jordan + + * dynamic realtime: Updates fail to work due to update fields being passed over + + When a crash was fixed due to usage of the REALTIME function in r423003, a + regression was introduced into ast_update2_realtime where the update fields + passed to the function would be skipped and the lookup field processed twice. + + The use of this function is a bit interesting: A variable argument list is + used with two sentinel values - the first marks the end of the lookup + fields/values; the second marks the end of the update fields/values. + Unfortunately, ast_update2_realtime parses over the lookup fields twice, as + opposed to parsing over the update fields. This causes the lookups to succeed, + but the updates itself to have no effect. + + Note that the most common instance of this problem occurred in app_voicemail + during the updating of a mailbox password. + + Thanks to the issue reporter, Paddy Grice, for pointing out the problem. + + Review: https://reviewboard.asterisk.org/r/4356/ + + ASTERISK-24231 + + ASTERISK-24626 #close + Reported by: Paddy Grice + ........ + + Merged revisions 431072 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431073 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-23 14:17 +0000 [b69b0d12ee] Richard Mudgett + + * app_confbridge: Shorten CBRec channel names to CBRec/- + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431055 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-23 14:14 +0000 [c780223507] Richard Mudgett + + * app_confbridge: Make CBRec channel names more unique. + + Channel names should be different from other channels in the system while + the channel exists. + + * Use a sequence number for CBRec channels instead of a random number + because the same random number could be picked again for the next CBRec + channel. + ........ + + Merged revisions 431052 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431053 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-23 13:51 +0000 [b38be992b1] Richard Mudgett + + * app_confbridge: Whitespace + + Because there is sometimes no sence to any whitespace. + ........ + + Merged revisions 431049 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 431050 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431051 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-23 12:46 +0000 [89610adda5] David M. Lee + + * Add depend on pjproject to res_pjsip_config_wizard.c + ........ + + Merged revisions 431030 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-23 09:21 +0000 [ca02121ef7] Kevin Harwell + + * Investigate and fix memory leaks in Asterisk + + Fixed memory leaks that were found in Asterisk. + + ASTERISK-24693 #close + Reported by: Kevin Harwell + Review: https://reviewboard.asterisk.org/r/4347/ + ........ + + Merged revisions 430999 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431010 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-23 09:13 +0000 [49cbfa7de6] Walter Doekes + + * Fix typo's (retrieve, specified, address). + ........ + + Merged revisions 430996 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430998 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431000 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-23 08:39 +0000 [874cb5615d] HZMI8gkCvPpom0tM (License 6658) + + * chan_sip: Case insensitive comparison of "defaultuser" parameter. + + All the other configuration options are case insensitive, so this one + should be too. + + ASTERISK-24355 #close + Reported by: HZMI8gkCvPpom0tM + patches: + ast.patch uploaded by HZMI8gkCvPpom0tM (License 6658) + ........ + + Merged revisions 430993 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430994 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430995 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-22 13:30 +0000 [9bff4eeca3] Richard Mudgett + + * Bridge core: Pass a ref with the swap channel when joining a bridge. + + When code imparts a channel into a bridge to swap with another channel, a + ref needs to be held on the swap channel to ensure that it cannot + dissapear before finding it in the bridge. + + * The ast_bridge_join() swap channel parameter now always steals a ref for + the swap channel. This is the only change to the bridge framework's + public API semantics. + + * bridge_channel_internal_join() now requires the bridge_channel->swap + channel to pass in a ref. + + ASTERISK-24649 + Reported by: John Bigelow + + Review: https://reviewboard.asterisk.org/r/4354/ + ........ + + Merged revisions 430975 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430976 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-22 13:14 +0000 [e67ca431ee] Richard Mudgett + + * res_pjsip_outbound_registration.c: Minor code cleanup. + + * Add an allocation failure check and assert in + sip_outbound_registration_response_cb(). + + * Made sip_outbound_registration_state_destroy() handle partially created + state objects from sip_outbound_registration_state_alloc(). + + Review: https://reviewboard.asterisk.org/r/4366/ + ........ + + Merged revisions 430957 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430958 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-22 12:10 +0000 [49f405fe4c] Scott Griepentrog + + * stasis transfer: fix a race condition on stasis bridge push + + After a bridge transfer completes where a local replacement + channel is used, a stasis transfer message with the details + of the transfer is sent. This is processed by stasis which + then sets the stasis app name and replaced channel snapshot + on the replacement channel. + + However, since a separate thread was already started to run + stasis on the new replacement channel, a race was on to see + if the message processing would be completed before the app + name was needed, otherwise the channel would be hung up. + + This change moves the calls used to set the stasis app name + and the replace snapshot to the bridge_stasis_push function + callback from the bridge transfer logic, allowing the steps + to be completed earlier and more deterministically, and the + race elimianted. + + NOTE: the swap channel parameter to bridge_stasis_push (and + thus all bridge push callbacks) must always be present when + performing a swap with another channel. + + ASTERISK-24649 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4341/ + ........ + + Merged revisions 430939 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430940 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-22 08:23 +0000 [7fcc9ce8bc] Gareth Palmer (License 5169) + + * apps/app_voicemail: Trigger MWI notification with MixMonitor m() option + + The MixMonitor m() option allows a recording to be pushed to a specific + voicemail mailbox. If the message is delivered to the mailbox's INBOX, however, + no MWI notification is currently raised. + + This patch corrects the issue by properly calling notify_new_state from the + msg_create_from_file function. This will cause MWI to be triggered if the + message was placed in the mailbox's INBOX. + + ASTERISK-24709 #close + Reported by: Gareth Palmer + patches: + app_voicemail-430919.patch uploaded by Gareth Palmer (License 5169) + ........ + + Merged revisions 430920 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430921 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430922 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-21 15:57 +0000 [38738a7316] Richard Mudgett + + * res_pjsip_outbound_registration.c: Move unref to a better place. + + Move an unconditional unref of client_state so it doesn't look like it + could be used after the last ref has destroyed it. + ........ + + Merged revisions 430902 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430903 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-21 07:36 +0000 [5835bf7a7f] Matt Jordan + + * channels/chan_sip: Fix registration leak during reload + + When the SIP registrations were migrated to using ao2 in what was then trunk, + the explicit destruction of the registrations on module reload was removed and + not replaced with an ao2 equivalent. Debugging done by Stefan Engström, the + issue reporter, on ASTERISK-24673 confirmed that the reference in the + registry_list container was being leaked. + + Since the purpose of cleanup_all_regs is to prep a registration for + destruction, this function now calls an ao2_callback function callback with the + OBJ_MULTIPLE | OBJ_NODATA | OBJ_UNLINK flags used to remove the registrations. + This cleans up each registration, and also removes it from the registration + container registry_list. + + Review: https://reviewboard.asterisk.org/r/4355/ + + ASTERISK-24640 #close + Reported by: Max Man + + ASTERISK-24673 #close + Reported by: Stefan Engström + Tested by: Stefan Engström + ........ + + Merged revisions 430864 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430866 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-21 07:27 +0000 [958a41a884] Matt Jordan + + * AMI: Add documentation for the missing Cdr/CEL events. + + This patch adds AMI event documentation for the Cdr and CEL AMI events. + + Note that while these events do share fields with each other and with other + channel related events, they do not contain all of the fields in a standard + channel snapshot, nor is the description of the fields identical. As such, + the patch opts for documentation for each field, for each event. + + Review: https://reviewboard.asterisk.org/r/4350/ + + ASTERISK-24671 #close + Reported by: Dan Jenkins + ........ + + Merged revisions 430862 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430863 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-21 07:12 +0000 [4740ef50f4] Matt Jordan + + * apps/app_dial: Don't publish DialEnd twice on unexpected GoSub/Macro values + + The Dial application has some interesting options with the mid-call Macro (M) + and GoSub (U) options. If the MACRO_RESULT/GOSUB_RESULT returns specific + values, the Dial application will take some action upon the channels involved + in the dial operation (such as hanging up a particular party, etc.) The Dial + application ensures that a Stasis message is published in the event that + MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial operation, so + that there is a corresponding DialEnd event published in AMI/ARI for the + DialBegin event that preceeded it. + + A bug exists where that same DialEnd event will be published on Stasis even if + the value returned in MACRO_RESULT/GOSUB_RESULT is not one that the Dial + application cares about. This causes two DialEnd events to be published - one + with the MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is all + sorts of wrong. + + This patch fixes the bug by ensuring that we only publish a DialEnd message to + Stasis if the Dial application's mid-call Macro/GoSub returns something that + Dial cares about. + + Review: https://reviewboard.asterisk.org/r/4336 + + ASTERISK-24682 #close + Reported by: Matt Jordan + ........ + + Merged revisions 430842 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430844 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-21 07:06 +0000 [228fdb3f4e] Matt Jordan + + * main/rtp_engine: Format NTP timestamps as unsigned longs + + When the RTCP reports are created, the NTP timestamps are stored as strings, + as JSON does not have an integer type long enough to store the value. However, + on 32-bit systems, a signed long may overflow for some portion of the + timestamp. + + This patch corrects the overflow by formatting the timestamps as unsigned + longs. + ........ + + Merged revisions 430840 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430841 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-20 11:15 +0000 [804ab70f9d] Ashley Sanders + + * ARI: Fixed crash that occurred when updating a bridge when the optional query parameter 'name' was not supplied. + + Prior to this changeset, posting to the: /ari/bridges/{bridgeId} endpoint without specifying a value for the [name] query parameter, would crash Asterisk if the bridge you are attempting to create (or update) had the same ID as an existing bridge. The internal mechanism of the POST operation interpreted a null value for name, thus resulting in an error condition that crashed Asterisk. + + ASTERISK-24560 #close + Reported By: Kinsey Moore + + Review: https://reviewboard.asterisk.org/r/4349/ + ........ + + Merged revisions 430818 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430820 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-20 10:59 +0000 [e4738a59eb] Richard Mudgett + + * CHANNEL(peer), chan_iax2, res_fax, SNMP agent: Fix deadlock from reaching across a bridge. + + Calling ast_channel_bridge_peer() cannot be done while holding any channel + locks. The reported issue hit the deadlock in chan_iax2, but an audit of + the ast_channel_bridge_peer() calls found three more locations where the + same deadlock can occur. + + * Made CHANNEL(peer), res_fax, and the SNMP agent not call + ast_channel_bridge_peer() with any channel locked. For CHANNEL(peer) I + had to rework the logic to not hold the channel lock. + + * Made chan_iax2 no longer call ast_channel_bridge_peer(). It was done + for legacy reasons that no longer apply. + + * Removed the iax.conf forcejitterbuffer option. It is now always enabled + when the jitterbuffer option is enabled. If you put a jitter buffer on a + channel it will be on the channel. + + ASTERISK-24600 #close + Reported by: Jeff Collell + + Review: https://reviewboard.asterisk.org/r/4342/ + ........ + + Merged revisions 430817 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430819 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-19 20:41 +0000 [14b8e03dad] Ben Klang (License 5876) + + * contrib/scripts/install_prereq: Don't install 32-bit packages on 64-bit hosts + + On Debian based systems, the install_prereq tool uses a search command on + Debian that results in selecting both 64-bit and 32-bit packages. Besides the + waste of disk space, this can actually cause aptitude use 100% of memory on a + VM with 1GB of RAM as it tried to work out all of the 32-bit package + dependencies. + + This patch filters out the 32-bit packages on a 64-bit machine, and leaves + 32-bit machines alone. + + ASTERISK-24048 #close + Reported by: Ben Klang + Tested by: Ben Klang, Matt Jordan + patches: + install_prereq_64-bit_compat.patch uploaded by Ben Klang (License 5876) + ........ + + Merged revisions 430798 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430799 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430800 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-19 20:33 +0000 [112bf1597e] LEI FU (License 6640) + + * app_voicemail: Temp message left after review/hangup with ODBC/IMAP backend + + When using ODBC or IMAP storage, temporary files created on the file system + must be disposed of using the DISPOSE macro. The DELETE macro will map to a + deletion function for the backend storage, but does not clean up any local + files created as a result of the operation. + + When using voicemail with the operator and review options enabled, pressing + 0 to enter the menu, followed by 1 to save the message, followed by any + other DTMF press to delete the message, will result in the temporary file + lingering on the file system. + + This patch properly calls DISPOSE after the DELETE. This causes the local + file to be disposed of. + + ASTERISK-24288 #close + Reported by: LEI FU + patches: + voicemail_odbc_review_fix.diff uploaded by LEI FU (License 6640) + ........ + + Merged revisions 430795 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430796 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430797 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-19 12:15 +0000 [7dc784ffa9] Mark Michelson + + * Call extension state callbacks at hint creation. + + When a hint gets created, any subsequent device or presence + state changes result in extension status events getting sent + out to interested parties. However, at the time of hint creation, + no such event gets sent out, so watchers of extension state are + potentially left in the dark until the first state change after + hint creation. + + Patch contributed by John Hardin (License #6512) + ........ + + Merged revisions 430776 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430777 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-19 07:19 +0000 [e43912f3f3] Joshua Colp + + * res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions. + + The first thing this patch fixes is UAS dialogs. Previously if a transport was + configured on an endpoint and an inbound session was created there was no guarantee + that requests sent on the dialog would use the correct transport and address + information. This has now been fixed so an explicitly configured transport + is taken into account. + + The second thing this patch fixes is res_pjsip_multihomed. The res_pjsip_multihomed + module attempts to determine what transport a message should go out on and what + addressing information should go into the message itself. In a scenario where + multiple transports exist bound to the same IP address but a different port the + code would incorrectly alter the transport and change the message to the wrong + transport. This change makes the res_pjsip_multihomed module smarter so it will + only change the transport and address information in the message when it is + possible and makes sense. + + ASTERISK-24615 #close + Reported by: David Justl + + Review: https://reviewboard.asterisk.org/r/4331/ + ........ + + Merged revisions 430755 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430756 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-16 18:35 +0000 [07e2a48ab1] Kevin Harwell + + * REVERTING res_pjsip: make it unloadable + + Due to the original patch causing memory corruptions the patch is + being removed until the problem can be resolved. + ........ + + Merged revisions 430734 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430735 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-16 16:14 +0000 [1111944afb] Mark Michelson + + * Change PJProject version requirement for ca_list_path transport option in CHANGES file. + ........ + + Merged revisions 430716 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430717 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-16 16:13 +0000 [831acba826] Mark Michelson + + * Fix problem where a hung channel could occur on a failed blind transfer. + + Different clients react differently to being told that a blind transfer + has failed. Some will simply send a BYE and be done with it. Others will + attempt to reinvite themselves back onto the call. + + In the latter case, we were creating a new channel and then leaving it to + sit forever doing nothing. With this code change, that new channel will + not be created and the dialog with the transferring channel will be cleaned + up properly. + + ASTERISK-24624 #close + Reported by Zane Conkle + + Review: https://reviewboard.asterisk.org/r/4339 + ........ + + Merged revisions 430714 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430715 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-16 15:46 +0000 [023fa0f9e8] cloos (License #5956) + + * Add support for the ca_list_path option for PJSIP transports. + + This allows for a path to be specified that has a collection of CA + certificates in it. + + ASTERISK-24575 #close + Reported by cloos + Patches: + pj-ca-path-trunk.diff uploaded by cloos (License #5956) + + Review: https://reviewboard.asterisk.org/r/4344 + ........ + + Merged revisions 430709 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430713 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-15 11:36 +0000 [a8ea2f9287] Richard Mudgett + + * res_fax.c, res_fax_spandsp.c: Remove redundant locking. + + When FAX was developed, apparently the faxregistry.container used to be a + linked list that was converted to an ao2 container. Some of the + replacement ao2 container operations still had explicit lock/unlocks + around them. + + Three off nominal code paths in res_fax.c and res_fax_spandsp.c unlock the + channel even though the routine did not lock the channel and other code + paths in the routine do not unlock the channel. + + Review: https://reviewboard.asterisk.org/r/4340/ + ........ + + Merged revisions 430687 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-15 11:28 +0000 [9b1c36d3fa] Richard Mudgett + + * res_fax.c, res_fax_spandsp.c: Fix some curlies on the end of function definitions. + ........ + + Merged revisions 430685 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430686 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-15 06:10 +0000 [1e605d950b] Joshua Colp + + * res_pjsip_outbound_registration: Fix race condition when reloading and listing registrations. + + Due to the split of outbound registration state from configuration it is possible during + a reload for a "pjsip show registrations" CLI command to be executed which gets an older + snapshot of the configuration. This configuration may include outbound registrations which + have been removed due to a reload operation occurring at the same time. The code for + printing the outbound registration did not take this into account but now it does. + + AST-1506 #close + + Review: https://reviewboard.asterisk.org/r/4338/ + ........ + + Merged revisions 430664 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430665 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-14 20:19 +0000 [f11fb76205] abelbeck (License 5903) + + * configure: If cross-compiling, assume we have working semaphores + + The Asterisk 13 configure.ac checks for HAS_WORKING_SEMAPHORE but does not have + an option for cross-compiling so it fails with an exit. Since we're cross- + compiling, we can't exactly go looking for the header. The semaphore.h header + is relatively common: + * It's part of the POSIX standard + * It's part of GNU C Library + As such, we assume that it will be present when cross-compiling. + + As such, this patch defaults "HAS_WORKING_SEMAPHORE" to "1" if cross-compiling + is detected. + + If you're cross-compiling to a platform that doesn't support this, then make + sure you re-define this to 0. + + ASTERISK-24663 #close + Reported by: abelbeck + patches: + asterisk-13-anonymous-semaphores.patch uploaded by abelbeck (License 5903) + ........ + + Merged revisions 430646 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430647 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-14 17:15 +0000 [49542a794b] Corey Farrell (license 5909) + + * res_pjsip: make it unloadable + + The res_pjsip module was previously unloadable. With this patch it can now + be unloaded. + + This patch is based off the original patch on the issue (listed below) by Corey + Farrell with a few modifications. Namely, removed a few changes not required to + make the module unloadable and also fixed a bug that would cause asterisk to + crash on unloading. + + This patch is the first step (should hopefully be followed by another/others at + some point) in allowing res_pjsip and the modules that depend on it to be + unloadable. At this time, res_pjsip and some of the modules that depend on + res_pjsip cannot be unloaded without causing problems of some sort. + + The goal of this patch is to get res_pjsip and only res_pjsip to be able to + unload successfully and/or shutdown without incident (crashes, leaks, etc...). + Other dependent modules may still cause problems on unload. + + Basically made sure, with the patch applied, that res_pjsip (with no other + dependent modules loaded) could be succesfully unloaded and Asterisk could + shutdown without any leaks or crashes that pertained directly to res_pjsip. + + ASTERISK-24485 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4311/ + patches: + pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909) + ........ + + Merged revisions 430628 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430629 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-14 14:39 +0000 [67234b3ee2] Mark Michelson + + * Prevent slow graceful shutdown when outbound publications never started. + + The code was missing the case for explicitly destroying an outbound publication + when Asterisk had never actually published anything. The result was that Asterisk + would hang for a while on a graceful shutdown. + + With this change, the case is taken into account, and on a graceful shutdown, these + publications are destroyed without the need to actually send a PUBLISH request. + + ASTERISK-24655 #close + Reported by Kevin Harwell + + Review: https://reviewboard.asterisk.org/r/4325 + ........ + + Merged revisions 430608 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430609 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-14 09:40 +0000 [3eec8e4c44] Diederik de Groot (License 6600) + + * build_tools/mkpkgconfig: Fix Cflags concatenation error in asterisk.pc + + The mkpkgconfig script incorrectly concatenates Cflags options together. As an + example, the following: + Cflags: -I/usr/include/libxml2 -g3 + + Is instead generated as: + Cflags: -I/usr/include/libxml2-g3 + + This patch corrects the generation of Cflags in mkpkgconfig such that the + Cflags options are output correctly. + + Review: https://reviewboard.asterisk.org/r/3707/ + + ASTERISK-23991 #close + Reported by: Diederik de Groot + patches: + fix_mkpkgconfig.diff uploaded by Diederik de Groot (License 6600) + ........ + + Merged revisions 430589 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430590 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430591 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-13 12:17 +0000 [1780de95e4] Richard Mudgett + + * app_macro: Don't restore the calling location on a channel redirect. + + v11: If a channel redirect to a macro exten of a macro that is active + happens, the redirect location doesn't get executed. Instead the original + macro location is restored and gets reexecuted. + + v13: An additional effect happens if a parked call times out to an + extension in the macro that parked the call then the macro is reexecuted + instead of the expected park return location. + + * Made not restore the macro calling location on an + AST_SOFTHANGUP_ASYNCGOTO. + + * Increased the locked channel range when setting up the macro execution + environment to cover things that should be done while the channel is + locked. + + * Removed unnecessary NULL tests before calling ast_free() in + _macro_exec(). + + ASTERISK-23850 #close + Reported by: Andrew Nagy + + Review: https://reviewboard.asterisk.org/r/4292/ + ........ + + Merged revisions 430564 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430565 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430567 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-13 06:09 +0000 [0e631a541d] Joshua Colp + + * chan_pjsip: Add configure check for 'pjsip_get_dest_info' function. + + The 'pjsip_get_dest_info' function is used to determine if the signaling transport + of the dialog is secure or not. This function was added in PJSIP 2.3 and does not + exist in earlier versions. + + This configure check allows Asterisk to build and run with older versions at the + loss of the 'secure' argument for the PJSIP CHANNEL dialplan function. Usage of + this argument will require upgrading to PJSIP 2.3. + + ASTERISK-24665 #close + Reported by: Mark Michelson + + Review: https://reviewboard.asterisk.org/r/4329/ + ........ + + Merged revisions 430546 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430547 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-12 13:13 +0000 [4dd6b6ff59] Richard Mudgett + + * AMI: Revert non-backwards compatible changes from earlier commit. + + * Reverted the change to astman_send_listack() to not use the listflag + parameter and always set the value to "Start" so the start capitalization + is consistent. Unfortunately changing the case of a returned value is not + a backward compatible change so for now FAXSessions is going to have to + remain inconsistent with all of the other AMI list actions. + + * Reverted the minor protocol error fix in action_getconfig() when no + requested categories are found. Each line needs to be formatted as + "Header: text". + + Caught by the testsuite. + + ASTERISK-24049 + ........ + + Merged revisions 430528 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430529 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-12 12:28 +0000 [aa7e06f797] Niklas Larsson (License 5068) + + * configs/samples/features.conf.sample: Document attended transfer DTMF options + + The sample config was missing the configuration options for DTMF attended + transfer completion scenarios. The configuration options 'atxferabort', + 'atxfercomplete', 'atxferthreeway', and 'atxferswap' are now documented in the + appropriate configuration file. + + ASTERISK-24678 #close + Reported by: Niklas Larsson + patches: + features.conf.sample.diff uploaded by Niklas Larsson (License 5068) + ........ + + Merged revisions 430526 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430527 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-12 12:09 +0000 [c7ea108e02] Richard Mudgett + + * Revert -r430452 It needs to be redone for the next major AMI version change instead. + + ASTERISK-24049 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430509 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-12 12:01 +0000 [9065488ddd] Michael L. Young (license 5026) + + * main/syslog: Allow dynamic logs, such as security events, to log to the syslog + + The security event log uses a dynamic log level (SECURITY) that is registered + with the Asterisk logging core. Unfortunately, the syslog would ignore log + statements that had a dynamic log level associated with them. Because the + syslog cannot handle ad hoc dynamic log levels, this patch treats any dynamic + log entries sent to the syslog as logs with a level of NOTICE. + + ASTERISK-20744 #close + Reported by: Michael Keuter + Tested by: Michael L. Young, Jacek Konieczny + patches: + asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by Michael L. Young (license 5026) + ........ + + Merged revisions 430506 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430507 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430508 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-12 09:18 +0000 [b38acbce6e] Kristian Hogh (License 6639) + + * funcs/func_curl: Fix memory leak when CURLOPT channel datastore is destroyed + + When the channel datastore associated with the usage of CURLOPT on a specific + channel is freed, the underlying structure holding the list of options is not + disposed of. This patch properly frees the structure in the datastore .destroy + callback. + + ASTERISK-24672 #close + Reported by: Kristian Hogh + patches: + func_curl-memory-leak.diff uploaded by Kristian Hogh (License 6639) + ........ + + Merged revisions 430487 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430488 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430489 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-09 16:09 +0000 [fba836cc02] Scott Griepentrog + + * sip_to_pjsip: improve ability to parse input files + + General improvements to SIP to PJSIP conversion utility: + + 1) track default section of input file to allow parsing + an include file that doesn't specify a [section] + + 2) informatively handle case of assignment without [section] + + 3) correctly handle getting sections from included files + - [section]'s are inherited by included file + + 4) provide null string as default transport bind ip + + 5) gracefully handle missing portions of registration string + + 6) denote steps of operation during conversion and confirm + top level files as a convenience + + ASTERISK-24474 #close + Review: https://reviewboard.asterisk.org/r/4280/ + Reported by: John Kiniston + ........ + + Merged revisions 430469 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430470 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-09 15:45 +0000 [5b30938394] Scott Griepentrog + + * app_bridge: return to the next dialplan priority + + When app_bridge grabs a channel and puts it into + a bridge, the channel should then continue where + it left off in the dialplan after the bridge has + ended. Although it stores the current dialplan + location as an after bridge goto on the channel, + it was executing the same priority again instead + of going to the next priority. By swapping the + "specific" version of bridge_set_after_goto with + bridge_set_after_go_on, the next priority in the + dialplan is executed instead. + + ASTERISK-24637 #close + Review: https://reviewboard.asterisk.org/r/4322/ + Reported by: John Bigelow + ........ + + Merged revisions 430467 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430468 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-09 12:53 +0000 [ef34a05f21] Richard Mudgett + + * AMI: Remove no longer used parameter from astman_send_listack(). + + Follow-up issue to -r430435 from reviewboard review. + + ASTERISK-24049 + Review: https://reviewboard.asterisk.org/r/4315/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430452 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-09 12:16 +0000 [52a7cdb101] Richard Mudgett + + * AMI: Make AMI actions that generate event lists consistent. + + * Made the following AMI actions use list API calls for consistency: + Agents + BridgeInfo + BridgeList + BridgeTechnologyList + ConfbridgeLIst + ConfbridgeLIstRooms + CoreShowChannels + DAHDIShowChannels + DBGet + DeviceStateList + ExtensionStateList + FAXSessions + Hangup + IAXpeerlist + IAXpeers + IAXregistry + MeetmeList + MeetmeListRooms + MWIGet + ParkedCalls + Parkinglots + PJSIPShowEndpoint + PJSIPShowEndpoints + PJSIPShowRegistrationsInbound + PJSIPShowRegistrationsOutbound + PJSIPShowResourceLists + PJSIPShowSubscriptionsInbound + PJSIPShowSubscriptionsOutbound + PresenceStateList + PRIShowSpans + QueueStatus + QueueSummary + ShowDialPlan + SIPpeers + SIPpeerstatus + SIPshowregistry + SKINNYdevices + SKINNYlines + Status + VoicemailUsersList + + * Incremented the AMI version to 2.7.0. + + * Changed astman_send_listack() to not use the listflag parameter and + always set the value to "Start" so the start capitalization is consistent. + i.e., The FAXSessions used "Start" while the rest of the system used + "start". The corresponding complete event always used "Complete". + + * Fixed ami_show_resource_lists() "PJSIPShowResourceLists" to output the + AMI ActionID for all of its list events. + + * Fixed off-nominal AMI protocol error in manager_bridge_info(), + manager_parking_status_single_lot(), and + manager_parking_status_all_lots(). Use of astman_send_error() after + responding to the original AMI action request violates the action response + pattern by sending two responses. + + * Fixed minor protocol error in action_getconfig() when no requested + categories are found. Each line needs to be formatted as "Header: text". + + * Fixed off-nominal memory leak in manager_build_parked_call_string(). + + * Eliminated unnecessary use of RAII_VAR() in ami_subscription_detail(). + + ASTERISK-24049 #close + Reported by: Jonathan Rose + + Review: https://reviewboard.asterisk.org/r/4315/ + ........ + + Merged revisions 430434 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430435 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-09 08:53 +0000 [77ee23210d] Kinsey Moore + + * res_fax: Add T.38 negotiation timeout option + + This change makes the T.38 negotiation timeout configurable via + 't38timeout' in res_fax.conf or FAXOPT(t38timeout). It was previously + hard coded to be 5000 milliseconds. + + This change also handles T.38 switch failures by aborting the fax since + in the case where this can happen, both sides have agreed to switch to + T.38 and Asterisk is unable to do so. + + Review: https://reviewboard.asterisk.org/r/4320/ + ........ + + Merged revisions 430415 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430416 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430417 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-08 15:41 +0000 [8786fe13a4] George Joseph + + * res_pjsip_pubsub: Fix persistent subscriptions not surviving graceful shutdown + + If you do a 'core (shutdown|restart) graceful' persistent subscriptions won't + survive. If you do a 'core (shutdown|restart) now' or asterisk terminates for + some reason, they do. Here's why... + + When asterisk shuts down gracefully, it sends a 'NOTIFY/terminated' to + subscribers for each subscription. This not only tells the subscribers that the + dialog/state machine is done, it also frees the last reference to the + subscription tree which causes the persistent subscription to get deleted from + astdb. When asterisk restarts, nothing's left. Just preventing the delete from + astdb doesn't work because we already told the subscriber to terminate the + dialog so we can't restart it even if it was still in astdb. Everything works + OK if asterisk terminates unexpectedly because we never send the 'terminated' + message so on restart, the subscription is still in astdb and the subscriber is + none the wiser. + + This patch suppresses the sending of 'NOTIFY/terminated' on shutdown for + persistent connections. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4318/ + ........ + + Merged revisions 430397 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430398 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-08 15:38 +0000 [c55f86c69d] George Joseph + + * res_pjsip_outbound_registration: Fix reference leak. + + Every time a registration started, sip_outbound_registration_response_cb bumps + the ref count on client_state then pushes a handle_registration_response task. + handle_registration_response never unreffed it though. So every time a + registration goes out, the ref count goes up by one. + + This patch adds the unreffs to handle_registration_response. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4303/ + ........ + + Merged revisions 430395 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430396 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-08 11:51 +0000 [030facce94] George Joseph + + * res_pjsip_outbound_registration: Fix several reload issues + + There are 2 issues with reloading registrations... + + 1. The 'can_reuse_registration' test wasn't considering the intervals or + expiration in its determination of whether a registration changed or not so if + you changed any of the intervals or the expiration and reloaded, the object + would get reloaded but the actual timers wouldn't change. + can_reuse_registration now does a sorcery diff on the old and new objects + instead of discretely testing certain fields. Now if you change expiration for + instance, and reload, the timer is updated and re-registration will occur on the + new value. + + 2. If you mung up your password on an outbound registration you get a permanent + failure. If you fix the password (on the outbound_auth object) and reload, + nothing tells outbound_registration to try again because the registration itself + didn't change. This patch adds an observer on the "auth" object type and if any + auth changes, existing registration states are searched and those in a + REJECTED_PERMANENT state are retried. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4304/ + ........ + + Merged revisions 430373 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430374 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-07 15:26 +0000 [f8c4909eb7] Kinsey Moore + + * ARI: Allow usage of ASYNCGOTO with Stasis() + + When the AMI Redirect action is used with a channel bridged inside + Stasis() and not running a pbx, the channel is hung up instead of + proceeding to the desired location in dialplan. This change allows + such channels to be Redirected properly by detecting the operation + used by Redirect (ASYNCGOTO) and using the code already established + for functionality of the ARI channel continue operation. + + ASTERISK-24591 #close + Review: https://reviewboard.asterisk.org/r/4271/ + ........ + + Merged revisions 430355 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430356 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-07 12:54 +0000 [7f836c1c15] Mark Michelson + + * Add the ability to continue and originate using priority labels. + + With this patch, the following two ARI commands + + POST /channels + POST /channels/{id}/continue + + Accept a new parameter, label, that can be used to continue to or originate + to a priority label in the dialplan. + + Because this is adding a new parameter to ARI commands, the API version of + ARI has been bumped from 1.6.0 to 1.7.0. + + This patch comes courtesy of Nir Simionovich from Greenfield Tech. Thanks! + + ASTERISK-24412 #close + Reported by Nir Simionovich + + Review: https://reviewboard.asterisk.org/r/4285 + ........ + + Merged revisions 430337 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430338 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-07 12:17 +0000 [e83853eebc] George Joseph + + * res_pjsip_exten_state: Change 'does not exist' warning to notice + + The 'new_subscribe: Extension <> does not exist or has no associated hint' + is a config issue and doesn't need to clutter up logs with warnings. + Changed to notice. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4307/ + ........ + + Merged revisions 430319 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430321 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-07 12:15 +0000 [8cde7443c2] George Joseph + + * res_pjsip_mwi: Change "MWI Subscription failed" message from warning to notice + + The "MWI Subscription failed" message means the client is trying to subscribe + to a mailbox that doesn't exist. There's no need to clutter up logs with + warnings for a client misconfiguration so I changed it to a notice. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4306/ + ........ + + Merged revisions 430317 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430318 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-07 11:54 +0000 [685f7ef924] George Joseph + + * func_config: Add ability to retrieve specific occurrence of a variable + + I guess nobody uses templates with AST_CONFIG because today if you have a + context that inherits from a template and you call AST_CONFIG on the context, + you'll get the value from the template even if you've overridden it in the + context. This is because AST_CONFIG only gets the first occurrence which is + always from the template. + + This patch adds an optional 'index' parameter to AST_CONFIG which lets you + specify the exact occurrence to retrieve, or '-1' to retrieve the last. + The default behavior is the current behavior. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4313/ + ........ + + Merged revisions 430315 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430316 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-07 11:45 +0000 [464647d8f8] Mark Michelson + + * Fix ability to perform a remote attended transfer with PJSIP. + + This fix has two parts: + + * Corrected an error message to properly state that external_replaces is an extension. The + error message also prints what dialplan context the external_replaces extension was being + looked for in. + * Corrected the printing of the Replaces: header in an INVITE request. We were duplicating + "Replaces: " in the header. + + ASTERISK-24376 #close + Reported by Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4296 + ........ + + Merged revisions 430313 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430314 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-07 10:56 +0000 [56de48107f] George Joseph + + * config: Add option to NOT preserve effective context when changing a template + + Let's say you have a template T with variable VAR1 = ON and you have a + context C(T) that doesn't specify VAR1. If you read C, the effective value + of VAR1 is ON. Now you change T VAR1 to OFF and call + ast_config_text_file_save. The current behavior is that the file gets + re-written with T/VAR1=OFF but C/VAR1=ON is added. Personally, I think this + is a bug. It's preserving the effective state of C even though I didn't + specify C/VAR1 in th first place. I believe the behavior should be that if + I didn't specify C/VAR1 originally, then the effective value of C/VAR1 should + continue to follow the inherited state. Now, if I DID explicitly specify + C/VAR1, the it should be preserved even if the template changes. + + Even though I think the existing behavior is a bug, it's been that way forever + so I'm not changing it. Instead, I've created ast_config_text_file_save2() + that takes a bitmask of flags, one of which is to preserve the effective context + (the current behavior). The original ast_config_text_file_save calls *2 with + the preserve flag. If you want the new behavior, call *2 directly without a + flag. + + I've also updated Manager UpdateConfig with a new parameter + 'PreserveEffectiveContext' whose default is 'yes'. If you want the new behavior + with UpdateConfig, set 'PreserveEffectiveContext: no'. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4297/ + ........ + + Merged revisions 430295 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430296 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-06 21:01 +0000 [0c5234f12a] Kinsey Moore + + * Fix dev-mode build on recent gcc + ........ + + Merged revisions 430274 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430275 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-06 16:46 +0000 [220df246d9] Matt Jordan + + * Blocked revisions 430252 + + ........ + contrib/ast-db-manage: Correct down_revision path for user_eq_phone + + When the user_eq_phone patch was backported to 13, it referenced the downward + revision that the PJSIP optimistic encryption option also references. This + creates a multi-path upgrade Exception when generating the SQL files. + + This patch corrects this in the 13 branch. Note that trunk, which already + contained both of these features, is unaffected by this problem. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430254 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-06 11:53 +0000 [8b5bde3e5a] George Joseph + + * res_pjsip_mwi: Change warning to notice + + When res_pjsip loads and an endpoint auto-subscribes a mailbox for mwi, + if a contact hasn't registered yet, res_pjsip_mwi spits out a warning. + This is a perfectly normal situation though and doesn't require something + as serious as a warning. It's also self correcting. The device will start + getting mwi as soon as it registers. + + This patch changes the warning to a notice. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4314/ + ........ + + Merged revisions 430227 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430228 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-06 11:49 +0000 [5f60ebc004] George Joseph + + * bridge_native_rtp: Change local/remote message from debug/2 to verb/4 + + Change the "Locally bridged"/"Remotely bridged" messages from dbg/2 to verb/4. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4300/ + ........ + + Merged revisions 430225 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430226 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-06 11:43 +0000 [fb3c8e3424] George Joseph + + * outbound_registration: Add 'pjsip send register' and update 'send unregister' + + The current behavior of 'pjsip send unregister' is to send the unregister + (REGISTER with 0 exp) but let the next scheduled register proceed normally. + I don't think that's a good idea. If you unregister, it should stay + unregistered until you decide to start registrations again. So this patch + just adds a cancel_registration call to the current unregister_task to + cancel the timer. + + Of course, now you need a way to start registration again so I've added + a 'pjsip send register' command that unregisters and cancels any existing + registration (the same as send unregister), then sends an immediate + registration and starts the timer back up again. + + Both changes also ripple to AMI. There's a new PJSIPRegister command. + + There's no harm in calling either command repeatedly. They don't care + about the actual state. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4301/ + ........ + + Merged revisions 430223 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-06 11:29 +0000 [7dc0c88fc6] George Joseph + + * pjsip cli: Fix sorting of contacts for 'pjsip list contacts' + + For some reason I was using a hash container instead of a list to gather the + contacts for 'pjsip list/show contacts' so even though I had a sort function, + the output wasn't sorted. This patch just changes the hash container to a + list container and the contacts now appear sorted in the CLI. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4305/ + ........ + + Merged revisions 430221 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430222 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-05 16:50 +0000 [0b8fbf9238] Scott Griepentrog + + * bridge: avoid leaking channel during blond transfer pt2 + + A blond transfer to a failed destination, when followed + by a recall attempt, lead to a leak of the reference to + the destination channel. In addition to correcting the + regression on the previous attempt (r429826) this fixes + the leak and two additional reference leaks on failures + of bridge_import. + + ASTERISK-24513 #close + Review: https://reviewboard.asterisk.org/r/4302/ + ........ + + Merged revisions 430199 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 430200 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-05 11:57 +0000 [e0bd2ca104] Joshua Colp + + * pjsip: Document addition of 'PJSIP_AOR' and 'PJSIP_CONTACT' in CHANGES file. + ........ + + Merged revisions 430181 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430182 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-01-05 11:53 +0000 [f7cf988a82] Joshua Colp + + * pjsip: Add 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions. + + The PJSIP_AOR dialplan function allows inspection of configured AORs including + what contacts are currently bound to them. + + The PJSIP_CONTACT dialplan function allows inspection of contacts in existence. + These can include both externally added (by way of registration) or permanent + ones. + + ASTERISK-24341 + Reported by: xrobau + + Review: https://reviewboard.asterisk.org/r/4308/ + ........ + + Merged revisions 430179 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430180 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-31 12:54 +0000 [8d059c3808] Scott Griepentrog + + * rtp_engine: keep payload types in correct range + + In r428708 additional codecs were added including + a payload type of 128 which is outside of nominal + range of 0-127. This change moves changes 128 to + 96 to avoid causing a pjsip assertion when making + a call to an endpoint configured with allow=all. + + ASTERISK-24367 #close + Review: https://reviewboard.asterisk.org/r/4286/ + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430164 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-29 07:14 +0000 [cb6a737359] Kinsey Moore + + * PJSIP: Update transport method documentation + + This updates the documentation for the 'method' configuration option to + be more verbose about the behaviors of values 'unspecified' and + 'default'. They do exactly the same thing which is to select the + default as defined by PJSIP which is currently TLSv1. + + Review: https://reviewboard.asterisk.org/r/4264/ + ........ + + Merged revisions 430145 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430146 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-24 15:28 +0000 [91becf952a] Kevin Harwell + + * app_queue: Update sample conf documenation + + Updated the queues.conf.sample file to explicitly state which channel queue + variables are propagated to. + + ASTERISK-24267 + Reported by: Mitch Claborn + ........ + + Merged revisions 430126 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430127 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430128 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-24 10:59 +0000 [3a73c6c90e] Matt Jordan + + * main/pbx.c: Fix double lock of contexts lock introduced by r429967 + + We only need to hold the context_merge_lock once. Locking it twice will make + many other parts of Asterisk very sad. + + ASTERISK-24641 #close + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430111 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-23 17:19 +0000 [7ea4156a5e] George Joseph + + * pjsip_options: Fix continued qualifies after endpoint/aor deletion + + If you remove an endpoint/aor from pjsip.conf then do a core reload, + qualifies will continue even though the object are gone. This happens + because nothing clears out the qualify tasks. + + This patch unschedules all existing qualify tasks before scheduling + new ones on reload. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4290/ + ........ + + Merged revisions 430064 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430067 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-23 17:16 +0000 [62d1dba271] George Joseph + + * test_astobj2: Fix warning for missing trailing slash in category + + This patch adds a trailing slash to the category for this test. + No more warning. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4295/ + ........ + + Merged revisions 430059 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430060 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-22 15:20 +0000 [1c0604e905] Richard Mudgett + + * DTMF atxfer: Setup recall channels as if the transferee initiated the call. + + After the initial DTMF atxfer call attempt to the transfer target fails to + answer during a blonde transfer, the recall callback channels do not get + setup with information from the initial transferrer channel. As a result, + the recall callback to the transferrer does not have callid, channel + variables, datastores, accountcode, peeraccount, COLP, and CLID setup. A + similar situation happens with the recall callback to the transfer target + but it is less visible. The recall callback to the transfer target does + not have callid, channel variables, datastores, accountcode, peeraccount, + and COLP setup. + + * Added missing information to the recall callback channels before + initiating the call. callid, channel variables, datastores, accountcode, + peeraccount, COLP, and CLID + + * Set callid of the transferrer channel on the DTMF atxfer controller + thread attended_transfer_monitor_thread(). + + * Added missing channel unlocks and props unref to off nominal paths in + attended_transfer_properties_alloc(). + + ASTERISK-23841 #close + Reported by: Richard Mudgett + + Review: https://reviewboard.asterisk.org/r/4259/ + ........ + + Merged revisions 430034 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430041 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-22 14:25 +0000 [7d954f4cb1] Richard Mudgett + + * Fix compilation since the patch for ASTERISK-24363 went in. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430028 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-22 14:08 +0000 [bbd9ff122e] Richard Mudgett + + * queue_log: Post QUEUESTART entry when Asterisk fully boots. + + The QUEUESTART log entry has historically acted like a fully booted event + for the queue_log file. When the QUEUESTART entry was posted to the log + was broken by the change made by ASTERISK-15863. + + * Made post the QUEUESTART queue_log entry when Asterisk fully boots. + This restores the intent of that log entry and happens after realtime has + had a chance to load. + + AST-1444 #close + Reported by: Denis Martinez + + Review: https://reviewboard.asterisk.org/r/4282/ + ........ + + Merged revisions 430009 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 430010 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430011 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-22 09:40 +0000 [264a50c52a] Karsten Wemheuer (License 5930) + + * chan_sip: Send CANCEL via original INVITE destination even after UPDATE request + + Given the following scenario: + * Three SIP phones (A, B, C), all communicating via a proxy with Asterisk + * A call is established between A and B. B performs a SIP attended transfer of + A to C. B sets the call on hold (A is hearing MOH) and dials the extension of + C. While phone C is ringing, B transfers the call (that is, what we typically + call a 'blond transfer'). + * When the transfer completes, A hears the ringing of phone C, while B is idle. + + In the SIP messaging for the above scenario, a REFER request is sent to + transfer the call. When "sendrpid=yes" is set in sip.conf, Asterisk may send an + UPDATE request to phone C to update party information. This update is sent + directly to phone C, not through the intervening proxy. This has the unfortunate + side effect of providing route information, which is then set on the sip_pvt + structure for C. If someone (e.g. B) is trying to get the call back (through a + directed pickup), Asterisk will send a CANCEL request to C. However, since we + have now updated the route set, the CANCEL request will be sent directly to C + and not through the proxy. The phone ignores this CANCEL according to RFC3261 + (Section 9.1). + + This patch updates reqprep such that the route is not updated if an UPDATE + request is being sent while the INVITE state is INV_PROCEEDING or + INV_EARLY_MEDIA. This ensures that a subsequent CANCEL request is still sent + to the correct location. + + Review: https://reviewboard.asterisk.org/r/4279 + + ASTERISK-24628 #close + Reported by: Karsten Wemheuer + patches: + issue.patch uploaded by Karsten Wemheuer (License 5930) + ........ + + Merged revisions 429982 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429983 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429984 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-22 08:33 +0000 [0c38276d6e] Gareth Palmer (License 5169) + + * presencestate: Allow channel drivers to provide presence state information + + This patch adds the ability for channel drivers to supply presence information + in a similar manner to device state. The patch does not provide any channel + driver implementations, but it does provide the core infrastructure necessary + for channel drivers to provide such information. + + The core handles multiple providers of presence state information. Ordering + of presence state is as follows: + INVALID < NOT_SET < AVAILABLE < UNAVAILABLE < CHAT < AWAY < XA < DND + + Each provider can trump the previous if it provides a presence state that + supercedes a previous one. + + Review: https://reviewboard.asterisk.org/r/4050 + + ASTERISK-24363 #close + Reported by: Gareth Palmer + patches: + chan_presencestate-428146.patch uploaded by Gareth Palmer (License 5169) + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429967 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-22 06:16 +0000 [2afeadcc84] Matt Jordan + + * app_confbridge: Fix build error caused by XML validation errors + + Summaries can't contain XML nodes, as they are defined to contain only text + data. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429952 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-21 20:35 +0000 [b79a4a464f] Gareth Palmer (License 5169) + + * app_confbridge: Add the ability to pass options/command to MixMonitor + + This patch adds the ability to pass options and a command to MixMontor when + recording a conference using ConfBridge. + + New options are - + + * record_options: Options to MixMontor, eg: m(), W() etc. + * record_command: The command to execute when recording is over. + * record_file_timestamp: Append the start time to the file name. + + These options can also be used with the CONFBRIDGE function, e.g., + Set(CONFBRIDGE(bridge,record_command)=/path/to/command ^{MIXMONITOR_FILENAME})) + + Review: https://reviewboard.asterisk.org/r/4023 + + ASTERISK-24351 #close + Reported by: Gareth Palmer + patches: + record_command-428838.patch uploaded by Gareth Palmer (License 5169) + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429934 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-21 18:17 +0000 [b137a92aef] George Joseph + + * res_pjsip_phoneprovi_provider: Fix reload + + Reloading wasn't working correctly because on a reload, the sorcery apply + handler was never being called for unchanged users. So, instead of using + an apply handler, I'm now iterating over all users. Works much more reliably. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4288/ + ........ + + Merged revisions 429914 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429915 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-20 14:57 +0000 [ba403e83bd] Joshua Colp + + * acl: Fix reloading of configuration if configuration file does not exist at startup. + + The named ACL code incorrectly destroyed the config options information if loading + of the configuration file failed at startup. This would result in reloading + also failing even if a valid configuration file was put in place. + + ASTERISK-23733 #close + Reported by: Richard Kenner + ........ + + Merged revisions 429893 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429894 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429895 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-19 14:56 +0000 [54bd1c9683] Richard Mudgett + + * res_http_websocket.c: Fix incorrect use of sizeof in ast_websocket_write(). + + This won't fix the reported issue but it is an incorrect use of sizeof. + + ASTERISK-24566 + Reported by: Badalian Vyacheslav + ........ + + Merged revisions 429867 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429868 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429870 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-19 11:34 +0000 [b508b3474e] Richard Mudgett + + * chan_dahdi: Don't ignore setvar when using configuration section scheme. + + When the configuration section scheme of chan_dahdi.conf is used (keyword + dahdichan instead of channel) all setvar= options are completely ignored. + No variable defined this way appears in the created DAHDI channels. + + * Move the clearing of setvar values to after the deferred processing of + dahdichan. + + AST-1378 #close + Reported by: Guenther Kelleter + Patch by: Guenther Kelleter + ........ + + Merged revisions 429825 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429829 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429830 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-19 11:27 +0000 [07d1012383] Scott Griepentrog + + * bridge: avoid leaking channel during blond transfer + + After a blond transfer (start attended and hang up) + to a destination that also hangs up without answer, + the Local;1 channel was leaked and would show up on + core show channels. This was happening because the + attended state blond_nonfinal_enter() resetting the + props->transfer_target to null while releasing it's + own reference, which would later prevent props from + releasing another reference during destruction. The + change made here is simply to not assign the target + to NULL. + + ASTERISK-24513 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4262/ + ........ + + Merged revisions 429826 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429827 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429828 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-18 16:40 +0000 [2cbfafa8c1] Richard Mudgett + + * chan_dahdi.c, res_rtp_asterisk.c: Change some spammy debug messages to level 5. + + ASTERISK-24337 #close + Reported by: Rusty Newton + ........ + + Merged revisions 429804 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429805 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429806 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-18 14:09 +0000 [eacbb4ceb5] Richard Mudgett + + * chan_dahdi: Populate CALLERID(ani2) for incoming calls in featdmf signaling mode. + + For the featdmf signaling mode the incoming MF Caller-ID information is + formatted as follows: *${CALLERID(ani2)}${CALLERID(ani)}#*${EXTEN}# + + Rather than discarding the ani2 digits, populate the CALLERID(ani2) value + with what is received instead. + + AST-1368 #close + Reported by: Denis Martinez + Patches: + extract_ani2_for_featdmf_v11.patch (license #5621) patch uploaded by Richard Mudgett + ........ + + Merged revisions 429783 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429784 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429785 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-18 09:55 +0000 [546a54574f] Kevin Harwell + + * res_pjsip_sdp_rtp: wrong bridge chosen when the DTMF mode is not compatible + + A native rtp bridge was being chosen (it shouldn't have been) when using two + pjsip channels with incompatible DTMF modes. This patch sets the rtp instance + property, AST_RTP_PROPERTY_DTMF, for the appropriate DTMF mode(s) for pjsip. + It was not being set before, meaning all DTMF modes for pjsip were being treated + as compatible, thus native bridging would be chosen as the bridge type when it + shouldn't have been. + + ASTERISK-24459 #close + Reported by: Yaniv Simhi + Review: https://reviewboard.asterisk.org/r/4265/ + ........ + + Merged revisions 429763 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429764 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-18 09:40 +0000 [2f3e5b494a] Mark Michelson + + * Prevent potential infinite outbound authentication loops in registration. + + Prior to this patch, Asterisk would always respond to 401 responses to + registration attempts by trying to provide a registration with authentication + credentials. Even if subsequent attempts were rejected with 401 responses, + Asterisk would continue this behavior. If authentication credentials were + incorrect, this could continue forever. + + With this patch, we keep track of whether we have attempted authentication + on an outbound registration attempt. If we already have, we don not try + again until the next attempt. This prevents the infinite loop scenario. + + Review: https://reviewboard.asterisk.org/r/4273 + ........ + + Merged revisions 429761 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429762 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-18 09:18 +0000 [2b1f2b5c1f] Mark Michelson + + * Prevent possible race condition on dual redirect of channels in the same bridge. + + The AST_FLAG_BRIDGE_DUAL_REDIRECT_WAIT flag was created to prevent bridges from + prematurely acting on orphaned channels in bridges. The problem with the AMI + redirect action was that it was setting this flag on channels based on the presence + of a PBX, not whether the channel was in a bridge. Whether a channel has a PBX + is irrelevant, so the condition has been altered to check if the channel is in a + bridge. + + ASTERISK-24536 #close + Reported by Niklas Larsson + + Review: https://reviewboard.asterisk.org/r/4268 + ........ + + Merged revisions 429741 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429745 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-18 08:50 +0000 [cc1405bd38] Mark Michelson + + * Ensure the correct value is returned for CHANNEL(pjsip, secure) + + Prior to this patch, we were using the PJSIP dialog's secure flag + to determine if a secure transport was being used. Unfortunately, + the dialog's secure flag was only set if a SIPS URI were in use, + as required by RFC 3261 sections 12.1.1 and 12.1.2. What we're interested + in is not dialog security, but transport security. This code change + switches to a model where we use the dialog's target URI to determine + what transport would be used to communicate, and then check if that + transport is secure. + + AST-1450 #close + Reported by John Bigelow + + Review: https://reviewboard.asterisk.org/r/4277 + ........ + + Merged revisions 429739 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429740 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-17 18:11 +0000 [18b5a336ef] George Joseph + + * res_pjsip_config_wizard: fix unload SEGV + + If certain pjsip modules aren't loaded, the wizard causes a SEGV + when it unloads. Added a check for the presense of the object + type wizard before trying to clean it up. + + Tested-by: George Joseph + ........ + + Merged revisions 429719 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429720 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-17 17:06 +0000 [c4360796f7] George Joseph + + * res_pjsip_config_wizard: Change FILEUNCHANGED config_load2 flag determination + + The module now applies the FILEUNCHANGED flag when both reloaded is + specified AND there's no last_config for the object type. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4276/ + ........ + + Merged revisions 429699 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429700 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-17 04:23 +0000 [8b6ecc449c] Walter Doekes + + * Fix printf problems with high ascii characters after r413586 (1.8). + + In r413586 (1.8) various casts were added to silence gcc 4.10 warnings. + Those fixes included things like: + + -out += sprintf(out, "%%%02X", (unsigned char) *ptr); + +out += sprintf(out, "%%%02X", (unsigned) *ptr); + + That works for low ascii characters, but for the high range that yields + e.g. FFFFFFC3 when C3 is expected. + + This changeset: + - fixes those casts to use the 'hh' unsigned char modifier instead + - consistently uses %02x instead of %2.2x (or other non-standard usage) + - adds a few 'h' modifiers in various places + - fixes a 'replcaes' typo + - dev/urandon typo (in 13+ patch) + + Review: https://reviewboard.asterisk.org/r/4263/ + + ASTERISK-24619 #close + Reported by: Stefan27 (on IRC) + ........ + + Merged revisions 429673 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429674 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429675 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429683 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-16 11:53 +0000 [c4cc668ba9] George Joseph + + * res_pjsip_config_wizard: fix test breakage + + Fix test breakage caused by not checking for res_pjsip before + calling ast_sip_get_sorcery. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4269/ + ........ + + Merged revisions 429653 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429654 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-16 10:39 +0000 [58095d2486] Andreas Steinmetz (license 6523) + + * chan_sip: Allow T.38 switch-over when SRTP is in use. + + Previously when SRTP was enabled on a channel it was not possible + to switch to T.38 as no crypto attributes would be present. + + This change makes it so it is now possible. If a T.38 re-invite + comes in SRTP is terminated since in practice you can't encrypt + a UDPTL stream. Now... if we were doing T.38 over RTP (which + does exist) then we'd have a chance but almost nobody does that so + here we are. + + ASTERISK-24449 #close + Reported by: Andreas Steinmetz + patches: + udptl-ignore-srtp-v2.patch submitted by Andreas Steinmetz (license 6523) + ........ + + Merged revisions 429632 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429633 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429634 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-16 09:44 +0000 [b5182a6795] Joshua Colp + + * res_pjsip_t38: Fix T.38 failure when peer reinvites immediately. + + If a remote endpoint reinvites to T.38 immediately the state machine + will go into a peer reinvite state. If a T.38 capable application + (such as ReceiveFax) queries it will receive this state. Normally + the application will then indicate so that the channel driver will + queue up the T.38 offer previously received. Once it receives this + offer the application will act normally and negotiate. + + The res_pjsip_t38 module incorrectly partially squashed this indication. + This would cause the application to think the request had failed when + in reality it had actually worked. + + This change makes it so that no T.38 control frames (or indications) + are squashed. + ........ + + Merged revisions 429612 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429613 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-15 11:08 +0000 [39b54a21dc] George Joseph + + * res_pjsip_config_wizard: Allow streamlined config of common pjsip scenarios + + res_pjsip_config_wizard + ------------------ + * This is a new module that adds streamlined configuration capability for + chan_pjsip. It's targetted 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. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4190/ + ........ + + Merged revisions 429592 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429593 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-15 09:48 +0000 [53e5b377a0] Mark Michelson + + * Activate persistent subscriptions when they are recreated. + + Prior to this change, recreating persistent subscriptions would + create the subscription but would not activate it. This led to subscriptions + being listed in the "NULL" state by diagnostics and not sending NOTIFYs + when expected. + + Review: https://reviewboard.asterisk.org/r/4261 + ........ + + Merged revisions 429571 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 17:57 +0000 [6472568bc6] George Joseph + + * loader: Move definition of ast_module_reload from _private.h to module.h + + No functionality change. Just move the definition of ast_module_reload + from _private.h to module.h so it can be public. + + Also removed the include of _private.h from manager.c since ast_module_load + was the only reason for including it. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4251/ + ........ + + Merged revisions 429542 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429543 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 17:49 +0000 [308c1b41dd] Richard Mudgett + + * DEBUG_THREADS: Fix regression and lock tracking initialization problems. + + This patch started with David Lee's patch at + https://reviewboard.asterisk.org/r/2826/ and includes a regression fix + introduced by the ASTERISK-22455 patch. + + The initialization of a mutex's lock tracking structure was not protected + in a critical section. This is fine for any mutex that is explicitly + initialized, but a static mutex may have its lock tracking double + initialized if multiple threads attempt the first lock simultaneously. + + * Added a global mutex to properly serialize initialization of the lock + tracking structure. The painful global lock can be mitigated by adding a + double checked lock flag as discussed on the original review request. + + * Defer lock tracking initialization until first use. + + * Don't be "helpful" and initialize an uninitialized lock when + DEBUG_THREADS is enabled. Debug code is not supposed to fix or change + normal code behavior. We don't need a lock initialization race that would + force a re-setup of lock tracking. Lock tracking already handles + initialization on first use. + + * Properly handle allocation failures of the lock tracking structure. + + * No need to initialize tracking data in __ast_pthread_mutex_destroy() + just to turn around and destroy it. + + + The regression introduced by ASTERISK-22455 is the result of manipulating + a pthread_mutex_t struct outside of the pthread library code. The + pthread_mutex_t struct seems to have a global linked list pointer member + that can get changed by other threads. Therefore, saving and restoring + the contents of a pthread_mutex_t struct is a bad thing. + + Thanks to Thomas Airmont for finding this obscure regression. + + * Don't overwrite the struct ast_lock_track.reentr_mutex member to restore + tracking data in __ast_cond_wait() and __ast_cond_timedwait(). The + pthread_mutex_t struct must be treated as a read-only opaque variable. + + + Miscellaneous other items fixed by this patch: + + * Match ast_suspend_lock_info() with ast_restore_lock_info() in + __ast_cond_timedwait(). + + * Made some uninitialized lock sanity checks return EINVAL and try a + DO_THREAD_CRASH. + + * Fix bad canlog initialization expressions. + + ASTERISK-24614 #close + Reported by: Thomas Airmont + + Review: https://reviewboard.asterisk.org/r/4247/ + Review: https://reviewboard.asterisk.org/r/2826/ + ........ + + Merged revisions 429539 from http://svn.asterisk.org/svn/asterisk/branches/11 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429541 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 16:54 +0000 [901221ffae] Matt Jordan + + * res/res_agi: Make Verbose message for 'stream file' match other playbacks + + The Verbose message displayed when a file is played back via 'stream file' + was formatted differently than other playbacks: + * It didn't include the channel name + * It didn't include the channel language + It does, however, include the playback offset as well as any escape digits. + That information was kept; however, this patch updates the formatting to more + closely match the Verbose messages displayed when a file is played back by + 'control stream file', Playback, ControlPlayback, or any other file playback + operation. + ........ + + Merged revisions 429519 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429520 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 11:01 +0000 [8d325be503] Joshua Colp + + * media: Fix crash when determining sample count of a frame during shutdown. + + When shutting down Asterisk the codecs are cleaned up. As a result anything + attempting to get a codec based on ID or details will find that no codec + exists. This currently occurs when determining the sample count of a frame. + This code did not take this situation into account. + + This change fixes this by getting the codec directly from the format and + eliminates the lookup. This is both faster and also provides a guarantee + that the codec will exist and will be valid. + + ASTERISK-24604 #close + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4260/ + ........ + + Merged revisions 429497 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429498 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 09:31 +0000 [72499dc697] Kevin Harwell + + * chan_pjsip: Race between channel answer and bridge setup when using direct media + + When direct media is enabled and a pjsip channel is answered a race would occur + between the handling of the answer and bridge setup. Sometimes the media + negotiation would take place after the native bridge was setup. This resulted + in a NULL media address, which in turn resulted in Asterisk using its address + as the remote media address when sending a reinvite. This patch makes the + chan_pjsip answer handler synchronous thus alleviating the race condition (the + bridge won't start setting things up until after it returns). + + ASTERISK-24563 #close + Reported by: Steve Pitts + Review: https://reviewboard.asterisk.org/r/4257/ + ........ + + Merged revisions 429477 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429478 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 09:03 +0000 [2e6d2b1484] David M. Lee + + * Fix crash for sorcery misconfigs + + res_pjsip_outbound_publish was missing the CHECK_PJSIP_MODULE_LOADED() + call in load_module, and would crash with a segfault if res_pjsip + declined to load. + + Review: https://reviewboard.asterisk.org/r/4258/ + ........ + + Merged revisions 429457 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429458 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 08:12 +0000 [a6cf13f2e9] Kinsey Moore + + * PJSIP: Allow use of 'inactive' streams for hold + + This allows use of the 'inactive' stream direction identifier to be + used for hold where 'sendonly' is normally used. Some Seimens phones + use 'inactive' and this change allows music on hold to operate + properly. + + Review: https://reviewboard.asterisk.org/r/4252/ + Reported by: Steve Pitts + ........ + + Merged revisions 429432 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429433 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429434 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 08:04 +0000 [b99770d4fe] Kinsey Moore + + * Sorcery: Log when old config remains in use + + This adds a log message notifying the user that a stale configuration + is in place upon reload when a config object fails to load. This + situation can end up causing confusion when the object failed to load + but exists from a previous config load especially when the old config + is significantly different from the new config. + + Review: https://reviewboard.asterisk.org/r/4250/ + Reported by: Thomas Thompson + ........ + + Merged revisions 429429 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429430 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429431 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 07:06 +0000 [74d43977cf] Joshua Colp + + * res_pjsip_session: Delay sending BYE if a re-INVITE transaction is in progress. + + Given the scenario where a PJSIP channel is in a native RTP bridge with direct + media and the channel is then hung up the code will currently re-INVITE the channel + back to Asterisk and send a BYE at the same time. Many SIP implementations dislike + this greatly. + + This change makes it so that if a re-INVITE transaction is in progress the BYE + is queued to occur after the completion of the transaction (be it through normal + means or a timeout). + + Review: https://reviewboard.asterisk.org/r/4248/ + ........ + + Merged revisions 429409 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429410 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-12 06:32 +0000 [8d384f3825] Joshua Colp + + * res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail SDP negotiation. + + In the past the SDP negotiation within res_pjsip_session was made more tolerant of + certain situations. The only case where SDP negotiation will fail is when a major + error occurs during negotiation. Receiving an already declined media stream is + not considered a major error. + + When producing the local SDP the logic took this into account so on the initial INVITE + the declined media stream did not cause an SDP negotiation failure. Unfortunately + the logic for handling media streams with a handler did not mirror this logic and + considered an already declined media stream an error and thus failed the SDP + negotiation. + + This change makes the logic between both situations match so only under major + errors will the SDP negotiation fail. + + ASTERISK-24607 #close + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4254/ + ........ + + Merged revisions 429407 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429408 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-11 14:32 +0000 [63d3f0af95] Kevin Harwell + + * ARI/AMI: Include language in standard channel snapshot output + + The CHANGES verbiage for the "language" addition had been put under the wrong + release. This moves it to be under 13.1 to 13.2 changes. + + ASTERISK-24553 + Reported by: Matt Jordan + ........ + + Merged revisions 429387 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429388 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-11 07:53 +0000 [d64b9904fd] Kinsey Moore + + * Stasis: Update unittest for channel snapshots + + This adjusts the unit test for channel snapshots to take the new + language key into account. + ........ + + Merged revisions 429352 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429353 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-10 09:43 +0000 [e890f9f653] Kevin Harwell + + * ARI/AMI: Include language in standard channel snapshot output + + Adding information about including "language" in the standard channel snapshot + output to the CHANGES file. Note the actual source changes have already been + previously committed. + + ASTERISK-24553 + Reported by: Matt Jordan + ........ + + Merged revisions 429325 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429326 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429327 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-10 07:35 +0000 [03c94ef761] Joshua Colp + + * res_http_websocket: Fix crash due to double freeing memory when receiving a payload length of zero. + + Frames with a payload length of 0 were incorrectly handled in res_http_websocket. + Provided a frame with a payload had been received prior it was possible for a double + free to occur. The realloc operation would succeed (thus freeing the payload) but be + treated as an error. When the session was then torn down the payload would be + freed again causing a crash. The read function now takes this into account. + + This change also fixes assumptions made by users of res_http_websocket. There is no + guarantee that a frame received from it will be NULL terminated. + + ASTERISK-24472 #close + Reported by: Badalian Vyacheslav + + Review: https://reviewboard.asterisk.org/r/4220/ + Review: https://reviewboard.asterisk.org/r/4219/ + ........ + + Merged revisions 429270 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429272 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429273 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429274 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-10 07:16 +0000 [0cba439c4d] Kinsey Moore + + * PJSIP: Fix assert on initial mass qualify + + This fixes the MWI test regressions caused by r429127 and ensures that + contacts have non-zero qualify_frequency before attempting scheduling. + ........ + + Merged revisions 429245 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429246 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429247 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-09 14:47 +0000 [8fe45f0f0a] Scott Griepentrog + + * core: avoid possible asterisk -r crash from long id + + When connecting to the remote console, an id string + is first provided that consts of the hostname, pid, + and version. This is parsed by the remote instance + using a buffer that may be too short, and can allow + a buffer overrun because it is not terminated. This + patch adds termination and a larger buffer. + + Review: https://reviewboard.asterisk.org/r/4182/ + ........ + + Merged revisions 429223 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-09 14:20 +0000 [d673209abc] Kevin Harwell + + * ARI/AMI: Include language in standard channel snapshot output + + The channel "language" was already part of a channel snapshot, however is was + not sent out over AMI or ARI. This patch makes it so the channel "language" is + included in the appropriate AMI or ARI events. + + ASTERISK-24553 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4245/ + ........ + + Merged revisions 429204 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429206 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429209 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-09 14:03 +0000 [c17cef1c38] Kevin Harwell + + * Direct Media calls within private network sometimes get one way audio + + When endpoints with direct_media enabled, behind a firewall (Asterisk on a + separate network) and were bridged sometimes Asterisk would send the ip + address of the firewall in the sdp to one of the phones in the reinvite + resulting in one way audio. When sending the reinvite Asterisk will retrieve + the media address from the associated rtp instance, but if frames were being + read this can be overwritten with another address (in this case the + firewall's). This patch ensures that Asterisk uses the original device + address when using direct media. + + ASTERISK-24563 + Reported by: Steve Pitts + Review: https://reviewboard.asterisk.org/r/4216/ + ........ + + Merged revisions 429195 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429196 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-09 12:36 +0000 [7844266e21] Kevin Harwell + + * res_pjsip_outbound_publish: stack overflow when using non-default sorcery wizard + + When using a non-default sorcery wizard (in this instance realtime) for outbound + publishes Asterisk will crash after a stack overflow occurs due to the code + infinitely recursing. The fix entails removing the outbound publish state + dependency from the outbound publish sorcery object and instead keeping an in + memory container that can be used to lookup the state when needed. + + ASTERISK-24514 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4178/ + ........ + + Merged revisions 429175 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429176 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-09 09:45 +0000 [60ab564ad2] Joshua Colp + + * ari: Add support for specifying an originator channel when originating. + + If an originator channel is specified when originating a channel the linked ID + of it will be applied to the newly originated outgoing channel. This allows + an association to be made between the two so it is known that the originator + has dialed the originated channel. + + ASTERISK-24552 #close + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4243/ + ........ + + Merged revisions 429153 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429154 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-09 08:01 +0000 [b6e18cae5c] Kinsey Moore + + * PJSIP: Stagger outbound qualifies + + This change staggers initiation of outbound qualify (OPTIONS) attempts + to reduce instantaneous server load and prevent network congestion. + + Review: https://reviewboard.asterisk.org/r/4246/ + ASTERISK-24342 #close + Reported by: Richard Mudgett + ........ + + Merged revisions 429127 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429128 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429129 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-08 10:54 +0000 [fe6cbf455a] Matt Jordan + + * AMI/ARI: Update version to 2.6.0/1.6.0 respectively for new features + + AMI/ARI are getting a few enhancements in the next release of Asterisk 13. Per + semantic versioning, that warrants a bump in the minor version number, as it + reflects a backwards compatible change. Hence, this commit. + ........ + + Merged revisions 429091 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-08 10:43 +0000 [bba1763f47] Mark Michelson + + * Fix a crash that would occur when receiving a 491 response to a reinvite. + + The reviewboard description does a fine job of summarizing this, so here it is: + + A reporter discovered that Asterisk would crash when attempting to retransmit + a reinvite that had previously received a 491 response. The crash occurred + because a pjsip_tx_data structure was being saved for reuse, but its reference + count was not being increased. The result was that the pjsip_tx_data was being + freed before we were actually done with it. When we attempted to re-use the + structure when re-sending the reinvite, Asterisk would crash. + + The fix implemented here is not to try holding onto the pjsip_tx_data at all. + Instead, when we reschedule sending the reinvite, we create a brand new + pjsip_tx_data and send that instead. Because of this change, there is no need + for an ast_sip_session_delayed_request structure to have a pjsip_tx_data on + it any more. So any code referencing its use has been removed. + + When this initial fix was introduced, I encountered a second crash when + processing a subsequent 200 OK on a rescheduled reinvite. The reason was + that when rescheduling the reinvite, we gave the wrong location for a + response callback. This has been fixed in this patch as well. + + ASTERISK-24556 #close + Reported by Abhay Gupta + + Review: https://reviewboard.asterisk.org/r/4233 + ........ + + Merged revisions 429089 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429090 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-08 10:24 +0000 [fe7671fee6] Mark Michelson + + * Add new AMI and ARI events for connected line changes on a channel. + + The AMI event is called NewConnectedLine and the ARI event is called + ChannelConnectedLine. + + ASTERISK-24554 #close + Reported by Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4231 + ........ + + Merged revisions 429064 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429084 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-08 09:45 +0000 [4bb556a847] Kinsey Moore + + * Stasis: Fix StasisStart/End order and missing events + + This corrects several bugs that currently exist in the stasis + application code. + + * After a masquerade, the resulting channels have channel topics that + do not match their uniqueids + ** Masquerades now swap channel topics appropriately + * StasisStart and StasisEnd messages are leaked to observer + applications due to being published on channel topics + ** StasisStart and StasisEnd publishing is now properly restricted + to controlling apps via app topics + * Race conditions exist where StasisStart and StasisEnd messages due to + a masquerade may be received out of order due to being published on + different topics + ** These messages are now published directly on the app topic so this + is now a non-issue + * StasisEnds are sometimes missing when sent due to masquerades and + bridge swaps into and out of Stasis() + ** This was due to StasisEnd processing adjusting message-sent flags + after Stasis() had already exited and Stasis() had been re-entered + ** This was corrected by adjusting these flags prior to sending the + message while the initial Stasis() application was still shutting + down + + Review: https://reviewboard.asterisk.org/r/4213/ + ASTERISK-24537 #close + Reported by: Matt DiMeo + ........ + + Merged revisions 429061 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429062 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429063 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-06 12:16 +0000 [49aa87e17c] Nuno Borges (License 6116) + + * res/res_monitor: Reset in/out sample counts on Monitor start + + When repeatedly starting/stopping a Monitor on a channel, the accumulated + in/out sample counts are never reset to 0. This can cause inadvertent jumps + in the recordings, as the code in the channel core will determine incorrectly + that a jump in the recorded file position should occur. Setting the sample + counts to 0 simply reflects the initial state a Monitor should be in when it + is started, as this is the initial count that would be on the channels at that + time. + + ASTERISK-24573 #close + Reported by: Nuno Borges + patches: + 24573.patch uploaded by Nuno Borges (License 6116) + ........ + + Merged revisions 429031 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429032 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429033 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-06 11:36 +0000 [0cdb71aae9] Nuno Borges (License 6116) + + * apps/app_meetme: Apply default values on initial load with no config file + + When the app_meetme module is loaded without its configuration file, the + module settings aren't initialized. In particular, this impacts the use + of logging realtime members. This patch guarantees that we always set the + default module settings on initial load. + + Review: https://reviewboard.asterisk.org/r/4242/ + + ASTERISK-24572 #close + Reported by: Nuno Borges + patches: + 24572.patch uploaded by Nuno Borges (License 6116) + ........ + + Merged revisions 429027 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 429028 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429029 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429030 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-05 11:08 +0000 [d04445c24a] George Joseph + + * sorcery: Add additional observer capabilities. + + Add new global, instance and wizard observers. + instance_created + wizard_registered + wizard_unregistered + instance_destroying + instance_loading + instance_loaded + wizard_mapped + object_type_registered + object_type_loading + object_type_loaded + wizard_loading + wizard_loaded + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4215/ + ........ + + Merged revisions 428999 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 429000 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429001 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-04 11:13 +0000 [19992844be] Matt Jordan + + * main/test: Fix compilation issue on 32-bit systems + + On a 32-bit system, a type of intmax_t will result in a compilation warning + when formatted as a 'long int'. Use the format specifier of %jd (which was + what was used originally in manager.c) to format the JSON extracted integer + on both 32-/64-bit systems. + ........ + + Merged revisions 428972 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428973 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428974 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-04 09:48 +0000 [343a83d7d8] Matt Jordan + + * main/test: Fix race condition between AMI topic and Test Suite topic + + This patch fixes a race condition between the raising of test AMI events (which + drive many tests in the Asterisk Test Suite) and other AMI events. Prior to + this patch, the Stasis messages published to the test topic were not forwarded + to the AMI topic. Instead, the code in manager had a dedicated handler for test + messages that was independent of the topics forwarded to the AMI topic. This + results in no synchronization between the test messages and the rest of the + Stasis messages published out over AMI. In some test with very tight timing + constraints, this can result in out of order messages and spurious test + failures. Properly forwarding the Test Suite topic to the AMI topic ensures + that the messages are synchronized properly. + + This patch does that, and moves the message handling to the Stasis definition + of the Test Suite message in test.c as well. + + Review: https://reviewboard.asterisk.org/r/4221/ + ........ + + Merged revisions 428945 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428946 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428947 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-03 14:59 +0000 [7cb2c446b4] Matt Jordan + + * tests/test_cel: Add test_cel_attended_transfer_bridges_link to racey tests + + Despite failing less often, the ordering of the ATTENDEDTRANSFER event and the + BRIDGE_EXIT event for the Alice and David channels is not defined. This makes + the test still fail. + ........ + + Merged revisions 428918 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428919 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428920 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-03 13:49 +0000 [7475e1c948] Matt Jordan + + * tests/test_cel: Fix CEL unit test failures caused by attended transfer changes + + When the publication of attended transfer messages were pushed to another + thread, some subtle race conditions were introduced with the CEL unit tests. + This patch fixes one of them, and pushes the other to ASTERISK-22367, which + already exists to fix another bouncy CEL unit test. + + In particular, this patch fixes the test_cel_attended_transfer_bridges_link + test, and defers the test_cel_attended_transfer_bridges_swap test to the + aforementioned JIRA issue. + + ASTERISK-22367 + ........ + + Merged revisions 428891 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428892 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428893 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-03 10:45 +0000 [6d4ef7ddf4] David Duncan Ross Palmer (License 6660) + + * apps/app_voicemail: Fix crash with IMAP when streams are opened simultaneously + + The UW IMAP library is instrinsically not thread-safe, and relies upon higher + level applications to guarantee thread safety. For the most part, this is + provided by the vms object, which provides locking for individual streams. + Unfortunately, this is not sufficient for calls to mail_open which create the + IMAP stream. mail_open can, on some systems, call into a UW IMAP specific + function for determining the address of a system based on a hostname, + ip_nametoaddr. + + In the ip6_unix implementation of this function, static variables are used + to hold parsing buffers. This can cause a crash if multiple threads attempt + to convert a hostname to an address at the same time. Locking on a single + mail stream is not sufficient to prevent simultaneous access to these static + variables. + + In the IMAP library, this function can be called from the mail_open and + imap_status functions. As the imap_status function is not used by + app_voicemail, locking on access to mail_open is sufficient to prevent + any mangling of the buffers. + + Review: https://reviewboard.asterisk.org/r/4188/ + + ASTERISK-24516 #close + Reported by: David Duncan Ross Palmer + Tested by: David Duncan Ross Palmer + patches: + ASTERISK-24516.diff uploaded by David Duncan Ross Palmer (License 6660) + ........ + + Merged revisions 428863 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428864 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428865 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428866 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-02 15:54 +0000 [63cbd28999] George Joseph + + * CHANGES: Add item for new 'pjsip show identif(y|ies) commands + + Tested-by: George Joseph + ........ + + Merged revisions 428836 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428837 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428838 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-02 13:04 +0000 [dd00e80cbe] Matt Jordan + + * tests/test_stasis: Resolve compilation issues from Asterisk 12 merge + + When merging the changes up stream in r428687, I missed the fact that the + signature for stasis_message_type_create was changed. This patch fixes + the compilation issues introduced by that merge. + ........ + + Merged revisions 428815 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428816 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-02 11:10 +0000 [08636aadec] Birger Harzenetter (License 5870) + + * pbx/pbx_loopback: Speed up switches by avoiding unneeded lookups + + This patch makes a small rearrangement to only do dialplan lookups during + loopback switches if the pattern matches. Prior to this patch, the dialplan + lookups were always performed, even when the result would be discarded. + Dialplan lookups can be very costly if remote switches - like DUNDi - are + present. In those cases extension matching is sped up considerably, making + the issue of lost digits more manageable. + + As collateral damage, 6 trailing spaces were killed. + + Review: https://reviewboard.asterisk.org/r/4211 + + ASTERISK-24577 #close + Reported by: Birger Harzenetter + patches: + ast-loopback.patch uploaded by Birger Harzenetter (License 5870) + ........ + + Merged revisions 428787 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428788 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428789 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428790 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-02 06:21 +0000 [0c1aaa7da5] Joshua Colp + + * res_pjsip_refer: Fix issue where native bridge may not occur upon completion of a transfer. + + There are two methods within res_pjsip_refer for keeping track of the state of a transfer. + The first is a framehook which looks at frames passing by to determine the state. The second + subscribes to know when the channel joins a bridge. In the case when the channel joins the + bridge the framehook is *NOT* removed and this prevents the native RTP bridging technology + from getting used. + + This change gets the channel and if it still exists remove the framehook. + + Review: https://reviewboard.asterisk.org/r/4218/ + ........ + + Merged revisions 428760 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428761 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428762 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-01 18:38 +0000 [f128ff61ab] George Joseph + + * config: Create ast_variable_find_in_list() + + Add + const char *ast_variable_find_in_list(const struct ast_variable *list, + const char *variable); + + ast_variable_find() requires a config category to search whereas + ast_variable_find_in_list() just needs the root list element which is + useful if you don't have a category. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4217/ + ........ + + Merged revisions 428733 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428734 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428735 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-01 18:31 +0000 [f418f25c44] George Joseph + + * res_pjsip_endpoint_identifier_ip: Add 'show identify(ies)' cli commands + + While troubleshooting other things I realized there were no pjsip cli + commands for identify. This patch adds them. It also also fixes a + reference leak when a 'show endpoint' displayed identifies and properly + sets the return code if load_module can't allocate a cli formatter structure. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4212/ + ........ + + Merged revisions 428725 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428731 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428732 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-01 12:51 +0000 [4ff6bd831f] Joshua Colp + + * rtp_engine: Add support for transporting signed linear at 12kHz, 24kHz, 32kHz, 44kHz, 48kHz, 96kHz, and 192kHz over RTP. + + This change adds mappings in the RTP engine layer for the remaining signed linear formats. + + ASTERISK-24274 #close + Reported by: Frankie Chin + + Review: https://reviewboard.asterisk.org/r/4093/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428708 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-01 11:59 +0000 [1106e8fd0f] Matt Jordan + + * main/stasis: Allow subscriptions to use a threadpool for message delivery + + Prior to this patch, all Stasis subscriptions would receive a dedicated + thread for servicing published messages. In contrast, prior to r400178 + (see review https://reviewboard.asterisk.org/r/2881/), the subscriptions + shared a thread pool. It was discovered during some initial work on Stasis + that, for a low subscription count with high message throughput, the + threadpool was not as performant as simply having a dedicated thread per + subscriber. + + For situations where a subscriber receives a substantial number of messages + and is always present, the model of having a dedicated thread per subscriber + makes sense. While we still have plenty of subscriptions that would follow + this model, e.g., AMI, CDRs, CEL, etc., there are plenty that also fall into + the following two categories: + * Large number of subscriptions, specifically those tied to endpoints/peers. + * Low number of messages. Some subscriptions exist specifically to coordinate + a single message - the subscription is created, a message is published, the + delivery is synchronized, and the subscription is destroyed. + In both of the latter two cases, creating a dedicated thread is wasteful (and + in the case of a large number of peers/endpoints, harmful). In those cases, + having shared delivery threads is far more performant. + + This patch adds the ability of a subscriber to Stasis to choose whether or not + their messages are dispatched on a dedicated thread or on a threadpool. The + threadpool is configurable through stasis.conf. + + Review: https://reviewboard.asterisk.org/r/4193 + + ASTERISK-24533 #close + Reported by: xrobau + Tested by: xrobau + ........ + + Merged revisions 428681 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428687 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-01 07:41 +0000 [ef9ca8bc32] Ben Smithurst (license 6529) + + * app_record: Fix bug where using the 'k' option and hanging up would trim 1/4 of a second of the recording. + + The Record dialplan function trims 1/4 of a second from the end of recordings in case + they are terminated because of DTMF. When hanging up, however, you don't want this to happen. + This change makes it so on hangup this does not occur. + + ASTERISK-24530 #close + Reported by: Ben Smithurst + patches: + app_record_v2.diff submitted by Ben Smithurst (license 6529) + + Review: https://reviewboard.asterisk.org/r/4201/ + ........ + + Merged revisions 428653 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428654 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428655 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428656 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-12-01 07:08 +0000 [7db3d1642b] snuffy (license 5024) + + * channel: Extend size of buffer for codecs in "core show channeltype" CLI command. + + The static buffer for codecs when invoking the "core show channeltype" CLI command + did not have enough room for all codecs. This has been extended so it does. + + ASTERISK-24542 #close + Reported by: snuffy + patches: + channeltype-tech.diff submitted by snuffy (license 5024) + + Review: https://reviewboard.asterisk.org/r/4204/ + ........ + + Merged revisions 428632 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428633 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-24 14:39 +0000 [3e08619faf] Richard Mudgett + + * test_channel_feature_hooks.c: Fix unit test for DTMF hooks. + + Fix the failing /channels/features/test_features_channel_dtmf unit test. + + DTMF emulation does not work without a stream of packets to prod the + emulation code. + + Review: https://reviewboard.asterisk.org/r/4199/ + ........ + + Merged revisions 428604 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428605 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-24 14:32 +0000 [c38ffca9a1] Richard Mudgett + + * DTMF hooks: Leaving channels need to push any collected digits into the bridge. + + Any partially collected DTMF digits for a DTMF hook need to be pushed into + the bridge when a channel leaves the bridging system as if there were a + timeout. + + Review: https://reviewboard.asterisk.org/r/4199/ + ........ + + Merged revisions 428601 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428602 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428603 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-21 13:16 +0000 [3576ae47f4] Richard Mudgett + + * manager: Fix could not extend string messages. + + When shutting down Asterisk that has an active AMI connection, you get + several "failed to extend from %d to %d" messages because use of the + EVENT_FLAG_SHUTDOWN attempts to add all AMI permission strings to the + event. + + * Created MAX_AUTH_PERM_STRING to use when creating stack based struct + ast_str variables used with the authority_to_str() and + user_authority_to_str() functions instead of a variety of magic numbers + that could be too small. + + * Added a special check for EVENT_FLAG_SHUTDOWN to authority_to_str() so + it will not attempt to add all permission level strings. + + Review: https://reviewboard.asterisk.org/r/4200/ + ........ + + Merged revisions 428570 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428571 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428572 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-21 11:49 +0000 [4394e0431c] George Joseph + + * sorcery: Make is_object_field_registered handle field names that are regexes. + + As a result of https://reviewboard.asterisk.org/r/3305, res_sorcery_realtime + was tossing database fields that didn't have an exact match to a sorcery + registered field. This broke the ability to use regexes as field names which + manifested itself as a failure of res_pjsip_phoneprov_provider which uses + this capability. It also broke handling of fields that start with '@' in + realtime but I don't think anyone noticed. + + This patch does the following... + * Modifies ast_sorcery_fields_register to pre-compile the name regex. + * Modifies ast_sorcery_is_object_field_registered to test the regex if it + exists instead of doing an exact strcmp. + * Modifies res_pjsip_phoneprov_provider with a few tweaks to get it to work + with realtime. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4185/ + ........ + + Merged revisions 428543 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428544 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428545 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-21 07:59 +0000 [d663e045f5] Olle Johansson + + * sip.conf.sample - note that media_address does not change listen address, just the SDP + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428526 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-20 20:17 +0000 [2be984fb11] Matt Jordan + + * main/bridge_basic: Fix features regressions introduced by r428165 + + In r428165, two bugs were introduced: + + * Prior to entering the features retry loop, the buffer that holds the + collected digits is wiped. However, this inadvertently wipes out the + first collected digit on the first pass through, which is obtained + in ast_stream_and_wait. This caused all of the features tests to fail. + * If ast_app_dtget returns a hangup (-1), the loop would retry incorrectly. + If we detect a hangup, we have to stop trying the feature. + + This patch fixes both issues. + + Review: https://reviewboard.asterisk.org/r/4196/ + ........ + + Merged revisions 428505 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428506 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-20 10:37 +0000 [2f78fde10f] Matt Jordan (License #6283) + + * Fix error with mixed address family ACLs. + + Prior to this commit, the address family of the first item in an ACL + was used to compare all incoming traffic. This could lead to traffic + of other IP address families bypassing ACLs. + + ASTERISK-24469 #close + + Reported by Matt Jordan + Patches: + ASTERISK-24469-11.diff uploaded by Matt Jordan (License #6283) + + AST-2014-012 + ........ + + Merged revisions 428402 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 428417 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428422 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428425 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428426 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-20 10:35 +0000 [2486b48cec] Gareth Palmer (license 5169) + + * AST-2014-018 - func_db: DB Dialplan function permission escalation via AMI. + + The DB dialplan function when executed from an external protocol (for instance + AMI), could result in a privilege escalation. + + Asterisk now inhibits the DB function from being executed from an external + interface if the live_dangerously option is set to no. + + ASTERISK-24534 + Reported by: Gareth Palmer + patches: submitted by Gareth Palmer (license 5169) + ........ + + Merged revisions 428331 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 428363 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428409 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428413 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428418 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-20 10:25 +0000 [2f97486d43] Jonathan Rose + + * PJSIP ACLs: Fix ACLs not loading on startup and apply/acl issues on contact + + The biggest problem this patch fixes is that ACLs weren't previously being + loaded when the res_pjsip_acl module was loaded. Yikes. In addition, the + ACL options contact_permit and contact_acl were effectively interpreted as + contact_deny and this patch fixes that as well. + + AST-1418 #close + Reported by: Thomas Thompson + Review: https://reviewboard.asterisk.org/r/4120/ + + ASTERISK-24531 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4171/ + ........ + + Merged revisions 428333 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428343 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428376 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-20 09:57 +0000 [a389f2d7a0] Kevin Harwell + + * AST-2014-017 - app_confbridge: permission escalation/ class authorization. + + Confbridge dialplan function permission escalation via AMI and inappropriate + class authorization on the ConfbridgeStartRecord action. The CONFBRIDGE dialplan + function when executed from an external protocol (for instance AMI), could + result in a privilege escalation. Also, the AMI action “ConfbridgeStartRecord” + could also be used to execute arbitrary system commands without first checking + for system access. The AMI “ConfbridgeStopRecord” has also been updated to + only run under a system authorization. + + Asterisk now inhibits the CONFBRIDGE function from being executed from an + external interface if the live_dangerously option is set to no. Also, the + “ConfbridgeStartRecord” AMI action is now only allowed to execute under a + user with system level access. + + ASTERISK-24490 + Reported by: Gareth Palmer + ........ + + Merged revisions 428332 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428334 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428339 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428342 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-20 08:56 +0000 [1c88ca9d31] Joshua Colp + + * AST-2014-016: Fix crash when receiving an in-dialog INVITE with Replaces in res_pjsip_refer. + + The implementation of INVITE with Replaces in res_pjsip_refer did not expect them to + occur in-dialog. As a result it would incorrectly attempt to hang up a channel it + thought was under its control. In reality the channel would be under the control of + another thread. When the other thread accessed the channel it would be accessing freed + memory and could crash. + + This change makes res_pjsip_refer not act on an in-dialog INVITE with Replaces. + + ASTERISK-24528 #close + Reported by: Joshua Colp + ........ + + Merged revisions 428304 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428305 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428306 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-20 08:49 +0000 [d25eda5fb2] Joshua Colp + + * AST-2014-015: Fix race condition in chan_pjsip when sending responses after a CANCEL has been received. + + Due to the serialized architecture of chan_pjsip there exists a race condition where a CANCEL may + be received and processed before responses (such as 180 Ringing, 183 Session Progress, and 200 OK) + are sent. Since the session is in an unexpected state PJSIP will assert when this is attempted. + + This change makes it so that these responses are not sent on disconnected sessions. + + ASTERISK-24471 #close + Reported by: yaron nahum + ........ + + Merged revisions 428301 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428302 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428303 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-19 13:32 +0000 [57c6f89bf0] Corey Farrell + + * stringfields: Fix bug in ast_string_fields_copy. + + ast_string_fields_copy relies on the fact that + __ast_string_field_release_active never previously + zeroed pool->used, so keeping the existing pointer + was "ok". Now that existing pools can be reset to + 'empty', it is important to set each field to + __ast_string_field_empty after releasing the memory. + + ASTERISK-24535 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4186/ + ........ + + Merged revisions 428272 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428273 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428274 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-19 11:22 +0000 [a7c9f4c668] Richard Mudgett + + * ast_str: Fix improper member access to struct ast_str members. + + Accessing members of struct ast_str outside of the string manipulation API + routines is invalid since struct ast_str is supposed to be treated as + opaque. + + Review: https://reviewboard.asterisk.org/r/4194/ + ........ + + Merged revisions 428244 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428245 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428246 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428255 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-19 06:50 +0000 [7f8b7ace72] Joshua Colp + + * res_pjsip_sdp_rtp: Add support for optimistic SRTP. + + Optimistic SRTP is the ability to enable SRTP but not have it be + a fatal requirement. If SRTP can be used it will be, if not it won't be. + This gives you a better chance of using it without having your sessions + fail when it can't be. + + Encrypt all the things! + + Review: https://reviewboard.asterisk.org/r/3992/ + ........ + + Merged revisions 428222 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-19 06:45 +0000 [b2e766a6b7] Joshua Colp + + * alembic: Fix alembic migration for 'moh_passthrough' option in res_pjsip. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428223 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-19 05:51 +0000 [3119c3737f] Joshua Colp + + * res_pjsip_refer: Ensure Refer-To is NULL terminated and parse it as a URI. + + There is no guarantee that when we get a Refer-To that it will be NULL terminated. + As the URI parsing function requires it to be we now NULL terminate it. + + Additionally parsing the Refer-To as a 'To' header is needless and it can + simply be done as a URI. This also fixes a problem where certain Refer-To headers + would not be parsed as a 'To' header causing the REFER to fail. + + ASTERISK-24508 #close + Reported by: Beppo Mazzucato + + Review: https://reviewboard.asterisk.org/r/4187/ + ........ + + Merged revisions 428195 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428196 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-18 13:12 +0000 [a94efa239c] Richard Mudgett + + * parking_tests.c: Add missing newline on a unit test message. + ........ + + Merged revisions 428168 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428169 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428170 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-17 10:58 +0000 [2e750db120] Mark Michelson + + * Allow for transferer to retry when dialing an invalid extension. + + This allows for a configurable number of attempts for a transferer + to dial an extension to transfer the call to. For Asterisk 13, the + default values are such that upgrading between versions will not + cause a behaivour change. For trunk, though, the defaults will be + changed to be more user-friendly. + + Review: https://reviewboard.asterisk.org/r/4167 + ........ + + Merged revisions 428145 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428146 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-17 10:02 +0000 [4cea5fd4ba] Corey Farrell + + * chan_sip: Fix theoretical leak of p->refer. + + If transmit_refer is called when p->refer is already allocated, + it leaks the previous allocation. Updated code to always free + previous allocation during a new allocation. Also instead of + checking if we have a previous allocation, always create a + clean record. + + ASTERISK-15242 #close + Reported by: David Woolley + Review: https://reviewboard.asterisk.org/r/4160/ + ........ + + Merged revisions 428117 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428118 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428119 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428120 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-17 09:27 +0000 [948af7fd79] Matt Jordan + + * apps/app_confbridge: Ensure 'normal' users hear message when last marked leaves + + When r428077 was made for ASTERISK-24522, it failed to take into account users + who are neither wait_marked nor end_marked. These users are *also* supposed to + hear the 'leader has left the conference' message. Granted, this behaviour is + a bit odd; however, that is how it used to work... and behaviour changes are + not good. + + This patch ensures that if there are any 'normal' users present when the last + marked user leaves the conference, the message will still be played to them. + + Note that this regression was caught by the Asterisk Test Suite's + confbridge_nominal test, which has a quirky combination of users. + ........ + + Merged revisions 428113 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428114 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428115 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428116 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-16 21:08 +0000 [fc2279afea] Matt Jordan + + * app_confbridge: Don't play leader leaving prompt if no one will hear it + + Consider the following: + - A marked user in a conference + - One or more end_marked only users in the conference + + When the marked users leaves, we will be in the conf_state_multi_marked state. + This currently will traverse the users, kicking out any who have the end_marked + flags. When they are kicked, a full ast_bridge_remove is immediately called on + the channels. At this time, we also unilaterally set the need_prompt flag. + + When the need_prompt flag is set, we then playback a sound to the bridge + informing everyone that the leader has left; however, no one is left in the + bridge. This causes some odd behaviour for the end_marked users - they are + stuck waiting for the bridge to be unlocked. This results in them waiting for + 5 or 6 seconds of dead air before hearing that they've been kicked. + + Unfortunately, we do have to keep the bridge locked while we're playing back + the 'leader-has-left' prompt. If there are any wait_marked users in the + conference, this behaviour can't be easily changed - but we do make the case + of the end_marked users better with this patch. + + Review: https://reviewboard.asterisk.org/r/4184/ + + ASTERISK-24522 #close + Reported by: Matt Jordan + ........ + + Merged revisions 428077 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 428078 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428079 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428080 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-16 15:13 +0000 [656601d8c4] Joshua Colp + + * chan_pjsip: Remove AOR check when dialing and one is specified. + + The AOR value may contain the name of an AOR or a full SIP URI. + Checking if the AOR exists can't be done as a result of this. + ........ + + Merged revisions 428051 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428052 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428053 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-16 06:12 +0000 [bc02cbabd9] Joshua Colp + + * chan_sip: Fix bug where DTLS configuration from general would copy dtlsenable. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-15 15:52 +0000 [6993743b1f] Etienne Lessard (License 6394) + + * cel/cel_odbc: Provide microsecond precision in 'eventtime' column when possible + + This patch adds microsecond precision when inserting a CEL record into a table + with an "eventtime" column of type timestamp, instead of second precision. The + documentation (configs/cel_odbc.conf.sample) was already saying that the + eventtime column included microseconds precision, but that was not the case. + + Also, without this patch, if you had a table with an "eventtime" column of + type varchar, you had millisecond precision. With this patch, you also get + microsecond precision in this case. + + Review: https://reviewboard.asterisk.org/r/3980 + + ASTERISK-24283 #close + Reported by: Etienne Lessard + patches: + cel_odbc_time_precision.patch uploaded by Etienne Lessard (License 6394) + ........ + + Merged revisions 427952 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427953 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427954 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428010 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-15 15:36 +0000 [ece61f5ed1] Joshua Colp + + * chan_pjsip: Add additional log message when an AOR is specified when dialing and it does not exist. + + ASTERISK-24499 #close + Reported by: Rusty Newton + ........ + + Merged revisions 428007 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 428008 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428009 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-15 13:01 +0000 [49e63a191d] Joshua Colp + + * chan_motif / chan_pjsip: Fix incorrect "No such module" messages when reloading. + + For chan_motif the direct return value of the underlying config options framework + was passed back. This can relay various states which the module loader would not + interpet as success. It has been changed so only on errors will it report back + an error. + + For chan_pjsip the code implemented a dummy reload function which always + returned an error. This has been removed as all configuration is held within + res_pjsip instead. + + ASTERISK-23651 #close + Reported by: Rusty Newton + ........ + + Merged revisions 427981 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427982 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427983 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-15 12:29 +0000 [9d2882d274] Joshua Colp + + * res_pjsip: Enforce requirements for session timer minimum expiration period and normal expiration period. + + This change enforces the requirements in PJSIP for session timer configuration. The minimum + expiration period must be 90 seconds or higher and the normal expiration period can not + be lower than the minimum expiration period. If either of these were done the code would + assert at session setup time. + + ASTERISK-24336 #close + Reported by: Leon Rowland + ........ + + Merged revisions 427978 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427979 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427980 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-15 10:31 +0000 [d0523b4b3c] Michael K. (license 6621) + + * chan_sip: Add support for setting DTLS configuration in the general section. + + Configuration of DTLS in the general section will be applied to any users + or peers. If configuration exists at their level it overrides the general + section values. + + ASTERISK-24128 #close + Reported by: Michael K. + patches: + dtls_default_settings.patch submitted by Michael K. (license 6621) + + Review: https://reviewboard.asterisk.org/r/3867/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427950 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-14 15:51 +0000 [3268544907] Matt Jordan + + * tests/test_cel: Unlock bridge on off nominal paths + + If the test fails due to memory allocation errors, we may as well attempt to + unlock the bridge on the way out. + ........ + + Merged revisions 427927 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427932 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-14 12:12 +0000 [df2090b931] Jonathan Rose + + * Documentation: Revise explanation of cdr.conf option 'Unanswered' + + ASTERISK-24279 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4109/ + ........ + + Merged revisions 427901 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427902 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427903 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-14 09:52 +0000 [ba811ae1c3] Scott Griepentrog + + * stun: correct attribute string padding to match rfc + + When sending the USERNAME attribute in an RTP STUN + response, the implementation in append_attr_string + passed the actual length, instead of padding it up + to a multiple of four bytes as required by the RFC + 3489. This change adds separate variables for the + string and padded attributed lengths, and performs + padding correctly. + + Reported by: Thomas Arimont + Review: https://reviewboard.asterisk.org/r/4139/ + ........ + + Merged revisions 427874 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427875 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427876 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427877 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-14 09:28 +0000 [2d9471ab1f] Mark Michelson + + * Fix race condition that could result in ARI transfer messages not being sent. + + From reviewboard: + + "During blind transfer testing, it was noticed that tests were failing + occasionally because the ARI blind transfer event was not being sent. + After investigating, I detected a race condition in the blind transfer + code. When blind transferring a single channel, the actual transfer + operation (i.e. removing the transferee from the bridge and directing + them to the proper dialplan location) is queued onto the transferee + bridge channel. After queuing the transfer operation, the blind transfer + Stasis message is published. At the time of publication, snapshots of + the channels and bridge involved are created. The ARI subscriber to the + blind transfer Stasis message then attempts to determine if the bridge + or any of the involved channels are subscribed to by ARI applications. + If so, then the blind transfer message is sent to the applications. The + way that the ARI blind transfer message handler works is to first see + if the transferer channel is subscribed to. If not, then iterate over + all the channel IDs in the bridge snapshot and determine if any of + those are subscribed to. In the test we were running, the lone + transferee channel was subscribed to, so an ARI event should have been + sent to our application. Occasionally, though, the bridge snapshot did + not have any channels IDs on it at all. Why? + + The problem is that since the blind transfer operation is handled by a + separate thread, it is possible that the transfer will have completed and + the channels removed from the bridge before we publish the blind transfer + Stasis message. Since the blind transfer has completed, the bridge on + which the transfer occurred no longer has any channels on it, so the + resulting bridge snapshot has no channels on it. Through investigation of + the code, I found that attended transfers can have this issue too for the + case where a transferee is transferred to an application." + + The fix employed here is to decouple the creation of snapshots for the transfer + messages from the publication of the transfer messages. This way, snapshots + can be created to reflect what they are at the time of the transfer operation. + + Review: https://reviewboard.asterisk.org/r/4135 + ........ + + Merged revisions 427848 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427870 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427873 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-14 08:56 +0000 [737b811749] Joshua Colp + + * app_confbridge: Play "leader has left" sound even when musiconhold is enabled. + + Currently if the leader of a conference bridge leaves any participant + that has musiconhold enabled will not hear the "leader has left" sound. + This is because musiconhold is started and THEN the sound is played. + + This change makes it so that the sound is played and THEN musiconhold + is started. This provides a better experience for users as they may not + have known previously why they went back to musiconhold. + + Review: https://reviewboard.asterisk.org/r/4177/ + ........ + + Merged revisions 427844 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427845 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427846 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427847 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-14 08:40 +0000 [2454505d5a] Mark Michelson + + * Fix race condition where duplicated requests may be handled by multiple threads. + + This is the Asterisk 13 version of the patch. The main difference is in the pubsub + code since it was completely refactored between Asterisk 12 and 13. + + Review: https://reviewboard.asterisk.org/r/4175 + ........ + + Merged revisions 427841 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427842 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-13 16:26 +0000 [49b7a1cbaf] Kevin Harwell + + * res_pjsip_exten_state: PJSIPShowSubscriptionsInbound causes crash + + When using a non-default sorcery wizard (in this instance realtime) for + outbound registrations and after adding in an appropriate call to + ast_sorcery_apply_config() (since it is missing) Asterisk will crash after + a stack overflow occurs due to the code infinitely recursing. The fix entails + removing the outbound registration state dependency from the outbound + registration sorcery object and instead keeping an in memory container that + can be used to lookup the state when needed. + + ASTERISK-24514 + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4164/ + ........ + + Merged revisions 427814 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427815 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427823 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-13 09:46 +0000 [74e706878b] Kinsey Moore + + * Stasis: Fix StasisEnd message ordering + + This change corrects message ordering in cases where a channel-related + message can be received after a Stasis/ARI application has received the + StasisEnd message. The StasisEnd message was being passed to + applications directly without waiting for the channel topic to empty. + + As a result of this fix, other bugs were also identified and fixed: + * StasisStart messages were also being sent directly to apps and are + now routed through the stasis message bus properly + * Masquerade monitor datastores were being removed at the incorrect + time in some cases and were causing StasisEnd messages to not be sent + * General refactoring where necessary for the above + * Unsubscription on StasisEnd timing changes to prevent additional + messages from following the StasisEnd when they shouldn't + + A channel sanitization function pointer was added to reduce processing + and AO2 lookups. + + Review: https://reviewboard.asterisk.org/r/4163/ + ASTERISK-24501 #close + Reported by: Matt Jordan + ........ + + Merged revisions 427788 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427789 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427790 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-12 18:23 +0000 [cc4c396647] Matt Jordan + + * main/rtp_engine: Fix crash when processing more than one RTCP report info block + + Asterisk - in res_rtp_asterisk - only understands a single RTCP report info + block. When the RTCP information was refactored in the RTP Engine to be pushed + over the Stasis message bus, I put in the hooks into the engine to handle + multiple RTCP report info blocks, in the hope that a future RTP implementation + would be able to provide that data. Unfortunately, res_rtp_asterisk has a + tendency to "lie": + (1) It will send RTCP reports with a reception_report_count greater than 1 + (which is pulled directly from the RTCP packet itself, so that part is + correct) + (2) It will only provide a single report block + + When the rtp_engine goes to convert this to a JSON blob, hilarity ensues as it + looks for a report block that doesn't exist. + + This patch updates the rtp_engine to be a bit more skeptical about what it is + presented with. While this could also be fixed in res_rtp_asterisk, this patch + prefers to fix it in the engine for two reasons: + (1) The engine is designed to work with multiple RTP implementation, and hence + having it be more robust is a good thing (tm) + (2) res_rtp_asterisk's handling of RTCP information is "fun". It should report + the correct reception_report_count; ideally it should also be giving us all + of the blocks - but it is *definitely* not designed to do that. Going down + that road is a non-trivial effort. + + Review: https://reviewboard.asterisk.org/r/4158/ + + ASTERISK-24489 #close + Reported by: Gregory Malsack + Tested by: Gregory Malsack + + ASTERISK-24498 #close + Reported by: Beppo Mazzucato + Tested by: Beppo Maazucato + ........ + + Merged revisions 427762 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427763 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427771 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-12 14:40 +0000 [ec1a7654f3] Corey Farrell + + * Fix leak in AMI Action Bridge + + Add missing reference cleanup for newly created bridge. + + ASTERISK-24281 + Reported by: Stefan Engström + Review: https://reviewboard.asterisk.org/r/4154/ + ........ + + Merged revisions 427736 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427737 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427738 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-12 10:13 +0000 [dbb8f0a935] Joshua Colp + + * pbx: Fix off-nominal case where a freed extension may still be used. + + If during the operation of adding an extension a priority is added but + fails it is possible for the extension to be freed but still exist in + the PBX core. If this occurs subsequent lookups may try to access the + extension and end up in freed memory. + + This change removes the extension from the PBX core when the priority + addition fails and then frees the extension. + + ASTERISK-24444 #close + Reported by: Leandro Dardini + + Review: https://reviewboard.asterisk.org/r/4162/ + ........ + + Merged revisions 427709 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427710 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427711 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427712 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-12 07:47 +0000 [9f89b83269] Corey Farrell + + * Fix compiler error when using ./configure --enable-dev-mode --enable-coverage + + When DONT_OPTIMIZE is enabled with dev-mode, it causes a shadow compilation + to be done with output to /dev/null. This can cause errors with coverage + when GCC attempts to write to /dev/null.gcno. This change disables + coverage for the shadow compilation. + + ASTERISK-24502 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4151/ + ........ + + Merged revisions 427682 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427683 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427684 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427685 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-09 02:01 +0000 [21c41e4542] Corey Farrell + + * manager: Fix HTTP connection reference leaks. + + Fix reference leak that happens if (session && !blastaway). + + ASTERISK-24505 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4153/ + ........ + + Merged revisions 427641 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427642 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427643 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427644 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-08 18:38 +0000 [f4392c4b6d] Xavier Hienne (License 6657) + + * channels/chan_mgcp: Fix regression which causes gateways to be skipped + + In r227276, a while loop was turned into a for loop. Unfortunately, a portion + of the while loop was left in the code such that, when a static gateway is + encountered in the list of MGCP gateways, the next gateway would be skipped. + At best, we would simply flip past a gateway; at worst, this could lead to a + crash. + + ASTERISK-24500 #close + Reported by: Xavier Hienne + patches: + chan_mgcp.patch uploaded by Xavier Hienne (License 6657) + ........ + + Merged revisions 427613 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427614 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427615 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427616 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-08 18:26 +0000 [d773f9d03e] Dmitriy Bubnov (License 6651),Dmitry Bubnov (License 6651) + + * addons/chan_mobile: Increase buffer size of UCS2 encoded SMS messages + + When UCS2 character encoding is used, one symbol in national language can be + expanded to 4 bytes. The current buffer used for receiving message in + do_monitor_phone is 256 bytes, which is not large enough for incoming messages. + + For example: + * AT+CMGR phone response prefix + '+CMGR: "REC UNREAD","+7**********",,"14/10/29,13:31:39+12"\r\n' - 60 bytes + * SMS body with UCS2 encoding (max) - 280 bytes + * AT+CMGR phone response suffix '\r\n\r\nOK\r\n' - 8 bytes + * Terminating null character - 1 byte + + This results in a needed buffer size of 349 bytes. Hence, this patch opts for a + 350 byte buffer. + + ASTERISK-24468 #close + Reported by: Dmitriy Bubnov + patches: + chan_mobile-1_8.diff uploaded by Dmitriy Bubnov (License 6651) + chan_mobile-trunk.diff uploaded by Dmitry Bubnov (License 6651) + ........ + + Merged revisions 427607 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427610 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427611 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427612 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-08 18:14 +0000 [08d773532b] abelbeck (License 5903) + + * app_voicemail: Fix enhancement that allowed multiple recipients in To: header + + An issue existed in r420577, which added multiple recipients to voicemail + emails. The patch, when looking at the intended recipients, looked ahead for + the '|' character inside a while loop which already had pulled out the + appropriate field parsing on the '|' character. This would cause it to skip + the recipients. + + This patch fixes it such that it relies completely on the while loop to parse + through the e-mail fields. + + Note that the original author of the patch looked at this fix and approved it. + + ASTERISK-24250 #close + Reported by: abelbeck + patches: + voicemail-420577-to-comma-fix.diff uploaded by abelbeck (License 5903) + ........ + + Merged revisions 427585 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427586 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-08 18:04 +0000 [9a1ab5d548] Matt Jordan + + * bridge_native_rtp: Fix T.38 issues with remote bridges + + After r425242 the fax/sip/directmedia_reinvite_t38 test started failing due to + the surviving channel not being re-INVITEd back from T.38 to audio. This patch + fixes that bug - a deeper explanation of what happened follows. + + When two RTP channels are in a native bridge, the bridging layer will + investigate each via the get_rtp_info glue callback. This callback returns the + native bridge preference of the channel *at that moment in time* (that part is + key). At different points during the bridging, the native bridging layer will + inform the RTP capable channels of the status of the bridge via the update_peer + glue callback. + + In a T.38 scenario with audio direct media, the sequence of events will often + look like the following: + * SIP/A and SIP/B both have audio and enter a native bridge. + * Asterisk re-INVITEs audio between SIP/A and SIP/B directly (via an + update_peer callback). + * SIP/A sends a re-INVITE to T.38, which causes Asterisk to send a re-INVITE + to T.38 to SIP/B. Assuming everyone 200 OKs the process, the UDPTL stack + receives UDPTL packets in Asterisk from both endpoints. From the perspective + of the channels, we are now in a local bridge for T.38, even though we are + technically still in a remote bridge in bridge_native_rtp. (YAY!) + * When one side hangs up, bridge_native_rtp is told to stop bridging. It then + re-evaluates the channels and asks them how they are bridged - and since + T.38 is enabled, they reply with a Local bridge (which is correct), but is + wrong because the audio portion is still technically in a remote bridge. + * Asterisk releases the surviving channel, whose audio is *not* re-INVITED + back to Asterisk as bridge_native_rtp incorrectly assumes that it was in a + local bridge. + + Ironically, prior to r425242, this used to work mostly due to a fluke in the + bridging layer. + + The purpose of the get_rtp_info callback shouldn't be modified: it should tell + the bridging layer what kind of bridge the channel prefers at that moment in + time. If you have T.38 enabled, that *must* be a local bridge, as the UDPTPL + stack must be in the media path. As such, this patch does not modify that + part of the code. + + However, we have to tell the channels to re-evaluate themselves when they come + out of a native bridge, since we can no longer trust the get_rtp_info callbacks + when the native bridge is being stopped. Something else may have changed in the + channels, and they may now be lying to us. As such, this patch makes it so that + we unilaterally tell the channels that they are no longer bridged via the + update_peer callback. This is actually what the channels expect anyway: code in + both chan_sip and chan_pjsip's callbacks look at the T.38 state and - if they + were in T.38 - send a re-INVITE to get the audio back to Asterisk. + + Review: https://reviewboard.asterisk.org/r/4157/ + ........ + + Merged revisions 427582 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427583 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427584 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-08 12:20 +0000 [d4fd0774f4] Corey Farrell + + * chan_console: Fix reference leaks to pvt. + + Fix a bunch of calls to get_active_pvt + where the reference is never released. + + ASTERISK-24504 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4152/ + ........ + + Merged revisions 427554 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427555 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427557 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427566 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-06 13:26 +0000 [7571bae5ab] Richard Mudgett + + * app_agent_pool: Made agent alert interruptable by DTMF. + + Made agent able to interrupt the alerting beep playback with DTMF. Any + digit can interrupt if the call does not need to be acknowledged. Only + the first digit of the acknowledgement can interrupt if the call needs to + be acknowledged. The agent interrupting the alerting playback builds on + the ASTERISK-24447 patch because it knows what digit interrupted the + playback and needs to be able to pass that digit to the DTMF hook digit + collection code. + + ASTERISK-24257 #close + Reported by: Steve Pitts + + Review: https://reviewboard.asterisk.org/r/4123/ + ........ + + Merged revisions 427508 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427512 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427519 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-06 13:12 +0000 [a68baad74f] Richard Mudgett + + * Bridge DTMF hooks: Made audio pass from the bridge while waiting for more matching digits. + + * Made collecting DTMF digits for the DTMF feature hooks pass frames from + the bridge. + + * Made collecting DTMF digits possible by other bridge hooks if there is a + need. + + ASTERISK-24447 #close + Reported by: Richard Mudgett + + Review: https://reviewboard.asterisk.org/r/4123/ + ........ + + Merged revisions 427493 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427494 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427495 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-06 12:21 +0000 [47074f4bfd] Joshua Colp + + * res_pjsip: Ensure in-dialog responses have an endpoint associated. + + When handling incoming messages we determine if it is associated with + a dialog. If so we use that to determine what serializer and endpoint + to use for the message. Previously this would pass the endpoint to the + endpoint lookup module to actually place the endpoint completely on the + message. For in-dialog responses, however, this did not occur as + dialog processing took over and the endpoint lookup did not occur. + + This change just places the endpoint in the expected spot immediately + instead of relying on the endpoint lookup module. In-dialog responses + thus have the expected endpoint. + + AST-1459 #close + + Review: https://reviewboard.asterisk.org/r/4146/ + ........ + + Merged revisions 427490 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427491 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427492 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-06 06:15 +0000 [4d80f223af] Corey Farrell + + * main/file.c: fix possible extra ast_module_unref to format modules. + + fn_wrapper only adds a reference to the format's module if the file + was able to be opened. If not this causes an unmatched + ast_module_unref in filestream_destructor. Move ast_module_ref to + get_stream. + + ASTERISK-24492 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4149/ + ........ + + Merged revisions 427464 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427465 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427466 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427467 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-06 03:24 +0000 [c46664305a] Corey Farrell + + * res_hep: fix major leak that occurs when config is missing or enabled=no. + + Add missing unreference in hepv3_send_packet. + + ASTERISK-24491 #close + Reported by: Zane Conkle + Tested by: Zane Conkle + Review: https://reviewboard.asterisk.org/r/4150/ + ........ + + Merged revisions 427400 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427405 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427408 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-06 03:18 +0000 [7e2369310c] Corey Farrell + + * Fix unintential memory retention in stringfields. + + * Fix missing / unreachable calls to __ast_string_field_release_active. + * Reset pool->used to zero when the current pool->active reaches zero. + + ASTERISK-24307 #close + Reported by: Etienne Lessard + Tested by: ibercom, Etienne Lessard + Review: https://reviewboard.asterisk.org/r/4114/ + ........ + + Merged revisions 427380 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 427381 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427382 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427384 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427388 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-05 20:41 +0000 [362dde2229] George Joseph + + * test_strings: Remove string tests that exercise asserts. + + Since unit tests are run with DO_CRASH, those tests were causing + the test to fail. + + Tested-by: George Joseph + ........ + + Merged revisions 427354 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427355 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427356 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427357 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-05 13:53 +0000 [69f29e627f] Mark Michelson + + * Make the disable_tcp_switch PJSIP system object enabled by default. + + Testing has shown repeatedly that PJSIP's default behavior of switching + automatically to TCP for large messages can cause issues. The most common + issues are that devices that we are communicating with do not handle the + switch to TCP gracefully, thus causing situations such as broken calls or + broken subscriptions. Now, in order to have this behavior happen, you must + opt into it. The sample file has been updated to warn that enabling the + TCP switch behavior may cause issues for you, so use at your own risk. + ........ + + Merged revisions 427334 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427335 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-05 06:19 +0000 [b06078880b] Joshua Colp + + * res_pjsip_multihomed: Add logging during startup to aid debugging if local DNS is misbehaving. + + This change adds a bit of logging so if the local DNS is misbehaving it is easier + to track down what is going on and where Asterisk may be hanging. + + ASTERISK-24438 #close + Reported by: Melissa Shepherd + + Review: https://reviewboard.asterisk.org/r/4148/ + ........ + + Merged revisions 427300 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427303 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427306 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 18:17 +0000 [d5de94201e] George Joseph + + * config: Make text_file_save and 'dialplan save' escape semicolons in values. + + When a config file is read, an unescaped semicolon signals comments which are + stripped from the value before it's stored. Escaped semicolons are then + unescaped and become part of the value. Both of these behaviors are normal + and expected. When the config is serialized either by 'dialplan save' or + AMI/UpdateConfig however, the now unescaped semicolons are written as-is. + If you actually reload the file just saved, the unescaped semicolons are + now treated as start of comments. + + Since true comments are stripped on read, any semicolons in + ast_variable.value must have been escaped originally. This patch + re-escapes semicolons in ast_variable.values before they're written to + file either by 'dialplan save' or config/ast_config_text_file_save which + is called by AMI/UpdateConfig. I also fixed a few pre-existing formatting + issues nearby in pbx_config.c + + Tested-by: George Joseph + ASTERISK-20127 #close + + Review: https://reviewboard.asterisk.org/r/4132/ + ........ + + Merged revisions 427275 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427276 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427277 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 16:51 +0000 [c77a71ad2f] Joshua Colp + + * res_pjsip: Apply the 'user_eq_phone' setting to the To header as well. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427259 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 16:31 +0000 [5e43d68717] Joshua Colp + + * res_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427257 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 14:49 +0000 [bd42a09d7f] George Joseph + + * config: BUG: Restore ability for non-templ to be used as base objs in config. + + My recent refactor of config.c accidentally removed the capability for an + object to inherit from a non-template object. + + This patch restores the capability to inherit from both template and + non-template objects. + + Tested-by: George Joseph + Reported-by: Scott Griepentrog + ASTERISK-24487 #close + + Review: https://reviewboard.asterisk.org/r/4147/ + ........ + + Merged revisions 427227 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427228 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427229 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 13:46 +0000 [97e1c7f3a9] Corey Farrell + + * func_talkdetect: Fix stasis message leak in audiohook callback. + + ASTERISK-24482 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4142/ + ........ + + Merged revisions 427203 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427204 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427205 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 13:33 +0000 [9f2874639d] Corey Farrell + + * res_http_websockets: Fix extra unref of module + + In websocket_add_protocol_internal is used to add the "echo" + protocol, but ast_websocket_remove_protocol is used to remove + it. This causes an extra call to ast_module_unref. + + ASTERISK-24480 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4140/ + ........ + + Merged revisions 427200 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427201 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427202 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 08:11 +0000 [bdc35c77b9] Corey Farrell + + * Fix crash caused by merge error on review 4138 + + When merging from 12 to 13 there were conflicts, + I mistakenly had the loop run ast_closestream(others[0]) + when it should be ast_closestream(others[x]). + ........ + + Merged revisions 427181 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427182 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-04 06:03 +0000 [d159885e50] Joshua Colp + + * res_pjsip_outbound_registration: Add virtual line support. + + Virtual line support establishes a relationship between messages + related to an outbound registration and a local endpoint. This is + accomplished by attaching a parameter to the Contact of the outbound + registration and looking for it on any received requests. If the + parameter exists and can be matched to an outbound registration + the configured endpoint is associated with the request. + + Review: https://reviewboard.asterisk.org/r/2964/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427165 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-03 12:22 +0000 [33f0251b6c] Richard Mudgett + + * res_pjsip: Add disable_tcp_switch option. + + When a packet exceeds the MTU, pjproject will switch from UDP to TCP. In + some circumstances (on some networks), this can cause some issues with + messages not getting sent to the correct destination - and can also cause + connections to get dropped due to quirks in pjproject deciding to + terminate TCP connections with no messages. + + While fixing the routing/messaging issues is important, having a + configuration option in Asterisk that tells pjproject to not switch over + to TCP would be useful. That way, if some glitch is discovered on some + other network/site, we can at least disable the behavior until a fix is + put into place. + + AFS-197 #close + + Review: https://reviewboard.asterisk.org/r/4137/ + ........ + + Merged revisions 427129 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427130 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427137 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-03 09:03 +0000 [b9aeff9580] Joshua Colp + + * chan_pjsip: Update CHANGES file to include 'moh_passthrough' setting + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427113 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-03 08:45 +0000 [ac091d4184] Joshua Colp + + * chan_pjsip: Add support for passing hold and unhold requests through. + + This change adds an option, moh_passthrough, that when enabled will pass + hold and unhold requests through using a SIP re-invite. When placing on + hold a re-invite with sendonly will be sent and when taking off hold a + re-invite with sendrecv will be sent. This allows remote servers to handle + the musiconhold instead of the local Asterisk instance being responsible. + + Review: https://reviewboard.asterisk.org/r/4103/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427112 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-02 20:36 +0000 [285be15aaf] Corey Farrell + + * Fix compile error caused by review 4138 + + There is no procedure called ast_closeframe, fix code to use + ast_closestream. + + Reported By: Matt Jordan + ........ + + Merged revisions 427087 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427088 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427089 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427090 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-02 02:13 +0000 [509c04ef38] Corey Farrell + + * Fix ast_writestream leaks + + Fix cleanup in __ast_play_and_record where others[x] may be leaked. + This was caught where prepend != NULL && outmsg != NULL, once + realfile[x] == NULL any further others[x] would be leaked. A cleanup + block was also added for prepend != NULL && outmsg == NULL. + + 11+: Fix leak of ast_writestream recording_fs in + app_voicemail:leave_voicemail. + + ASTERISK-24476 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4138/ + ........ + + Merged revisions 427023 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 427024 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427025 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427026 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427027 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-02 01:40 +0000 [85c1822a9d] Corey Farrell + + * func_jitterbuffer: fix frame leaks. + + Fix code paths where it is possible for frames to leak. + Fix uninitialized variable in jb_get_fixed and jb_get_adaptive. + + ASTERISK-22409 #related + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4128/ + ........ + + Merged revisions 427019 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 427020 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 427021 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427022 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-11-01 20:01 +0000 [5db1c978e3] Matt Jordan + + * res/res_stasis: Fix crash on module unload while performing operation + + When the res_stasis module is unloaded, it will dispose of the apps_registry + container. This is a problem if an ARI operation is in flight that attempts + to use the registry, as the shutdown occurs in a separate thread. This patch + adds some sanity checks to the various routines that access the registry which + cause the operations to fail if the apps_registry does not exist. + + Crash caught by the Asterisk Test Suite. + ........ + + Merged revisions 426995 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426996 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426997 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-31 11:52 +0000 [4219c40775] Tzafrir Cohen + + * install init.d files on GNU/kFreeBSD + + Review: https://reviewboard.asterisk.org/r/4118/ + ........ + + Merged revisions 426926 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 426927 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426933 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426934 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426935 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-31 11:41 +0000 [28173ddf05] Scott Griepentrog + + * pjsip: clarify tls cert and key file usage + + A question arose as to whether a .pem file + could be provided in place of the .crt and + .key files in a PJSIP TLS configuration. I + tested this and discovered that although a + cert will be read from the pem file, a key + will not, and thus the priv_key_file entry + is still required. This update to the fine + documentation clarifies the option usage. + + AST-1448 #close + Review: https://reviewboard.asterisk.org/r/4129/ + Reported by: John Bigelow + ........ + + Merged revisions 426928 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426930 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426932 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-31 11:24 +0000 [f59db388a7] John Bigelow (License 5091) + + * pjsip: Handle outbound unregister correctly + + This updates the status of the outbound registration + to reflect when it has been unregistered. Since the + registration is unregistered but is not stopped, the + registration schedule remains active as before. The + patch also updates the documentation of both the AMI + and CLI commands. + + ASTERISK-24411 #close + Review: https://reviewboard.asterisk.org/r/4119/ + Reported by: John Bigelow + patches: + unregister-patch1.txt uploaded by John Bigelow (License 5091) + ........ + + Merged revisions 426923 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426924 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426925 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 22:26 +0000 [d88282af40] Matt Jordan + + * channels/sip/reqresp_parser: Fix unit tests for r426594 + + When r426594 was made, it did not take into account a unit test that verified + that the function properly populated the unsupported buffer. The function + would previously memset the buffer if it detected it had any contents; since + this function can now be called iteratively on successive headers, the unit + tests would now fail. This patch updates the unit tests to reset the buffer + themselves between successive calls, and updates the documentation of the + function to note that this is now required. + ........ + + Merged revisions 426858 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 426860 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426863 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426865 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 22:09 +0000 [bf684b63a3] Corey Farrell + + * REF_DEBUG: Install refcounter.py to $(ASTDATADIR)/scripts + + This change ensures refcounter.py is installed to a place where it + can be found by the Asterisk testsuite if REF_DEBUG is enabled. + + ASTERISK-24432 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4094/ + ........ + + Merged revisions 426830 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 426831 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426832 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426833 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426834 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 18:56 +0000 [e4374a3abe] Corey Farrell + + * app_queue: fix a couple leaks to struct call_queue in set_member_value + + set_member_value has a couple leaks to references in the variable q + found through testsuite tests/queues/set_penalty. Also remove the + REF_DEBUG_ONLY_QUEUES compiler declaration, this is no longer possible + with the updated REF_DEBUG code. + + ASTERISK-24466 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4125/ + ........ + + Merged revisions 426805 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426806 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426807 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426808 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 18:45 +0000 [ced81afff2] Corey Farrell + + * audiohooks: Clean references to formats + + Cleanup references to in_translate[x].format and + out_translate[x].format in ast_audiohook_detach_list. + + ASTERISK-24465 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4124/ + ........ + + Merged revisions 426803 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 16:14 +0000 [a537e314d1] Kevin Harwell + + * res_pjsip_exten_state: PJSIPShowSubscriptionsInbound causes crash + + Currently, it is possible for some subscriptions to get into a NULL state. When + this occurs and the PJSIPShowSubscriptionsInbound ami action is issued and a + device is subscribed for extension state then the associated subscription state + object can't be located. The code then attempts to dereference a NULL object. + Added a NULL check to avoid the problem. + + Reported by: John Bigelow + ........ + + Merged revisions 426779 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426780 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426781 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 12:18 +0000 [cd52456ea1] Kevin Harwell + + * res_pjsip: incorrect qualify statistics after disabling for contact + + When removing the qualify_frequency from an AoR or a contact the statistics + shown when issuing "pjsip show aors" from the CLI are incorrect. This patch + deletes the contact's status object from sorcery, disassociating it from the + contact, if the qualify_freqency is removed from configuration. + + ASTERISK-24462 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4116/ + ........ + + Merged revisions 426755 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426757 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426761 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 04:21 +0000 [5d8d90c402] Walter Doekes + + * app_voicemail: Fix unchecked bounds of myArray in IMAP_STORAGE. + + In update_messages_by_imapuser(), messages were appended to a finite + array which resulted in a crash when an IMAP mailbox contained more + than 256 entries. This memory is now dynamically increased as needed. + + Observe that this patch adds a bunch of XXX's to questionable code. See + the review (url below) for more information. + + ASTERISK-24190 #close + Reported by: Nick Adams + Tested by: Nick Adams + + Review: https://reviewboard.asterisk.org/r/4126/ + ........ + + Merged revisions 426691 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 426692 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426696 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426702 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426706 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-30 01:15 +0000 [c866ced76b] Igor Goncharovskiy + + * + Add additional checks for NULL pointers to fix several crashes reported. + + ASTERISK-24304 #close + Reported by: dhanapathy sathya + ........ + + Merged revisions 426666 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426667 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426668 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426669 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-29 20:59 +0000 [0ddc3bde24] Olle Johansson (License 5267) + + * channels/chan_sip: Add improved support for 4xx error codes + + This patch adds support for 414, 493, 479, and a stray 400 response in REGISTER + response handling. This helps interoperability in a number of scenarios. + + Review: https://reviewboard.asterisk.org/r/3437 + + patches: + rb3437.patch uploaded by oej (License 5267) + ........ + + Merged revisions 426599 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 426600 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426601 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426602 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426603 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-29 20:48 +0000 [ff83ff564c] Olle Johansson (License 5267) + + * channels/chan_sip: Support mutltiple Supported and Required headers + + A SIP request may contain multiple Supported: and Required: headers. Currently, + chan_sip only parses the first Supported/Required header it finds. This patch + adds support for multiple Supported/Required headers for INVITE requests. + + Review: https://reviewboard.asterisk.org/r/2478 + + ASTERISK-21721 #close + Reported by: Olle Johansson + patches: + rb2478.patch uploaded by oej (License 5267) + ........ + + Merged revisions 426594 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 426595 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426596 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426597 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426598 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-29 08:02 +0000 [8a69aedd17] Tzafrir Cohen + + * Fix building chan_phone on big endian systems + + A left over from the formats conversion (Corey Farrell). + + ASTERISK-24458 #close + Review: https://reviewboard.asterisk.org/r/4117/ + + ........ + + Merged revisions 426570 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 16:35 +0000 [0ed8aebda9] Richard Mudgett + + * bridge_builtin_features: Add missing channel locks around ast_get_chan_features_general_config(). + + The feature_automonitor() and feature_automixmonitor() functions were not + locking the channel around ast_get_chan_features_general_config(). + Accessing the channel datastore list without the channel locked is a good + way to corrupt the list or follow the pointer chain into oblivion. + ........ + + Merged revisions 426531 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426552 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426553 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 16:10 +0000 [7205d76d7d] Corey Farrell + + * res_fax: Resolve T38 gateway frame leak. + + When frames are translated by a fax gateway they need to be freed. The + existing call to ast_frfree was unreachable. This change reorganizes + fax_gateway_framehook to ensure that ast_frfree is called when needed. + + ASTERISK-24457 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4115/ + ........ + + Merged revisions 426527 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426528 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426529 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426530 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 15:44 +0000 [67e496c275] Corey Farrell + + * manager: Unsubscribe from acl_change_sub at shutdown. + + ASTERISK-24453 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4110/ + ........ + + Merged revisions 426524 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426525 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426526 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 13:09 +0000 [1fe22c411d] Malcolm Davenport + + * ASTERISK-23512, correct inaccurate comment in manager.conf.sample + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426462 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 11:41 +0000 [8e9f593e3a] Matt Jordan + + * main/bridge: Destroy features struct on off nominal path during bridge impart + + When a channel is imparted to a bridge, the invocation of the function may + provide an ast_bridge_features struct. Upon passing this to ast_bridge_impart, + the caller must assume that ownership has passed to the function, as in all + paths the function destroys the struct prior to returning (as its purpose is + to configure the behavior of the channel while in the bridge). On one off + nominal path - where the channel already has a PBX thread - the struct was not + being destroyed. + + This patch fixes that glitch. + + ASTERISK-24437 #close + Reported by: Scott Griepentrog + ........ + + Merged revisions 426431 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426432 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426433 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 09:59 +0000 [f4b4d42630] Matt Jordan + + * main/manager: Fix typo in AMI event documentation of "OriginateResponse" + + The parameter name is "Response", not "Resonse". + + ASTERISK-24430 #close + Reported by: Dafi Ni + ........ + + Merged revisions 426366 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426367 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426368 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426369 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 09:57 +0000 [68d9872f58] Malcolm Davenport + + * ASTERISK-24323, fix bug in documentation of AGI STREAM FILE CONTROL + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426365 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 08:13 +0000 [684b8762a9] Malcolm Davenport + + * ASTERISK-24419, fix incorrect syntax for setting language in extensions.conf.sample + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426297 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 06:22 +0000 [2290393273] Corey Farrell + + * app_queue: Cleanup ao2_iterator + + Clean ao2_iterator, resolving reference leak to queue members. + + ASTERISK-24454 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4111/ + ........ + + Merged revisions 426255 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426260 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426266 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426272 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-28 06:12 +0000 [ab16f46139] Corey Farrell + + * func_cdr: Fix CDR_PROP payload leak + + Remove duplicate allocation of payload, preventing leak. + + ASTERISK-24455 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4113/ + ........ + + Merged revisions 426252 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426253 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-27 12:55 +0000 [ef8cdd40e5] Sean Bright + + * configure: Add autoconf check for libopus. + + Because opus transcoding support cannot be included in the standard Asterisk + distribution, a few codec_opus implementations have popped up. To make it + easier for people to drop in opus support in their own installations, this + patch adds configure checks for libopus. + + Review: https://reviewboard.asterisk.org/r/4106/ + ........ + + Merged revisions 426234 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426235 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-26 21:47 +0000 [5a17878085] Matt Jordan + + * res/res_http_websocket: Fix minor nits found by wdoekes on r409681 + + When Moises committed the fixes for WSS (which was a great patch), wdoekes had + a few style nits that were on the review that got missed. This patch resolves + what I *think* were all of the ones that were still on the review. + + Thanks to both moy for the patch, and wdoekes for the reviews. + + Review: https://reviewboard.asterisk.org/r/3248/ + ........ + + Merged revisions 426209 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426210 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426211 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426212 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-26 21:27 +0000 [62bee9b327] Matt Jordan + + * res/res_phoneprov: Fix crash on shutdown caused by container cleanup + + In res_phoneprov, unloading the module first destroys the http_routes + container, followed by the users. However, users may have a route in + the http_routes container; the validity of this container is not checked + in the users destructor. Hence, we hit an assert as the container has already + been set to NULL. + + This patch does two things: + (1) It adds a sanity check in the user destructor (because why not) + (2) It switches the order of destruction, so that users are disposed of prior + to the HTTP routes they may hold a reference to. + + Note that this crash was caught by the Test Suite (go go testing!) + ........ + + Merged revisions 426174 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426176 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426179 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-26 20:47 +0000 [130a3fcd7f] Matt Jordan + + * res/res_srtp: Fix include issue for libsrtp 1.5.0 + + In libsrtp 1.5.0, crypto_get_random is no longer resolved simply by including + srtp.h. Now, one must include crypto_kernel.h as well. As it turns out, this + header file has been provided by the library since 2006, so this is a + relatively benign change. + + ASTERISK-24436 #close + Reported by: Patrick Laimbock + ........ + + Merged revisions 426140 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 426141 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 426142 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 426143 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426144 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-24 10:32 +0000 [c084728690] Jonathan Rose + + * Documentation: Improve documentation for ExtensionStatus AMI events + + Review: https://reviewboard.asterisk.org/r/4085/ + ........ + + Merged revisions 426120 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426121 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-22 16:41 +0000 [c4d7e7e270] Shaun Ruffell + + * codec_dahdi: Cannot use struct ast_translator.core_{src,src}_codec. + + This fixes a Segmentation fault introduced in r419044 "media formats: re-architect + handling of media for performance improvements". + + The problem is that codec_dahdi was using core_src_codec and core_dst_codec in the + ast_translator structure when these fields were never set. Now instead of trying to map + the new core codec descriptions to the way DAHDI defines different codecs, we will store + the DAHDI specific formats in 'struct translator' directly so we can refer to them without + mapping. + + This also allows us to remove the "global_format_map" structure, since we can now query + the list of translators directly to make sure we do not ever register a DAHDI based + translator for a specific path more than once and eliminate the need to keep the list and + the map in sync. + + ASTERISK-24435 #close + Reported by: Marian Koniuszko + + Review: https://reviewboard.asterisk.org/r/4105/ + ........ + + Merged revisions 426097 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426099 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-21 13:04 +0000 [2165868be7] Richard Mudgett + + * translage.c: Fix regression when generating translation path strings. + + Fix the AMI Status action read and write translation path strings from + growing for each channel in the status event list by reseting the ast + string given to ast_translate_path_to_str() to fill in the given + translation path. + ........ + + Merged revisions 426079 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426080 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-20 09:20 +0000 [dad0334cf1] abelbeck (License 5903),Matt Jordan (License 6283) + + * AST-2014-011: Fix POODLE security issues + + There are two aspects to the vulnerability: + (1) res_jabber/res_xmpp use SSLv3 only. This patch updates the module to use + TLSv1+. At this time, it does not refactor res_jabber/res_xmpp to use the + TCP/TLS core, which should be done as an improvement at a latter date. + (2) The TCP/TLS core, when tlsclientmethod/sslclientmethod is left unspecified, + will default to the OpenSSL SSLv23_method. This method allows for all + ecnryption methods, including SSLv2/SSLv3. A MITM can exploit this by + forcing a fallback to SSLv3, which leaves the server vulnerable to POODLE. + This patch adds WARNINGS if a user uses SSLv2/SSLv3 in their configuration, + and explicitly disables SSLv2/SSLv3 if using SSLv23_method. + + For TLS clients, Asterisk will default to TLSv1+ and WARN if SSLv2 or SSLv3 is + explicitly chosen. For TLS servers, Asterisk will no longer support SSLv2 or + SSLv3. + + Much thanks to abelbeck for reporting the vulnerability and providing a patch + for the res_jabber/res_xmpp modules. + + Review: https://reviewboard.asterisk.org/r/4096/ + + ASTERISK-24425 #close + Reported by: abelbeck + Tested by: abelbeck, opsmonitor, gtjoseph + patches: + asterisk-1.8-jabber-tls.patch uploaded by abelbeck (License 5903) + asterisk-11-jabber-xmpp-tls.patch uploaded by abelbeck (License 5903) + AST-2014-011-1.8.diff uploaded by mjordan (License 6283) + AST-2014-011-11.diff uploaded by mjordan (License 6283) + ........ + + Merged revisions 425987 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425991 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426003 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-19 12:09 +0000 [5e10e369b1] George Joseph + + * build: Force -fsigned-char on platforms where the default for char is unsigned + + gcc on the ARM platform defaults 'char' to 'unsigned char' whereas Intel and + SPARC default to 'signed char'. This is only an issue in the rare cases where + negative values are assigned to a 'char' but this this patch insures + compatibility by detecting platforms that default to 'unsigned' and adding an + '-fsigned-char' flag to _ASTCFLAGS. + + If compiling for ARM (native or cross-compile) be sure to run ./bootstrap.sh + and ./configure to regenerate the build files. You shouldn't have to do this + for Intel or SPARC. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4091/ + ........ + + Merged revisions 425964 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425965 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425966 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-18 23:03 +0000 [404b6ab3ab] Matt Jordan + + * res/res_pjsip_sdp_rtp: Revert 425924 + + This patch for r425924 introduced a bug, wherein sending an INVITE request + with no SDP would cause Asterisk to not send an SDP Offer in the 200 + OK. The current structure of res_pjsip_sdp_rtp is a bit hard to deal with + to fix this, as create_outgoing_sdp has no knowledge of whether or not it is + creating an SDP as a new Offer or an Answer. This is something of an oversight + in the callback definition, as the caller of it does have this information. + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425945 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-18 19:56 +0000 [b263c8bdae] Matt Jordan + + * res/res_pjsip_sdp_rtp: Remove left over reference to override_prefs + + The usage of the local override_prefs variable in create_outgoing_sdp_stream + was previously to track an override format preference set by PJSIP_MEDIA_OFFER. + Now, however, that function simply sets the joint capabilities structure, + session->req_caps. During the media format rework, the override_prefs was + instead used to check if there were any formats in session->req_caps. + + However, this usage isn't useful in create_outgoing_sdp_stream. + session->req_caps contains the negotiated formats for *all* streams, not just + the current one being created. Thus, so long as any stream of any type has + provided a format, override_prefs will be non-zero. Hence, its usage in + checking whether or not we should look at the formats on the endpoint or + the joint capabilities is generally useless. + + There's only two things useful to check: + (1) Does the endpoint have a format for the media type? + (2) Did we negotiate a format for the media type? + + If either of those is a 'no', then we must kill the media stream. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425924 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-17 17:45 +0000 [b8f687f27c] Jonathan Rose + + * Sample Configurations: make 'pjsip reload' reload all reloadable pjsip modules + + AST-1432 #close + Reported by: John Bigelow + ........ + + Merged revisions 425905 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425906 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-17 08:35 +0000 [8f58592252] Matt Jordan + + * res_pjsip_session/res_pjsip_sdp_rtp: Be more tolerant of offers + + When an inbound SDP offer is received, Asterisk currently makes a few + incorrection assumptions: + + (1) If the offer contains more than a single audio/video stream, Asterisk will + reject the entire stream with a 488. This is an overly strict response; + generally, Asterisk should accept the media streams that it can accept and + decline the others. + (2) If the offer contains a declined media stream, Asterisk will attempt to + process it anyway. This can result in attempting to match format + capabilities on a declined media stream, leading to a 488. Asterisk should + simply ignore declined media streams. + (3) Asterisk will currently attempt to handle offers with AVPF with + use_avpf=No/AVP with use_avpf=Yes. This mismatch results in invalid SDP + answers being sent in response. If there is a mismatch between the media + type being offered and the configuration, Asterisk must reject the offer + with a 488. + + This patch does the following: + * Asterisk will accept SDP offers with at least one media stream that it can + use. Some WARNING messages have been dropped to NOTICEs as a result. + * Asterisk will not accept an offer with a media type that doesn't match its + configuration. + * Asterisk will ignore declined media streams properly. + + #SIPit31 + + Review: https://reviewboard.asterisk.org/r/4063/ + + ASTERISK-24122 #close + Reported by: James Van Vleet + + ASTERISK-24381 #close + Reported by: Matt Jordan + ........ + + Merged revisions 425868 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425879 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425881 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-17 08:17 +0000 [0d0e38a0e1] Joshua Colp + + * res_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriented transports. + + This change adds a module which is configurable using the keep_alive_interval setting in the + global section that will send a CRLF keep alive to all active connection-oriented transports at + the provided interval. This is useful because it can help keep connections open through NATs. + This functionality also exists within PJSIP but can not be controlled at runtime and requires + recompiling it. + + Review: https://reviewboard.asterisk.org/r/4084/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425825 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-17 08:11 +0000 [86eea19c8f] Damian Ivereigh (License 6632) + + * channels/chan_sip: Respect outboundproxy setting when sending qualify requests + + The outboundproxy setting is currently ignored when sending OPTIONS requests + as a result of the qualify setting. This means that if an Asterisk server is + unable to send the packet directly to a peer, it is unable to qualify any + non-inbound registered peer (e.g. a peer SIP Trunk). + + This patch grabs the outboundproxy information for a peer when a qualify + attempt is being constructed and, if it finds the information, uses it + when sending the OPTIONS request. + + Review: https://reviewboard.asterisk.org/r/3948 + + ASTERISK-24063 #close + Reported by: Damian Ivereigh + patches: + outboundproxy-dai.patch uploaded by Damian Ivereigh (License 6632) + ........ + + Merged revisions 425818 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425819 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425820 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425821 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425822 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-17 06:30 +0000 [7144c739e9] Joshua Colp + + * res_pjsip: Add 'user_eq_phone' option to add a 'user=phone' parameter when applicable. + + This change adds a configuration option which adds a 'user=phone' parameter if the user + portion of the request URI or the From URI is determined to be a number. + + Review: https://reviewboard.asterisk.org/r/4073/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-16 21:49 +0000 [f91cb1207c] Richard Mudgett + + * AMI: Add missing VarSet events when a channel inherits variables. + + There should be AMI VarSet events when channel variables are inherited by + an outgoing channel. Also local;2 should generate VarSet events when it + gets all of its channel variables from channel local;1. + + ASTERISK-24415 #close + Reported by: Richard Mudgett + Patches: + jira_asterisk_24415_v12.patch (license #5621) patch uploaded by Richard Mudgett + + Review: https://reviewboard.asterisk.org/r/4074/ + ........ + + Merged revisions 425782 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425783 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425784 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-16 21:01 +0000 [df59a71b83] Matt Jordan + + * bridge_native_rtp: Fix audio issues when moving from remote bridge to softmix + + When a native RTP bridge that is remotely bridging its participants switches + to a softmix bridge, it may not properly re-INVITE the media for one or both + participants back to Asterisk. This is due to the current bridge_native_rtp + code only re-INVITEs if it believes the channel will survive the bridge + operation. Currently, that code is failing, as it expects the channels to + have a soft hangup flag set on it indicating that a redirect has occurred + or that the channel is going to leave the bridge. (The code did not take into + account a smart bridge operation). + + This patch also renames a few things to be more reflective of the underlying + types. + + Review: https://reviewboard.asterisk.org/r/3997/ + + ASTERISK-24327 #close + ........ + + Merged revisions 425760 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425761 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425762 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-16 20:46 +0000 [2ccbdd2624] Matt Jordan + + * test_cel: Update pickup test to expect CANCEL instead of ANSWSER + + The CEL pickup test previously looked for a disposition of ANSWER between the + original caller/peer when the call is picked up. This is actually incorrect: + the disposition should, at the very least, not be ANSWER as the call was + never ANSWERed. The disposition is now CANCEL; this patch updates the test + accordingly. + ........ + + Merged revisions 425757 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425758 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425759 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-16 16:21 +0000 [873d956144] Matt Jordan + + * main/cdr: Use 'time' when rescheduling batched CDRs as opposed to 'size' + + When refactoring CDRs to use the configuration framework, a 'whoops' was + introduced where the CDR batch size was used when rescheduling a batch, + as opposed to the time duration. This patch corrects that obvious mistake. + + ASTERISK-24426 #close + Reported by: Shane Blaser + ........ + + Merged revisions 425735 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425736 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425744 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-16 12:32 +0000 [c2ec5f0f6f] George Joseph + + * config: Fix inf loop using ast_category_browse and ast_variable_retrieve + + Fix infinite loop when calling ast_variable_retrieve inside an + ast_category_browse loop when there is more than 1 category with + the same name. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4089/ + ........ + + Merged revisions 425713 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425714 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425715 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-16 11:32 +0000 [86a4ce4957] Kinsey Moore + + * PJSIP: Enforce module load dependencies + + This enforces that res_pjsip, res_pjsip_session, and res_pjsip_pubsub + have loaded properly before attempting to load any modules that depend + on them since the module loader system is not currently capable of + resolving module dependencies on its own. + + ASTERISK-24312 #close + Reported by: Dafi Ni + Review: https://reviewboard.asterisk.org/r/4062/ + ........ + + Merged revisions 425690 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425691 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425700 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-16 01:22 +0000 [a770ca168d] Igor Goncharovskiy + + * + Fix loss of voice after second call drops (on a second line) in case using multiple lines on unistim phones. There is regression was introduced in r391379. + + Reported by: Rustam Khankishyiev + (closes issue ASTERISK-23846) + ........ + + Merged revisions 425667 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425668 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425669 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425677 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-15 20:26 +0000 [bfee1b4bc5] Joshua Colp + + * res_rtp_asterisk: Fix a bug where ICE state would get reset when it shouldn't. + + In the case where the ICE negotiation had not yet started current state would + get wiped when it shouldn't. + + This also removes channel binding as in practice this does not work well with + other implementations. + ........ + + Merged revisions 425644 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425645 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425646 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425647 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-15 14:39 +0000 [28c11fff78] Richard Mudgett + + * chan_motif: Cleanup jingle_tech.capabilities only once. + ........ + + Merged revisions 425627 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425628 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-15 14:17 +0000 [3d58066de9] Jonathan Rose + + * parking_tests: Fix assertions and possibly crashes in res_parking unit tests + + Assertions were caused by attempting to play music on hold to a channel with + no formats. Parking unit test channels were given formats and a technology so + that they would be able to pretend to read/write frames. + + ASTERISK-24413 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4075/ + ........ + + Merged revisions 425611 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425613 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-15 05:03 +0000 [90c98d384b] Alexandr Anikin + + * chan_ooh323: fix rtptimeout general value checking + + correct condition to check rtptimeout in [general] config section + + ASTERISK-24393 #close + Reported by: Dmitry Melekhov + Tested by: Dmitry Melekhov + Patches: + ASTERISK-24393.patch + ........ + + Merged revisions 425547 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425548 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425589 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425590 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425591 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-14 15:48 +0000 [104fca5001] George Joseph + + * config: Fix SEGV in unit test with MALLOC_DEBUG + + With MALLOC_DEBUG the /main/config config_basic_ops test was causing a + SEGV while doing an ast_category_delete in an ast_category_browse loop. + Apparently this never worked but was also never tested. I removed the + test, added 2 notes to config.h indicating that it's not supported and + added a few lines of code to ast_category_delete to prevent the SEGV + should someone attempt it in the future. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4078/ + ........ + + Merged revisions 425525 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425526 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425527 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-14 14:12 +0000 [87b5006ff0] Jonathan Rose + + * Scheduler: Fix a nasty scheduler caching bug which makes new tasks not execute + + Tasks that were marked for pending deletion in the scheduler would be moved to + the cache for later reuse, but after being recycled the deleted mark wouldn't + be removed resulting in fresh tasks being deleted without reason... and + immediately moved back into the cache where they could be reused again. This + could cause horrendous things to happen in just about anything that used a + scheduler. + + ASTERISK-24321 #close + Reported by: Steve Pitts + Review: https://reviewboard.asterisk.org/r/4071/ + ........ + + Merged revisions 425503 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425504 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-14 13:13 +0000 [527b58aeb7] George Joseph + + * res_phoneprov: Create accessor for ast_phoneprov_std_variable_lookup + + Based on feedback from Richard, I created an accessor for + res_phoneprov/ast_phoneprov_std_variable_lookup and added + load priority to AST_MODULE_INFO. + + Tested-by: George Joseph + Tested-by: Richard Mudgett + + Review: https://reviewboard.asterisk.org/r/4076/ + ........ + + Merged revisions 425480 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425481 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425482 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-14 11:47 +0000 [fbb19db0c8] Corey Farrell + + * res_fax: Fix reference leak caused by gateway sessions + + Fax gateway session objects can be re-used, causing the + same gateway session to be added to faxregistry.container + more than once. This change causes fax_session_new to + remove the reserved session from the container before + it's id is changed, ensuring it's possible for the + session to be freed. + + ASTERISK-24392 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4049/ + ........ + + Merged revisions 425457 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425458 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425459 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425460 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-14 11:43 +0000 [c61b66e107] Richard Mudgett + + * stasis_channels.c: Resolve unfinished Dials when doing masquerades (Part 2) + + Masquerades into and out of channels that are involved in a dial operation + don't create the expected dial end event. The missing dial end event goes + against the model for things like CDRs and generating Dial end manager + actions and such. + + There are four cases: + + 1) A channel masquerades into the caller channel. The case happens when + performing a blonde transfer using the channel driver's protocol. + + 2) A channel masquerades into a callee channel. The case happens when + performing a directed call pickup. + + 3) The caller channel masquerades out of dial. The case happens when + using the Bridge application on the caller channel. + + 4) A callee channel masquerades out of dial. The case happens when using + the Bridge application on a peer channel. + + As it turned out, all four cases need to be handled instead of just the + first one. + + ASTERISK-24237 + Reported by: Richard Mudgett + + ASTERISK-24394 #close + Reported by: Richard Mudgett + + Review: https://reviewboard.asterisk.org/r/4066/ + ........ + + Merged revisions 425430 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425455 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425456 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-14 11:20 +0000 [01bdc80475] Corey Farrell + + * res_fax: Resolve module reference leak caused by reserved sessions + + Remove reference to module providing reserved session after + adding a reference to the final module. This re-reference + is done to ensure that module references are correct even + if the final session selects a different module than the + reserved session. + + ASTERISK-18923 #close + Reported by: Grigoriy Puzankin + Review: https://reviewboard.asterisk.org/r/4048/ + ........ + + Merged revisions 425405 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425407 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425411 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425415 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425419 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-13 11:12 +0000 [c7e6b6ba3d] George Joseph + + * manager/config: Support templates and non-unique category names via AMI + + This patch provides the capability to manipulate templates and categories + with non-unique names via AMI. + + Summary of changes: + + GetConfig and GetConfigJSON: Added "Filter" parameter: A comma separated list + of name_regex=value_regex expressions which will cause only categories whose + variables match all expressions to be considered. The special variable name + TEMPLATES can be used to control whether templates are included. Passing + 'include' as the value will include templates along with normal categories. + Passing 'restrict' as the value will restrict the operation to ONLY templates. + Not specifying a TEMPLATES expression results in the current default behavior + which is to not include templates. + + UpdateConfig: NewCat now includes options for allowing duplicate category + names, indicating if the category should be created as a template, and + specifying templates the category should inherit from. The rest of the + actions now accept a filter string as defined above. If there are non-unique + category names, you can now update specific ones based on variable values. + + To facilitate the new capabilities in manager, corresponding changes had to be + made to config, most notably the addition of filter criteria to many of the + APIs. In some cases it was easy to change the references to use the new + prototype but others would have required touching too many files for this + patch so a wrapper with the original prototype was created. Macros couldn't + be used in this case because it would break binary compatibility with modules + such as res_digium_phone that are linked to real symbols. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4033/ + ........ + + Merged revisions 425383 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425384 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425385 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-12 16:09 +0000 [8d6f1d763c] Joshua Colp + + * res_rtp_asterisk: Make the ICE transport check case insensitive as some implementations use 'udp'. + ........ + + Merged revisions 425360 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425361 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425362 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425363 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-12 03:17 +0000 [9e72c74db5] Walter Doekes + + * chan_sip: Fix so asterisk won't send reINVITE after a BYE. + + After a reINVITE glare situation, Asterisk would re-send the reINVITE + even though the call had been hung up in the mean time. This patch + unschedules the reinvite when handling the BYE. + + ASTERISK-22791 #close + Reported by: Paolo Compagnini + Tested by: Paolo Compagnini + + Review: https://reviewboard.asterisk.org/r/4056/ + (testcase is in review r4055) + ........ + + Merged revisions 425296 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425297 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425298 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425299 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425300 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-12 02:57 +0000 [c0ac874106] Walter Doekes + + * build: Relax badshell tilde test to allow for ~ in middle of DESTDIR. + + The main Makefile has a target test called 'badshell' that tests if + DESTDIR does not happen to have an an-expanded tilde (~). This might + be the case if you run: make install DESTDIR=~/somewhere/ + + That test also disallowed valid tildes in directory names. The test is + now changed to only trigger on a tilde at the start of the path. + + ASTERISK-13797 #close + Reported by: Tzafrir Cohen + + Review: https://reviewboard.asterisk.org/r/4064/ + ........ + + Merged revisions 425291 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425292 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425293 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425294 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425295 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-12 02:47 +0000 [2a03efdbae] Walter Doekes + + * res_calendar_ews: Relax neon version check to work with 0.30 too. + + Allow res_calendar_ews to work not only with libneon-0.29 but also + with 0.30. + + ASTERISK-24325 #close + Reported by: Tzafrir Cohen + + Review: https://reviewboard.asterisk.org/r/4068/ + ........ + + Merged revisions 425286 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425287 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425288 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425289 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425290 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-11 16:09 +0000 [6a3c11c75b] George Joseph + + * res_phoneprov: Cleanup module load error handling + + Tested module load/reload interaction between res_phoneprov and + res_pjsip_phoneprov_provider in cases where res_phoneprov didn't + load correctly (usually misconfiguration or missing phoneprov.conf) + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4069/ + ........ + + Merged revisions 425264 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425265 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425266 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-10 15:48 +0000 [98d5b7090d] Joshua Colp + + * bridge: During a smart bridge operation provide a more complete bridge to the old technology. + + When a smart bridge operation occurs and a bridge transitions from one + technology to another the old technology is provided the channels formerly + in it and told that they are leaving. Unfortunately the bridge provided + along with them is incomplete. The bridge, despite there being channels in it, + contains none. This forces technology implementations to have additional + logic when channels are leaving or to store their own duplicated + state. + + This change makes the bridge more complete so it contains the expected + channels. Now that the bridge is complete special logic within + bridge_native_rtp is no longer needed and has been removed. + + Review: https://reviewboard.asterisk.org/r/4057/ + ........ + + Merged revisions 425242 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425243 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425244 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-10 09:31 +0000 [c3ff212cae] Matt Jordan + + * res/res_phoneprov: Bail on registration if res_phoneprov didn't load + + If res_phoneprov failed to fully load (due to not being configured), the + providers container will be NULL. If a module attempts to register a phone + provisioning provider, it should check for the presence of the container. + If there is no providers container, it should return an error. + + This patch makes the ast_phoneprov_provider_register function do that... + otherwise this would be a silly commit message. + ........ + + Merged revisions 425220 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425221 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425222 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-10 09:24 +0000 [c46100ad5f] Joshua Colp + + * res_pjsip_phoneprov_provider: Add missing dependency on pjproject. + ........ + + Merged revisions 425216 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425217 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425218 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-10 08:03 +0000 [37b5f52da7] Kinsey Moore + + * CallerID: Fix parsing regression + + This fixes a regression in callerid parsing introduced when another bug + was fixed. This bug occurred when the name was composed entirely of + DTMF keys and quoted without a number section (<>). + + ASTERISK-24406 #close + Reported by: Etienne Lessard + Tested by: Etienne Lessard + Patches: + callerid_fix.diff uploaded by Kinsey Moore + Review: https://reviewboard.asterisk.org/r/4067/ + ........ + + Merged revisions 425152 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425153 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425154 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425155 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425156 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-10 07:10 +0000 [0ef680cff0] Joshua Colp + + * res_pjsip_nat: Place source port into rport of responses if 'force_rport' is on. + + When the 'force_rport' option is enabled the behavior should be the same + as if the remote side placed rport into the message themselves. Therefore + any responses we send should include the source port of the request in the + rport of the Via header. + + #SIPit31 + + ASTERISK-24387 #close + Reported by: Matt Jordan + ........ + + Merged revisions 425131 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425132 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425133 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-10 02:34 +0000 [d3f525fd8f] Torrey Searle (License #5334),Nitesh Bansal (License #6418) + + * chan_sip: Fix dialog leak resulting from missing ACK to re-INVITE. + + If a device re-INVITEs at the same time as the dialog is hung up, and + if then the ACK to the re-INVITE never reaches Asterisk, chan_sip would + fail to destroy the dialog after a while. This resulted in (most + prominently) file handle leaks. + + (Patch reindented by me.) + + ASTERISK-20784 #close + ASTERISK-15879 #close + Reported by: Torrey Searle, Nitesh Bansal + Patches: + reinvite_ack_timeout.patch uploaded by Torrey Searle (License #5334) + patch_asterisk_20784.txt uploaded by Nitesh Bansal (License #6418) + + Reviewboard: https://reviewboard.asterisk.org/r/4052/ + (testcase can be found at r4051) + ........ + + Merged revisions 425068 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 425069 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 425070 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425071 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425072 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-09 18:37 +0000 [aef63118da] George Joseph + + * res_pjsip_phoneprov_provider: fix compile breakage on AST_VECTOR + + endpoint->inbound_auths was changed to a vector in 13 and I + committed the 12 patch instead of the 13 patch. + + Tested-by: George Joseph + ........ + + Merged revisions 425052 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425053 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-09 16:39 +0000 [6fc4df7279] Kevin Harwell + + * res_rtp_asterisk: Crash if no candidates received for component + + When starting ice if there is not at least one remote ice candidate with an RTP + component asterisk will crash. This is due to an assertion in pjnath as it + expects at least one candidate with an RTP component. Added a check to make + sure at least one candidate contains an RTP component and at least one candidate + has an RTCP component. + + ASTERISK-24383 #close + Review: https://reviewboard.asterisk.org/r/4039/ + ........ + + Merged revisions 425031 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425032 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-09 15:55 +0000 [c6837c236f] George Joseph + + * res_pjsip_phoneprov_provider: Provides pjsip integration with res_phoneprov + + This module allows res_pjsip to integrate with res_phoneprov. It handles + the pjsip 'phoneprov' object type. + + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/3976/ + ........ + + Merged revisions 425007 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 425008 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425009 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-09 13:44 +0000 [3a187aa14a] Matt Jordan + + * res/res_phoneprov: Don't cancel Asterisk load on module load failure + ........ + + Merged revisions 424985 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424986 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424987 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-09 12:46 +0000 [cc595f7353] George Joseph + + * res_phoneprov: Refactor phoneprov to allow pluggable config providers + + This patch makes res_phoneprov more modular so other modules (like pjsip) + can provide configuration information instead of res_phoneprov relying solely + on users.conf and sip.conf. To accomplish this a new ast_phoneprov public API + is now exposed which allows config providers to register themselves, set + defaults (server profile, etc) and add user extensions. + + * ast_phoneprov_provider_register registers the provider and provides callbacks + for loading default settings and loading users. + * ast_phoneprov_provider_unregister clears the defaults and users. + * ast_phoneprov_add_extension should be called once for each user/extension + by the provider's load_users callback to add them. + * ast_phoneprov_delete_extension deletes one extension. + * ast_phoneprov_delete_extensions deletes all extensions for the provider. + + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/3970/ + ........ + + Merged revisions 424963 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424964 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424965 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-09 11:38 +0000 [0f50e8856b] Richard Mudgett + + * cdr.c: Make turning on CDR debug a one step process instead of two. + + Now "cdr set debug on" doesn't also require "core set verbose 1" to see + CDR debug output. + ........ + + Merged revisions 424941 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424942 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424943 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-09 03:10 +0000 [d0255c4a46] Michael Myles (License #6626) + + * safe_asterisk: Don't automatically exceed MAXFILES value of 2^20. + + On systems with lots of RAM (e.g. 24GB) /proc/sys/fs/file-max divided + by two can exceed the per-process file limit of 2^20. This patch + ensures the value is capped. + + (Patch cleaned up by me.) + + ASTERISK-24011 #close + Reported by: Michael Myles + Patches: + safe_asterisk-ulimit.diff uploaded by Michael Myles (License #6626) + ........ + + Merged revisions 424875 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 424878 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424879 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424880 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424881 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-08 13:47 +0000 [8b0089ea1d] Joshua Colp + + * res_rtp_asterisk: Allow only UDP ICE candidates. + + The underlying library, pjnath, that res_rtp_asterisk uses for ICE + support does not have support for ICE-TCP. As candidates are + passed through directly to it this can cause error messages to occur + when it receives something unexpected (such as a TCP candidate). + This change merely ignores all non-UDP candidates so they never + reach pjnath. + + ASTERISK-24326 #close + Reported by: Joshua Colp + ........ + + Merged revisions 424852 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424853 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424854 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424855 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-08 13:24 +0000 [5e50638539] Kinsey Moore + + * Stasis: Relegate log message to dev-mode + + This error message primarily applies to development tasks and will now + only show up when dev-mode is enabled via configure. + ........ + + Merged revisions 424850 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424851 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-08 09:54 +0000 [3dfc485e35] Kinsey Moore + + * Indexer: Format message types may not exist + + In Asterisk 13+, any given message type is not guaranteed to exist even + if Asterisk comes up correctly since creation of the message type could + be declined. The indexer should not prevent Asterisk from starting + under these conditions. + ........ + + Merged revisions 424833 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424834 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-07 15:33 +0000 [d8bbf1ec1d] Kinsey Moore + + * Stasis: Only log errors for non-declined types + + When message type creation is declined via stasis.conf, certain + operations log errors assuming that the declined type is being used + before initialization or after destruction. These error messages get + quite spammy for oft used message types and should not be logged in the + first place since the message type is validly NULL. + + Reported by: Matt DiMeo + ........ + + Merged revisions 424769 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424770 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-07 13:34 +0000 [f7225da08a] Joshua Colp + + * data: Properly access formats in capabilities structure when adding codecs. + + Formats within a capabilities structure are addressed starting at 0, not 1. + Assuming 1 causes it to exceed an array. + + ASTERISK-24389 #close + Reported by: Kevin Harwell + ........ + + Merged revisions 424752 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424753 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-07 12:44 +0000 [a9011106b6] Matt Jordan + + * res/res_pjsip_outbound_registration: Initialize auth_reject_permanent parameter + + Prior to this patch, the auth_reject_permanent parameter was not initialized on + the registration client state, leading to the parameter being disabled + regardless of the value specified in pjsip.conf. + + This patch initialized the setting on the registration client state to the + provided configuration value. + + ASTERISK-24398 #close + ........ + + Merged revisions 424730 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424731 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424732 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-07 09:09 +0000 [523da7d1b3] Matt Jordan + + * res/res_pjsip_pubsub: Fix typo in WARNING message + ........ + + Merged revisions 424713 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424714 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-06 13:39 +0000 [39bd5b7a70] Peter Katzmann (License 5968) + + * message: Don't close an AMI connection on SendMessage action error + + If SendMessage encounters an error (such as incorrect input provided to the + action), it will currently return -1. Actions should only return -1 if the + connection to the AMI client should be closed. In this case, SendMessage + causing the client to disconnect is inappropriate. + + This patch causes the action to return 0, which simply causes the action to + fail. + + Review: https://reviewboard.asterisk.org/r/4024 + + ASTERISK-24354 #close + Reported by: Peter Katzmann + patches: + sendMessage.patch uploaded by Peter Katzmann (License 5968) + ........ + + Merged revisions 424690 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424691 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424692 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424693 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-06 10:41 +0000 [c384532aa4] Richard Mudgett + + * features.c: Fix lingering channel ref while Bridge() application is active. + + Using the Bridge application to bridge a channel that is executing an + applicaiton such as Wait results in a lingering Surrogate channel in the + CLI "core show channels" output even though it has already hungup. + + * Fix bridge_exec() to not hold onto the current_dest_chan ref once it has + been put into the bridge. + + * Eliminated bridge_exec()'s use of RAII_VAR(). + + ASTERISK-24224 #close + Reported by: Mark Michelson + + Review: https://reviewboard.asterisk.org/r/4041/ + ........ + + Merged revisions 424668 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424669 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424670 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-06 07:39 +0000 [3a87f32dc0] Matt Jordan + + * sdp_srtp: Add new lines to some WARNING messages + ........ + + Merged revisions 424646 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424647 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424648 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-05 20:01 +0000 [cce3d99ec8] Matt Jordan + + * res_pjsip/pjsip_options: Do not 404 an OPTIONS request not sent to an endpoint + + An OPTIONS request that is sent to Asterisk but not to a specific endpoint is + currently sent a 404 in response. This is because, not surprisingly, an empty + extension is never going to be found in the dialplan. + + This patch makes it so that we only attempt to look up the endpoint in the + dialplan if it is specified in the OPTIONS request URI. + + #SIPit31 + + ASTERISK-24370 #close + Reported by: Matt Jordan + ........ + + Merged revisions 424624 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424625 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424626 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-05 19:53 +0000 [c013916869] Matt Jordan + + * pjsip/dialplan_functions: Handle PJSIP_MEDIA_OFFER called on non-PJSIP channels + + Calling PJSIP_MEDIA_OFFER on a non-PJSIP channel is hazardous to your health. + It will treat the channels as a PJSIP channel, eventually hitting an ao2 error, + FRACKing on assertion error, and quite likely crashing. + + This patch adds checks to the read/write callbacks that ensure that the channel + technology is of type 'PJSIP' before attempting to operate on the channel. + + #SIPit31 + + ASTERISK-24382 #close + Reported by: Matt Jordan + ........ + + Merged revisions 424621 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424622 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-05 19:31 +0000 [45b7b474ac] Matt Jordan + + * res_pjsip: Prevent crashes when PJPROJECT presents an rdata with no message + + When a message that exceeds the PJ_MAX_PKT_SIZE is sent over a reliable + transport, it is possible (although it shouldn't occur) for pjproject to pass + up an rdata object with a NULL msg in the msg_info. Needless to say, things + that attempt to dereference this are in for a rough ride. + + In particular, this caused crashes in three different locations, all of which + are 'low level' enough to intercept an rdata object early in processing: + + (1) res_pjsip_logger + (2) res_hep_pjsip + (3) res_pjsip/distributor + + Anything that can intercept an rdata object before res_pjsip/distributor should + be defensive when looking at the received packet. + + #SIPit31 + + ASTERISK-24369 #close + Reported by: Matt Jordan + ........ + + Merged revisions 424618 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424619 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424620 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-05 19:13 +0000 [f27f41a288] Matt Jordan + + * res/res_pjsip_pubsub: Gracefully handle errors when re-creating subscriptions + + A subscription that has been persisted can - for various reasons - fail to be + re-created on startup. This patch resolves a number of crashes that occurred + when a subscription cannot be re-created on several off-nominal paths. + + #SIPit31 + + ASTERISK-24368 #close + Reported by: Matt Jordan + ........ + + Merged revisions 424601 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424602 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-04 19:49 +0000 [9611ef4f1e] Corey Farrell + + * Release AMI connections on shutdown. + + ASTERISK-24378 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4037/ + ........ + + Merged revisions 424578 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424579 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424580 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424581 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-04 19:15 +0000 [1b0902caa4] Corey Farrell + + * chan_motif: Correct last commit to use ao2_cleanup to free format cap + + This fix applies to 13 and trunk. + + ASTERISK-24384 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4043/ + ........ + + Merged revisions 424554 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424555 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-04 19:02 +0000 [0cea12b9e8] Corey Farrell + + * chan_motif: Release format capabilities and config on module load error + + ASTERISK-24384 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4043/ + ........ + + Merged revisions 424550 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424551 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424552 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424553 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-03 16:58 +0000 [24ded9d9eb] Richard Mudgett + + * res_pjsip: Fix XML typo and update CHANGES. + + ASTERISK-24199 + ........ + + Merged revisions 424528 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424529 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424530 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-03 14:42 +0000 [70301b0438] Richard Mudgett + + * audiohooks: Reevaluate the bridge technology when an audiohook is added or removed. + + Adding a mixmonitor to a channel causes the bridge to change technologies + from native to simple_bridge so the call can be recorded. However, when + the mixmonitor is stopped the bridge does not switch back to the native + technology. + + * Added unbridge requests to reevaluate the bridge when a channel + audiohook is removed. + + * Moved the unbridge request into ast_audiohook_attach() ensure that the + bridge reevaluates whenever an audiohook is attached. This simplified the + mixmonitor and chan_spy start code as well. + + * Added defensive code to stop_mixmonitor_full() in case additional + arguments are ever added to the StopMixMonitor application. + + * Made ast_framehook_detach() not do an unbridge request if the framehook + does not exist. + + * Made ast_framehook_list_fixup() do an unbridge request if there are any + framehooks. Also simplified the loop. + + ASTERISK-24195 #close + Reported by: Jonathan Rose + + Review: https://reviewboard.asterisk.org/r/4046/ + ........ + + Merged revisions 424506 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424507 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424508 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-03 13:54 +0000 [cc11a78869] Kristian Hogh + + * app_queue: Add dialplan function to get the channel name at the specified position in a queue. + + The QUEUE_GET_CHANNEL function returns the caller's channel name at the + specified position in a queue. + + QUEUE_GET_CHANNEL([,]) + + The queue position parameter defaults to 1 if not specified. + + Noop(${QUEUE_GET_CHANNEL(queuename, 2)}) + "SIP/peer-00000002", if queue exist and have at least 2 callers + + Noop(${QUEUE_GET_CHANNEL(queuename, 1)}) + Noop(${QUEUE_GET_CHANNEL(queuename)}) + "SIP/peer-00000000", if queue exist and have at least 1 caller + + ASTERISK-24365 #close + Reported by: Kristian Hogh + Patches: + queue_get_firstchannel.patch (license #6639) patch uploaded by Kristian Hogh + rb4035.patch (license #6639) patch uploaded by Kristian Hogh + Patch morphed from QUEUE_GET_FIRSTCHANEL to the more general QUEUE_GET_CHANNEL + on reviewbord. + + Review: https://reviewboard.asterisk.org/r/4035/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424493 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-03 12:47 +0000 [0165c5f95a] Richard Mudgett + + * chan_pjsip: Fix deadlock when masquerading PJSIP channels. + + Performing a directed call pickup resulted in a deadlock when PJSIP + channels were involved. + + A masquerade needs to hold onto the channel locks while it swaps channel + information between the two channels involved in the masquerade. With + PJSIP channels, the fixup routine needed to push a fixup task onto the + PJSIP channel's serializer. Unfortunately, if the serializer was also + processing a task that needed to lock the channel, you get deadlock. + + * Added a new control frame that is used to notify the channels that a + masquerade is about to start and when it has completed. + + * Added the ability to query taskprocessors if the current thread is the + taskprocessor thread. + + * Added the ability to suspend/unsuspend the PJSIP serializer thread so a + masquerade could fixup the PJSIP channel without using the serializer. + + ASTERISK-24356 #close + Reported by: rmudgett + + Review: https://reviewboard.asterisk.org/r/4034/ + ........ + + Merged revisions 424471 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424472 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424473 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-03 10:55 +0000 [4967478d18] George Joseph + + * sorcery: Prevent SEGV in sorcery_wizard_create when there's no create function + + When you call ast_sorcery_create() you don't necessarily know which wizard is + going to be invoked. If it happens to be a wizard like 'config' that doesn't + have a 'create' virtual function you get a segfault in the + sorcery_wizard_create callback. This patch catches the null function pointer, + does an ast_assert, and logs an error. + + Review: https://reviewboard.asterisk.org/r/4044/ + ........ + + Merged revisions 424447 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424448 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424449 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-03 08:59 +0000 [b1f8eba178] Kinsey Moore + + * PJSIP: Restore functional default for callerid_privacy + + The pjsip config option default fixups from r424263 altered the + functional default from "allowed_not_screened" to "allowed". This + change restores the functional default value when none is provided. + ........ + + Merged revisions 424426 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424427 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424428 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-03 08:33 +0000 [4246652603] Kinsey Moore + + * Manager: Add missing fields and documentation for CoreShowChannels + + This corrects some issues introduced in the responses to the + CoreShowChannels AMI command as well as adding documentation for the + responses. The command in Asterisk 12 was missing the following fields: + Duration, Application, ApplicationData, and BridgedChannel and + BridgedUniqueID (replaced with BridgeId). + + ASTERISK-24262 #close + Reported by: Mitch Claborn + Review: https://reviewboard.asterisk.org/r/4040/ + ........ + + Merged revisions 424423 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424424 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424425 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-02 16:55 +0000 [2b0777c017] Richard Mudgett + + * res_pjsip: Make transport cipher option accept a comma separated list of cipher names. + + Improvements to the res_pjsip transport cipher option. + + * Made the cipher option accept a comma separated list of OpenSSL cipher + names. Users of realtime will be glad if they have more than one name to + list. + + * Added the CLI command 'pjsip list ciphers' so a user can know what + OpenSSL names are available for the cipher option. + + * Updated the cipher option online XML documentation to specify what is + expected for the value. + + * Updated pjsip.conf.sample to not indicate that ALL is acceptable since + ALL does not imply a preference order for the ciphers and PJSIP does not + simply pass the string to OpenSSL for interpretation. + + ASTERISK-24199 #close + Reported by: Joshua Colp + + Review: https://reviewboard.asterisk.org/r/4018/ + ........ + + Merged revisions 424393 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424394 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424395 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-02 15:23 +0000 [b15cd42b5b] Jonathan Rose + + * Alembic: Add enumerator value to sippeers -> directmedia - 'outgoing' + + The 'outgoing' value was left off of the enumerator when first creating the + column. This patch adds it, and should gracefully upgrade keeping the existing + data in tact. + + ASTERISK-23781 #close + Reported by: Stephen More + Review: https://reviewboard.asterisk.org/r/4013/ + ........ + + Merged revisions 424372 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424373 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-02 10:33 +0000 [2f570094b7] Jonathan Rose + + * chan_pjsip: Fix an assertion for channels that lack formats on creation + + ASTERISK-24222 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4017/ + ........ + + Merged revisions 424333 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424358 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-02 08:36 +0000 [aa5458d6ab] Scott Griepentrog + + * res_pjsip: document use of rewrite_contact in sample conf + + Without setting rewrite_contact, an invite to an endpoint + behind NAT will not reach it - unless the endpoint itself + uses STUN or TURN to discover it's public URI. Thus, the + use of this should be in the sample documentation. + + Review: https://reviewboard.asterisk.org/r/4036/ + ........ + + Merged revisions 424337 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424338 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424339 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-01 15:37 +0000 [a752ca00bd] Corey Farrell + + * res_hep: Release allocation reference to configuration. + + ASTERISK-24362 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4026/ + ........ + + Merged revisions 424312 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424313 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424314 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-01 11:39 +0000 [adba2a8d7f] Joshua Colp + + * res_pjsip: Add 'dtls_fingerprint' option to configure DTLS fingerprint hash. + + During the latest update to DTLS-SRTP support the ability to configure + the hash used for fingerprints was added. This gave us two supported ones: + SHA-1 and SHA-256. The default was accordingly updated to SHA-256. + Unfortunately this configuration ability was not exposed within res_pjsip. + This change adds a dtls_fingerprint option that controls it. + + #SIPit31 + ........ + + Merged revisions 424290 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424291 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424292 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-01 11:20 +0000 [9233b1cf44] Joshua Colp + + * res_pjsip_sdp_rtp: Accept DTLS attributes in top level, not just media session. + + #SIPit31 + ........ + + Merged revisions 424287 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424288 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424289 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-01 07:28 +0000 [4d2c7c23f8] Kinsey Moore + + * PJSIP: Handle defaults properly + + This updates the code behind PJSIP configuration options with custom + handlers to deal with the assigned default values properly where it + makes sense and adjusting the default value where it doesn't. Before + applying this patch, there were several cases where the default value + for an option would prevent that config section from loading properly. + + Reported by: Thomas Thompson + Review: https://reviewboard.asterisk.org/r/4019/ + ........ + + Merged revisions 424263 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424266 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424267 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-01 07:15 +0000 [122cc050d0] Kinsey Moore + + * PJSIP: Force transport on contact rewrite + + If contact rewriting is enabled but the contact differs in transport + from what is actually being used, messages after the initial INVITE + transaction can be sent to an incorrect transport/port combination. In + the case where this bug occurred the remote party never received a BYE + since it was sent to the remote party's TCP port over UDP. + + Review: https://reviewboard.asterisk.org/r/4032/ + ........ + + Merged revisions 424244 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424245 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424246 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-01 05:10 +0000 [c3a7524457] ibercom (License #6599) + + * chan_sip: Simplify some unref code by removing unlink_peer_from_tables. + + ASTERISK-22945 #related + Reported by: ibercom + Patches: + asterisk11-chan_sip-simplifies.patch uploaded by ibercom (License #6599) + ........ + + Merged revisions 424181 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 424182 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424183 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424184 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424185 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-10-01 04:55 +0000 [841d978a30] ibercom (License #6599) + + * chan_sip: Remove excess ref of realtime peer before sip_poke_peer. + + The peer is referenced at the end of sip_poke_peer, it should not get + an extra ref before the call to sip_poke_peer. This fixes a memory + leak. + + ASTERISK-22945 #close + Reported by: ibercom + Tested by: Yuriy Gorlichenko + Patches: + asterisk11.patch uploaded by ibercom (License #6599) + + Review: https://reviewboard.asterisk.org/r/4031/ + ........ + + Merged revisions 424176 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 424177 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424178 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424179 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424180 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-30 06:42 +0000 [d7c29885ad] Joshua Colp + + * res_pjsip_sdp_rtp: Don't place an extra whitespace before 'rport' and don't put IPv6 addresses in brackets. + + #SIPit31 + ........ + + Merged revisions 424155 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424156 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424157 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-30 06:36 +0000 [3641ebcf96] Joshua Colp + + * res_rtp_asterisk: Ensure that the base and mapped address for candidates is present in SDP. + + This change fixes an issue where ICE candidates put into the SDP did not contain + the 'raddr' and 'rport' information for server reflexive and relay candidates. + + #SIPit31 + ........ + + Merged revisions 424151 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424152 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424153 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424154 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-29 17:00 +0000 [27396a6b59] George Joseph + + * pjsip_cli: Suppress header print on error or no objects + + If there's an error on the pjsip command line or there are no objects, don't + print the column headers. + + ASTERISK-24350 #close + Reported-by: Brad Latus + Tested-by: George Joseph + Tested-by: Brad Latus + + Review: https://reviewboard.asterisk.org/r/4025/ + ........ + + Merged revisions 424128 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424129 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424130 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-29 16:32 +0000 [b56dfb78c5] Walter Doekes + + * autosupport: Fix bashism. + + '==' is bashism (bashspecific, fails when dash is /bin/sh). Anyway, a + 'case' works better there. + + Originally committed in r375059 and r375060 on 2012-10-16 21:13:08. + + ASTERISK-20567 #close + Reported by: Tzafrir Cohen + ........ + + Merged revisions 424117 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 424125 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424126 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424127 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-29 16:18 +0000 [270932635d] Richard Mudgett + + * Simplify UUID generation in several places. + + Replace code using ast_uuid_generate() with simpler and faster code using + ast_uuid_generate_str(). The new code avoids a malloc(), free(), and + copy. + ........ + + Merged revisions 424103 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424105 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424109 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-29 15:28 +0000 [9d2bc0675a] Richard Mudgett + + * threadpool.c: Minor cleanup fixes. + + * Fix threadpool_alloc() prototype. + + * Add missing off-nominal NULL check of pool in threadpool_alloc(). + + * searializer_create() does not need to create the object with a lock as + the lock is not used. + ........ + + Merged revisions 424096 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424097 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424098 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-27 12:29 +0000 [2eef53c465] Joshua Colp + + * res_pjsip_session: Reduce SDP size by removing duplicate connection lines. + + Due to the architecture of how media streams are handled each individual + handler adds connection details (IP address) for it. The first media stream + is then used as the top level SDP connection line. In practice each + line ends up being the same so to reduce the SDP size stream-level connection + information is also added to the SDP if it differs from the top level SDP + connection line. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424077 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-27 07:44 +0000 [76744543b4] Joshua Colp + + * res_pjsip_session: Add additional checks for delaying session refreshes. + + There are certain situations which no checks existed for which need to prevent + session refreshes. This includes sending a session refresh with SDP before SDP + negotiation has completed and sending a session refresh before the dialog itself + has been established. Checks for these have been added. + + Additionally COLP related UPDATEs were including SDP when it is not needed. + + Review: https://reviewboard.asterisk.org/r/4008/ + ........ + + Merged revisions 424056 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 424057 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424058 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-26 10:51 +0000 [3c1804eb0d] Richard Mudgett + + * format_mp3: Made the get script conditionally apply patch if not already there. + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424039 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-26 10:43 +0000 [e0abb82ab8] Walter Doekes + + * core: Ouch, forgot to undo a test free() in r423978. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424038 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-26 10:28 +0000 [d07b9af24b] Jeremy Laine + + * res_fax: Fix out of bounds error in update_modem_bits(). + + ASTERISK-24357 #close + Reported by: Jeremy Laine + Patches: + res_fax_bounds.patch (license #6561) patch uploaded by Jeremy Laine + Modified patch to not use magic numbers. + ........ + + Merged revisions 423979 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423983 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423987 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423992 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424016 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-26 09:41 +0000 [37179a2b1f] Walter Doekes + + * core: Don't allow free to mean ast_free (and malloc, etc..). + + This gets rid of most old libc free/malloc/realloc and replaces them + with ast_free and friends. When compiling with MALLOC_DEBUG you'll + notice it when you're mistakenly using one of the libc variants. For + the legacy cases you can define WRAP_LIBC_MALLOC before including + asterisk.h. + + Even better would be if the errors were also enabled when compiling + without MALLOC_DEBUG, but that's a slightly more invasive header + file change. + + Those compiling addons/format_mp3 will need to rerun + ./contrib/scripts/get_mp3_source.sh. + + ASTERISK-24348 #related + Review: https://reviewboard.asterisk.org/r/4015/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423978 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-26 03:26 +0000 [b8c1130ed1] Jeremy Lainé (License #6561) + + * docs: Escape unescaped minus sign in asterisk.8 manpage. + + ASTERISK-23768 #close + Reported by: Jeremy Lainé + Patches: + escape_manpage_hyphen.patch uploaded by Jeremy Lainé (License #6561) + ........ + + Merged revisions 423915 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423916 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423917 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423918 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423919 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-25 16:03 +0000 [fa0c33ebc1] Richard Mudgett + + * res_pjsip.c: Add missing off nominal cleanup in ast_sip_push_task_synchronous(). + + * Made memset the std struct in ast_sip_push_task_synchronous() because if + DEBUG_THREADS is enabled then uninitialized lock tracking data is used. + ........ + + Merged revisions 423894 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423895 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423896 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-25 15:49 +0000 [d172d84fe1] Kristian Høgh (License #6639) + + * musiconhold: Add preferchannelclass=no option to prefer app class. + + The new option 'preferchannelclass' is added to musiconhold.conf. If yes + (the default) the CHANNEL(musicclass) is preferred when choosing the + hold music. If it is no, the class suggested by the application that + calls the MoH (e.g. the Queue() app) gets preferred (new behaviour). + + This way you set a different hold-music from the Queue-music by setting + both the CHANNEL(musicclass) and the queue-context musicclass. + + ASTERISK-24276 #close + Reported by: Kristian Høgh + Patches: + app_override_channel_moh.patch uploaded by Kristian Høgh (License #6639) + + Review: https://reviewboard.asterisk.org/r/4010/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423893 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-24 13:35 +0000 [68077634fe] Richard Mudgett + + * pjsip_options.c: Fix race condition stopping periodic out of dialog OPTIONS request. + + The crash on the issues is a result of an invalid transport configuration + change when asterisk is restarted. The attempt to send the qualify + request fails and we cleaned up. However, the callback is also called + which results in a double unref of the objects involved. + + * Put a wrapper around pjsip_endpt_send_request() to detect when the + passed in callback is called because of an error so callers can know to + not cleanup. + + * Made send_request_cb() able to handle repeated challenges (Up to 10). + + * Fix periodic endpoint qualify OPTIONS sched deletion race by avoiding + it. The sched entry will no longer self stop and must be externally + stopped. + + * Added REF_DEBUG description tags to struct sched_data in + pjsip_options.c. + + * Fix some off-nominal ref leaks in schedule_qualify(), + qualify_and_schedule(). + + * Reordered pjsip_options.c module start/stop code to cleanup better on + error. + + ASTERISK-24295 #close + Reported by: Rogger Padilla + + Review: https://reviewboard.asterisk.org/r/3954/ + ........ + + Merged revisions 423866 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423867 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-24 03:55 +0000 [39fada4dc9] Walter Doekes + + * chan_sip: Unref outbound proxy structure on dialog/pvt destruction. + + Make sure outbound proxy refs are always unreffed on dialog destruction. + + Review: https://reviewboard.asterisk.org/r/4016/ + ........ + + Merged revisions 423800 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423801 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423802 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423803 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-23 09:36 +0000 [a89964a510] Mark Michelson + + * Make CDR and CEL unit tests less FRACKy. + + Prior to this commit, CDR and CEL tests were expected to trigger + FRACKs (i.e. assertions) due to the fact that the channels they + create have no formats on them. Some code was independently added + recently that attempts to prevent FRACKs from occurring by failing + early when attempting to set up translation paths if one or both + channels support no formats. Unfortunately, this attempt to be helpful + made the CDR and CEL tests go from simply FRACKing to outright + failing and in some cases, failing so badly as to crash Asterisk. + + This commit seeks to correct past mistakes by adding the ulaw format + to channels created by the CDR and CEL unit tests. This makes setting + up translation paths succeed, eliminates previously-seen FRACKs, and + ultimately causes the unit tests to succeed again. + + Review: https://reviewboard.asterisk.org/r/4014 + ........ + + Merged revisions 423783 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423784 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-22 14:49 +0000 [593455621b] Torrey Searle (License #5334) + + * chan_sip: On INVITE retransmission, don't add an extra 503 response. + + INVITE arrives to asterisk, asterisk responds Busy(). If the INVITE is + retransmitted, asterisk would generate a 503 in addition to the 486. + + Thanks Torrey Searle for providing a working regression test. + + ASTERISK-24335 #close + + Review: https://reviewboard.asterisk.org/r/4003/ + Patches: + retrans_486_invite.patch uploaded by Torrey Searle (License #5334) + ........ + + Merged revisions 423720 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423721 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423722 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423723 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423724 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-22 12:42 +0000 [63a4da4a0d] Walter Doekes + + * cli.c: Fix tab completion "module load" when MALLOC_DEBUG is enabled. + + r421600 conflicted with r155763. + + ASTERISK-24348 #close + ........ + + Merged revisions 423657 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423658 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423659 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423660 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423661 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-20 20:16 +0000 [64a9e5f001] Matt Jordan + + * main/channel: Unlock channel in off-nominal path + + In r423414 (13) / r423415 (trunk), an API call that determines if a format + capability structure is empty was added. This returns true if the format + capability structure is completely empty or "none". A check for this was added + in channel.c's set_format call. Unfortunately, when this check was true, it + returned from the function while still holding the channel lock. This caused + the CDR unit tests - which have a tendency to create channels with no formats - + to deadlock. Whoops. + + This patch unlocks the channel on the off-nominal path. + ........ + + Merged revisions 423641 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423642 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-20 18:55 +0000 [9bf039346a] Matt Jordan + + * rest-api/api-docs/events.json: Remove non-compliant 'extends' attribute + + Prior to the release of Swagger 1.2, the attribute 'extends' was being + promoted as a possible way to show that a particular object extends an existing + object. Instead, the Swagger specification went with the 'subTypes' attribute + in the base object. This patch removes the unsupported attribute; the object + that the offending objects proposed to extend already lists them in its + 'subTypes' attribute. + + ASTERISK-24300 #close + Reported by: Bradley Watkins + ........ + + Merged revisions 423620 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423621 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423622 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-20 18:41 +0000 [de6e467db7] Matt Jordan + + * rest-api/api-docs: Correct basePath in resources to match top resources file + + The resources.json file that defines the resource JSON files used with ARI + references a basePath of 'http://localhost:8088/ari'. This does not match what + is defined in the resource files themselves, 'http://localhost:8088/stasis'. + The correct base path is the one that includes 'ari' in the URL; this patch + updates the various resource JSON files to have the correct basePath. + + ASTERISK-24339 #close + Reported by: Bradley Watkins + ........ + + Merged revisions 423617 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423618 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423619 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-19 14:51 +0000 [354fff327d] Joshua Colp + + * res_pjsip_notify: Fix crash on unload/load and don't say the module doesn't exist on reload. + + When unloading the module did not unregister the CLI commands causing a crash upon + load when they were registered again. + + When reloading the module the return value from the config options framework was not + checked to determine if an error occurred or not. This caused a message to be output + saying the module did not exist when reloading if no changes were present. + + AST-1433 #close + AST-1434 #close + ........ + + Merged revisions 423579 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423580 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423581 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-19 12:16 +0000 [ec0313c411] Richard Mudgett + + * res_pjsip_sdp_rtp.c: Fix native formats containing formats that were not negotiated. + + Outgoing PJSIP calls can result in non-negotiated formats listed in the + channel's native formats if video formats are listed in the endpoint's + configuration. The resulting call could then use a non-negotiated format + resulting in one way audio. + + * Simplified the update of session->req_caps in set_caps(). Why do + something in five steps when only one is needed? + + AFS-162 #close + + Review: https://reviewboard.asterisk.org/r/4000/ + ........ + + Merged revisions 423561 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423563 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-19 10:54 +0000 [6dae345674] Jonathan Rose + + * Stasis_channels: Resolve unfinished Dials when doing masquerades + + Masquerades into channels that are in the dialing state don't end their dial + and this goes against the model for things like CDRs and generating Dial end + manager actions and such. + + ASTERISK-24237 #close + Reported by: Richard Mudgett + Review: https://reviewboard.asterisk.org/r/3990/ + ........ + + Merged revisions 423525 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423530 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423546 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-19 10:11 +0000 [7e602175ff] Jonathan Rose + + * chan_iax2: Fix a crash when using chan_iax2 jitterbuffer settings + + Caused by format changes in Asterisk 13 + + ASTERISK-24265 #close + Reported by: Dafi Ni + Review: https://reviewboard.asterisk.org/r/3999/ + ........ + + Merged revisions 423524 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423526 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-19 07:50 +0000 [7f2623a26f] Kinsey Moore + + * PJSIP: Prevent T38 framehook being put on wrong channel + + This change gives framehooks a reverse-direction masquerade callback in + addition to chan_fixup_cb similar to the callback added to datastores + to handle the same situation. The new callback provides the same + parameters as the fixup callback, but is called on the new channel's + framehooks before moving framehooks from the old channel to the new + channel. This gives the framehooks an oppurtunity to decide whether + they should remain on the new channel or be removed. + + This new callback is used to prevent the PJSIP T.38 framehook from + remaining on a masqueraded channel if the new channel is not also a + PJSIP channel. This was causing a crash when a local channel was + masqueraded into a PJSIP channel and the framehook was executed on the + local channel since the channel's tech private data was not structured + as expected. + + Review: https://reviewboard.asterisk.org/r/4001/ + ........ + + Merged revisions 423503 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423504 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 14:31 +0000 [40e033a6b6] Sean Bright + + * res_pjsip: Don't require a password when doing userpass authentication. + + An empty password is valid for username/password authentication so we should + allow password to be empty/not supplied. + + Review: https://reviewboard.asterisk.org/r/3988 + ........ + + Merged revisions 423481 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423482 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423483 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 14:23 +0000 [ad8ef9175a] George Joseph + + * utils: Create ast_strsep function that ignores separators inside quotes + + This function acts like strsep with three exceptions... + * The separator is a single character instead of a string. + * Separators inside quotes are treated literally instead of like separators. + * You can elect to have leading and trailing whitespace and quotes + stripped from the result and have '\' sequences unescaped. + + Like strsep, ast_strsep maintains no internal state and you can call it + recursively using different separators on the same storage. + + Also like strsep, for consistent results, consecutive separators are not + collapsed so you may get an empty string as a valid result. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3989/ + ........ + + Merged revisions 423476 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423478 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423480 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 13:56 +0000 [de72f3edbc] Mark Michelson + + * Add subscription state test events. + + These are needed for a set of batched notification RLS tests that are + about to be committed to the testsuite. + + Review: https://reviewboard.asterisk.org/r/3967 + ........ + + Merged revisions 423462 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423463 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 12:22 +0000 [ac46240b62] Jonathan Rose + + * res_pjsip_endpoint_identifier_ip: Fix parsing of match value with CIDR + + Also fixes comma separates match lists + + ASTERISK-24290 #close + Reported by: Ray Crumrine + Review: https://reviewboard.asterisk.org/r/3995/ + ........ + + Merged revisions 423417 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423425 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423442 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 12:10 +0000 [02cf1835e3] Richard Mudgett + + * bridge_softmix.c: Made use ao2_replace() instead of the inline equivalent. + + * Clarified some read/write format comments. + + * Fixed a doxygen tag typo. + ........ + + Merged revisions 423423 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 11:56 +0000 [a7add3a257] Richard Mudgett + + * astobj2.c/refcounter.py: Fix to deal with invalid object refs. + + * Make astob2 REF_DEBUG output an invalid object line when an invalid ao2 + object ref/unref is attempted. This is similar to the + constructor/destructor lines. + + * Fixed refcounter.py to handle skewed objects that have + constructor/destructor states. + + * Made refcounter.py highlight the invalid ao2 object refs by putting them + in their own section of the processed output file. + + * Made refcounter.py highlight unreffing an object by more than one that + results in a negative ref count and the object being destroyed. The + abnormally destroyed object is reported in the invalid and finalized + object sections of the output. + + Review: https://reviewboard.asterisk.org/r/3971/ + ........ + + Merged revisions 423349 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423400 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423416 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423418 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423422 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 11:38 +0000 [fa6313ad29] Mark Michelson + + * Add API call to determine if format capability structure is "empty". + + Empty here means that there are no formats in the format_cap structure + or the only format in it is the "none" format. + + I've added calls to check the emptiness of a format_cap in a few places + in order to short-circuit operations that would otherwise be pointless + as well as to prevent some assertions from being triggered in cases + where channels with no formats are used. + ........ + + Merged revisions 423414 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423415 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 11:24 +0000 [389db2b720] Mark Michelson (License #5049) + + * res_fax_spandsp: Properly handle cleanup before starting FAXes. + + If faxing fails at a very early stage, then it is possible for + us to pass a NULL t30 state pointer to spandsp, which spandsp + is none too pleased with. + + This patch ensures that we pass the correct pointer to spandsp + in the situation where we have not yet set our local t30 state + pointer. + + ASTERISK-24301 #close + Reported by Matt Jordan + Patches: + ASTERISK-24301-fax.diff Uploaded by Mark Michelson (License #5049) + ........ + + Merged revisions 423360 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423365 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423372 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 11:09 +0000 [79eac1ffca] Mark Michelson + + * res_pjsip_pubsub: Add some type safety when generating NOTIFY bodies. + + res_pjsip_pubsub has two separate checks that it makes when a SUBSCRIBE + arrives. + * It checks that there is a subscription handler for the Event + * It checks that there are body generators for the types in the Accept header + + The problem is, there's nothing that ensures that these two things will + actually mesh with each other. For instance, Asterisk will accept a subscription + to MWI that accepts pidf+xml bodies. That doesn't make sense. + + With this commit, we add some type information to the mix. Subscription + handlers state they generate data of type X, and body generators state + that they consume data of type X. This way, Asterisk doesn't end up in + some hilariously mismatched situation like the one in the previous paragraph. + + ASTERISK-24136 #close + Reported by Mark Michelson + + Review: https://reviewboard.asterisk.org/r/3877 + Review: https://reviewboard.asterisk.org/r/3878 + ........ + + Merged revisions 423344 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423348 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423350 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 10:14 +0000 [126334a7aa] George Joseph + + * res_pjsip: ami: Fix error in AMI output when an endpoint has no transport + + When no transport is associated to an endpoint, the AMI output for + PJSIPShowEndpoint indicates an error instead of silently ignoring the + missing transport. + + This patch causes the error to appear only if a transport was specified + on the endpoint and the transport doesn't exist. It also fixes an issue + with counting the objects that were actually found. + + ASTERISK-24161 #close + ASTERISK-24331 #close + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3998/ + ........ + + Merged revisions 423282 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423284 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423285 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 10:07 +0000 [b89491e39c] David M. Lee + + * Only install dahdi_span_config_hook if DAHDI is enabled + + This patch changes the install to only install the hook script if + DAHDI is enabled. It also adds the script to the uninstall task, and + moves the DAHDI_UDEV_HOOK_DIR variable so that it's not between the + _MAKEOPTS variables and their comment. + + This allows installs which specify a --prefix to work normally, as + long as they don't enable DAHDI. + + Review: https://reviewboard.asterisk.org/r/3972/ + ........ + + Merged revisions 423281 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423283 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-18 09:46 +0000 [d120e40309] George Joseph + + * config: bug: Fix SEGV in ast_category_insert when matching category isn't found + + If you call ast_category_insert with a match category that doesn't exist, the + list traverse runs out of 'next' categories and you get a SEGV. This patch + adds check for the end-of-list condition and changes the signature to return + an int for success/failure indication instead of a void. + + The only consumer of this function is manager and it was also changed to use + the return value. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3993/ + ........ + + Merged revisions 423276 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423277 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423278 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423279 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423280 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-17 13:06 +0000 [8839ba3727] Joshua Colp + + * res_rtp_asterisk: Ensure that the thread terminating pj stuff is registered. + ........ + + Merged revisions 423253 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423254 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423255 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423256 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-16 17:46 +0000 [fcc09fd0de] Matt Jordan + + * pbx/Makefile: Revert r423237 + + This patch was supposed to go into a team branch, but I was a bit fast on the + gun before 'svn switch' had apparently moved the target branch over. + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423238 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-16 17:42 +0000 [712b4195ef] Matt Jordan + + * Add some pbx python stuff + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423237 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-16 16:06 +0000 [618b46d8f0] Joshua Colp + + * Multiple revisions 423209,423212 + + ........ + r423209 | file | 2014-09-16 17:35:34 -0300 (Tue, 16 Sep 2014) | 8 lines + + res_rtp_asterisk: Fix building when pjproject is not used. + ........ + + Merged revisions 423207 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423208 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + r423212 | file | 2014-09-16 18:03:59 -0300 (Tue, 16 Sep 2014) | 10 lines + + res_rtp_asterisk: Fix 100% CPU usage due to timer heap thread spinning. + + Side note: I need a vacation. + ........ + + Merged revisions 423210 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423211 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423209,423212 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423213 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-16 11:33 +0000 [662b687dbe] Scott Griepentrog + + * Voicemail: get correct duration when copying file to vm + + Changes made during format improvements resulted in the + recording to voicemail option 'm' of the MixMonitor app + writing a zero length duration in the msgXXXX.txt file. + + This change introduces a new function ast_ratestream(), + which provides the sample rate of the format associated + with the stream, and updates the app_voicemail function + for ast_app_copy_recording_to_vm to calculate the right + duration. + + Review: https://reviewboard.asterisk.org/r/3996/ + ASTERISK-24328 #close + ........ + + Merged revisions 423192 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423193 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-16 07:12 +0000 [ceedf44edd] Joshua Colp + + * res_pjsip_session: Fix usage of wrong memory pool when creating local SDP. + ........ + + Merged revisions 423172 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423173 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423174 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-16 06:12 +0000 [e977425bc8] Joshua Colp + + * res_rtp_asterisk: Fix a myriad of TURN client issues. + + 1. The number of file descriptors an ioqueue instance can handle is fixed, so we + now spawn the required number to handle the load. + 2. Our transport identifiers were exceeding the range supported by pjnath. + 3. The TURN client did not set up client binding causing needless bandwidth usage. + 4. The code no longer updates address information on each packet. + 5. STUN traffic was getting looped back to Asterisk instead of going through the + TURN server. + 6. Synchronization now ensures things are completely setup or destroyed. + 7. Logging now reflects the target the TURN server is sending to/receiving from + on our behalf. + + ASTERISK-23577 #close + Reported by: Jay Jideliov + + ASTERISK-23634 #close + Reported by: Roman Skvirsky + + Review: https://reviewboard.asterisk.org/r/3982/ + ........ + + Merged revisions 423150 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423151 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423152 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423153 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-15 05:50 +0000 [77834b72d3] Zogot, cleaned up by me. + + * contrib: Fix verifyi typo in alembic DB script ps_transport table. + + Reported by: Zogot (on IRC) + Patches: + tmp.diff uploaded by Zogot, cleaned up by me. + ........ + + Merged revisions 423128 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423129 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423130 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-14 10:54 +0000 [a62fedf0cb] Walter Doekes + + * chan_sip: Clarify that sipdebug=yes cannot be undone by the CLI. + + Document it in sip.conf. + + ASTERISK-24249 #close + Reported by: Avinash Mohod + + Review: https://reviewboard.asterisk.org/r/3926/ + ........ + + Merged revisions 423066 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 423067 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 423068 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 423069 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423070 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-14 10:41 +0000 [9c1f34c7e9] Walter Doekes + + * musiconhold: Add sort=randstart, and deprecate old stuff. + + - adds sort=randstart (next to sort=, sort=random, sort=alpha) + - combines duplicate moh option parsing code into a single function + - adds deprecationwarnings for application=r to sort randomly + - adds deprecationwarnings for random=yes to sort randomly + - removes invisible code that was supposed to stay until 1.8 + + The sort=randstart works like sort=alpha, except we start at a random + position. + + Review: https://reviewboard.asterisk.org/r/3991/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423065 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-12 12:42 +0000 [02295456ef] Joshua Colp + + * chan_rtp: Add unicast RTP support. + + This module supports sending both unicast and multicast RTP + to a specified target. Multicast functionality is the same as + chan_multicast_rtp was. In the case of unicast a specific + IP address and port can be specified, along with optional RTP + engine and format in the form of: + + UnicastRTP/:// + + This can be useful for sending a copy of a media stream to + another application for processing. + + Review: https://reviewboard.asterisk.org/r/3981/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423004 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-12 11:19 +0000 [dd6bdede7d] Jonathan Rose + + * Realtime: Fix a bug that caused realtime destroy command to crash + + Also has could affect with anything that goes through ast_destroy_realtime. + If a CLI user used the command 'realtime destroy ' with only a single + column/value pair, Asterisk would crash when trying to create a variable list + from a NULL value. + + ASTERISK-24231 #close + Reported by: Niklas Larsson + Review: https://reviewboard.asterisk.org/r/3985/ + ........ + + Merged revisions 422984 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422985 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422991 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-11 17:17 +0000 [c212a71f0b] Mark Michelson + + * Remove undocumented default behavior of ast_play_and_record_full acceptdtmf. + + ast_play_and_record_full() has a parameter called "acceptdtmf" that is a + string of acceptable DTMF digits that may be pressed by a caller to end + and accept the recording. + + ARI uses this function in order to perform recording, and it provides + options for what is passed as acceptdtmf to ast_play_and_record_full(). + By default, ARI passes an empty string, with the intention that no DTMF + can be used to end the recording. + + The problem is that ast_play_and_record_full() attempts to be "helpful" + by setting "#" as the acceptdtmf if an empty string or NULL pointer + has been passed in. With ARI, this results in unexpected behavior + occurring if you have attempted to intercept "#" yourself in order + to perform some other manipulation of the live recording. + + This change removes the "helpful" behavior by no longer accepting + "#" as a default acceptdtmf if none is specified by the caller of + ast_play_and_record_full(). This makes the ARI scenario work as + expected. + + The other callers of ast_play_and_record_full() are app_voicemail + and app_minivm, and in both cases, they pass an explicit "#" to + ast_play_and_record_full() as acceptdtmf, so they are unaffected + by this change. + ........ + + Merged revisions 422964 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422965 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422967 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-10 11:07 +0000 [93894d53c4] George Joseph + + * config: bug: fix truncation of included config files on permissions error + + ast_config_text_file_save() currently truncates include files as they + are processed. If a subsequent include file or the main config file has + a permissions error that prevents writing, earlier include files are left + truncated resulting in a frantic search for backups. + + This patch causes ast_config_text_file_save to check for write access + on all files before it truncates any of them. + + Will be applied 1.8 > trunk. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3986/ + ........ + + Merged revisions 422900 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422903 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422904 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422905 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422906 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-10 11:00 +0000 [7bd3287a11] Sean Bright + + * pjsip/config_auth.c: Add missing whitespace to log messages. + + The errors generated when validating 'auth' settings are missing a space which + makes the messages a little confusing. + ........ + + Merged revisions 422899 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422901 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422902 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-09 15:15 +0000 [a47873168a] Richard Mudgett + + * Update CHANGES for CHANNEL(onhold). + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422885 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-09 15:11 +0000 [51f082af34] Rusty Newton + + * Sounds/BuildSystem: Modifications to include new releases and Japanese language. + + Modifying Makefile and sounds.xml to include new core 1.4.26 and extra 1.4.15 + sound prompt releases, plus the new Japanese core sound prompts contributed + by QLOOG. + + ASTERISK-23324 + Reported by: Kevin McCoy + Tested by: Rusty Newton + ........ + + Merged revisions 422789 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422790 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422791 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422883 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422884 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-09 11:14 +0000 [9183416fe2] Richard Mudgett + + * func_channel: Add CHANNEL(onhold) item to get the current hold status of the channel. + + It would be useful to get the current hold status of a channel. + + Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for + the hold status of a channel. + + ASTERISK-24038 + Reported by: Matt Jordan + + AFS-113 #close + Reported by: Mark Michelson + + Review: https://reviewboard.asterisk.org/r/3983/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422870 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-08 13:04 +0000 [baf99dffac] Mark Michelson + + * Add note about configuring list_items on a single line. + ........ + + Merged revisions 422855 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422856 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-08 12:53 +0000 [5ad0edacb6] Mark Michelson + + * Add sample configuration for resource lists. + + On review /r/3977, it was recommended to note in the + sample configuration about the size limitation for + resource lists. However, since there was no section in + the sample configuration at all for resource list + subscriptions, I decided to make a separate commit + where I have added the necessary sample configuration + as well as the size limitation warning. + ........ + + Merged revisions 422853 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422854 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-08 12:35 +0000 [c6bc44f700] Mark Michelson + + * Pre-allocate transmission data buffer for RLS NOTIFY requests. + + PJSIP, unless a constant is modified at compilation time, limits + SIP requests to 4000 bytes. Full-state RLS notifications can easily + exceed this limit with moderately small lists. + + This changeset allows for Asterisk to work around this size limit by + performing its own allocation of the transmission data buffer. This + way, Asterisk can allocate a buffer that exceeds the built-in maximum. + + We still impose our own limit of 64000 bytes, mainly because making + allocations larger than that is a bit absurd. + + ASTERISK-24181 #close + Reported by Mark Michelson + + Review: https://reviewboard.asterisk.org/r/3977 + ........ + + Merged revisions 422851 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422852 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-08 10:58 +0000 [ef5f7a0e32] Jonathan Rose + + * res_pjsip_pubsub: Check supported headers for eventlist when subscribing to + resource list + + https://wiki.asterisk.org/wiki/display/AST/Resource+List+Subscription+Test+Plan + According to the off-nominal plan, if evenlist support is not specified in a + SUBSCRIBE's supported header(s), that subscription should be rejected with an + error. + + ASTERISK-23871 + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/3960/diff/#index_header + ........ + + Merged revisions 422836 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422837 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-06 17:50 +0000 [71acca4de2] Matt Jordan + + * main/cdr: Copy over location information during a fork + + When a CDR is forked, a new CDR is created and appended to the CDR chain for + the Party A. The forked CDR starts life off as a clone of the last + non-finalized for the particular Party A. In the past, merely copying over + the snapshots for Party A/Party B would be sufficient. However, as the CDRs + now contain cached information from Party A - specifically application/data, + context, and extension - we need to copy that over during a fork as well. + + Huzzah for unit tests catching this when the context/extension were derived + from a cached value on the CDR instead of on Party A. + ........ + + Merged revisions 422769 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422770 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422771 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-06 17:22 +0000 [e4591f98b1] Matt Jordan + + * main/rtp_engine: Format NTP timestamps as unsigned ints + + On some systems, a timeval's tv_sec/tv_usec will be unsigned lont ints, as + opposed to long ints. When the RTP engine formats these as strings, it was + previously formatting them as signed integers, which can result in some + odd negative timestamp values (particularly on 32-bit systems). This patch + formats the values as unsigned long integers. + ........ + + Merged revisions 422766 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422767 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422768 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-06 14:13 +0000 [fd8010de2b] Joshua Colp + + * res_pjsip_sdp_rtp: Fix retrieval of "ice-pwd" attribute if in session and not media stream. + ........ + + Merged revisions 422746 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422747 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422748 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-05 17:04 +0000 [d42b116925] Matt Jordan + + * main/cdrs: Preserve context/extension when executing a Macro or GoSub + + The context/extension in a CDR is generally considered the destination of a + call. When looking at a 2-party call CDR, users will typically be presented + with the following: + + context exten channel dest_channel app data + default 1000 SIP/8675309 SIP/1000 Dial SIP/1000,,20 + + However, if the Dial actually takes place in a Macro, the current behaviour + in 12 will result in the following CDR: + + context exten channel dest_channel app data + macro-dial s SIP/8675309 SIP/1000 Dial SIP/1000,,20 + + The same is true of a GoSub: + + context exten channel dest_channel app data + subs dial_stuff SIP/8675309 SIP/1000 Dial SIP/1000,,20 + + This generally makes the context/exten fields less than useful. + + It isn't hard to preserve these values in the CDR state machine; however, we + need to have something that informs us when a channel is executing a + subroutine. Prior to this patch, there isn't anything that does this. + + This patch solves this problem by adding a new channel flag, + AST_FLAG_SUBROUTINE_EXEC. This flag is set on a channel when it executes a + Macro or a GoSub. The CDR engine looks for this value when updating a Party A + snapshot; if the flag is present, we don't override the context/exten on the + main CDR object. In a funny quirk, executing a hangup handler must *not* abide + by this logic, as the endbeforehexten logic assumes that the user wants to see + data that occurs in hangup logic, which includes those subroutines. Since + those execute outside of a typical Dial operation (and will typically have + their own dedicated CDR anyway), this is unlikely to cause any heartburn. + + Review: https://reviewboard.asterisk.org/r/3962/ + + ASTERISK-24254 #close + Reported by: tm1000, Tony Lewis + Tested by: Tony Lewis + ........ + + Merged revisions 422718 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422719 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422720 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-05 16:56 +0000 [4499eb05d8] Matt Jordan + + * main/cdr: Fix crash/memory consumption in CDRs in multi-party bridge scenarios + + This patch fixes an issue where CDRs would get stuck generating an infinite + number of CDRs, eventually crashing Asterisk (and consuming a lot of memory + along the way). + + When a channel enters into a multi-party bridge, the CDR engine creates + mappings of each participant to each other participant, picking the 'A' party + as it goes. So, if we have four channels in a multi-party bridge (Alice, Bob, + Charlie, Denise), we would have something like: + + Alice => Bob + Alice => Charlie + Alice => Denise + Bob => Charlie + Bob => Denise + Charlie => Denise + + This works fine when participants enter the bridge a single time. + + When a participant leaves a bridge, the CDRs for that channel are transitioned + to a finalized state. + + The bug occurs if Bob rejoins. When the CDR engine creates mappings between the + channels, it walks through all the participants currently in the bridge, and + realizes that no one in the bridge can create a CDR with the channel (Bob). + As such it creates a new CDR for the candidate and appends it to that + candidate's chain. Unfortunately, on this particular code path, it doesn't + stop traversing the candidate's chain. Since we just added ourselves to the + chain, this causes the loop to keep going, constantly adding new CDRs. + + This patch makes it so the engine bails when it creates a CDR match in this + case. + + Review: https://reviewboard.asterisk.org/r/3964/ + + ASTERISK-24241 #close + Reported by: Deepak Singh Rawat + Tested by: Deepak Singh Rawat + + ASTERISK-24208 + Reported by: Frankie Chin + ........ + + Merged revisions 422715 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422716 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422717 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-05 15:38 +0000 [025bd1bf3f] Richard Mudgett + + * func_channel.c: Add missing locking to some CHANNEL() requests. + + * The CHANNEL() audionativeformat, videonativeformat, audioreadformat, and + audiowriteformat now need locking since the media format rework when + accessing the channel's format pointers. + + * Increased the buffer size for CHANNEL() audionativeformat and + videonativeformat output strings since the allow=all can be a lengthy + list. + + * Tweaked the CHANNEL() XML documentation for secure_bridge_signaling, + secure_bridge_media, and state. + + * Ensured the output buffer is initialized for secure_bridge_signaling and + secure_bridge_media. + + * Made use the locked_copy_string() macro instead of inlining it for trace + and checkhangup. + ........ + + Merged revisions 422700 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422701 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-05 15:22 +0000 [85878c4dd8] Jonathan Rose + + * Dial API: Add a dial option to indicate the dialed channel will replace dialer + + Adds an option to the dial API that marks an outgoing dial as replacing the dialing channel for the purpose of propagating accountcode. When it is used, AST_CHANNEL_REQUESTOR_REPLACEMENT is used instead of AST_CHANNEL_REQUESTOR_BRIDGE_PEER when setting accountcodes on the involved channels with ast_channel_req_accountcodes. + + Review: https://reviewboard.asterisk.org/r/3968/ + ........ + + Merged revisions 422684 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422697 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-05 14:39 +0000 [e19017fc00] Jonathan Rose + + * Call IDs: Fix appearance of call ID in core show channels when NULL + + NULL call IDs were meant to appear as '(none)' but instead were showing + the contents of an uninitialized character buffer. + + ASTERISK-24223 + Review: https://reviewboard.asterisk.org/r/3979/ + ........ + + Merged revisions 422664 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422665 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422683 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-05 12:45 +0000 [5a1de68b9a] Richard Mudgett + + * devicestate.c: Minor tweaks + + * In ast_state_chan2dev() use ARRAY_LEN() instead of a sentinel value in + chan2dev[]. + + * Fix some comments in chan_iax2.c. + ........ + + Merged revisions 422661 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422663 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-05 08:29 +0000 [2362d88a18] Kinsey Moore + + * Menuselect: Fix incorrect enabling on failed deps + + This corrects a situation where menuselect can incorrectly enable a + module by default that has defaultenabled set to "no" and has + failed/non-selected dependencies. The bug is due to an inverted test + when checking for whether the given module should be set to enabled by + default on load. + + Review: https://reviewboard.asterisk.org/r/3975/ + Reported by: John Bigelow + ........ + + Merged revisions 422646 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422647 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-04 17:05 +0000 [af75e45da1] Jonathan Rose + + * Manager: Require read permission for SYSTEM in order to send FullyBooted + + Review: https://reviewboard.asterisk.org/r/3969/ + ........ + + Merged revisions 422584 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422625 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422626 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422631 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422632 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-03 09:05 +0000 [3cd36d0e10] Joshua Colp + + * res_pjsip_transport_websocket: Fix crash when the Contact header is not a URI. + + The code for changing the Contact header wrongly assumed that the Contact + would always contain a URI. This is incorrect. + + ASTERISK-24271 + Reported by: Dafi Ni + ........ + + Merged revisions 422557 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422558 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422559 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-02 15:29 +0000 [1b64f353f1] Mark Michelson + + * Resolve race condition where channels enter dialplan application before media has been negotiated. + + Testsuite tests will occasionally fail because on reception of a 200 OK SIP response, + an AST_CONTROL_ANSWER frame is queued prior to when media has finished being + negotiated. This is because session supplements are called into before PJSIP's + inv_session code has told us that media has been updated. Sometimes the queued answer + frame is handled by the PBX thread before the ensuing media negotiations occur, causing + a test failure. + + As it turns out, there is another place that session supplements could be called into, which is + after media has finished getting negotiated. What this commit introduces is a means for session + supplements to indicate when they wish to be called into when handling an incoming SIP response. + By default, all session supplements will be run at the same point that they were prior to this + commit. However, session supplements may indicate that they wish to be handled earlier than + normal on redirects, or they may indicate they wish to be handled after media has been negotiated. + + In this changeset, two session supplements have been updated to indicate a preference for when + they should be run: res_pjsip_diversion executes before handling redirection in order to get + information from the Diversion header, and chan_pjsip now handles responses to INVITEs after + media negotiation to fix the race condition mentioned previously. + + ASTERISK-24212 #close + Reported by Matt Jordan + + Review: https://reviewboard.asterisk.org/r/3930 + ........ + + Merged revisions 422536 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422542 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422543 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-01 10:25 +0000 [897cbf6a4f] Matt Jordan + + * main/cli: Do not attempt to show CDR data for internal channels + + Internal channels don't have CDRs. Querying the CDR engine for their variables + will make it cranky. + ........ + + Merged revisions 422506 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422507 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422524 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-09-01 09:15 +0000 [df5dbbd878] Matt Jordan + + * res_stasis: Don't play MoH to channels by default when added to holding bridges + + When ARI manipulates a bridge, it generally doesn't care what the mixing + technology is. Operations on a bridge initiated through ARI should perform + their action in generally the same way, regardless of the bridge's mixing + technology. While the mixing technology may determine how media flows to + channels, the actual operations on a bridge themselves should be the same. + + Currently, this isn't the case with holding bridges. When a channel joins + without a role, MoH is started on that channel automatically. Subsequent bridge + operations that would stop MoH would fail (as there is no Announcer channel + playing MoH to the bridge). Starting MoH on the bridge will also create two + MoH streams: one from the MoH being played on the participant channel, and one + from the announcer channel. From the perspective of ARI users, this is + counter-intuitive - I would not expect MoH to be started for me. The mixing + technology determines how media is shared between participants, not the + application experience. + + This patch does the following: + * The Stasis bridge class now inspects channels as they are going into a + bridge. If the bridge has a holding capability, and the channel has no + roles, we give it a participant role and mark the default behaviour to have + no entertainment. This allows addChannel operations to continue to set a + participant role with an entertainment option if it felt like it (or could + do it). + * The music on hold channel is now Stasis approved (tm) + + Review: https://reviewboard.asterisk.org/r/3929/ + + ASTERISK-24264 #close + Reported by: Samuel Galarneau + Tested by: Samuel Galarneau + ........ + + Merged revisions 422503 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422504 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-30 12:33 +0000 [5aefecd81e] George Joseph + + * confbridge: Add Duration to ConfbridgeList event + + The ConfbridgeList event doesn't include how long the user has been a + member of the conference. This patch adds Duration (seconds) which + is based on user->chan->answertime. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3955/ + ........ + + Merged revisions 422444 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422445 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422446 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-30 12:24 +0000 [59d4dbd3d0] George Joseph + + * manager: Make WaitEvent action respect eventfilters + + A WaitEvent issued via an http session isn't respecting eventfilters defined + for the user. I just added a match_filter to the predicate that controls + astman_append. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3958/ + ........ + + Merged revisions 422439 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422440 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422441 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422442 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422443 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-29 14:40 +0000 [664f83a03b] Jeremy Laine (License 6561) + + * doc: Add a manpage for the smsq utility + + This patch adds a manpage for the smsq utility. Note that this is one of + the patches the Debian distro applies for the Asterisk project, as per + ASTERISK-24191. + + Review: https://reviewboard.asterisk.org/r/3895/ + + ASTERISK-24171 #close + Reported by: Jeremy Laine + patches: + smsq.8 uploaded by Jeremy Laine (License 6561) + ........ + + Merged revisions 422376 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422377 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422378 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422379 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-29 14:35 +0000 [81598fa082] Jeremy Laine (License 6561) + + * doc: Add a manpage for the aelparse utility + + This patch adds a manpage for the aelparse utility. Note that this is one of + the patches the Debian distro applies for the Asterisk project, as per + ASTERISK-24191. + + Review: https://reviewboard.asterisk.org/r/3896/ + + ASTERISK-24171 #close + Reported by: Jeremy Laine + patches: + aelparse.8 uploaded by Jeremy Laine (License 6561) + ........ + + Merged revisions 422371 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422372 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422373 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422374 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422375 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-29 13:46 +0000 [2df2d785b7] Scott Griepentrog + + * The assertion that peer was not found on final event + message was being triggered on configuration reload. + This patch changes that case to just return instead. + + Review: https://reviewboard.asterisk.org/r/3953/ + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422358 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-28 16:54 +0000 [3194892ea2] Matt Jordan + + * LICENSE: Clarify language in Asterisk's LICENSE to allow for linking to UniMRCP + + The UniMRCP project distributes Asterisk modules that integrate Asterisk with + UniMRCP, and other Asterisk users use the UniMRCP library as well. + Unfortunately, the UniMRCP license is Apache 2.0, which per the Free Software + Foundation, is not a compatible license with the GPLv2. + + "Please note that this license is not compatible with GPL version 2, because it + has some requirements that are not in that GPL version. These include certain + patent termination and indemnification provisions. The patent termination + provision is a good thing, which is why we recommend the Apache 2.0 license for + substantial programs over other lax permissive licenses." + + On the other hand, UniMRCP is a great project and we'd like to let people use + it with Asterisk. + + This patch updates the LICENSE text to allow users to link Asterisk with + UniMRCP and distribute the resulting binaries. + ........ + + Merged revisions 422293 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422294 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422295 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422296 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422297 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-28 15:31 +0000 [c5916fb39f] Michael L. Young (license 5026) + + * chan_iax2: Fix Dynamic IAX2 Registrations After Temporary DNS Failure + + The reporter on the issue found some issues when upgrading from version 10 to 11 + on 55 hosts. + + Two situations that can occur with dynamic registrations. + + 1. With dnsmgr disabled, if the host is not resolvable we are not trying to + resolve the host again when it is time to attempt to register again. This + results in never registering to the host. + 2. With dnsmgr enabled, when the host is temporarily not resolvable the + address is set to 0.0.0.0:0 and then when the host is resolvable the port + is not being restored and stays set to 0. + + This patch resolves these two issues by: + + * Storing the hostname so that it can be used for resolving with DNS. + * Resolve the hostname on the next scheduled attempt to register. + * Storing the port used to reach the host so that when the hostname is + resolvable again, we can set the port again if the port is still unset after + looking up the host. + + ASTERISK-23767 #close + Reported by: David Herselman + Tested by: David Herselman, Michael L. Young + Patches: + asterisk-23767-dns_reg_retry_and_set_port_11_v3.diff + uploaded by Michael L. Young (license 5026) + + Review: https://reviewboard.asterisk.org/r/3856/ + ........ + + Merged revisions 422274 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422275 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422276 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422277 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-28 12:29 +0000 [4e750a26fd] Richard Mudgett + + * Added ConfBridge AMI event note to UPGRADE.txt. + ........ + + Merged revisions 422255 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422256 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422257 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-28 11:06 +0000 [ef28cc0d43] Paul Belanger + + * chan_sip.c: Add 'rtpbindaddr' setting + + Users now have the ability to bind the rtpengine instance to a specific IP + address. For example, you want chan_sip (call control) on eth0 but rtp (media) + on eth1. + + ASTERISK-24280 #close + Reported by: Paul Belanger + Tested by: Paul Belanger + Review: https://reviewboard.asterisk.org/r/3952/ + Patches: + rtpengine.diff uploaded by Paul Belanger + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422241 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-28 10:50 +0000 [327d67270f] Mark Michelson + + * Fix bug that did not allow for multiple batched RLS notifications to be sent. + + A misunderstanding of how the scheduler worked caused further batched notifications + beyond the first not to get scheduled. Now we reset our scheduler ID to -1 after + the batched notification is sent. This way, further notifications can be scheduled + when they arise. + ........ + + Merged revisions 422239 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422240 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-27 19:44 +0000 [94e1b4a8a4] Richard Mudgett + + * res/res_pjsip/pjsip_options.c: Eliminate excessive RAII_VAR usage. + + * Fix off nominal ref leak in find_or_create_contact_status(). + + * Add missing NULL check of status in update_contact_status() and + init_start_time(). + ........ + + Merged revisions 422214 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422215 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422216 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-27 19:16 +0000 [4728c05957] Richard Mudgett + + * sched: Fix typo and whitespace change. + ........ + + Merged revisions 422200 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-27 12:30 +0000 [7c1a22fba7] George Joseph + + * confbridge: Add 'Admin' param to join, leave, mute, unmute and talking events + + Currently there's no way to tell if a user is an admin or not when receiving + the join, leave, mute, unmute and talking events. This patch adds that + capability. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3950/ + ........ + + Merged revisions 422176 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422177 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422178 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-27 10:39 +0000 [bf85018107] Kinsey Moore + + * CallerID: Fix parsing of malformed callerid + + This allows the callerid parsing function to handle malformed input + strings and strings containing escaped and unescaped double quotes. + This also adds a unittest to cover many of the cases where the parsing + algorithm previously failed. + + Review: https://reviewboard.asterisk.org/r/3923/ + Review: https://reviewboard.asterisk.org/r/3933/ + ........ + + Merged revisions 422112 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 422113 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 422114 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422154 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422158 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-26 18:30 +0000 [d199536a04] George Joseph + + * confbridge: Make kick, mute and unmute handle channel targets consistently. + + Kick, mute and unmute were a little inconsistent in their handling of channel + targets. This patch cleans that up by insuring they all handle the 'all' + target consistently and adds the 'participants' target which acts on + non-admins. Documentation for kick was also cleaned up as it never + supported partial channel names. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3944/ + ........ + + Merged revisions 422090 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422091 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-26 17:14 +0000 [c5ab4adf17] Mark Michelson + + * Fix race condition in the scheduler when deleting a running entry. + + When scheduled tasks run, they are removed from the heap (or hashtab). + When a scheduled task is deleted, if the task can't be found in the + heap (or hashtab), an assertion is triggered. If DO_CRASH is enabled, + this assertion causes a crash. + + The problem is, sometimes it just so happens that someone attempts + to delete a scheduled task at the time that it is running, leading + to a crash. This change corrects the issue by tracking which task + is currently running. If that task is attempted to be deleted, + then we mark the task, and then wait for the task to complete. + This way, we can be sure to coordinate task deletion and memory + freeing. + + ASTERISK-24212 + Reported by Matt Jordan + + Review: https://reviewboard.asterisk.org/r/3927 + ........ + + Merged revisions 422070 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 422071 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422072 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-25 11:45 +0000 [fefa6fba82] Richard Mudgett + + * res_musiconhold.c: Release any format refs before memset(). + + * Clear the channel music_state pointer before destroying the music_state + object for safety. + ........ + + Merged revisions 422037 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422038 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-25 11:16 +0000 [2b19d94a71] Richard Mudgett + + * res_musiconhold: Fix MOH restarting where it left off from the last hold. + + Restore code removed by https://reviewboard.asterisk.org/r/3536/ that + introduced a regression that prevents MOH from restarting were it left off + the last time. + + ASTERISK-24019 #close + Reported by: Jason Richards + Patches: + jira_asterisk_24019_v1.8.patch (license #5621) patch uploaded by rmudgett + + Review: https://reviewboard.asterisk.org/r/3928/ + ........ + + Merged revisions 421976 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421977 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421978 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421979 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421980 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-24 14:37 +0000 [497a92d079] Joshua Colp + + * res_pjsip_transport_websocket: Attach the Websocket module on outgoing INVITEs. + + In order to alter the Contact header on in-dialog requests and responses the + Websocket module must be attached on outgoing INVITEs. The Contact header is + modified so that the PJSIP transport layer can find and use the existing + Websocket connection based on the source IP address, port, and transport. + + ASTERISK-24143 #close + Reported by: Aleksei Kulakov + ........ + + Merged revisions 421955 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421956 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421957 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-24 14:21 +0000 [477e2e6edb] Joshua Colp + + * res_pjsip_transport_websocket: Fix a progressive memory growth. + + The packet structure used to receive messages was using the transport + pool. This meant that for each parsing the pool would grow accordingly. + Since memory can not be reclaimed without resetting it this would + cause the memory pool to grow and grow. + + This change uses a specific memory pool for the packet structure and + resets it to a fresh state after the message has been received and + handled. + ........ + + Merged revisions 421939 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421945 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421950 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-24 13:54 +0000 [2c0cbf8e64] Joshua Colp + + * res_pjsip_transport_websocket: Ensure secure Websocket clients can be called. + + This change enforces the transport in the Contact header for Websocket clients. + Previously a client may provide a transport of 'ws' when it is actually using + a transport of 'wss'. This would cause outgoing calls to fail as the existing + connection could not be found. + ........ + + Merged revisions 421931 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421932 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421933 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-24 12:22 +0000 [cee660dadf] Badalian Vyacheslav (license 5249) + + * chan_sip: Use the server reflexive ICE candidate RTCP port as provided. + + This code originally worked around an issue within res_rtp_asterisk itself. + The wrong socket was being used for the STUN check for RTCP, causing the + port to be the same as RTP. This was subsequently fixed and the RTCP port + provided for the ICE candidate is correct and does not need to be incremented. + + ASTERISK-23997 #close + Reported by: Badalian Vyacheslav + Patches: + plus1.diff submitted by Badalian Vyacheslav (license 5249) + ........ + + Merged revisions 421909 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421910 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421911 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421912 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-22 11:56 +0000 [dcfffce66d] Mark Michelson + + * Fix a locking inversion in MixMonitor. + + We need to unlock the audiohook before trying to lock + the channel, since the correct locking order is channel + then audiohook. + ........ + + Merged revisions 421882 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421883 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-22 11:52 +0000 [33835e17a0] Jonathan Rose + + * ARI: Fix a crash caused by hanging during playback to a channel in a bridge + + ASTERISK-24147 #close + Reported by: Edvin Vidmar + Review: https://reviewboard.asterisk.org/r/3908/ + ........ + + Merged revisions 421879 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421880 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421881 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-22 09:09 +0000 [1498ae0830] Matt Jordan + + * main/message: Add a new-line to a DEBUG message + ........ + + Merged revisions 421859 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421860 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421861 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 17:09 +0000 [f8c4fc1121] Richard Mudgett + + * res_musiconhold.c: Remove obsolete REF_DEBUG code. + + Remove unneeded code that writes to the wrong file location in an obsolete + format. + ........ + + Merged revisions 421799 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421800 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421801 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421802 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421803 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 16:43 +0000 [644e693645] Mark Michelson + + * Switch from hostname to an IP address in the SDP origin line. + + Using the hostname in the SDP origin line may not satisfy the requirement + of RFC 4566 that we use a FQDN or IP address. This change has us use the + same information from the SDP connection line if possible. If not possible, + we'll use the configured media address. And if that's not possible, we use + the result of a PJLIB call to get the IP address of ourself. + + ASTERISK-23994 #close + Reported by Private Name + + Review: https://reviewboard.asterisk.org/r/3925 + ........ + + Merged revisions 421796 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421797 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421798 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 16:37 +0000 [56a1d4930a] Mark Michelson + + * Ensure after-bridge behavior is correct when moving from Stasis to a non-Stasis bridge. + + Because of the departable state of channels that enter Stasis bridges, Stasis has to + take responsibility for directing the channel to its intended after-bridge destination + if the channel moves from a Stasis bridge to a non-Stasis bridge. This change ensures + that when such a move occurs, when the channel leaves the bridging system, any after + bridge gotos are honored. + + Review: https://reviewboard.asterisk.org/r/3920 + ........ + + Merged revisions 421792 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421794 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421795 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 16:35 +0000 [4946981646] Jonathan Rose (license 6182) + + * res_musiconhold: Fix reference leaks caused when reloading with REF_DEBUG set + + Due to a faulty function for debugging reference decrementing, it was possible + to reduce the refcount on the wrong object if two moh classes of the same name + were in the moh class container. + + (closes issue ASTERISK-22252) + Reported by: Walter Doekes + Patches: + 18_moh_debug_ref_patch.diff Uploaded by Jonathan Rose (license 6182) + ........ + + Merged revisions 398937 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421777 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421779 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421788 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421793 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 16:28 +0000 [12d34bb12f] Mark Michelson + + * Let's try checking the name and number, instead of the name twice. + ........ + + Merged revisions 421789 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421790 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421791 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 16:19 +0000 [2150daf748] Mark Michelson + + * Improve consistency of party ID privacy usage. + + Prior to this change, the Remote-Party-ID header took the position of + "If caller name and number are not explicitly allowed, then they are private" + and P-Asserted-Identity took the position of + "Caller name and number are only private if marked explicitly so" + + Now both mechanisms of conveying party identification use the former approach. + ........ + + Merged revisions 421778 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421783 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421785 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 12:35 +0000 [77ddc5b713] Elazar Broad (License 5835) + + * chan_sip: Don't use port derived from fromdomain if it isn't set + + If a user does not provide a port in the fromdomain setting, chan_sip will set + the fromdomainport to STANDARD_SIP_PORT (5060). The fromdomainport value will + then get used unilaterally in certain places. This causes issues with TLS, + where the default port is expected to be 5061. + + This patch modifies chan_sip such that fromdomainport is only used if it is + not the standard SIP port; otherwise, the port from the SIP pvt's recorded + self IP address is used. + + Review: https://reviewboard.asterisk.org/r/3893/ + + ASTERISK-24178 #close + Reported by: Elazar Broad + patches: + fromdomainport_fix.diff uploaded by Elazar Broad (License 5835) + ........ + + Merged revisions 421717 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421718 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421719 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421720 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421721 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 10:25 +0000 [f3a525e9a6] Matt Jordan + + * ARI: Fix implicit answer when playback is initiated on unanswered channel + + When issuing a POST /channels/{channel_id}/play on a channel that is not + yet answered, ARI is supposed to: + * Queue up an AST_CONTROL_PROGRESS on the channel + * Start up the playback of the media + + Instead, we sneak an answer on the channel right before starting playing media. + + This is due to ARI's usage of control_streamfile. This function implicitly + answers the channel (and doesn't give ARI the option to stop it). The answering + of the channel here is probably unnecessary: + * app_voicemail, by far the biggest consumer of this function, always answers + the channels anyway + * control stream file (in res_agi) and ControlPlayback probably shouldn't be + implicitly answering the channel. Answering should not be tied directly to + playing back media. + + As it turns out, the answering of the channel here is pretty old: + 356042 twilson if (ast_channel_state(chan) != AST_STATE_UP) { + 3087 anthm res = ast_answer(chan); + 180259 tilghman } + + (As in, ancient?) + + Note that others ran into this problem and commented about it on various + mailing lists. + + Review: https://reviewboard.asterisk.org/r/3907/ + + ASTERISK-24229 #close + Reported by: Matt Jordan + ........ + + Merged revisions 421695 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421696 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421699 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 09:52 +0000 [085d5a2629] Shaun Ruffell (License 5417) + + * Clean up files that do not end with newlines + + Trivial patch to add new lines to several files missing them. This fixes + warnings when compiling with gcc 4.1.2 on CentOS 5. + + ASTERISK-24245 #close + Reported by: Shaun Ruffell + patches: + 0002-Trivial-addition-of-newlines-at-end-of-three-files.patch uploaded by Shaun Ruffell (License 5417) + ........ + + Merged revisions 421677 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421678 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421679 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-21 09:42 +0000 [da91946df7] Shaun Ruffell (License 5417) + + * uri: Quiet warning about type qualifiers ignored on function return type + + This patch fixes gcc warnings that occur due to the type qualifier 'const' + being ignored on a return type of int. + + ASTERISK-24246 #close + Reported by: Shaun Ruffell + patches: + 0001-main-uri-Quiet-warning-about-ignored-attribute-on-re.patch uploaded by Shaun Ruffell (License 5417) + ........ + + Merged revisions 421675 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421676 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-20 17:52 +0000 [b7f98c3da4] Richard Mudgett + + * chan_pjsip: Update media translation paths when new SDP negotiated. + + On a SIP reinvite that changes media strams, the PJSIP channel driver was + flooding the log with "Asked to transmit frame type %s, while native + formats is %s" warnings. + + * Fixes PJSIP not setting up translation paths when the formats change on + a reinvite. AFS-63 was effectively reintroduced because of the media + formats work. res_pjsip_sdp_rtp.c:set_caps() + + * Improved the unexpected frame format WARNING message to include more + information. + + * Added protective locking while altering formats on a channel. Reworked + set_format() to simplify and protect the formats under manipulation. + + * Restored some code that got lost in the media_formats work. + (channel.c:set_format() and res_pjsip_sdp_rtp.c:set_caps()) + + AFS-137 #close + Reported by: Mark Michelson + + Review: https://reviewboard.asterisk.org/r/3906/ + ........ + + Merged revisions 421645 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421646 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-20 17:23 +0000 [4672c139dd] Richard Mudgett + + * cli.c: Fix tab completion of "module load" when MALLOC_DEBUG is enabled. + + filename_completion_function() returns memory that was not allocated by + the MALLOC_DEBUG allocation tracker so the memory must be freed by + ast_std_free(). + ........ + + Merged revisions 421600 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421602 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421608 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421616 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-20 15:41 +0000 [49f8bd4ad4] Mark Michelson + + * Set the role for inbound subscriptions correctly. + + This was causing the AMI show_subscriptions test in + the testsuite to fail since all subscriptions were being + seen as subscribers instead of notifiers. + ........ + + Merged revisions 421585 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421586 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-20 15:04 +0000 [d0640ad7df] Mark Michelson + + * Move evaluation of set_var options in pjsip to the end of channel initialization. + + This allows for set_var to override certain defaults such as caller ID and codec + values. This also fixes a test suite regression. The "set_var" test suite test attempted + to use set_var to override caller ID, but a recent change caused that to no longer work. + ........ + + Merged revisions 421565 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421566 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421567 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-20 08:06 +0000 [36f4bff943] Kinsey Moore + + * Stasis: Add information to blind transfer event + + When a blind transfer occurs that is forced to create a local channel + pair to satisfy the transfer request, information about the local + channel pair is not published. This adds a field to describe that + channel to the blind transfer message struct so that this information + is conveyed properly to consumers of the blind transfer message. + + This also fixes a bug in which Stasis() was unable to properly identify + the channel that was replacing an existing Stasis-controlled channel + due to a blind transfer. + + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/3921/ + ........ + + Merged revisions 421537 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421538 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421539 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-20 07:39 +0000 [01f1ff1f77] Kinsey Moore + + * AMI: Add AllVariables parameter to Status + + This adds the AllVariables parameter to the Status AMI action such that + if defined and set to "true", all channel variables will be reported in + the subsequent Status event(s). This parameter does not negate the + functionality of the "Variables" parameter so that global variables and + dialplan functions can be requested. + + Review: https://reviewboard.asterisk.org/r/3915/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421534 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-19 15:28 +0000 [76290adf50] Mark Michelson + + * Alter documentation for callerid_privacy to use correct values. + ........ + + Merged revisions 421485 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421488 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421490 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-19 14:55 +0000 [28a89e7685] Mark Michelson + + * Fix compilation error on certain versions of GCC. + ........ + + Merged revisions 421447 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421448 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421449 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-19 14:43 +0000 [a85a483fcd] Kinsey Moore + + * AMI Docs: Fix Status channel parameter optionality + ........ + + Merged revisions 421442 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421443 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421444 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421445 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421446 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-19 11:36 +0000 [222b5cd036] Krandon Bruse (license 6631) + + * ARI: Fix a bug where /channels/{channelID}/continue doesn't execute PBX + + If /channels/{channelID}/continue is called on a channel that was originated + without a PBX (such as the ARI command POST channel with a stasis application + argument), the channel will not start dialplan execution. This patch will now + run the PBX out of the stasis execution if the channel doesn't currently have + an active PBX upon continuing. + + ASTERISK-24043 #close + Reported by: Krandon Bruse + Review: https://reviewboard.asterisk.org/r/3917/ + Patches: + stasis-continue.diff submitted by Krandon Bruse (license 6631) + ........ + + Merged revisions 421416 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421423 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-19 11:16 +0000 [83a9b91da9] Richard Mudgett + + * chan_pjsip: Fix attended transfer connected line name update. + + A calls B + B answers + B SIP attended transfers to C + C answers, B and C can see each other's connected line information + B completes the transfer + A has number but no name connected line information about C + while C has the full information about A + + I examined the incoming and outgoing party id information handling of + chan_pjsip and found several issues: + + * Fixed ast_sip_session_create_outgoing() not setting up the configured + endpoint id as the new channel's caller id. This is why party A got + default connected line information. + + * Made update_initial_connected_line() use the channel's CALLERID(id) + information. The core, app_dial, or predial routine may have filled in or + changed the endpoint caller id information. + + * Fixed chan_pjsip_new() not setting the full party id information + available on the caller id and ANI party id. This includes the configured + callerid_tag string and other party id fields. + + * Fixed accessing channel party id information without the channel lock + held. + + * Fixed using the effective connected line id without doing a deep copy + outside of holding the channel lock. Shallow copy string pointers can + become stale if the channel lock is not held. + + * Made queue_connected_line_update() also update the channel's + CALLERID(id) information. Moving the channel to another bridge would need + the information there for the new bridge peer. + + * Fixed off nominal memory leak in update_incoming_connected_line(). + + * Added pjsip.conf callerid_tag string to party id information from + enabled trust_inbound endpoint in caller_id_incoming_request(). + + AFS-98 #close + Reported by: Mark Michelson + + Review: https://reviewboard.asterisk.org/r/3913/ + ........ + + Merged revisions 421400 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421403 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421404 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-18 16:18 +0000 [c4c9d4ad6c] Damien Wedhorn + + * Skinny: Fixup compile warning for non dev-mode. + ........ + + Merged revisions 421376 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-18 15:20 +0000 [1de8b8035e] George Joseph + + * func_config: Change 'Not Found' message from ERROR to DEBUG + + When you call the CONFIG dialplan function with the name of a variable that + doesn't exist in the target context you get an ERROR. This does nothing but + clutter up the logs with messages that may be perfectly acceptable. Just + because a variable wasn't in the context doesn't mean it's an error. Maybei + t's optional or just needs to be defaulted or ignored. + + This patch changes the log level from ERROR to DEBUG. If a dialplan developer + wants to debug their dialplan they still canby setting the console debug level + as needed. + + Tested by: George Joseph + Review: https://reviewboard.asterisk.org/r/3919/ + ........ + + Merged revisions 421327 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421328 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421329 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421337 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421341 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-17 20:14 +0000 [bb494067a5] Matt Jordan + + * Multiple revisions 421311-421312 + + ........ + r421311 | mjordan | 2014-08-17 20:11:28 -0500 (Sun, 17 Aug 2014) | 9 lines + + res/ari/resource_channels: Don't return allocation failure on failed function + + If a function fails to execute, it is most likely due to one of two reasons: + (1) The function doesn't exist or can't be read from + (2) The function is dangerous and is restricted based on the user's permissions + + Currently we return allocation failure, which is incorrect. This updates the + reason code to more accurately reflect why the request failed. + + ASTERISK-24215 + ........ + r421312 | mjordan | 2014-08-17 20:13:41 -0500 (Sun, 17 Aug 2014) | 4 lines + + res/ari/resource_channels: Fix compilation issue + + Forgot a parameter. Whoops. + ........ + + Merged revisions 421311-421312 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421313 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-17 19:57 +0000 [ba5d5da60b] Matt Jordan (License #6283) + + * Improve call forwarding reporting, especially with regards to ARI. + + This patch addresses a few issues: + + 1) The order of Dial events have been changed when performing a call forward. + The order has now been altered to + 1) Dial begins dialing channel A. + 2) When A forwards the call to B, we issue the dial end event to channel + A, indicating the dial is being canceled due to a forward to B. + 3) When the call to channel B occurs, we then issue a new dial begin to + channel B. + + 2) Call forwards are now reported on the calling channel, not the peer channel. + + 3) AMI DialEnd events have been altered to display the extension the call is + being forwarded to when relevant. + + 4) You can now get the values of channel variables for channels that are not + currently in the Stasis application. This brings the retrieval of channel + variables more in line with the rest of channel read operations since they + may be performed on channels not in Stasis. + + ASTERISK-24134 #close + Reported by Matt Jordan + + ASTERISK-24138 #close + Reported by Matt Jordan + + Patches: + forward-shenanigans.diff uploaded by Matt Jordan (License #6283) + + Review: https://reviewboard.asterisk.org/r/3899 + ........ + + Merged revisions 420794 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421310 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-17 18:29 +0000 [6525f374db] Matt Jordan + + * apps/app_meetme: Fix crash when publishing MeetMe messages with no channel + + The same function, meetme_stasis_generate_msg, handles creating and publishing + Stasis message both when there are channels in the MeetMe conference and when + there are no channels in the conference. When the performance improvement was + made to use cached snapshots, this created a situation where Asterisk would + crash: obtaining a cached snapshot is not NULL tolerant. + + This patch restores the previous implementation, which used a NULL safe set + of routines to produce a blob containing the channel snapshot (if available) + and information about the MeetMe conference. + + ASTERISK-24234 #close + Reported by: Shaun Ruffell + Tested by: Shaun Ruffell + ........ + + Merged revisions 421270 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421273 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421276 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-17 18:10 +0000 [44fc6ea6ff] Richard Mudgett (License 5621) + + * apps/app_dial: Fix Dial 'z' option + + The 'z' option is supposed to disable the dial timeout in the case of a call + forward. Unfortunately, the wrong timeout timer was passed to the do_forward + function, resulting in the option not working. + + ASTERISK-24225 #close + Reported by: dimitripietro + Tested by: dimitripietro + patches: + jira_asterisk_24225_v1.8.patch uploaded by rmudgett (License 5621) + jira_asterisk_24225_v11.patch uploaded by rmudgett (License 5621) + ........ + + Merged revisions 421232 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421233 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421234 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421235 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421236 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-17 17:35 +0000 [98ca5c0b5f] cloos (License 5956) + + * configure: Undefine FORTIFY_SOURCE prior to defining it for patched gcc + + Some distributions of Linux patch gcc to define FORTIFY_SOURCE when gcc is + executed with optimization. This "help" unfortunately results in re-definition + warnings when FORTIFY_SOURCE is later defined in Asterisk's build system. This + patch undefines FORTIFY_SOURCE prior to defining it to prevent this warning. + + Review: https://reviewboard.asterisk.org/r/3912/ + + ASTERISK-24032 #close + Reported by: Kilburn + Tested by: Kilburn, wdoekes + patches: + 1.8.diff uploaded by cloos (License 5956) + 10.diff uploaded by cloos (License 5956) + 11.diff uploaded by cloos (License 5956) + 12.diff uploaded by cloos (License 5956) + 13.diff uploaded by cloos (License 5956) + ........ + + Merged revisions 421227 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421228 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421229 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421230 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421231 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-17 11:11 +0000 [952da298ce] Joshua Colp + + * res_http_websocket: Include query parameters in client connection requests. + + Review: https://reviewboard.asterisk.org/r/3914/ + ........ + + Merged revisions 421210 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421211 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-15 12:26 +0000 [9b658b7c60] Jonathan Rose + + * Bridging: Fix a behavioral change when checking if a channel is leaving a bridge + + r420934 introduced some failures in the test suite. Upon investigating, it was + discovered that differences in the way we were evaluating whether a channel was in + the process of leaving a bridge were causing some reinvites not to occur (mostly + reinvites back to Asterisk when ending a call). This patch fixes that behavioral + change. + + ASTERISK-24027 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/3910/ + ........ + + Merged revisions 421186 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421187 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421195 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-15 10:50 +0000 [0d0a616e1a] Matt Jordan + + * app_voicemail/app: Remove test events that were duplicated by r421059 + + Moving the test event raised when a file is played back (which occurred in + r421059) broke the ever loving snot out of the voicemail tests. This caused + duplicate test events to get raised, as app_voicemail and main/app were raising + events prior to call ast_streamfile. The voicemail tests did not enjoy getting + multiple events. + + Since raising the playback event in ast_streamfile is far more useful to the + vast majority of tests, this patch keeps the call there and simply removes the + extraneous calls that duplicated the event. + ........ + + Merged revisions 421125 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421164 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421165 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421166 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421167 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-14 16:16 +0000 [980e49614c] Matt Jordan + + * res/res_hep_rtcp: Remove dependency on PJSIP + + The res_hep_rtcp module was incorrectly including . This didn't need + to be included, as the module does not using PJPROJECT any fashion. + Unfortunately, because res_hep_rtcp did not include pjsip in its MODULEINFO as + a dependency, this also meant that res_hep_rtcp will fail to compile on a + system without PJPROJECT. + + This patch removes the include. + + Thanks to Damien Wedhorn for pointing this out in #asterisk-dev. + + ASTERISK-24236 #close + Reported by: Damien Wedhorn, Matt Jordan + Tested by: Damien Wedhorn + ........ + + Merged revisions 421064 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421065 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421066 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-14 15:59 +0000 [513981c89d] Matt Jordan + + * main/file: Move test event to emit PLAYBACK event more consistently + + This is being done in advance of the test for ASTERISK-23953 + ........ + + Merged revisions 421059 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 421060 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 421061 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421062 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421063 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-14 14:21 +0000 [0b11c48522] Matt Jordan + + * cel: Make sure channels in extra fields include their unique IDs as well + + CEL typically tracks a lot of information using the unique ID of the channel. + This is typically needed due to tying events together using the linked ID of + the various channels involved in a "call", which is derived from the channel ID + of the oldest channel involved in a bridge (or in the case of a Dial, the + parent channel). + + Previously, we had updated the extra fields to include the involved channel + names, but forgot to put in the unique ID. This patch corrects that error. + ........ + + Merged revisions 421037 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421042 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421043 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-14 11:33 +0000 [79c5c08db9] Richard Mudgett + + * ARI: Originate to app local channel subscription code optimization. + + Reduce the scope of local_peer and only get it if the ARI originate is + subscribing to the channels. + + Review: https://reviewboard.asterisk.org/r/3905/ + ........ + + Merged revisions 421009 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 421010 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421012 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-14 11:01 +0000 [e4b32731b9] Richard Mudgett + + * channel_internal_api.c: Replace some code with ao2_replace(). + + Use ao2_replace() instead of ao2_cleanup(); ao2_bump(). + + ao2_replace() has the advantange of not altering the ref count if the + replaced pointer is the same. + + Review: https://reviewboard.asterisk.org/r/3904/ + ........ + + Merged revisions 420992 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420993 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-13 12:05 +0000 [dd41d0ff01] Richard Mudgett + + * res_pjsip_send_to_voicemail.c: Fix svn file properties. + ........ + + Merged revisions 420956 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420957 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420958 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-13 11:56 +0000 [6aa510b41f] Kinsey Moore + + * PJSIP: Prevent crash no-URI contacts + + This prevents a crash from occurring when a contact with no URI is used + for the creation of an outbound out-of-dialog request with no + associated endpoint. + ........ + + Merged revisions 420949 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420950 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420953 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-13 11:24 +0000 [d4695774e7] Jonathan Rose + + * Bridges: Fix feature interruption/unintended kick caused by external actions + + If a manager or CLI user attached a mixmonitor to a call running a dynamic + bridge feature while in a bridge, the feature would be interrupted and the + channel would be forcibly kicked out of the bridge (usually ending the call + during a simple 1 to 1 call). This would also occur during any similar action + that could set the unbridge soft hangup flag, so the fix for this was to + remove unbridge from the soft hangup flags and make it a separate thing all + together. + + ASTERISK-24027 #close + Reported by: mjordan + Review: https://reviewboard.asterisk.org/r/3900/ + ........ + + Merged revisions 420934 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420940 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420947 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-13 09:31 +0000 [6a6702bb0f] Kinsey Moore + + * AMI: Improve documentation for Status action + ........ + + Merged revisions 420919 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420921 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-13 02:54 +0000 [52c94d3af4] Walter Doekes + + * logger: Don't store verbose-magic in the log files. + + In r399267, the verbose2magic stuff was edited. This time it results + in magic characters in the log files for multiline messages. + + In trunk (and 13) this was fixed by the "stripping" of those + characters from multiline messages (in r414798). + + This fix is altered to actually strip the characters and not replace + them with blanks. + + Review: https://reviewboard.asterisk.org/r/3901/ + Review: https://reviewboard.asterisk.org/r/3902/ + ........ + + Merged revisions 420897 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 420898 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420899 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420900 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-12 18:45 +0000 [969982b878] Richard Mudgett + + * chan_sip: Fix type mismatch when the format is changed. + + Symptom is most likely an invalid ao2 object bad magic number message or a + less likely crash. + ........ + + Merged revisions 420881 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420882 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-12 18:36 +0000 [8526d967c9] Richard Mudgett + + * res_stasis_snoop.c: Fix off nominial exit path leaving Snoop channel locked and not hungup. + + * Made use ast_copy_string() instead of strcpy() for snoop uniqueid for + safety. There is no guarantee that the max channel uniqueid length will + remain the same as the snoop uniqueid space. + ........ + + Merged revisions 420879 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420880 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-12 06:18 +0000 [ca61f8ac82] Joshua Colp + + * app_voicemail: Fix the "test_voicemail_vm_info" unit test. + ........ + + Merged revisions 420856 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420858 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 16:04 +0000 [aba07a0f6e] Richard Mudgett + + * res/stasis/command.c: Fix recent commit using spaces instead of tabs. + ........ + + Merged revisions 420836 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420837 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420838 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 13:51 +0000 [ffccae8269] Matt Jordan + + * AMI/ARI: Update version to 2.5.0/1.5.0 respectively + + This is to support the backwards compatible changes made in the next version + of Asterisk. + ........ + + Merged revisions 420805 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420808 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420811 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 13:46 +0000 [7a4691b425] Kinsey Moore + + * Stasis: Use the correct return value + + Return the correct value instead of always returning 0 when setting + internal status on unreal channels. + + Reported by: Richard Mudgett + ........ + + Merged revisions 420802 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420803 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 13:38 +0000 [6f735288b0] Kinsey Moore + + * Stasis: Allow internal channels directly into bridges + + The patch to catch channels being shoehorned into Stasis() via external + mechanisms also happens to catch Announcer and Recorder channels + because they aren't known to be stasis-controlled channels in the usual + sense. This marks those channels as Stasis()-internal channels and + allows them directly into bridges. + + Review: https://reviewboard.asterisk.org/r/3903/ + ........ + + Merged revisions 420795 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420796 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420797 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 12:40 +0000 [db0a97f8ce] Mark Michelson + + * Fix crashing unit tests with regards to RLS. + + The unit tests require a sorcery.conf file that has been + set up to store resource lists in memory rather than retrieving + from configuration. + + With a setup that is not conducive to running the tests, a fault + in sorcery currently causes Asterisk to crash when attempting to + run any of the tests. + + To get around the crash, this adds a function that verifies the + current environment and marks the tests as "not run" if the setup + is not correct. + ........ + + Merged revisions 420779 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420780 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 11:03 +0000 [b4e33c81e3] Mark Michelson + + * Fix crash encountered by the testsuite. + + Running testsuite tests locally produced no errors, but when + run using the continuous integration framework, crashes occurred. + + The crashes occurred due to a refcounting error that had been fixed + for a similar situation. + ........ + + Merged revisions 420758 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420759 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 08:57 +0000 [becf7c7003] Matt Jordan + + * res_hep: Remove disabling of modules + + These modules were originally specified as being disabled, as they were + introduced midstream in Asterisk 12. That makes it nicer for folks who are + upgrading to a new release in the middle of Asterisk 12. That's not the case + for Asterisk 13: it's a brand new release. There's no reason to have the + modules disabled by default in that case. + ........ + + Merged revisions 420742 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420743 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 05:41 +0000 [1e0846167b] Walter Doekes + + * general: Fix memory Corruption in __ast_string_field_ptr_build_va. + + If the space left in a stringfield is between 0 and + (alignof(ast_string_field_allocation)-1) adding new data would cause + memory corruption, because we would assume enough space (unsigned + underrun). + + Thanks Arnd Schmitter for reporting and finding out the cause! + + ASTERISK-23508 #close + Reported by: Arnd Schmitter + Tested by: Arnd Schmitter, JoshE + + Review: https://reviewboard.asterisk.org/r/3898/ + ........ + + Merged revisions 420680 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 420715 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 420716 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420717 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420718 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-11 04:55 +0000 [b2afbc48e4] Walter Doekes + + * tcptls: Avoid compiler warning on non-dev-mode. + ........ + + Merged revisions 420654 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ + + Merged revisions 420655 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + + Merged revisions 420656 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420657 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420658 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-10 20:31 +0000 [6650704414] Matt Jordan + + * funcs/func_jitterbuffer: Tweak documentation + + This patch merely reformats and cleans up a bit of the jitterbuffer + documentation for the wiki. + ........ + + Merged revisions 420639 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420640 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-10 19:14 +0000 [add46fd27c] Michael K (License 6621) + + * app_queue: Add RealTime support for queue rules + + This patch gives the optional ability to keep queue rules in RealTime. It is + important to note that with this patch: + (a) Queue rules in RealTime are only examined on module load/reload + (b) Queue rules are loaded both from the queuerules.conf file as well as the + RealTime backend + To inform app_queue to examine RealTime for queue rules, a new setting has been + added to queuerules.conf's general section "realtime_rules". RealTime queue + rules will only be used when this setting is set to "yes". + + The schema for the database table supports a rule_name, time, min_penalty, and + max_penalty columns. min_penalty and max_penalty can be relative, if a '-' or + '+' literal is provided. Otherwise, the penalties are treated as constants. + + For example: + rule_name, time, min_penalty, max_penalty + 'default', '10', '20', '30' + 'test2', '20', '30', '55' + 'test2', '25', '-11', '+1111' + 'test2', '400', '112', '333' + 'test3', '0', '4564', '46546' + 'test_rule', '40', '15', '50' + + which would result in : + + Rule: default + - After 10 seconds, adjust QUEUE_MAX_PENALTY to 30 and adjust + QUEUE_MIN_PENALTY to 20 + Rule: test2 + - After 20 seconds, adjust QUEUE_MAX_PENALTY to 55 and adjust + QUEUE_MIN_PENALTY to 30 + - After 25 seconds, adjust QUEUE_MAX_PENALTY by 1111 and adjust + QUEUE_MIN_PENALTY by -11 + - After 400 seconds, adjust QUEUE_MAX_PENALTY to 333 and adjust + QUEUE_MIN_PENALTY to 112 + Rule: test3 + - After 0 seconds, adjust QUEUE_MAX_PENALTY to 46546 and adjust + QUEUE_MIN_PENALTY to 4564 + Rule: test_rule + - After 40 seconds, adjust QUEUE_MAX_PENALTY to 50 and adjust + QUEUE_MIN_PENALTY to 15 + + If you use RealTime, the queue rules will be always reloaded on a module + reload, even if the underlying file did not change. With the option disabled, + the rules will only be reloaded if the file was modified. + + Review: https://reviewboard.asterisk.org/r/3607/ + + ASTERISK-23823 #close + Reported by: Michael K + patches: + app_queue.c_realtime_trunk.patch uploaded by Michael K (License 6621) + ........ + + Merged revisions 420624 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420625 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-10 17:02 +0000 [f7bb772804] Matt Jordan + + * Update CHANGES file + ........ + + Merged revisions 420609 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420610 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-10 16:35 +0000 [455243cdd4] Matt Jordan + + * Update UPGRADE-13.txt file + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420608 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-08 15:08 +0000 [3e452fa4d9] Jason Parker + + * Fix build in devmode. + ........ + + Merged revisions 420592 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420593 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-08 14:16 +0000 [5ce4ad8031] Jason Parker + + * app_voicemail: Add the ability to specify multiple email addresses. + + ASTERISK-24045 + Reported by: Jacob Barber + Review: https://reviewboard.asterisk.org/r/3833/ + ........ + + Merged revisions 420577 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420578 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-08 12:53 +0000 [91f7b66183] Matt Jordan + + * chan_sip: Mark chan_sip and its files as extended support + ........ + + Merged revisions 420562 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420563 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-08 07:40 +0000 [86e927a714] Matt Jordan + + * make_ari_stubs: Update wiki prefix to '13' + ........ + + Merged revisions 420538 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420539 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-08 07:38 +0000 [1f35fccda1] Matt Jordan + + * res_ari_resource.c.mustache: Update template to emit module support level + ........ + + Merged revisions 420536 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420537 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-08 07:33 +0000 [008c1ad9bf] Matt Jordan + + * main/message: remove debug message + ........ + + Merged revisions 420533 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420534 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420535 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-07 22:07 +0000 [c94fef6f36] Kinsey Moore + + * CEL: Update unit tests for additional information + + This updates the CEL unit tests for the new information contained in + the attended transfer CEL extra field. + ........ + + Merged revisions 420513 from http://svn.asterisk.org/svn/asterisk/branches/12 + ........ + + Merged revisions 420514 from http://svn.asterisk.org/svn/asterisk/branches/13 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420515 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-07 20:37 +0000 [96be6b2228] Matt Jordan + + * Initialize svnmerge from branches/13 + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420499 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-07 20:36 +0000 [38a0df95b1] Matt Jordan + + * Remove 12 merge properties + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420498 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2014-08-07 20:33 +0000 [5760526f69] Matt Jordan + + * Update UPGRADE.txt for 13 branch + + git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420497 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2019-12-23 16:55 +0000 Asterisk Development Team + + * asterisk certified/13.21-cert6 Released. + +2019-11-22 10:39 +0000 [c59bc91f77] Thomas Arimont (license 5525) + + * channel.c: Resolve issue with receiving SIP INFO packets for DTMF + + The problem is essentially the same as in ASTERISK~28245. Besides + the direct media scenario we have an additional scenario where a + special client is involved. This device mutes audio by default in + transmit direction (no rtp frames) and activates audio only by a + foot switch. In this situation dtmf input (pin for conferences, + transfer features codes , etc) using SIP INFO mode is not + understood properly especially when SIP INFO messages are sent + quickly. + + This patch ensures that SIP INFO frames are properly queued and + processed in the above scenario. The patch also corrects situations + where successive dtmf events are received quicker than the + signalled event duration (plus minimum gap/pause) allows, i.e. DTMF + events have to be buffered in the ast channel read queue and + emulation has to be processed asynchronously at slower speed. + + Reported by: Thomas Arimont + patches: + trigger_dtmf_emulation.patch submitted by Thomas Arimont (license 5525) + + Change-Id: I309bf61dd065c9978c8e48f5b9a936ab47de64c2 + +2019-11-25 06:55 +0000 [8807f80ac9] Joshua Colp + + * parking: Fall back to parker channel name even if it matches parkee. + + ASTERISK-28631 + + Change-Id: Ia74d084799fbb9bee3403e30d2391aacd46243cc + +2019-11-22 09:31 +0000 [395b224447] Ben Ford + + * Add directories and README files for staging changes. + + While doing a release, problems were encountered running the + process-staging-changes script. These directories and the README.md + files were missing from the certified branches. Adding them in to be in + line with the other branches. + + Also fixing the .gitreview file to point to the correct branch. + + Change-Id: Ia9e2ecce31ef35838da5f3166aac321b577d16c2 + +2019-11-21 21:29 +0000 Asterisk Development Team + + * asterisk certified/13.21-cert5 Released. + +2019-11-21 15:25 +0000 [171fa026d1] Asterisk Development Team + + * Update CHANGES and UPGRADE.txt for 13.21-cert5 + +2019-10-21 14:55 +0000 [5be4005fba] Ben Ford + + * chan_sip.c: Prevent address change on unauthenticated SIP request. + + If the name of a peer is known and a SIP request is sent using that + peer's name, the address of the peer will change even if the request + fails the authentication challenge. This means that an endpoint can + be altered and even rendered unusuable, even if it was in a working + state previously. This can only occur when the nat option is set to the + default, or auto_force_rport. + + This change checks the result of authentication first to ensure it is + successful before setting the address and the nat option. + + ASTERISK-28589 #close + + Change-Id: I581c5ed1da60ca89f590bd70872de2b660de02df + +2019-10-24 12:41 +0000 [32e599f16a] George Joseph + + * manager.c: Prevent the Originate action from running the Originate app + + If an AMI user without the "system" authorization calls the + Originate AMI command with the Originate application, + the second Originate could run the "System" command. + + Action: Originate + Channel: Local/1111 + Application: Originate + Data: Local/2222,app,System,touch /tmp/owned + + If the "system" authorization isn't set, we now block the + Originate app as well as the System, Exec, etc. apps. + + ASTERISK-28580 + Reported by: Eliel Sardañons + + Change-Id: Ic4c9dedc34c426f03c8c14fce334a71386d8a5fa + +2019-11-08 13:21 +0000 [20535ecac0] Ben Ford + + * res_pjsip_session.c: Check for port of zero on incoming SDP. + + If a re-invite comes in initiating T.38, but there is no c line in the + SDP and the port is also 0, a crash can occur. A check is now done on + the port to see if the steam is already declined, preventing the crash. + The logic was moved to res_pjsip_session.c because it is handled in a + similar manner in later versions of Asterisk. + + ASTERISK-28612 + Reported by: Salah Ahmed + + Change-Id: Ifc4a0d05b32c7f2156e77fc8435a6ecaa6abada0 + +2019-11-15 04:46 +0000 [144f7f4c7e] Joshua Colp + + * parking: Fix case where we can't get the parker. + + ASTERISK-28616 + + Change-Id: Iabe31ae38d01604284fcc5c2438d44e29a32ea4d + +2019-11-12 05:00 +0000 [a88f1150e8] Joshua Colp + + * parking: Use channel snapshot instead of channel. + + There exists a scenario where a thread can hold a lock on the + channels container while trying to lock a bridge. At the same + time another thread can hold the lock for said bridge while + attempting to retrieve a channel. This causes a deadlock. + + This change fixes this scenario by retrieving a channel snapshot + instead of a channel, as information present in the snapshot + is all that is needed. + + ASTERISK-28616 + + Change-Id: I68ceb1d62c7378addcd286e21be08a660a7cecf2 + +2019-09-24 11:21 +0000 [e604f532ec] Kevin Harwell + + * res_pjsip_pubsub: change warning to debug + + The following message: + + "Subscription request from endpoint rejected. Expiration of 0 is invalid" + + Would sometimes spam the log with warnings if Asterisk restarted and a bunch + of clients sent unsubscribes. This patch changes it from a warning to a debug + message. + + Change-Id: I841ec42f65559f3135e037df0e55f89b6447a467 + +2019-09-23 11:01 +0000 [e7c44355a6] Kevin Harwell + + * res_sorcery_memory_cache: stale item update leak + + When a stale item was being updated the object was being retrieved, but its + reference was not being decremented after the update. This patch makes it so + the object is now appropriately de-referenced. + + ASTERISK-28523 + + Change-Id: I9d8173d3a0416a242f4eba92fa0853279c500ec7 + +2019-09-15 14:35 +0000 [dfd7a3474b] Joshua Colp + + * chan_pjsip: Relock correct channel during "fax" redirect. + + When fax detection occurs on an outbound PJSIP channel the + redirect operation will result in a masquerade occurring and + the underlying channel on the session changing. The code + incorrectly relocked the new channel instead of the old + channel when returning. This resulted in the new channel + being locked indefinitely. The code now always acts on the + expected channel. + + ASTERISK-28538 + + Change-Id: I2b2e60d07e74383ae7e90d752c036c4b02d6b3a3 + +2019-08-08 12:10 +0000 [794c7030ae] George Joseph + + * CI: Escape backslashes in printenv/sort/tr + + Change-Id: I52be64c8f6af2bbe15148a856d1f10cb113e1e94 + +2019-08-08 07:12 +0000 [c177b3566b] George Joseph + + * CI: Add "throttle" label and "skip_gate" capability + + To make throttling by label fully active, the "throttle" option + has to be specified with a specific label. + + You can now specify "skip_gate" in the Gerrit comments when you + do a +2 code review to tell Jenkins not to actually run the + gate. You'd do this if you plan to manually merge the change. + + Also updated the "printenv" debug output to better sort multi-line + comments. + + Change-Id: I4c0b1085acec4805f2ca207eebac50aad81f27e2 + +2019-08-06 10:40 +0000 [f789016ff5] George Joseph + + * CI: Make node labels job-specific + + Originally, the eligible nodes for a job were labelled only by + "swdev-docker". So basically any node could run any job. We had + found that allowing a node to run more than 1 gate at a time was + problematic so we limited the nodes to processing 1 job at a time. + With the creation of the Asterisk 17 branches however, we now have + so many active branches that getting checks and gates through in + a timely manner is problematic when a node can run only 1 job + at a time. + + Now the nodes are also labelled by the job type they can run. + For instance: "asterisk-check", "asterisk-gate", etc. With the + "Throttle Concurrent Builds" plugin, we can now allow a node to + run more than 1 job BUT throttle by job type. For instance: + Allow 2 jobs but only 1 asterisk-gate at a time. + Now a node can run 2 checks or 1 check and 1 gate or 1 gate but + not 2 gates at a time. + + Change-Id: I2032bf6afbcec5c341d9b852214c0c812d3d6db5 + +2019-07-26 08:38 +0000 [1e9a9e4dca] George Joseph + + * .gitreview: Update defaultbranch for certified + + Change-Id: Ied1a0488a777bec513cc351c3ed8e25741bfc11f + +2019-07-24 15:15 +0000 [ea02f587a8] George Joseph + + * CI: Don't enable non-core modules in Certified branches + + We don't support non-core modules for Certified releases but we + were enabling them for CI builds which was causing lots of test + failures. Now we don't. + + NOTE: This change required that the rest of the CI shell scripts + and jenkinsfiles be updates to the same level as certified/16.3. + + Change-Id: I0b3254c08a2479f3d39151690350cce5ce5ad766 + +2019-07-11 19:26 +0000 Asterisk Development Team + + * asterisk certified/13.21-cert4 Released. + +2019-06-12 13:03 +0000 [521581b762] George Joseph + + * res_pjsip_messaging: Check for body in in-dialog message + + We now check that a body exists and it has a length > 0 before + attempting to process it. + + ASTERISK-28447 + Reported-by: Gil Richard + + Change-Id: Ic469544b22ab848734636588d4c93426cc6f4b1f + +2019-06-28 11:15 +0000 [07048050b0] Francesco Castellano + + * chan_sip: Handle invalid SDP answer to T.38 re-invite + + The chan_sip module performs a T.38 re-invite using a single media + stream of udptl, and expects the SDP answer to be the same. + + If an SDP answer is received instead that contains an additional + media stream with no joint codec a crash will occur as the code + assumes that at least one joint codec will exist in this + scenario. + + This change removes this assumption. + + ASTERISK-28465 + + Change-Id: I8b02845b53344c6babe867a3f0a5231045c7ac87 + +2018-12-03 16:41 +0000 [e2e3def2d9] 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 [7a7e3dfa5c] 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 + (cherry picked from commit 40ab571e0d07f7e1854c0f924b0fbda2da36c5a5) + +2018-11-08 09:53 +0000 [79207ec9f1] 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-09-20 19:04 +0000 Asterisk Development Team + + * asterisk certified/13.21-cert3 Released. + +2018-08-16 10:45 +0000 [34af3753ae] 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-07-20 06:54 +0000 [9635a64fd8] 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-11 11:57 +0000 [8f56ba5479] 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-03 12:10 +0000 [51616b277d] 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-13 18:26 +0000 [56a8a36c66] 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-17 11:09 +0000 [3e6272b0f6] George Joseph + + * CI: Fix merge strategy + + Change-Id: I5e3fb6adfa6cbf694c0deecf02e3879297b0c12e + +2018-07-17 10:41 +0000 [a8744add75] George Joseph + + * CI: Fix regex in daily and ref_debug jobs + + Change-Id: Icf2e67818b2155a158d2390b138613e1f653ea92 + +2018-07-17 10:18 +0000 [89acb71caa] Richard Mudgett + + * res_config_ldap.c: Fix mem leak in CLI "realtime show ldap status" + + Change-Id: Ib2a3622b297b0363c62d23958f7a20039bcb9b4c + +2018-07-17 10:15 +0000 [aa2ab27041] George Joseph + + * CI: Add pre-build merge back in as RECURSIVE + + Change-Id: I0ff1730ef4a4f0ac9f18ccc9bc0dfe7a782f57a8 + +2018-07-17 09:01 +0000 [4b69db4b66] George Joseph + + * CI: Remove pre-build merge from gates and checks + + Change-Id: Ibc151f63dcec4db847915c2f3cbe5b467dd59574 + +2018-07-17 07:13 +0000 [7bd8bbfd35] George Joseph + + * CI: Fix logic inversion in runTestsuite + + Change-Id: I56399aa384468f45494c2c3650420563a0b6efe1 + +2018-07-17 04:03 +0000 [4435cfdd4c] George Joseph + + * CI: Add teardownRealtime + + Change-Id: I2fe55c38607eaec2fbf69ef23a5019e0c443a64b + +2018-05-07 10:49 +0000 [f4c13e8170] 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-08 04:59 +0000 [44e9bdec61] 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-07-16 13:30 +0000 [c98c6051c6] George Joseph + + * CI: Prevent Jenkins from triggering jobs back to itself + + Change-Id: I9cae8bb3d1a2cea335d3ccd88d471832549666fd + +2018-07-16 11:08 +0000 [ee063a35eb] George Joseph + + * CI: runUnittests: loop a few times on waitfullybooted + + Change-Id: Icebc0d013896f3b2a7214945cac60647435c1651 + +2018-07-16 10:49 +0000 [5ec8f5b353] George Joseph + + * CI: Add realtime checks to dailies + + Change-Id: I6dc8ab1679b3505c6dde1d47e1b9276df47814f8 + +2018-07-16 09:13 +0000 [282312eb96] George Joseph + + * CI: Add weekly REF_DEBUG testsuite run + + Change-Id: I5b581d0a0d1d1bb9b38961d40b112fb448355037 + +2018-07-16 08:44 +0000 [62345d444f] George Joseph + + * CI: Fix bad reporting of status by the verification pub + + Change-Id: I6f31a130b3ba0187149aaaa2ce94195a79e0f6a6 + +2018-07-16 07:16 +0000 [ecc1c14a22] George Joseph + + * CI: Make build tag an acceptable docker name + + Change-Id: I3a4b8a4a9c488ddabf9daf651dc1334222056f38 + +2018-07-13 06:56 +0000 [9246fc9dd7] George Joseph + + * CI: Add daily periodics to CI + + Change-Id: I26933e73928e091ae72e838c02f4f2ec7c3983d6 + +2018-07-12 16:34 +0000 [dae51bddbd] George Joseph + + * CI: Add Asterisk Gates + + Change-Id: I7e2467f9120812551238d8005deb97f965279205 + +2018-07-11 15:55 +0000 [ac2a1db043] George Joseph + + * CI: Remove duplicate checkout + + Change-Id: If5f925b4c4ed7000b153f3ed8386ce2140c886f8 + +2018-07-11 15:09 +0000 [602ded78d4] George Joseph + + * CI: Update cleanup steps and permissions + + Change-Id: I7ca92935979d94845af8e1caf4468cbd6209b7de + +2018-07-11 14:54 +0000 [ca168ba901] George Joseph + + * CI: Fix log artifact paths + + Change-Id: I55136de8f4d9c3b56bd4d054306a187bb04a4b7d + +2018-07-11 14:45 +0000 [19c481a184] George Joseph + + * CI: Remove CleanBeforeCheckout option for testsuite + + Change-Id: I510231c9087f7be5272b8ef3f3223eadaaffb754 + +2018-07-11 14:00 +0000 [a05056c759] George Joseph + + * CI: Move gates into source repo + + Change-Id: If028ede5f3b127fa274c63ce166bc04ad7c1e5db + +2018-07-11 06:14 +0000 [5dffbe11ab] 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 09:04 +0000 [8273b8cbf3] 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-06-11 21:09 +0000 Asterisk Development Team + + * asterisk certified/13.21-cert2 Released. + +2018-04-30 17:38 +0000 [3cccb60321] 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-05 12:47 +0000 Asterisk Development Team + + * asterisk certified/13.21-cert1 Released. + +2018-06-04 09:50 +0000 [f5bc8aeb9a] 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-04-10 16:09 +0000 [8f5fc3870d] 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 [c1deeb28c2] 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 + (cherry picked from commit be7d4faed5fb3684e9d68454ae2a97167e1ebb51) + +2017-09-27 11:44 +0000 [72fb285d9b] 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 + (cherry picked from commit be7d4faed5fb3684e9d68454ae2a97167e1ebb51) + +2018-05-17 01:58 +0000 [5de8b00f2c] 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-17 00:34 +0000 [5aaf6d1605] Alexander Traud + + * res_pjsip: Register pjsip_transport_management not externally but internally. + + The module (res_)pjsip_transport_management got moved into res_pjsip. It is no + longer an independent/external module with (un)load_module and therefore has to + register just internally with res_pjsip. + + ASTERISK-27860 + + Change-Id: Icd0413be7d2e98b92f51e6d6c353f2570bb4be95 + +2017-10-30 15:24 +0000 [13a85290fe] Kevin Harwell + + * Initialize 13.21-cert branch + + A new branch was created for what will be Asterisk certified 13.21. A couple + of things needed to be done to the branch in order to complete initialization: + + Modified the version file to reflect the certified version. + Updated all extended modules to be disabled by default. + + Change-Id: Ie1dd3cb146391dea92c9e3ef906dde8d7241fee2 + +2018-04-19 13:29 +0000 [32f362c896] Chris Savinovich + + * Update for 13.21.0-rc1 + +2018-04-17 07:09 +0000 [92f88f164a] Alexander Traud + + * utils/pval: Add -lBlocksRuntime for compiler clang conditionally. + + ASTERISK-27809 + + Change-Id: I930b364a33d54cc08dedfcd5bb45f7e83242f134 + +2018-04-13 15:17 +0000 [39c51394c8] 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-13 14:32 +0000 [f2e140e8a7] 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 [b92ebdba5f] 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 [12aa25b2e1] 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 [dfdc9a2575] 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 [af36823907] 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 [7886354343] 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 [724d926d46] 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 [6a4afe09ce] 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 [c4f02c975b] 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 [7593359787] 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. + * Add missing 'import os' + * Fix invalid reference to swagger_version from exception handler. + + I have not tested voicemailpwcheck.py, only the print syntax has + been fixed. + + Change-Id: If5c5b556a2800d41a3e2cfef080ac2e151178c33 + +2018-04-05 18:33 +0000 [72b16ee400] 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-04-05 17:40 +0000 [ea055386e0] 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 [e94f8e4a24] Richard Mudgett + + * res_pjsip: Update authenticate_qualify documentation. + + Change-Id: I3811de0014b1ffe96d4a3b49cddd5d4ca02ee5d4 + +2018-04-02 16:49 +0000 [906db6a3ff] Richard Mudgett + + * app_agent_pool.c: Fix off nominal ref leak. + + Change-Id: Ib427ffc2c802620eaafb08b1c2a17dddd8fb8eb6 + +2018-04-04 10:02 +0000 [07e408e588] 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 [01b3c435d8] 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-01-02 07:54 +0000 [cea1a22ef3] 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 [158c0efd4f] 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 [69c61237cd] 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-22 08:54 +0000 [83353997f4] Alexander Traud + + * BuildSystem: Add support for building RADIUS with radcli. + + Radcli is yet another RADIUS client library, generally compatible with + freeradius and radiusclient-ng. + + This commit adds autoconf option for detecting it as well and changes + cdr_radius and cel_radius to use its header file in that case. + + ASTERISK-26540 + Reported by: Tzafrir Cohen + + Change-Id: Icc056d476b7acf481309219e9abdca416866c6ec + +2018-03-29 17:07 +0000 [e1363283d7] 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-25 13:12 +0000 [c63a2e28f1] 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-28 08:18 +0000 [5908c6753b] 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-23 13:15 +0000 [e8e4fc6202] Alexander Traud + + * install_prereq: Add Slackware (somehow). + + ASTERISK-27770 + + Change-Id: Ib87e0483c785542238cfe34c1e884d5a31edfaab + +2018-03-23 09:18 +0000 [96a668e60b] Alexander Traud + + * install_prereq: Add Gentoo Linux. + + ASTERISK-27769 + + Change-Id: Ieb13293cd67481f3a33f58f6f7c8c3ee1e338e7a + +2018-03-17 01:02 +0000 [6615469a05] Corey Farrell + + * main/indications: Use ast_cli_completion_add for all completions. + + Change-Id: I371be01f178fb542a9fbe8d97e7ae21aa4d82c36 + +2018-03-22 07:27 +0000 [de4e2c1de8] 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:52 +0000 [79bb956b69] Alexander Traud + + * BuildSystem: With external editline, do not require libs for internal editline. + + ASTERISK-27761 + + Change-Id: Ib17a7415297a210cfcdbf149e4df9b6edadbfab6 + +2018-03-21 19:25 +0000 [3a4a441817] 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 c0c537c1d3aab05358df697d8d259aa73f55a43c. + + Change-Id: I670a82aa7c872fa5facea1e3bc718e2d3124cc28 + +2018-03-20 15:28 +0000 [17cd687679] 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-07 06:15 +0000 [5955cdf5ae] 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-20 09:58 +0000 [69de659224] 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-20 11:55 +0000 [7580d1e0bb] 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 + * three 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-17 20:03 +0000 [6f304697b0] 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 [8df4811cfa] Corey Farrell + + * named_acl: Use ast_cli_completion_add. + + Change-Id: I317a82de976bbdbfe4352c243e32a7bb8f66c377 + +2018-03-17 01:58 +0000 [a89323236f] Corey Farrell + + * main/sounds: Use ast_cli_completion_add. + + Change-Id: I140e1137906bbfcdb61c0c6304159be459ad873e + +2018-03-17 01:09 +0000 [dc520b6d8f] Corey Farrell + + * manager: Use ast_cli_completion_add for completion generators. + + Change-Id: I658141c6ec490a3e866b02d2afea757928ceaabf + +2018-03-17 02:16 +0000 [534fda0a59] Corey Farrell + + * main/test: Use ast_cli_completion_add. + + Change-Id: I5133ff2ba4e030f9733fb3d050c863d72a22ae6b + +2018-03-16 10:19 +0000 [373e7e3fb0] 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 02:25 +0000 [bd926539b0] Corey Farrell + + * main/translate: Use ast_cli_completion_add. + + Change-Id: I0e2402660e54d91f74ab0804c62a5b1925577413 + +2018-03-17 02:00 +0000 [d202b56a74] Corey Farrell + + * main/taskprocessor: Use ast_cli_completion_add. + + Change-Id: Ie5f812a988ed811fd11967151932de62bc131b48 + +2018-03-17 00:51 +0000 [18cbfcf4f0] 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-15 15:06 +0000 [d57b58f5e9] Corey Farrell + + * main/config: Use ast_cli_completion_add for reload completion. + + Change-Id: Ia3fa4c03f2285a1ec8814bbe7f4624ead9111ad1 + +2018-03-17 04:31 +0000 [34e16cbf3a] Corey Farrell + + * main/bridge: Use ast_cli_completion_add. + + Change-Id: I3775a696d6a57139fdf09651ecb786bcf1774509 + +2018-03-17 16:41 +0000 [98a3baca70] 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:54 +0000 [7b40605d8e] 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 [06ba605988] 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 [0f634c1446] 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-05 06:50 +0000 [c0c537c1d3] Alexander Traud + + * BuildSystem: In NetBSD, the Python Programming Language is python-X.Y. + + ASTERISK-27717 + + Change-Id: If90ddf9c396c32e7402a894f42dce215c30049d1 + +2018-03-16 09:53 +0000 [afcd1dd8e5] 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:17 +0000 [5b80e97fff] 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 [d5af24bb14] 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-02-27 03:01 +0000 [69463c612d] 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-15 09:32 +0000 [a7ebb9409d] Corey Farrell + + * main/cdr: Use ast_cli_completion_add for CDR channel completion. + + Change-Id: Ie81830647a23aad61c1162583b6d50adbe6e7822 + +2018-03-15 08:19 +0000 [5ac64a4464] Corey Farrell + + * main/ccss: Use ast_cli_completion_add for core id. + + Change-Id: I44b25d6d24c7d9bc1bb38a50774b38883162f98f + +2018-03-12 10:24 +0000 [e04be32fc5] Alexander Traud + + * install_prereq: Add Arch Linux. + + ASTERISK-27738 + + Change-Id: I7ca620e3c4dfb4b064a19382c4915aeb42a2a09f + +2018-03-15 04:49 +0000 [eb699f3631] Corey Farrell + + * core: Backport compatible MALLOC_DEBUG changes. + + * Add support for MALLOC_DEBUG and DEBUG_CHAOS to be used together. + * Add utils/astmm.c to .gitignore. + * Fix MALLOC_DEBUG variant of __ast_vasprintf. This function called + va_end(ap) upon allocation failure. This is incorrect since ap is + passed as an argument. + + Change-Id: I9f27ced4ce3cbe4b39547a67f994fdff491978c0 + +2018-03-15 07:29 +0000 [7e0c56f800] Corey Farrell + + * astobj2_container: Use ast_cli_completion_add for container names. + + Change-Id: I4f0fc09e820eb8d8da2354a177dbcf503c56ddd1 + +2017-12-09 04:52 +0000 [7e041d6233] Corey Farrell + + * main/channel: Use ast_cli_completion_add for channeltypes. + + Change-Id: Ia845fae6a84801cc7d9996767b99efb2753cbb48 + +2018-03-14 12:38 +0000 [6539b89254] 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 [96eaabd920] Ross Beer + + * res_pjsip_rfc3326.c: Account for more than one 'Reason' header + + ASTERISK-27741 + + Change-Id: I0aa59a54735c6d20b95c54db1bd095dbf93e7adf + +2018-03-12 08:10 +0000 [b237ef7f27] Alexander Traud + + * install_prereq: Add SUSE. + + ASTERISK-27736 + + Change-Id: I4cafc8973349d50a7cb7919ddf0bb1aaef4bfc3e + +2018-03-13 16:37 +0000 [dc738b145f] 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 [7533d25e8d] Alexander Traud + + * BuildSystem: Enable IMAP storage on openSUSE and Arch Linux. + + ASTERISK-27734 + + Change-Id: I8d6e6a1c08c031649764f5277fbbb85e57c3a9d4 + +2018-03-12 04:22 +0000 [09c43fdc1a] Alexander Traud + + * res_srtp: Add support for libsrtp2.x on openSUSE. + + Since ASTERISK-26976, libSRTP 2.x can be used for sRTP. However, that change + added a private header which is not available on openSUSE for example. To + remain compatibility with very old libSRTP versions, the affected/missing + symbols AES_128_ICM and HMAC_SHA1 are defined manually. + + ASTERISK-27733 + + Change-Id: I25c5cb8fa966043d1506ebef449e5a724412b4b6 + +2018-03-10 03:33 +0000 [c09a10bb1b] 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. + + Change-Id: Iecc2df98008b21509925ff16740bd5fa29527db3 + +2018-03-08 09:14 +0000 [bd6e0b1a72] Alexander Traud + + * BuildSystem: Add NetBSD. + + Headers, libraries, and rpath. + + ASTERISK-27728 + ASTERISK-11015 + Reported by: Curt Sampson + + Change-Id: I50aa5fcd095937df32a2e33307caac7e79a8b5b7 + +2018-03-09 03:23 +0000 [ba88af8a25] 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 [c227462370] Alexander Traud + + * BuildSystem: Enable dladdr on non-Linux platforms like FreeBSD. + + ASTERISK-27641 + + Change-Id: I587e8ba0123c70fc10cfd8b0ac3299551f61d84b + +2018-03-07 13:50 +0000 [9ae427c7fd] 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:05 +0000 [57e8754a3a] Alexander Traud + + * install_prereq: Add NetBSD. + + ASTERISK-27729 + + Change-Id: I7a706d51375d54cf5e36d32397bfe09a48670804 + +2018-03-08 09:04 +0000 [0d70a9a006] 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:32 +0000 [7b6b6b0a7e] 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 [54874eb44d] 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 00:29 +0000 [b81eadcefc] 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 [342aec5980] 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 19:08 +0000 [0597e72e1d] Sungtae Kim + + * voicemail: Fixed wrong voicemail message count + + Fixed wrong voicemail mailbox reference for Action: VoicemailUsersList. + + ASTERISK-27703 + + Change-Id: I99bfec14bd4ae475b0fa1fac5a7992f3e2e8d64a + +2018-02-14 07:33 +0000 [a35a654a52] 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-03-06 13:31 +0000 [ecff05d51c] Ross Beer + + * res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints + + ASTERISK-27554 + + Change-Id: If61c7faab7d2fa1031c056ed6268fe928e2391cf + +2018-03-07 09:32 +0000 [725fd32428] 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-05 08:01 +0000 [93df498f4e] 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 [44dbb8251d] Alexander Traud + + * BuildSystem: Depend not implicitly but explicitly on external libraries. + + ASTERISK-27722 + + Change-Id: Ie7b8c30d86cb00a54d6ac4e09e6f28f42d2bd52c + +2018-03-05 08:15 +0000 [2d63c185f0] Alexander Traud + + * res_http_post: Enable GMime in NetBSD. + + ASTERISK-27719 + + Change-Id: I230c5f9f316b2e9465c093c13580f72ebbaf67a7 + +2018-03-05 04:16 +0000 [0af1446d6e] Alexander Traud + + * BuildSystem: Enable autotools in NetBSD. + + ASTERISK-27716 + + Change-Id: I52525e35e1620341272219911d054a1e3d3ec01e + +2018-03-05 03:42 +0000 [95ecbaa6b8] 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 [7b5e0960ef] 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 [6b899b2849] Alexander Traud + + * BuildSystem: Cast any intptr_t explicitly to its proposed type. + + ASTERISK-27713 + + Change-Id: I90c769e3c7f8c26de8a3af11335862cec15a1b22 + +2018-03-03 06:56 +0000 [98e8e849da] 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 [8348862103] Alexander Traud + + * BuildSystem: Avoid re-defining of pthread_* on NetBSD. + + ASTERISK-27711 + + Change-Id: Idc9194035b2958b99f6b01eb5b438d45a074565b + +2018-03-02 07:05 +0000 [47d45ba025] Alexander Traud + + * BuildSystem: Install init scripts on openSUSE Tumbleweed. + + ASTERISK-27710 + + Change-Id: I4c777e41b31d4415bbe21cb435ad47b43ebb5467 + +2018-03-02 05:12 +0000 [4035582b64] Alexander Traud + + * BuildSystem: Avoid == for comparison in ./configure. + + ASTERISK-27709 + Reported by: John Nemeth + + Change-Id: I11b1ae8fd404c04066f1458f5d71f9536359d58d + +2018-02-27 15:40 +0000 [104468ad3a] 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:49 +0000 [41894965f2] Corey Farrell + + * gitreview: Reorder and add padding. + + Change-Id: I459dc320a8c9452a01eed6f403d786741587c890 + +2018-02-23 21:24 +0000 [bb973aeceb] 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 [68df9e609e] 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-23 10:09 +0000 [caad0c09cd] 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 [3e5864bcc8] 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-22 11:11 +0000 [ffb15b2bc7] Kevin Harwell + + * AMI: Bumping AMI non-breaking number for Asterisk 13.20.0 release + + A few changes were made to AMI: + + * Fixed "(null):" header in AMI AsyncAGIEnd event + * A mute header was added to the ConfbridgeJoin AMI event + * ConfbridgeList action's ConfbridgeList events now output all + the standard channel snapshot headers + + Change-Id: I94a82a44b02c91becae08d254e9a56abba5697cf + +2018-02-17 03:28 +0000 [05fc37bbc2] 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:46 +0000 [220accb461] Sean Bright + + * modules: Set deprecated modules to not build by default + + Change-Id: I09090f70224866aead6b3207fa784cfefea7d539 + +2018-01-31 13:37 +0000 [05af43b240] 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 [c5dc2fb4ab] 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 [5947fd148b] 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 [a780386dbb] 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-07 08:09 +0000 [de5df002a0] 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-02-20 10:33 +0000 [4da0e19b89] 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 [cacb72f5ae] 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-18 10:27 +0000 [5ebc94da02] Sean Bright + + * res_http_websocket: Don't leak memory on read failure + + Change-Id: Ic449ea832bc81a1671c0e910c5fbe8c683e3da89 + +2018-02-19 04:21 +0000 [9325de11f8] 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-19 03:57 +0000 [e532b982b3] 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 [9c8763e4d2] 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 [1a7ad4c9cf] 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 [6eb22964ba] 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 [27d28116d9] 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 [9ad9433257] 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:44 +0000 [c5e34f0794] 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 + + ASTERISK-27684 + + Change-Id: I26bdcb0a1d0e484a8dad1052da97f194aefd3370 + +2018-02-16 12:30 +0000 [88ec9be78a] Alexander Traud + + * BuildSystem: Allow newer autotools on OpenBSD. + + ASTERISK-27683 + + Change-Id: I5ec9dafbb0c16b6f2740c641980bc2eaaf995624 + +2018-02-16 07:52 +0000 [0ba6337d32] Alexander Traud + + * BuildSystem: Fix a typo related to ./configure --prefix= on OpenBSD. + + Reported by: Stuart Henderson + + Change-Id: Ieae8624f48b6ae78cf29930b9a45a3c842c7a764 + +2018-02-16 06:41 +0000 [58aa0d1014] Alexander Traud + + * BuildSystem: Enable IMAP storage on OpenBSD. + + ASTERISK-27681 + Reported by: Stuart Henderson + + Change-Id: Ifb6b614acb251b695b9417d76510e73eb335b679 + +2018-02-16 05:58 +0000 [139dd38193] Alexander Traud + + * res_calendar: Specialized calendars depend on symbols of general calendar. + + ASTERISK-27680 + + Change-Id: Ifb77912e424fe3710a025c18526fada673ec0b79 + +2018-02-16 05:02 +0000 [94ff290361] Alexander Traud + + * BuildSystem: Enable system provided libedit on OpenBSD. + + ASTERISK-27677 + + Change-Id: I0854e3616d1361ae9b6907d3d3444a02784ac62b + +2018-02-15 14:30 +0000 [48acd5cd26] 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 [54efc0c637] 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:48 +0000 [4a5221cd43] Alexander Traud + + * BuildSystem: Remove chan_h323 leftovers. + + ASTERISK-27670 + + Change-Id: I07a8ef8bbd6001e25711fa1bff152eb6c9efa729 + +2018-01-17 08:17 +0000 [eabe72a679] 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 + +2018-01-28 03:02 +0000 [c2283fca21] Alexander Traud + + * BuildSystem: Do not warn when bash is not installed. + + ASTERISK-27631 + + Change-Id: Iefdf268b0b98c3e7d8089ba87cf78136ac1d785b + +2017-11-16 12:57 +0000 [4e5d5b2ce2] Corey Farrell + + * main/asterisk.c: Remove silly usage of RAII_VAR. + + Change-Id: I7e2996397fbd3c3a6a69dd805c38448ddfc34ae9 + +2018-02-11 15:27 +0000 [ba63dad12d] 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-01-30 20:31 +0000 [6c72c22d51] 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 [0ab97e9774] 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 [81bec7c359] 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-01-30 09:58 +0000 [b1c6a644d3] 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 [21bd7421ef] Alexander Traud + + * install_prereq: Update Debian/Ubuntu libraries. + + ASTERISK-27555 + + Change-Id: Idc36e91db30c0163c560d04c5a82bca5d6ce92a8 + +2018-02-09 12:06 +0000 [dcfcf310a1] 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 + +2017-12-19 02:52 +0000 [0fc3e831a7] 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:20 +0000 [da987df122] 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-01-31 17:48 +0000 [1ff580bb25] 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 [0cf7a9e0ca] Richard Mudgett + + * app_confbridge: Add the Muted header to ConfbridgeJoin AMI event. + + ASTERISK-27651 + + Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34 + +2018-02-02 17:35 +0000 [1adf90320d] 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 15:11 +0000 [93a1ffc834] Richard Mudgett + + * res_pjsip.c: Fix documentation typos. + + Change-Id: I82ae0b92bfa2ece84a5c684efd9eefdc83ebd068 + +2018-02-02 15:43 +0000 [5d16cefd63] Richard Mudgett + + * res_sorcery_realtime.c: Fix ref leak if object failed to apply. + + Change-Id: I3c7106ff77009754725cee790eadf5da44154ab6 + +2018-01-24 19:58 +0000 [dd9690f68c] 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 [8125b825d3] Joshua Elson + + * res_pjsip_mwi.c: Fix null pointer crash + + ASTERISK-27652 #close + + Change-Id: I78a0d38bfd8d0d82830f3d53da04872d6b67284d + +2018-02-01 15:03 +0000 [09edcd93aa] Sean Bright + + * appdocsxml.xslt: Add Language to channel snapshot transformation + + Change-Id: I8f494b0c895a69b8bc94656d0c6ceebecb0394d8 + +2018-01-31 15:40 +0000 [665444b772] 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 [ef1aeb9437] 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-28 10:10 +0000 [7debdd285c] 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-31 15:15 +0000 [698b28e9c7] Corey Farrell + + * res_pjsip_registrar_expire: Mark module deprecated. + + The functionality of this module was already moved to + res_pjsip_registrar, mark it deprecated and add message to CHANGES. + + Change-Id: I90c7d52c7e15e85fde3389d5eaccb05b97848813 + +2018-01-30 19:22 +0000 [6520489952] 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 [4a337b1a76] 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 [2c4dde0ed0] 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 [4c8c0e4c22] 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-29 13:46 +0000 [5b699c812e] 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 10:20 +0000 [967c70acb5] 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 [dd6b8cd0b2] 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:16 +0000 [8daed642c7] 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 + + ASTERISK-27599 + Reported by: Said Masoud + + Change-Id: I05bb0af98ae532b2d5f37478e38b8f0762b1c035 + +2018-01-28 05:20 +0000 [f59fb7fec8] 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 [154bccf147] 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 [4bb38022ea] 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 [021168f06f] 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 [e998c906a7] 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 [87f8459410] Richard Mudgett + + * Update sounds release to fix siren7 and siren14 files. + + ASTERISK-16172 + + Change-Id: I2fb564258cd4db0f35952ad48b8687355c2dcad3 + +2018-01-15 11:08 +0000 [6b771e346b] 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 [7ad6792011] Alexander Traud + + * install_prereq: Download latest Jansson. + + ASTERISK-27603 + + Change-Id: I65c587534c0ae364f063d68da1bed40bb3d5e8aa + +2018-01-18 20:19 +0000 [85b384728c] 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-22 09:18 +0000 [420586beab] Alexander Traud + + * res_config_mysql: Avoid the header mysql_version.h. + + ASTERISK-27607 + + Change-Id: I23d00ded955c4afd5f2c3c9dc96dcb48b3f74eec + +2018-01-05 14:46 +0000 [d5a24cfdf7] 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 [31e5008b47] Alexander Traud + + * BuildSystem: Remove AC_CONFIG_AUX_DIR. + + ASTERISK-27602 + + Change-Id: I9f4d3d2bc1481748e39ad1e2b0a364d38e38978b + +2018-01-19 12:21 +0000 [ffb7b62019] Alexander Traud + + * BuildSystem: Remove orphaned .PHONY targets. + + Change-Id: Ic44d75141b9bf99e7d72fcc82ee111b5cf6989d2 + +2018-01-19 12:14 +0000 [3b566fc8ec] Alexander Traud + + * BuildSystem: Allow make clean all again. + + ASTERISK-27600 + Reported by: Hamid R. Hashmi + + Change-Id: I683d14d024650be04074b037b6300464519409f4 + +2018-01-19 06:19 +0000 [f20a522d43] Alexander Traud + + * install_prereq: Update Debian/Ubuntu libraries. + + ASTERISK-27555 + + Change-Id: Ieb41b0cbf968af12882b39454b819ebb48b9ea46 + +2018-01-19 04:46 +0000 [1fbca9a40d] 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 [d5bcbd460e] 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 [b353c90627] Sean Bright + + * res_pjsip: Document tlsv1_1 and tlsv1_2 methods + + Change-Id: I67ed9039bf3f132fb20ee7a750e0aef0f704d7d3 + +2018-01-08 23:50 +0000 [1488efb3a8] 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-12-27 17:44 +0000 [0b399013c6] 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 [22edb10c44] 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 [9ffa1f4301] 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 [de65fd11fe] Alexander Traud + + * BuildSystem: Invoke install not in GNU but POSIX style. + + ASTERISK-27594 + + Change-Id: Iaaa6a19d2fe031dffcba441d0502a7ea65c93cb3 + +2018-01-17 06:47 +0000 [72845d54f0] Alexander Traud + + * BuildSystem: In OpenBSD, xmlstarlet is xml. + + ASTERISK-27593 + + Change-Id: I1c7087f7f7582e40b3312c690d912c9a86466805 + +2018-01-17 02:51 +0000 [985834607b] 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 + +2018-01-16 08:32 +0000 [1bbd9f4a47] 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 [fbd0667c84] 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 [637bd26575] 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 [b0a78bdc3e] 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 + +2018-01-15 01:41 +0000 [c0a4a939cc] Yasuhiko Kamata + + * chan_sip: 3PCC patch for AMI "SIPnotify" + + A patch for sending in-dialog SIP NOTIFY message + with "SIPnotify" AMI action. + + ASTERISK-27461 + + (created patch for 13 branch manually due to merge conflict) + + Change-Id: I255067f02e2ce22c4b244f12134b9a48d210c22a + +2018-01-13 13:49 +0000 [948b852f48] 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 [f01bac230d] 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 [97b574c927] Corey Farrell + + * menuselect: Remove unused dev-mode option TRACE_FRAMES. + + ASTERISK-27575 #close + + Change-Id: Ica3a522892afed7a96816a5ecf140e1671f46ad4 + +2018-01-12 03:50 +0000 [f07b0df627] 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 [659c44f5fb] 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 [45008c604d] 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 [d53a312a03] 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:17 +0000 [1d625a7428] Alexander Traud + + * install_prereq: Update Debian/Ubuntu libraries. + + ASTERISK-27555 + + Change-Id: I0818b6e42631be1b69237e2b41d3415275693e53 + +2017-12-22 19:50 +0000 [f35960d55b] 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-11 08:09 +0000 [90b2dc1450] 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 [608112ced3] Corey Farrell + + * stasis: Remove silly usage of RAII_VAR. + + Change-Id: Ib11193531e797bcb16bba560a408eab155f706d1 + +2018-01-09 11:16 +0000 [b7c25740fa] Corey Farrell + + * stasis_bridges: Remove silly usage of RAII_VAR. + + Change-Id: I0fa7ab05454f183dc4ff10e26d18776d2b0fcf1f + +2018-01-03 17:26 +0000 [2e09ed3b18] 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 [dd6dee7e50] 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 [96040fa6bb] 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 [a8a2f39f04] 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-09 11:10 +0000 [dedf0ff2bf] Corey Farrell + + * stasis_cache: Remove silly usage of RAII_VAR. + + Change-Id: Ifa95e5801c949df296c7e4376347730fb0ed52ef + +2018-01-09 11:09 +0000 [8a6b3537b1] Corey Farrell + + * stasis_cache_pattern: Remove silly usage of RAII_VAR. + + Change-Id: Ic98a51f555062cd863b6db3f8d76065943a9dea3 + +2018-01-09 10:57 +0000 [909e642918] Corey Farrell + + * stasis_endpoints: Remove silly usage of RAII_VAR. + + Change-Id: Ic099dc552f36c353c89783a4bcfd09f010432733 + +2018-01-09 10:55 +0000 [bd11159dbc] Corey Farrell + + * stasis_message_router: Remove silly usage of RAII_VAR. + + Change-Id: I50d6ae230920e0b878ed9cc8f79eef746e06701d + +2018-01-09 10:53 +0000 [975a38e524] Corey Farrell + + * stasis_system: Remove silly usage of RAII_VAR. + + Change-Id: Iedbe5656cee68cd3a96a953558764aa02d4a0c3b + +2018-01-05 05:51 +0000 [b45fb3a6ec] 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 [1da8846ca7] Sean Bright + + * Revert "codec_opus: Make libcurl a dependency in menuselect" + + This reverts commit 028f4320de60a204e457ad606ab0a3318493b431. + + Change-Id: Ieb91f825cb55202a937f5361c01d356e7662b70c + +2018-01-08 18:47 +0000 [c67eb7031b] 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 [17480f6ea4] 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-07 20:21 +0000 [c1acc4f364] 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:58 +0000 [da1a9f392a] 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 [aa52c52b21] 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:42 +0000 [9865e689d2] 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-06 06:45 +0000 [a68da30069] 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 [e60135efd4] 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 [ba57c03740] 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 [0feca9bc18] 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 [440fb4d02b] 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 [dda0ab236d] Alexander Traud + + * chan_ooh323: Limit outgoinglimit to positive values as intended. + + ASTERISK-27552 + + Change-Id: Ifbf9d51e7374ca2e8b27ec568f6770050fc1a854 + +2018-01-05 06:19 +0000 [c11999f140] Alexander Traud + + * ooh323cDriver: Fix typo in header guard. + + ASTERISK-27551 + + Change-Id: I39ff66031e3373e895e2bc47b23a5e860ea4e012 + +2018-01-05 03:36 +0000 [cee6de4e63] Alexander Traud + + * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf. + + ASTERISK-26046 + + Change-Id: I48f05698c235f709225b92bec5aa260fb57d69d1 + +2018-01-04 16:07 +0000 [0f141351f9] 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. + + Change-Id: I0693af921fdc7f56b6a72a21fb816ed08b960a69 + +2018-01-04 09:30 +0000 [d73a3a1764] Corey Farrell + + * res_pjsip_history: Add missing unlock to CLI command. + + Change-Id: I872060a30543776a176a316309602d924a23eb29 + +2018-01-04 09:27 +0000 [ec74570598] Corey Farrell + + * aco: Fix NULL dereference in error path. + + Change-Id: Id505167cf0f9414a3c144fa2c1e181a2cf288694 + +2018-01-03 19:07 +0000 [74b6fafbe6] Corey Farrell + + * func_odbc: Add missing unlock's to acf_odbc_read. + + Change-Id: I828329ecbd252ae8f27a369a046d2b03102b07c6 + +2018-01-03 10:41 +0000 [d25a9bc7d3] 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 [00b0c67144] Tzafrir Cohen + + * cdr: submit: fix logic of test for batch mode + + ASTERISK-27539 #close + + Change-Id: I33cdf329d2bb4486dcae975c450f6aae94c515f7 + +2018-01-02 00:26 +0000 [dd528c53c0] Corey Farrell + + * aco: Add missing aco_option_type_string for OPT_TIMELEN_T. + + ASTERISK-27117 + + Change-Id: I8f6c34bb30830be9f7a40823723eb4dcaaa91c61 + +2017-12-29 22:59 +0000 [5b395a7b97] 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) + * named_acl + + Change-Id: Ide4c1449a894bce70dea1fef664dade9b57578f1 + +2017-12-31 10:26 +0000 [d2c836d24a] 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 [b275b0a84f] 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-28 13:27 +0000 [751fd9b628] 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 [bae301c18c] 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 [5de8f49294] 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. + + * Cached the effective connected line party id so it doesn't get + calculated four times. + + Change-Id: I004c4c4f9e7b40ef55035c831702721bec82496c + +2017-12-27 22:36 +0000 [9f1cfbafca] 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 [eead5d0c30] 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 [0bdddbe526] 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-25 20:39 +0000 [d62c87bb8d] Corey Farrell + + * cdr: Missing NULL check and unlock. + + * handle_dial_message: Missing a check for NULL peer. + * ast_cdr_register: Missing unlock on allocation failure. + + ast_cdr_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 [92fb393cab] 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 [53799318bc] 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 08:14 +0000 [ce3d56920b] Sean Bright + + * Remove as much trailing whitespace as possible. + + Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0 + +2017-12-21 09:51 +0000 [b4ae112e3a] 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 [719e8eee03] 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 [6892c13a2c] Sean Bright + + * docs: Remove old API changes documentation + + Change-Id: I1bc7957121cc7ae27dca04acc3613f4e1858476a + +2017-12-20 11:14 +0000 [82b6ba976f] 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 [4f45748f52] Richard Mudgett + + * manager.h: Bump AMI version + + Change-Id: I62e6ddeb261ef012687e1fb6734c554e2499b6bf + +2017-12-20 00:53 +0000 [6b3188fb8c] Corey Farrell + + * app_festival: Fix fd leak on connection failure. + + Change-Id: If5efaddcf735ff7d17e55c36cc1388946cee9e0f + +2017-12-20 10:23 +0000 [be3800c49d] 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 [d05ec48145] 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-18 20:12 +0000 [9adffca9c7] 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-19 14:15 +0000 [c38b750810] 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-16 07:51 +0000 [fef23297b7] 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 18:59 +0000 [0e5d8ad09b] 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-19 02:50 +0000 [fc86e58a5a] 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 15:36 +0000 [d6b2f457d9] 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-18 23:17 +0000 [381ed4f1cc] Corey Farrell + + * core: Fix multiple trivial issues in the core. + + * Fix small leaks in from error condition in translate.c. + * Check new file descriptor is less than 0, not less than or equal. + + Change-Id: Id7782775486175c739e0c4bf3ea5e17e3f452a99 + +2017-12-18 19:47 +0000 [67b5a4e616] 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 [3782230e00] 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-12-18 18:04 +0000 [1d636f4afa] 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 17:20 +0000 [5801917a75] Richard Mudgett + + * ast_json_pack(): Use safer json ref mechanism. + + Change-Id: I49204db2e57ae96eee43909c18ed007c09ac817e + +2015-11-11 16:52 +0000 [46ed7afdd9] Richard Mudgett + + * rtp_engine.c: Eliminate rtcp_report_to_json() RAII_VAR usage. + + Change-Id: I58a22c2ca82e91d7537409b7b3af2d735827a54d + +2017-12-18 12:23 +0000 [5cdc65cf1e] 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 [7f2df9e277] 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 [4cda942ebd] 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 [a368ad9229] 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 + +2017-12-15 10:26 +0000 [b3b7367e6b] 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-11 17:07 +0000 [8921b2581d] Corey Farrell + + * loader: Use vector to build apha sorted module lists. + + Change-Id: I9c519f4dec3cda98b2f34d314255a31d49a6a467 + +2017-11-21 00:28 +0000 [d5a7a98528] 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-11-20 23:10 +0000 [5e9d70ae5d] Corey Farrell + + * loader: Rework of load_dynamic_module. + + * Split off load_dlopen to perform actual dlopen, check results and log + warnings when needed. + * 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 [4de95d4bf0] 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 + +2016-10-06 01:29 +0000 [e3bd95f55c] 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-12 12:55 +0000 [501f4dcdd8] 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 [7413bcbeb5] 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 [8165115faa] 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-14 18:55 +0000 [8338f3ec14] 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-12-14 15:27 +0000 [85dec2ae4f] 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 [61e81338d9] 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 12:14 +0000 [62e743e6a7] 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 [74073c395b] 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 [a1fcb7b5a6] 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 [6d290f1880] 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 [dd72844e4d] 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-11-30 10:12 +0000 [5705e8ae0e] 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-06 08:24 +0000 [7a68faeb1d] 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 15:38 +0000 [7ffc41d19f] 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 [e1a358a6e4] 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 [ce2c89ce68] 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 [6632f61153] 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 [73b3390dbe] 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 [ca448bf150] 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 [d9b932a455] Sean Bright + + * res_pjsip: Assign support levels to a few modules + + Change-Id: I51f6945c4023cb93fc7b87be5ab4c50e9e6ee27d + +2017-12-09 00:35 +0000 [4decf4e492] Corey Farrell + + * CLI: Fix 'core show sysinfo' function ordering. + + Handle CLI initialization before any processing occurs. + + Change-Id: I598b911d2e409214bbdfd0ba0882be1d602d221c + +2017-12-08 12:04 +0000 [28eddc7ea6] Richard Mudgett + + * stasis_channels.c: Don't set channel snapshot caller_dnid twice. + + Change-Id: Ib8d45bbdfbda81e65045f6dff874d189b74e5471 + +2017-12-11 09:45 +0000 [028f4320de] Sean Bright + + * codec_opus: Make libcurl a dependency in menuselect + + ASTERISK-27475 #close + + Change-Id: If7384bc6ed002ef140dec69798d14c52b7cfd800 + +2017-12-08 12:48 +0000 [4838557132] 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 [a4b291029f] 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 [9fc4f10e0e] 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 [c3bc44fa1b] Sean Bright + + * pjsip_configuration: Add correct file header + + Change-Id: I25348c386a222bb704aff07f54375108a6402906 + +2017-12-07 09:52 +0000 [f726f11974] 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:41 +0000 [3d79c34350] 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 [ecdccb8071] 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 [f20ab2b65f] 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-07 10:35 +0000 [5a0dcd9275] Corey Farrell + + * CLI: Fix remote console completion. + + Duplicate checking was done incorrectly when parsing completion options + from a remote console causing all options to be ignored as duplicates. + Once fixed I had to separate processing of the best match to ensure it + was not identified as a duplicate when it is the only match. + + ASTERISK-27465 + + Change-Id: Ibbdb29f88211742071836c9b3f4d2aa1221cd0f9 + +2017-12-06 23:35 +0000 [2691ee68ce] Corey Farrell + + * translate: Skip matrix_rebuild during shutdown. + + Change-Id: I1e5eef4029cba56e33d786c5a5ade8091e531a1e + +2017-12-06 14:49 +0000 [db6602f6f7] 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-06 12:42 +0000 [289549d659] 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-05 18:04 +0000 [f59a75c6fa] 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 07:36 +0000 [93859f9aca] 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 [aacdbdcfd2] 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 [594faa192d] 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-12-04 03:40 +0000 [e7201c93cc] 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-11-30 12:50 +0000 [9330eacc50] 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 [e819cf7826] 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 [64942276d1] 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-03 18:49 +0000 [41c14fd807] 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 [f5cfd87c4a] 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-12-01 16:18 +0000 [ef25628b10] Corey Farrell + + * README-SERIOUSLY.bestpractices.txt: Convert to markdown + + Follow-up to conversion of README.md. + + Change-Id: I17ee7cf25bc027ece844efa2c1dfe613aff1e35b + +2017-11-30 14:38 +0000 [0cdd31ee10] 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 + +2017-12-01 10:01 +0000 [6635ddc819] 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 [077ceacd48] 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 [dac70daf1b] 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-17 10:38 +0000 [6274e58a25] Corey Farrell + + * autoconf: Use m4 conditionals where possible. + + Change-Id: I530c0a72f965437acef6a9a4fbfe5c487f078b65 + +2017-11-17 09:15 +0000 [635fe8ec87] 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-26 11:47 +0000 [c46cab49a3] 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 [81e2d8aa9a] 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 [0f719aa051] 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 [8dd9a79e6e] Richard Mudgett + + * features.conf.sample: Clarify ActivatedBy documentation wording. + + Change-Id: Id2899331fe05d1909a862ea879742879d086bc64 + +2017-11-22 18:37 +0000 [a78d747ee8] Corey Farrell + + * Add defaultbranch to .gitreview. + + This will cause `git review` to post changes to the branch it is based + on instead of always using master. The defaultbranch setting should be + updated when new major branches are created. + + Change-Id: I3db009217c5ae399fb84bee95076f4dbb7fa52d2 + +2017-11-22 18:43 +0000 [d6568aa72a] 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 [5abab0a34c] 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 [6ebe03d4b3] 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 [2bff38b8a8] Corey Farrell + + * res_parking: Make load_pri explicit. + + res_parking has an implicit load_pri of 0 meaining it's one of the very + first modules loaded after modules with global symbols. Set it + explicitly in the AST_MODULE_INFO block. + + Change-Id: I297b6fb3ff6993ec004e667b22a74f5925906259 + +2017-11-21 09:16 +0000 [c6e1e6e968] 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 [e9ba6a6b88] Corey Farrell + + * CLI: Finish conversion of completion handling to vectors. + + Change-Id: Ib81318f4ee52a5e73b003316e13fe9be1dd897a1 + +2017-11-07 15:34 +0000 [26a400c67a] 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 [e723331f4f] 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 [e07d94111d] 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 [8a63f4e709] 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 [115f53a0fb] 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 [41498dcb5d] Alexander Traud + + * chan_sip: ICE contained square brackets around IPv6 addresses. + + ASTERISK-27434 + + Change-Id: Iaeed89b4fa05d94c5f0ec2d3b7cd6e93d2d5a8f7 + +2017-11-19 21:23 +0000 [84fd41729e] 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 [df6161b70e] Corey Farrell + + * cli: Remove silly usage of RAII_VAR. + + Change-Id: I81aacfee7cd26e4fc5eef07bca582700c2975bd7 + +2017-11-16 13:19 +0000 [1e2b38adf5] Corey Farrell + + * ccss: Remove silly usage of RAII_VAR. + + Change-Id: I5ce40035e0a940e4e56f6322c1dcd47fbd509b98 + +2017-11-16 12:51 +0000 [ddc86ec664] Corey Farrell + + * app: Remove silly usage of RAII_VAR. + + Change-Id: Ideb594f7aae134974fb78d5477ba0853b97b8625 + +2017-11-16 12:19 +0000 [0e90d74604] Corey Farrell + + * aoc: Remove silly usage of RAII_VAR. + + Change-Id: I07907f833b81aeb0128bc9442a2abb52679c7511 + +2017-11-16 12:55 +0000 [746dd80eab] Corey Farrell + + * abstract_jb: Remove silly usage of RAII_VAR. + + Change-Id: I9d56175369363d1dc735504cf78a3a5577069f49 + +2017-11-20 12:54 +0000 [8971a7ff3c] 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 13:08 +0000 [9d688cf12c] 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 09:49 +0000 [50cb5199c1] Alexander Traud + + * BuildSystem: pjsip_evsub_set_uas_timeout was not used. + + ASTERISK-27435 + + Change-Id: Id318a7ae6d7d69b53f911d30bf3eece64852f15c + +2017-11-19 13:52 +0000 [6a5ab65c88] 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 [366cc259bc] 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-19 09:57 +0000 [69113388e9] 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-18 21:13 +0000 [5fe2e7bfdc] 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 [d68e54b7ab] 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 [0f270cbe9e] 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:29 +0000 [3dca4c7742] 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-17 19:36 +0000 [5f0b4a1645] 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 [a369bfc4b2] 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-16 02:47 +0000 [6b0963c42a] 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 09:57 +0000 [3c72064d3f] 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 [455b1bdeb0] 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 [549542e50e] 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 11:02 +0000 [2852dac480] Corey Farrell + + * acl: Update logger message to match 15+. + + This patch causes a logger message to be the same as it is in 15+. This + will allow a follow-up patch to be cherry-picked to all 3 branches. + + Change-Id: Ic0665a3d49987e4eb6df28dcd9e90b1c3ca191e0 + +2017-11-07 17:07 +0000 [0b8b153d3c] 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-16 09:04 +0000 [0a7bbb068b] 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 [69055724ce] 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 [60cfe00c4e] 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 [db2677133c] 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-11-09 19:58 +0000 [8a7dd5cc44] 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 [7f916d621a] 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 [7e874eae7a] 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 [062a4390ac] 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-10-16 07:36 +0000 [e7f8302d30] 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 + +2017-11-13 07:14 +0000 [c2dddb001a] 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 [b8209a1273] Corey Farrell + + * alertpipe: Correct documented return of ast_alertpipe_write. + + Change-Id: I4ea49c441890a81384144479dc93ab5a3989486d + +2017-11-13 16:20 +0000 [9c6d4ec022] 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 [b5f2779a23] 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 [e6ada55430] 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 [cf062303e3] 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. + + Patches against 13 and 15 have a compatibility layer needed to + maintain ABI that is not needed in master. + + Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79 + +2017-11-07 14:00 +0000 [2ad6210dd7] 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-10-30 22:09 +0000 [76e640bd53] 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 22:04 +0000 [b03d389bec] 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-11-11 13:01 +0000 [507d9b5f9e] 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 [bb2173275a] Richard Mudgett + + * frame.c: Make ast_frame_free()/ast_frfree() NULL tolerant + + Change-Id: Ic49d821ef88ada38a31bdd835b9531443c55d793 + +2017-11-10 07:06 +0000 [360d50d74c] 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 [211f5d8dd4] Corey Farrell + + * core: Remove disabled code. + + handle_quit has been disabled since 2003, remove it. + + Change-Id: Idc3aaa6c81676160547078f9b71e8aa43de2db18 + +2017-11-09 13:24 +0000 [d12be40750] 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 [32042c6c3c] Richard Mudgett + + * chan_pjsip.c: Fix uninitialized cause value on failure. + + Change-Id: I3f9dd3c31bd582e54a30381500077de2319d8cc3 + +2017-10-19 13:35 +0000 [4b3e03ae87] 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 [2b85799512] 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 [2faa3e3bab] 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 [16df0e9786] Corey Farrell + + * res_pjsip_pubsub: Fix multiple leaks on failure to append vectors. + + Change-Id: I68ece0073ea79667ca41eb10405f516f1d30d482 + +2017-11-06 18:12 +0000 [cf91dde509] Corey Farrell + + * res_pjsip_history: Fix multiple leaks on vector append failure. + + Change-Id: I41e8d5183ace284095cc721f3b1fb32ade3f940f + +2017-11-06 16:37 +0000 [7ad4c19b20] Richard Mudgett + + * res_pjsip_registrar.c: Fix named 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 named AOR lock to avoid the deadlock. + + ASTERISK-27391 + + Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364 + +2017-11-06 17:21 +0000 [c1a608f862] 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-05 22:06 +0000 [d95bfcd013] 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-07 06:56 +0000 [ec58521a48] Richard Mudgett + + * res_pjproject.c: Fix ast_strdup() alloc failure. + + Change-Id: I74688038e7afe3a279359cce53aadb28ade51ead + +2017-11-06 17:55 +0000 [69af7eb663] Corey Farrell + + * res_pjsip_outbound_registration: Fix leak on vector add failure. + + Change-Id: I774b88b3c9da41edd4dc8d78f095481f52f2bd46 + +2017-11-06 17:44 +0000 [4f75655cb6] 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:33 +0000 [8cdc0ef385] 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 [e4fba95022] Corey Farrell + + * res_pjsip: Fix leak on error in ast_sip_auth_vector_init. + + Change-Id: Ib0fc7a18f3135ca8990c3984c9e15f6d26e556e8 + +2017-11-06 17:17 +0000 [b96dd55add] Corey Farrell + + * res_pjproject: Handle error from adding to the buildopts vector. + + Change-Id: I076c7bd207c7989a23005395ce1735392657be65 + +2017-11-06 15:33 +0000 [3dc600ef84] Corey Farrell + + * stasis: Release object if vector append fails. + + Change-Id: I3e5cc669169aab6175ddfaf7486edeaeb4fdcfb1 + +2017-11-06 15:30 +0000 [fc041554c3] 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:10 +0000 [75539dbf2c] 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 [b4240bea6c] 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 [803dc3dee5] Corey Farrell + + * stasis: Remove silly use of RAII_VAR in stasis_forward_all. + + Change-Id: I46de4c968d40144d5b049966304ff66c1469fb65 + +2017-11-06 12:51 +0000 [0a0e2c4253] 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 [593f789563] Richard Mudgett + + * stasis_bridges.c: Fix off-nominal json memory leaks. + + Change-Id: Ib1181a36b317c86bff1ef2e44a17a0b1c73cfdc8 + +2017-11-06 10:29 +0000 [56e32ca355] 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 17:43 +0000 [6bc8af2433] Richard Mudgett + + * stasis_channels.c: Remove a very silly RAII_VAR(). + + Change-Id: I28b458b3c1a442c4ef0be7b4986a95ea4149e14f + +2017-11-03 16:14 +0000 [33d02f5090] 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 [9013415593] 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 [250c173cfb] 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-11-06 03:18 +0000 [7dd2b18e32] 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-06 03:21 +0000 [b5331af53b] 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-04 06:05 +0000 [5f4197735d] 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 [3bce5a9dfa] Richard Mudgett + + * Stasis/ARI: Fix off-nominal path json memory leaks. + + Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb + +2017-11-02 11:38 +0000 [675e50b903] Richard Mudgett + + * AOC: Fix AOC-S json memory leak. + + Change-Id: I3a1d40a41a8a7d00fa4a187de6a343a79155d3ef + +2017-11-01 18:04 +0000 [4ea61eef94] 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 [8ec2db7084] Richard Mudgett + + * res_stasis_mailbox.c: Fix leak of mailbox container. + + Change-Id: I7d33c1635713047e7d1597c9d882f7dc006d94b4 + +2017-11-03 10:35 +0000 [d3cfcc0da6] 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 [ffcb7e2a25] 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-10-30 17:30 +0000 [bfb0f27c87] 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-02 02:11 +0000 [7c35740ba1] 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 19:46 +0000 [73a5e9f0e9] 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-11-01 13:58 +0000 [d524ad523d] Sean Bright + + * pjsip_message_filter: Only do interface lookup for wildcard addresses. + + Change-Id: Ie083987e69dc43b6861671c218cacacc11b2072f + +2017-10-31 15:08 +0000 [a7c00707a5] 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-30 09:20 +0000 [1b535d8457] 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-30 00:32 +0000 [cee81b3c8b] 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 [8436f1d35a] 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 [987b16e8f9] 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 [2db97ee219] Richard Mudgett + + * app_voicemail.c: Fix compiler warning with IMAP build. + + ASTERISK-27181 + + Change-Id: Ic4468b49860bd7f67e922baf4c9e96828c184d17 + +2017-10-25 14:38 +0000 [ca7f3d297b] 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 [7385d1e017] 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 [3f7ad66245] 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-03-30 09:51 +0000 [4772849016] 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 13:42 +0000 [dfe00b80e7] 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-10-07 12:14 +0000 [23d05ebc49] Corey Farrell + + * hashtab: Use ast_free. + + A few places in hashtab use free instead of ast_free. + + Change-Id: I2ff089bad71640c03c3ce97f1b00fc962ef79427 + +2017-10-24 09:43 +0000 [c95ab4c1ce] 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 [5351e862ee] Alexander Traud + + * lpc10: Avoid compiler warning when DONT_OPTIMIZE/COMPILE_DOUBLE. + + ASTERISK-23556 + Reported by: Marcello Ceschia + + Change-Id: Ic27e88e0336a0d83877dc857938659dc5560b93c + +2017-10-23 13:44 +0000 [ec278955a3] Corey Farrell + + * main/Makefile: Remove rule for non-existant testexpr2. + + Change-Id: Ibb3e47f27a395d74d8c5263db015b05434f5969b + +2017-10-23 12:42 +0000 [6cec3149be] 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 [4a2575a107] 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 [b4cb0050bd] Richard Mudgett + + * app_agent_pool.c: Fix online documentation typo. + + Change-Id: Ib0bc95fd0ec288c78c313823254d7a84ebfc4429 + +2017-10-22 17:32 +0000 [07e17fd04f] 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 [c7a9a6ef0c] 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 [b57dcc8d9c] 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-18 13:41 +0000 [fb4ed70e62] 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 + errors have been ruled out. + + ASTERISK-24483 + + Change-Id: Iee900f20bdd6ee1bfe23efdec0d87765eadce8a7 + +2017-10-18 13:37 +0000 [216251abcb] Corey Farrell + + * res_pjsip_refer: Prevent unload except during shutdown. + + Prevent unload of the module as certain pjsip initialization functions + cannot be reversed. + + ASTERISK-24483 + + Change-Id: I94597ec8b8491f5af9c57bf66dbc3b078fe2d49d + +2017-10-18 12:04 +0000 [7dd7ca2858] Corey Farrell + + * chan_sip: Fix output of 'sip set debug off'. + + When sip.conf contains 'sipdebug=yes' it is impossible to disable it + using CLI 'sip set debug off'. This corrects the output of that CLI + command to instruct the user to turn sipdebug off in the configuration + file. + + ASTERISK-23462 #close + + Change-Id: I1cceade9caa9578e1b060feb832e3495ef5ad318 + +2017-10-06 10:51 +0000 [0a11097a22] Matt Jordan + + * res_corosync: Fix linking issue with Corosync 2.x + + At some point in time in the history of Corosync (certainly within the + 2.x branch), the corosync_cfg_state_track function was removed. + Unfortunately, the cfg library is only linked if this function is + present. Without the cfg library being linked to res_corosync, loading + of res_corosync will fail. + + This patch makes it so that detecting corosync's core libraries, + determined by the COROSYNC external library checks, links both the cpg + and cfg libraries with res_corosync. + + Change-Id: I674e9e1c8fea11c3bf81154aaa7c1fd43f945465 + +2017-10-06 15:55 +0000 [7f8c212e75] Richard Mudgett + + * cdr.c: Rename the Party A CDR container. + + * Rename the Party A CDR container from active_cdrs_by_channel to + active_cdrs_master. + + * Renamed the support functions associated with active_cdrs_master + appropriately. + + ASTERISK-27335 + + Change-Id: I6104bb3edc3a0b7243ce502e45e8832b0cff14f7 + +2017-10-02 17:42 +0000 [85723a9e50] Richard Mudgett + + * cdr.c: Add container to key off of Party B channel names. + + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is because of a n*m loop used when + processing Party B information. + + * Added a new CDR container that is keyed to Party B so we don't need such + a large loop when processing Party B information. + + NOTE: To reduce the size of the patch I deferred to another patch the + renaming of the Party A active_cdrs_by_channel container to + active_cdrs_master and renaming the container's hash and cmp functions + appropriately. + + ASTERISK-27335 + + Change-Id: I0bf66e8868f8adaa4b5dcf9e682e34951c350249 + +2017-10-10 07:42 +0000 [944e500e95] Tzafrir Cohen + + * declare optional openssl dependencies in moduleinfo + + Declare optional openssl dependencies in: + * res_rtp_asterisk.c + * tcptls.c + + ASTERISK-27328 #close + + Change-Id: I2636f1c05b8104b4fe6f36cce0ebd9a98b9c78ab + +2017-10-13 09:43 +0000 [dcbf61a31e] Alexander Traud + + * res_pjsip_session: Rewrite o= with external_media_address. + + PJSIP allows a domain name as external_media_address. This allows chan_pjsip to + be used behind a NAT with changing IP addresses. The IP address of that domain + is resolved to the c= line already. This change sets also the o= line to that + domain. + + ASTERISK-27341 #close + + Change-Id: I690163b6e762042ec38b3995aa5c9bea909d8ec4 + +2017-10-14 04:11 +0000 [85cada85d6] Guido Falsi + + * chan_dahdi: wrap include file which is not present on BSD systems in #ifdef + + The sys/sysmacros.h include file does not exist in BSD systems and + is not required to build this module there. + Since an "#if defined(__NetBSD__) || defined(__FreeBSD__)" section + already exist I moved that include line inside it's #else branch. + + ASTERISK-27343 #close + + Change-Id: Ibfb64f4e9a0ce8b6eda7a7695cfe57916f175dc1 + +2017-10-13 08:51 +0000 [89f11364f6] Corey Farrell + + * ast_bt_get_symbols: Prevent double-free. + + It's possible for bfdobj to be created but syms not created. If syms + was not allocated in the current loop iteration but was allocated in the + previous iteration it would crash. + + ASTERISK-27340 + + Change-Id: I5b110c609f6dfe91339f782a99a431bca5837363 + +2017-10-13 08:12 +0000 [114ed320ea] Alexander Traud + + * tcptls: NULL-check the parameter of ast_ssl_teardown before accessing it. + + This avoids a crash on stopping a chan_sip which failed to start its TLS server. + + ASTERISK-27339 #close + + Change-Id: I327fc70db68eaaca5b50a15c7fd687fde79263d5 + +2017-09-29 14:26 +0000 [a8c6c3bd7d] Richard Mudgett + + * cdr.c: Eliminated many calls to ao2_global_obj_ref(). + + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is we were getting the global config + to determine if we needed to log a debugging message. + + * Many calls to ao2_global_obj_ref() were just so we could determine if + debug mode is enabled. Made a global flag to check instead. + + * Eliminated many RAII_VAR() usages associated with the remaining + ao2_global_obj_ref() calls. + + * Added missing NULL checks for the returned ao2_global_obj_ref() value. + + ASTERISK-27335 + + Change-Id: Iceaad93172862f610cad0188956634187bfcc7cd + +2017-10-06 13:45 +0000 [b56fa63db8] Richard Mudgett + + * cdr.c: Defer getting ao2_global_obj_ref() until needed. + + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is we were getting the global config + even if we didn't need it. + + * Most uses of the global config were only needed on off nominal code + paths so it makes sense to not get it until absolutely needed. + + ASTERISK-27335 + + Change-Id: I00c63b7ec233e5bfffd5d976f05568613d3c2365 + +2017-10-05 18:08 +0000 [92c5cf3920] Richard Mudgett + + * cdr.c: Set stringfields only if they are different. + + The CDR performance gets worse the further it gets behind in processing + stasis messages. One of the reasons is we were repeatedly setting string + fields to potentially the same string in base_process_party_a(). Setting + a string field involves allocating room for the new string out of a memory + pool which may have to allocate even more memory. + + * Check to see if the string field is already set to the desired string. + + ASTERISK-27335 + + Change-Id: I3ccb7e23f1488417e08cafe477755033eed65a7c + +2017-10-05 18:03 +0000 [6393c106ca] Richard Mudgett + + * cdr.c: Fix setting dnid, callingsubaddr, and calledsubaddr + + The string comparisons for setting these CDR variables was inverted. We + were repeatedly setting these CDR variables only if the channel snapshots + had the same value. + + ASTERISK-27335 + + Change-Id: I9482073524411e7ea6c03805b16de200cb1669ea + +2017-10-11 06:04 +0000 [407b78504d] Torrey Searle + + * contrib/script/sip_to_pjsip: implement 'all' for allow/disallow + + when 'all' is specified in an allow or disallow section, it should erase + all values from the inverse section in the default config. E.G. + allow=all should erase any deny values from default config & + vice-versa + + ASTERISK-27333 #close + + Change-Id: I99219478fb98f08751d769daaee0b7795118a5a6 + +2018-02-21 19:00 +0000 Asterisk Development Team + + * asterisk certified/13.18-cert3 Released. + +2018-01-31 13:37 +0000 [b8f704a1c5] 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 [ad93b6a031] 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 [06acb4405e] 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 [bfa7b20040] 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-07 08:09 +0000 [6267846fab] 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-31 17:48 +0000 [8e170f5f18] 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 [37445bc69e] Richard Mudgett + + * app_confbridge: Add the Muted header to ConfbridgeJoin AMI event. + + ASTERISK-27651 + + Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34 + +2018-01-30 19:22 +0000 [4560752184] 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 + +2017-12-22 08:14 +0000 [6f65ebe76c] Sean Bright + + * Remove as much trailing whitespace as possible. + + Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0 + +2017-12-22 22:30 +0000 Asterisk Development Team + + * asterisk certified/13.18-cert2 Released. + +2017-12-20 16:17 +0000 [e99d0fe16b] 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-21 18:38 +0000 Asterisk Development Team + + * asterisk certified/13.18-cert1 Released. + +2017-12-13 14:26 +0000 [9571a75842] 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-01 16:18 +0000 [ffc2b0eb91] Corey Farrell + + * README-SERIOUSLY.bestpractices.txt: Convert to markdown + + Follow-up to conversion of README.md. + + Change-Id: I17ee7cf25bc027ece844efa2c1dfe613aff1e35b + +2017-11-21 09:16 +0000 [3948e9d616] 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-17 19:36 +0000 [5a204aac04] 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-12-13 13:23 +0000 [673d7d081e] George Joseph + + * Update for certified/13.18-cert1-rc3 + +2017-11-30 10:12 +0000 [10b3d4cea8] 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-07 17:51 +0000 [f493631fc6] 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-07 18:22 +0000 [733231905f] 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 [3585b56792] 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-05 18:04 +0000 [8640e5d819] 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-11-16 02:47 +0000 [aa967e1eda] 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-30 12:50 +0000 [23fae9b147] 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-11-30 14:38 +0000 [b205f05585] 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 + +2017-12-01 06:07 +0000 [4d4c76c189] 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-18 21:13 +0000 [86e12d7f37] 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 + (cherry picked from commit 5fe2e7bfdcd06935594823faba67c71ead7ebcf5) + +2017-11-15 11:02 +0000 [b64d924e1c] George Joseph + + * Update for certified/13.18-cert1-rc2 + +2017-11-13 14:35 +0000 [705dbd0468] 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 + (cherry picked from commit e6ada55430c3df603f12cb20a56149dac61ce450) + +2017-11-10 10:37 +0000 [0a62d69937] 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 + (cherry picked from commit b5f2779a23aa6042893c2bdf6bebfcc5150b5300) + +2017-11-10 07:06 +0000 [7e535a294e] 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-08 15:18 +0000 [3984942b13] Kevin Harwell + + * Update for certified/13.18-cert1-rc1 + +2017-10-19 13:35 +0000 [13508b8a16] 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 [be9ec689cf] 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 [0e1a4d8c84] 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 16:37 +0000 [7b4b17c843] Richard Mudgett + + * res_pjsip_registrar.c: Fix named 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 named AOR lock to avoid the deadlock. + + ASTERISK-27391 + + Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364 + +2017-11-01 11:12 +0000 [18b0be292d] 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 + (cherry picked from commit ffcb7e2a2540181ea41062ca0e1bc3e4fed9b3a5) + +2017-10-17 10:53 +0000 [d4b80e35a9] 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-30 15:24 +0000 [d797270f4e] Kevin Harwell + + * Initialize 13.18-cert branch + + A new branch was created for what will be Asterisk certified 13.18. A couple + of things needed to be done to the branch in order to complete initialization: + + Modified the version file to reflect the certified version. + Updated all extended modules to be disabled by default. + + Change-Id: Ie1dd3cb146391dea92c9e3ef906dde8d7241fee2 + +2017-10-30 10:33 +0000 [719ac573a6] Kevin Harwell + + * Update for 13.18.0 + +2017-10-25 15:01 +0000 [82cedfbcb3] Kevin Harwell + + * Update for 13.18.0-rc2 + +2017-10-22 17:32 +0000 [db233704f4] 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 + (cherry picked from commit 07e17fd04ffcf204400898660a4c118666596d5d) + +2017-10-23 13:42 +0000 [72bf65f44f] 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-10-13 12:46 +0000 [d5d1e98fa4] Kevin Harwell + + * Update for 13.18.0-rc1 + +2017-10-13 12:09 +0000 [4bc2aca9b7] Kevin Harwell + + * AMI: Increase version number + + Bump the AMI patch number since the following new addition was made: + + * Added a new CancelAtxfer action that cancels an attended transfer. + + Change-Id: I9bac528791bd62ef0e99243903b6bc7a6c7ab182 + +2017-08-25 08:19 +0000 [6d3ee9fb93] Thomas Sevestre + + * features, manager : Add CancelAtxfer AMI action + + Add action to cancel feature attended transfer with AMI interface + + ASTERISK-27215 #close + + Change-Id: Iab8a81362b5a1757e2608f70b014ef863200cb42 + +2017-10-06 04:55 +0000 [21d502818f] Daniel Tryba + + * res_pjsip_session: Prevent user=phone being added to anonimized URIs. + + Move ast_sip_add_usereqphone to be called after anonymization of URIs, + to prevent the user_eq_phone adding "user=phone" to URIs containing a + username that is not a phonenumber (RFC3261 19.1.1). An extra call to + ast_sip_add_usereqphone on the saved version before anonymization is + added to add user=phone" to the PAI. + + ASTERISK-27047 #close + + Change-Id: Ie5644bc66341b86dc08b1f7442210de2e6acdec6 + +2017-10-06 05:14 +0000 [af09996178] Daniel Tryba + + * res_pjsip: Prevent "user=phone" being added multiple times to header + + ast_sip_add_usereqphone adds "user=phone" to the header every time is is + called without checking whether the param already exists. Preventing + this by searching to string representation of header for "user=phone". + + ASTERISK-26988 #close + + Change-Id: Ib84383b07254de357dc6a98d91fc1d2c2c3719e6 + +2017-10-10 09:49 +0000 [8e05796e81] Tzafrir Cohen + + * cdr_mysql: avoid releasing a config string + + Fixes a memory corruption issue after a reload of cdr_mysql. + + Issue was accidentally included in 747beb1ed159f89a3b58742e4257740b3d6d6bba . + + ASTERISK-27270 #close + + Change-Id: I90b6a9d18710c0f9009466370bd5f4bac5d5d12e + +2017-10-05 18:12 +0000 [5f6bad6733] Richard Mudgett + + * cdr.c: Defer misc checks. + + Try to defer some checks until needed in case there is an early exit. + + Change-Id: Ibc6b34c38a4f60ad4f9b67984b7d070a07257064 + +2017-10-11 07:03 +0000 [f3f141781c] George Joseph + + * chan_vpb: Fix a gcc 7 out-of-bounds complaint + + chan_vpb was trying to use sizeof(*p->play_dtmf), where + p->play_dtmf is defined as char[16], to get the length of the array + but since p->play_dtmf is an actual array, sizeof(*p->play_dtmf) + returns the size of the first array element, which is 1. gcc7 + validly complains because the context in which it's used could + cause an out-of-bounds condition. + + Change-Id: If9c4bfdb6b02fa72d39e0c09bf88900663c000ba + +2017-10-06 02:39 +0000 [416e35589e] Nathan Bruning + + * app_queue.c: clear moh field in init_queue + + ASTERISK-27301 #close + + Change-Id: Ic31361f34e2de3b6470e68fc37205a7711082eba + +2017-10-10 12:01 +0000 [e71a65a358] Sean Bright + + * app_originate: Set ORIGINATE_STATUS correctly on failure + + We were ignoring the return value from ast_pbx_outgoing_exten() and + ast_pbx_outgoing_app() which could fail before setting the reason code. + This resulted in failures being reported as success. + + ASTERISK-25266 #close + Reported by: Allen Ford + + Change-Id: Idf16237b7e41b527d2c69c865829128686beeb3b + +2017-10-02 16:46 +0000 [42fdfffefc] Richard Mudgett + + * cdr.c: Eliminated simple RAII_VAR usages. + + Change-Id: I150505db307249a962987e7b941bdd369bb91f35 + +2017-10-09 22:51 +0000 [48971e4d43] Corey Farrell + + * res_pjproject: Fix cleanup of buildopts vector. + + ASTERISK-27306 + + Change-Id: I3bed0edf3f55b1d4adcbabb25ec14f11dc766c72 + +2017-10-03 16:09 +0000 [128f7ffaa2] Richard Mudgett + + * cdr.c: Replace redundant check with an ast_assert() + + The only caller of cdr_object_fn_table.process_party_b() explicitly does + the check before calling. + + Change-Id: Ib0c53cdf5048227842846e0df9d2c19117c45618 + +2017-10-02 17:41 +0000 [3525081a7c] Richard Mudgett + + * cdr.c: Replace inlined code with ao2_t_replace() + + Change-Id: I9f424f5282ca7d833592f958d95f1b2bafb549b0 + +2017-09-29 12:07 +0000 [7366657a9a] Richard Mudgett + + * cdr.c: Use current ao2 flag names + + Change-Id: Ib59d7d2f2a4a822754628f2c48a308d6791a6e6e + +2017-09-29 12:31 +0000 [34d55352a5] Richard Mudgett + + * cdr.h: Fix doxygen comments. + + * Also some misc formatting in cdr.c. + + Change-Id: Ied89a28802a662c37c43326a1aafdce596e0df4a + +2017-09-20 18:36 +0000 [d388c18abf] Richard Mudgett + + * res_pjsip_registrar.c: Update remove_existing AOR contact handling. + + When "rewrite_contact" is enabled, the "max_contacts" count option can + block re-registrations because the source port from the endpoint can be + random. When the re-registration is blocked, the endpoint may give up + re-registering and require manual intervention. + + * 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. + + ASTERISK-27192 + + Change-Id: I64c107a10b70db1697d17136051ae6bf22b5314b + +2017-10-04 10:46 +0000 [82592c3673] Corey Farrell + + * res_pjsip: Fix issues that prevented shutdown of modules. + + res_pjsip and res_pjsip_session had circular references, preventing both + modules from shutting down. + * Move session supplement registration to res_pjsip. + * Use create internal functions for use by pjsip_message_filter.c. + + ASTERISK-27306 + + Change-Id: Ifbd5c19ec848010111afeab2436f9699da06ba6b + +2017-10-09 08:15 +0000 [6b16fa12c8] Sean Bright + + * res_config_sqlite: Don't enable SQLite CDRs when running 'make samples' + + Change-Id: I65a5190b2732b2246d67472db70dd37db64ddad4 + +2017-10-08 14:05 +0000 [39b68a41f7] David Hajek + + * res/res_ari.c Fix: Memory leaks in ARI when using Content-Type: application/json + + ASTERISK-27305 + Reported by: David Hajek + Tested by: David Hajek + + Change-Id: Ife3e289062e6cf7d0e7d342dbf79ed96feff441e + +2017-10-08 09:11 +0000 [209916981a] Alexander Traud + + * tcptls: Do not re-bind to wildcard on client creation. + + Since ASTERISK-26922, this issue affected only those chan_sip which were + * enabled for dual-stack (bindaddr=::), and + * enabled for TCP (tcpenable=yes) and/or TLS (tlsenable=yes), and + * tried to register and/or invite a IPv4-only service, + * via TCP and/or TLS. + Now, ast_tcptls_client_create does not re-bind to [::] anymore. + + ASTERISK-27324 #close + + Change-Id: I4b242837bdeb1ec7130dc82505c6180a946fd9b5 + +2017-10-05 16:26 +0000 [f1163c0f6f] Corey Farrell + + * res_pjsip: Fix leak of persistent endpoint references. + + Do not manually call sip_endpoint_apply_handler from load_all_endpoints. + This is not necessary and causes memory leaks. + + Additionally reinitialize persistent->aors when we reuse a persistent + object with a new endpoint. + + ASTERISK-27306 + + Change-Id: I59bbfc8da8a14d5f4af8c5bb1e71f8592ae823eb + +2017-10-05 17:59 +0000 [8bf4be1048] Corey Farrell + + * vector: multiple evaluation of elem in AST_VECTOR_ADD_SORTED. + + Use temporary variable to prevent multiple evaluations of elem argument. + This resolves a memory leak in res_pjproject startup. + + ASTERISK-27317 #close + + Change-Id: Ib960d7f5576f9e1a3c478ecb48995582a574e06d + +2017-10-05 15:54 +0000 [5110600f1e] Corey Farrell + + * res_pjsip: Fix leak of fake_auth references. + + pjsip_distributor leaks references to fake_auth when the default realm + has not changed. + + ASTERISK-27306 + + Change-Id: I3fcf103b3680ad2d1d4610dcd6738eeaebf4d202 + +2017-10-05 20:23 +0000 [462dd7c2de] Corey Farrell + + * main/strings: Fix uninitialized value. + + ast_strings_match uses sscanf and checks for non-zero return to verify a + token was parsed. This is incorrect as sscanf returns EOF (-1) for errors. + + ASTERISK-27318 #close + + Change-Id: Ifcece92605f58116eff24c5a0a3b0ee08b3c87b1 + +2017-09-28 02:56 +0000 [29c442b587] Benoît Dereck-Tricot + + * res_calendar_icalendar: Filter out occurrences superceded by another VEVENT + + When we are loading the calendars, we call libical's + icalcomponent_foreach_recurrence method for each VEVENT component that + we have in our calendar. + + That method has no knowledge concerning the existence of the other + VEVENT components and will feed our callback with all ocurrences + matching the requested time span. + + The occurrences generated by icalcomponent_foreach_recurrence while + expanding a recurring VEVENT's RRULE and RDATE properties can be + superceded by an other VEVENT sharing the same UID. + + I use an external iterator (in libical terminology) to avoid messing + with the internal ones from the calling function, and search for + VEVENTS which could supersede the current occurrence. + + The event which can invalidate this occurence needs to have: + + - the same UID as our recurrent component (comp) + - a RECURRENCE-ID property, which represents the start time of this + occurrence + + If one component is found, just clean and return. + + ASTERISK-27296 #close + Reported by: Benoît Dereck-Tricot + + Change-Id: I8587ae3eaa765af7cb21eda3b6bf84e8a1c87af8 + +2017-10-03 15:16 +0000 [6c30f4a2d1] Torrey Searle + + * contrib/thirdparty/sip_to_pjsip: add additional flag mappings + + add mappings for udptl redundancy, rtptimeout, and debug flags + + Change-Id: Ie73cf5c83c05dee01eb9624ede76c1a30225d73a + +2017-10-02 07:48 +0000 [6dfe5b29b6] Daniel Tryba + + * res_pjsip_caller_id chan_sip: Comply to RFC 3323 values for privacy + + Currently privacy requests are only granted if the Privacy header + value is exactly "id" (defined in RFC 3325). It ignores any other + possible value (or a combination there of). This patch reverses the + logic from testing for "id" to grant privacy, to testing for "none" and + granting privacy for any other value. "none" must not be used in + combination with any other value (RFC 3323 section 4.2). + + ASTERISK-27284 #close + + Change-Id: If438a21f31a962da32d7a33ff33bdeb1e776fe56 + +2017-09-28 17:37 +0000 [0945f10d3b] Richard Mudgett + + * app_queue.c: Fix announcements when announce-to-first-user not enabled. + + The previous patch for ASTERISK-27216 made it so you wouldn't get any + position or periodic announcements unless you had announce-to-first-user + enabled. The announce-to-first-user feature was added by ASTERISK_21782 + as a result of the patch which introduced the redundant announcements that + ASTERISK-27216 removes. + + * By noting that the makeannouncement variable is used to suppresses the + first user announcement, we set its initial value to the + announce-to-first-user enable setting. + + ASTERISK-27216 + + Change-Id: Ieaeb7dbea8ae7073086b775fbafe0625b000b10a + +2017-09-21 14:43 +0000 [a433bb38b5] Richard Mudgett + + * heap.c: No need to calloc heap pointer array. + + Change-Id: I5ae2f316229f336eb90d99c7af7ed07a33097e68 + +2017-09-27 13:45 +0000 [47620ea862] George Joseph + + * logger: Bring back ability to turn debug on by source file + + Somewhere along the way we lost the ability to debug individual + source files. For modules, this wasn't a big deal but all the + source files in ./main are in the one "core" module so debugging + individual core capabilities was almost impossible. + + * Added a test to DEBUG_ATLEAST that also checks __FILE__ instead + of just module name. Any source file will work even if it's in + a module subdirectory. + + Change-Id: Icc0af41837f3b1679dec7af21fa32cd1f7469f6e + +2017-09-26 11:01 +0000 [d70d7b2f5d] George Joseph + + * pjsip_message_filter: Fix regression causing bad contact address + + The "res_pjsip: Filter out non SIP(S) requests" commit moved the + filtering of messages to pjproject's PJSIP_MOD_PRIORITY_TRANSPORT_LAYER + in order to filter out incoming bad uri schemes as early as possible. + Since the change affected outgoing messages as well and the TRANSPORT + layer is the last to be run on outgoing messages, we were overwriting + the setting of external_signaling_address (which is set earlier by + res_pjsip_nat) with an internal address. + + * pjsip_message_filter now registers itself as a pjproject module + twice. Once in the TSX layer for the outgoing messages (as it was + originally), then a second time in the TRANSPORT layer for the + incoming messages to catch the invalid uri schemes. + + ASTERISK-27295 + Reported by: Sean Bright + + Change-Id: I2c90190c43370f8a9d1c4693a19fd65840689c8c + +2017-09-13 21:31 +0000 [221d8a5c24] Richard Mudgett + + * res_rtp_asterisk.c: Fix bridge_p2p_rtp_write() reentrancy potential. + + The bridge_p2p_rtp_write() has potential reentrancy problems. + + * Accessing the bridged RTP members must be done with the instance1 lock + held. The DTMF and asymmetric codec checks must be split to be done with + the correct RTP instance struct locked. i.e., They must be done when + working on the appropriate side of the point to point bridge. + + * Forcing the RTP mark bit was referencing the wrong side of the point to + point bridge. The set mark bit is used everywhere else to set the mark + bit when sending not receiving. + + The patches for ASTERISK_26745 and ASTERISK_27158 did not take into + account that not everything carried by RTP uses a codec. The telephony + DTMF events are not exchanged with a codec. As a result when + RFC2833/RFC4733 sent digits you would crash if "core set debug 1" is + enabled, the DTMF digits would always get passed to the core even though + the local native RTP bridge is active, and the DTMF digits would go out + using the wrong SSRC id. + + * Add protection for non-format payload types like DTMF when updating the + lastrxformat and lasttxformat. Also protect against non-format payload + types when checking for asymmetric codecs. + + ASTERISK-27292 + + Change-Id: I6344ab7de21e26f84503c4d1fca1a41579364186 + +2017-09-25 13:09 +0000 [f3b1b64d21] Sean Bright + + * pjproject: Patch to correct STUN FINGERPRINT usage + + Change-Id: I0e453253dff1388b0186b36c754457c1d0d12db6 + +2017-09-25 10:59 +0000 [8d2c3effc2] Richard Mudgett + + * channel.c: Fix invalid reference in conditionaled out code. + + ASTERISK-27289 + + Change-Id: I7a415948116493050614d9f4fa91ffbe0c21ec4c + +2017-09-25 07:25 +0000 [690f7f7c76] George Joseph + + * build: A few gcc 7 error fixes + + Change-Id: I7b5300fbf1af7d88d47129db13ad6dbdc9b553ec + +2017-09-22 10:02 +0000 [f39af4d36d] Sean Bright + + * res_pjsip: Use ast_sip_is_content_type() where appropriate + + Change-Id: If3ab0d73d79ac4623308bd48508af2bfd554937d + +2017-09-19 05:22 +0000 [c98e980fff] Rodrigo Ramírez Norambuena + + * res_config_pgsql: Fix removed support to previous for versions PostgreSQL 9.1 + + In PostgreSQL 9.1 the backslash are string literals and not the escape + of characters. + + In previous issue ASTERISK_26057 was fixed the use of escape LIKE but the + support for old version of Postgresql than 9.1 was dropped. The sentence + before make was "ESCAPE '\'" but in version before than 9.1 need it to be + as follow "ESCAPE '\\'". + + ASTERISK-27283 + + Change-Id: I96d9ee1ed7693ab17503cb36a9cd72847165f949 + +2017-09-15 02:59 +0000 [0adf6f3bd9] Stefan Engström + + * app_queue: Only do announcement logic between ringing cycles + + This patch reverts the change by patch 2263 from old reviewboard. + Note that reverting that 2263-patch still preserves the behaviour that + the commit log of the 2263-patch claimed to add. The reason for this is: + + The function wait_for_answer is only called from try_calling which + in turn is only called from the main for loop in queue_exec, and + earlier in that loop we already check the things that's removed by + this patch. There's no need to check those things twice each loop + iteration, and I think the proper place to check it is before each + ringing cycle. By checking it in wait_for_answer, you allow the issue + explained in the jira - that the head caller hears announcements while + the agents' sip phones are actively ringing. + + Reported-by: Stefan Engström + Tested-by: Stefan Engström + ASTERISK-27216 #close + + Change-Id: Ic4290dc75256f9743900c6762ee1bb915f672db0 + +2017-09-07 04:41 +0000 [da40976987] Jean Aunis + + * bridge : Fix one-way direct-media when early bridging with native_rtp + + When two channels were early bridged in a native_rtp bridge, the RTP description + on one side was not updated when the other side answered. + This patch forbids non-answered channels to enter a native_rtp bridge, and + triggers a bridge reconfiguration when an ANSWER frame is received. + + ASTERISK-27257 + + Change-Id: If1aaee1b4ed9658a1aa91ab715ee0a6413b878df + +2017-09-19 10:38 +0000 [828a0611bc] George Joseph + + * res_pjsip_pubsub: Check for Content-Type header in rx_notify_request + + pubsub_on_rx_notify_request wasn't checking for a null + Content-Type header before checking that it was + application/simple-message-summary. + + ASTERISK-27279 + Reported by: Ross Beer + + Change-Id: Iec2a6c4d2e74af37ff779ecc9fd35644c5c4ea52 + +2017-09-19 09:34 +0000 [94f616e5e2] David J. Pryke + + * chan_sip: Expose read-only access to the full SIP INVITE Request-URI + + Provide a way to get the contents of the the Request URI from the initial SIP + INVITE in dial plan function call. (In this case "${CHANNEL(ruri)}") + + ASTERISK-27278 + Reported by: David J. Pryke + Tested by: David J. Pryke + + Change-Id: I1dd4d6988eed1b6c98a9701e0e833a15ef0dac3e + +2017-09-18 10:27 +0000 [cfc0ca1fb5] Alexander Traud + + * tcptls: Fixed a white space error. + + ASTERISK-26606 + + Change-Id: I81a7268ef7ba012d4d80d44c70b6276d48e397fa + +2017-09-18 10:00 +0000 [99a08eb7ab] Alexander Traud + + * res_srtp: lower log level of auth failures + + Previously, sRTP authentication failures were reported on log level WARNING. + When such failures happen, each RT(C)P packet is affected, spamming the log. + Now, those failures are reported at log level VERBOSE 2. Furthermore, the + amount is further reduced (previously all two seconds, now all three seconds). + Additionally, the new log entry informs whether media (RTP) or statistics (RTCP) + are affected. + + ASTERISK-16898 #close + + Change-Id: I6c98d46b711f56e08655abeb01c951ab8e8d7fa0 + +2017-09-13 03:46 +0000 [f1eb36ea51] alex + + * cdr_mysql.c: Apply cdrzone to start and answer + + Change-Id: I7de0a5adc89824a5f2b696fc22c80fc22dff36b0 + +2017-08-25 17:01 +0000 [6d4b801c83] Richard Mudgett + + * AST-2017-008: Improve RTP and RTCP packet processing. + + Validate RTCP packets before processing them. + + * Validate that the received packet is of a minimum length and apply the + RFC3550 RTCP packet validation checks. + + * Fixed potentially reading garbage beyond the received RTCP record data. + + * Fixed rtp->themssrc only being set once when the remote could change + the SSRC. We would effectively stop handling the RTCP statistic records. + + * Fixed rtp->themssrc to not treat a zero value as special by adding + rtp->themssrc_valid to indicate if rtp->themssrc is available. + + ASTERISK-27274 + + Make strict RTP learning more flexible. + + Direct media can cause strict RTP to attempt to learn a remote address + again before it has had a chance to learn the remote address the first + time. Because of the rapid relearn requests, strict RTP could latch onto + the first remote address and fail to latch onto the direct media remote + address. As a result, you have one way audio until the call is placed on + and off hold. + + The new algorithm learns remote addresses for a set time (1.5 seconds) + before locking the remote address. In addition, we must see a configured + number of remote packets from the same address in a row before switching. + + * Fixed strict RTP learning from always accepting the first new address + packet as the new stream. + + * Fixed strict RTP to initialize the expected sequence number with the + last received sequence number instead of the last transmitted sequence + number. + + * Fixed the predicted next sequence number calculation in + rtp_learning_rtp_seq_update() to handle overflow. + + ASTERISK-27252 + + Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c + +2017-09-13 14:14 +0000 [5075cc8eed] Sean Bright + + * res_calendar: On reload, update all configuration + + This changes the behavior of res_calendar to drop all existing calendars + and re-create them whenever a reload is done. The Calendar API provides + no way for configuration information to be pushed down to calendar + 'techs' so updated settings would not take affect until a module + unload/load was done or Asterisk was restarted. + + Asterisk 15+ already has a configuration option 'fetch_again_at_reload' + that performs a similar function. + + Also fix a tiny memory leak in res_calendar_caldav while we're at it. + + ASTERISK-25524 #close + Reported by: Jesper + + Change-Id: Ib0f8057642e9d471960f1a79fd42e5a3ce587d3b + +2017-09-13 16:23 +0000 [63900374fa] George Joseph + + * res_pjsip: Filter out non SIP(S) requests + + Incoming requests with non sip(s) URIs in the Request, To, From + or Contact URIs are now rejected with + PJSIP_SC_UNSUPPORTED_URI_SCHEME (416). This is performed in + pjsip_message_filter (formerly pjsip_message_ip_updater) and is + done at pjproject's "TRANSPORT" layer before a request can even + reach the distributor. + + URIs read by res_pjsip_outbound_publish from pjsip.conf are now + also checked for both length and sip(s) scheme. Those URIs read + by outbound registration and aor were already being checked for + scheme but their error messages needed to be updated to include + scheme failure as well as length failure. + + Change-Id: Ibb2f9f1d2dc7549da562af4cbd9156c44ffdd460 + +2017-09-13 14:08 +0000 [db785ddb92] Sean Bright + + * res_calendar: Various fixes + + * The way that we were looking at XML elements for CalDAV was extremely + fragile, so use SAX2 for increased robustness. + + * Don't complain about a 'channel' not be specified if autoreminder is + not set. Assume that if 'channel' is not set, we don't want to be + notified. + + * Fix some truncated CLI output in 'calendar show calendar' and make the + 'Autoreminder' description a bit more clear + + ASTERISK-24588 #close + Reported by: Stefan Gofferje + + ASTERISK-25523 #close + Reported by: Jesper + + Change-Id: I200d11afca6a47e7d97888f286977e2e69874b2c + +2017-09-13 09:38 +0000 [0688f61a01] Sean Bright + + * chan_rtp: Use μ-law by default instead of signed linear + + Multicast/Unicast RTP do not use SDP so we need to use a format that + cleanly maps to one of the static RTP payload types. Without this + change, an Originate to a Multicast or Unicast channel without a format + specified would produce no audio on the receiving device. + + ASTERISK-21399 #close + Reported by: Tzafrir Cohen + + Change-Id: I97e332b566e85da04b0004b9b0daae746cfca0e3 + +2017-09-11 05:46 +0000 [ed2a4ee81e] George Joseph + + * res_pjsip: Add handling for incoming unsolicited MWI NOTIFY + + 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_pjsip_pubsub has a new handler "pubsub_on_rx_mwi_notify_request" + that parses a simple-message-summary body and, if + endpoint->incoming_mwi_account is set, calls ast_publish_mwi_state + with the voice-message counts from the message. + + Change-Id: I08bae3d16e77af48fcccc2c936acce8fc0ef0f3c + +2017-09-08 21:41 +0000 [044674c0cd] Richard Mudgett + + * res_rtp_asterisk.c: Add doxygen to RTCP payload types. + + Change-Id: I3f20ce428777cc4ce9c13b2f808d29ff8c873998 + +2017-09-11 05:52 +0000 [5ff2d06aa6] George Joseph + + * alembic: Fix typo in add_auto_info_to_endpoint_dtmf_mode + + The downgrade function was missing "_v2" at the end of the + alter column type. + + Change-Id: Iaa9bcef48d6f3590ce07a61342d8e66f00263d8e + +2017-09-10 06:17 +0000 [babb617f20] Walter Doekes + + * res/res_pjsip: Fix localnet checks in pjsip, part 2. + + In 45744fc53, I mistakenly broke SDP media address rewriting by + misinterpreting which address was checked in the localnet comparison. + + Instead of checking the remote peer address to decide whether we need + media address rewriting, we check our local media address: if it's + local, then we rewrite. This feels awkward, but works and even made + directmedia work properly if you set local_net. (For the record: for + local peers, the SDP media rewrite code is not called, so the + comparison does no harm there.) + + ASTERISK-27248 #close + + Change-Id: I566be1c33f4d0a689567d451ed46bab9c3861d4f + +2017-09-05 11:13 +0000 [ad606844be] Florian Floimair + + * alembic: Add support for MS-SQL + + MS-SQL has no native Enum-type support and therefore + needs to work with constraints. + Since these constraints need unique names the suggested approach + referenced in the following alembic documentation has been applied: + http://bit.ly/2x9r8pb + + ASTERISK-27255 #close + + Change-Id: I4a399ba3eed41a33ce8cb294968ad340221580ee + +2017-09-05 07:31 +0000 [2aefc6e5fe] Jacek Konieczny + + * func_cdr: honour 'u' flag on dummy channel + + Fixes ${CDR(...,u)} when used in cdr_custom.conf + + ASTERISK-27165 #close + + Change-Id: Ia4e0b6ba93e03d27886354c279737790e2cd6a83 + +2017-09-06 16:05 +0000 [c0d4f1880e] Scott Griepentrog + + * chan_sip: when getting sip pvt return failure if not found + + In handle_request_invite, when processing a pickup, a call + is made to get_sip_pvt_from_replaces to locate the pvt for + the subscription. The pvt is assumed to be valid when zero + is returned indicating no error, and is dereferenced which + can cause a crash if it was not found. + + This change checks the not found case and returns -1 which + allows the calling code to fail appropriately. + + ASTERISK-27217 #close + Reported-by: Bryan Walters + + Change-Id: I6bee92b8b8b85fcac3fd66f8c00ab18bc1765612 + +2017-09-06 10:50 +0000 [e4797b2cbd] Sean Bright + + * app_waitforsilence: Cleanup & don't treat missing frames as 'noise' + + * WaitForSilence completes successfully if it receives no media in the + specified timeout, but when acting as WaitForNoise that logic needs + to be reversed. + + * Use standard argument parsing macros and add some error checking for + invalid values. + + * The documentation indicated that the first argument to both + WaitForSilence and WaitForNoise was required when it was not. Update + the documentation to reflect that. + + * Wrap up some behavior in structs to avoid boolean checks all over the + place. + + ASTERISK-24066 #close + Reported by: M vd S + + Change-Id: I01d40adc5b63342bb5018a1bea2081a0aa191ef9 + +2017-09-01 05:17 +0000 [186ef1a657] George Joseph + + * stasis/control: Fix possible deadlock with swap channel + + If an error occurs during a bridge impart it's possible that + the "bridge_after" callback might try to run before + control_swap_channel_in_bridge has been signalled to continue. + Since control_swap_channel_in_bridge is holding the control lock + and the callback needs it, a deadlock will occur. + + * control_swap_channel_in_bridge now only holds the control + lock while it's actually modifying the control structure and + releases it while the bridge impart is running. + * bridge_after_cb is now tolerant of impart failures. + + Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3 + +2017-09-06 05:23 +0000 [597d1f8951] Vitezslav Novy + + * chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE + + If directmedia=yes is configured, when call is answered, Asterisk sends reINVITE + to both parties to set up media path directly between the endpoints. + In this reINVITE msg SDP origin line (o=) contains IP address of endpoint + instead of IP of asterisk. This behavior violates RFC3264, sec 8: + "When issuing an offer that modifies the session, + the "o=" line of the new SDP MUST be identical to that in the + previous SDP, except that the version in the origin field MUST + increment by one from the previous SDP." + This patch assures IP address of Asterisk is always sent in + SDP origin line. + + ASTERISK-17540 + Reported by: saghul + + Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e + +2017-09-06 07:54 +0000 [15ddc9acb3] George Joseph + + * alembic: Fix enum creation for dtls_fingerprint + + Change-Id: Ic061c5066a146616a68376881c7e4cf6d6e7e7db + +2017-09-05 11:08 +0000 [2370469645] Florian Floimair + + * alembic: fix erroneous commit for add_prune_on_boot + + Added include for postgresql ENUM type and + redefined values in the same way as in the + other migration scripts. + + ASTERISK-27254 #close + + Change-Id: Id667304cdf3891b1c2f7d35fab3e2a84026159fa + +2017-09-06 03:15 +0000 [13aa1241c3] Alexander Traud + + * res_srtp: Add support for libsrtp2.1. + + Asterisk is able to use libSRTP 2.0.x. However since libSRTP 2.1.x, the macro + SRTP_AES_ICM got renamed to SRTP_AES_ICM_128. Beside to still compile with + previous versions of libSRTP, this change allows libSRTP 2.1.x as well. + + ASTERISK-27253 #close + + Change-Id: I2e6eb3c3bc844fee8a624060a2eb6f182dc70315 + +2017-09-05 09:35 +0000 [598a18ffee] Ben Ford + + * chan_pjsip: Suppress frame warnings. + + When rtp_keepalive is on for a PJSIP endpoint dialing to another + Asterisk instance also using PJSIP, Asterisk will continue to print + warning messages about not being able to send frames of a certain + type. This suppresses that warning message. + + Change-Id: I0332a05519d7bda9cacfa26d433909ff1909be67 + +2017-08-25 17:05 +0000 [6c922b3157] Richard Mudgett + + * res_rtp_asterisk.c: Check RTP packet version earlier. + + Change-Id: Ic6493a7d79683f3e5845dff1cee49445fd5a0adf + +2017-09-05 10:05 +0000 [3f7d0b63fc] Sean Bright + + * formats: Restore previous fread() behavior + + Some formats are able to handle short reads while others are not, so + restore the previous behavior for the format modules so that we don't + have spurious errors when playing back files. + + ASTERISK-27232 #close + Reported by: Jens T. + + Change-Id: Iab7f52b25a394f277566c8a2a4b15a692280a300 + +2017-09-05 09:16 +0000 [45744fc53d] Walter Doekes + + * res/res_pjsip: Standardize/fix localnet checks across pjsip. + + In 2dee95cc (ASTERISK-27024) and 776ffd77 (ASTERISK-26879) there was + confusion about whether the transport_state->localnet ACL has ALLOW or + DENY semantics. + + For the record: the localnet has DENY semantics, meaning that "not in + the list" means ALLOW, and the local nets are in the list. + + Therefore, checks like this look wrong, but are right: + + /* See if where we are sending this request is local or not, and if + not that we can get a Contact URI to modify */ + if (ast_apply_ha(transport_state->localnet, &addr) != AST_SENSE_ALLOW) { + ast_debug(5, "Request is being sent to local address, " + "skipping NAT manipulation\n"); + + (In the list == localnet == DENY == skip NAT manipulation.) + + And conversely, other checks that looked right, were wrong. + + This change adds two macro's to reduce the confusion and uses those + instead: + + ast_sip_transport_is_nonlocal(transport_state, addr) + ast_sip_transport_is_local(transport_state, addr) + + ASTERISK-27248 #close + + Change-Id: Ie7767519eb5a822c4848e531a53c0fd054fae934 + +2017-09-05 05:23 +0000 [786c4791f9] George Joseph + + * res_pjsip_t38: Make t38_reinvite_response_cb tolerant of NULL channel + + t38_reinvite_response_cb can get called by res_pjsip_session's + session_inv_on_tsx_state_changed in situations where session->channel + is NULL. If it is, the ast_log warning segfaults because it tries + to get the channel name from a NULL channel. + + * Check session->channel and print "unknown channel" when it's NULL. + + ASTERISK-27236 + Reported by: Ross Beer + + Change-Id: I4326e288d36327f6c79ab52226d54905cdc87dc7 + +2017-09-01 16:17 +0000 [55f30c29fd] Sean Bright + + * rtp_engine: Prevent possible double free with DTLS config + + ASTERISK-27225 #close + Reported by: Richard Kenner + + Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89 + +2017-09-01 13:15 +0000 [f36db2dbdc] Sean Bright + + * chan_ooh323: Fix confusing indentation warning + + ASTERISK-27177 #close + Reported by: Tzafrir Cohen + + Change-Id: I40311c404edb2302a7543ad5ca7a06b2a38f2d97 + +2017-09-01 09:51 +0000 [5f4863d4f9] Sean Bright + + * app_directory: Handle a NULL mailbox without crashing + + ASTERISK-27241 #close + Reported by: David Moore + + Change-Id: Ibbbca85517b04c315406ebfe3b6f7e0763daedc6 + +2017-07-24 10:48 +0000 [990b017668] George Joseph + + * pjsip_message_ip_updater: Fix issue handling "tel" URIs + + sanitize_tdata was assuming all URIs were SIP URIs so when a non + SIP uri was in the From, To or Contact headers, the unconditional + cast of a non-pjsip_sip_uri structure to pjsip_sip_uri caused + a segfault when trying to access uri->other_param. + + * Added PJSIP_URI_SCHEME_IS_SIP(uri) || PJSIP_URI_SCHEME_IS_SIPS(uri) + checks before attempting to cast or use the returned uri. + + ASTERISK-27152 + Reported-by: Ross Beer + + Change-Id: Id380df790e6622c8058a96035f8b8f4aa0b8551f + +2017-07-01 19:24 +0000 [04ee3eb774] Corey Farrell + + * AST-2017-006: Fix app_minivm application MinivmNotify command injection + + An admin can configure app_minivm with an externnotify program to be run + when a voicemail is received. The app_minivm application MinivmNotify + uses ast_safe_system() for this purpose which is vulnerable to command + injection since the Caller-ID name and number values given to externnotify + can come from an external untrusted source. + + * Add ast_safe_execvp() function. This gives modules the ability to run + external commands with greater safety compared to ast_safe_system(). + Specifically when some parameters are filled by untrusted sources the new + function does not allow malicious input to break argument encoding. This + may be of particular concern where CALLERID(name) or CALLERID(num) may be + used as a parameter to a script run by ast_safe_system() which could + potentially allow arbitrary command execution. + + * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp() + instead of ast_safe_system() to avoid command injection. + + * Document code injection potential from untrusted data sources for other + shell commands that are under user control. + + ASTERISK-27103 + + Change-Id: I7552472247a84cde24e1358aaf64af160107aef1 + +2017-05-22 10:36 +0000 [1a022285dd] Joshua Colp + + * res_rtp_asterisk: Only learn a new source in learn state. + + This change moves the logic which learns a new source address + for RTP so it only occurs in the learning state. The learning + state is entered on initial allocation of RTP or if we are + told that the remote address for the media has changed. While + in the learning state if we continue to receive media from + the original source we restart the learning process. It is + only once we receive a sufficient number of RTP packets from + the new source that we will switch to it. Once this is done + the closed state is entered where all packets that do not + originate from the expected source are dropped. + + The learning process has also been improved to take into + account the time between received packets so a flood of them + while in the learning state does not cause media to be switched. + + Finally RTCP now drops packets which are not for the learned + SSRC if strict RTP is enabled. + + ASTERISK-27013 + + Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c + +2017-08-29 14:22 +0000 [4aaccb7795] Richard Mudgett + + * bridge_native_rtp.c: Fixup native_rtp_framehook() + + * Fix framehook to test frame type for control frame. + * Made framehook exit early if frame type is not a control frame. + * Eliminated RAII_VAR in framehook. + * Use switch instead of else-if ladder for control frame handling. + + Change-Id: Ia555fc3600bd85470e3c0141147dbe3ad07c1d18 + +2017-08-29 09:26 +0000 [d2ace23248] Sean Bright + + * confbridge: Handle user hangup during name recording + + This prevents orphaned CBAnn channels from getting stuck in the bridge. + + ASTERISK-26994 #close + Reported by: James Terhune + + Change-Id: I5e43e832a9507ec3f2c59752cd900b41dab80457 + +2017-08-25 21:06 +0000 [a45af32983] Andre Nazario + + * chan_pjsip: Add tag info in CHANNEL function + + Create local_tag and remote_tag in CHANNEL info to get tag from From and + To headers of a SIP dialog. + + ASTERISK-27220 + + Change-Id: I59b16c4b928896fcbde02ad88f0e98922b15d524 + +2017-08-25 13:44 +0000 [9e6efcace5] Sean Bright + + * voicemail: Fix various abuses of mkstemp + + mkstemp() returns a unique filename, but appending an extension to that + filename does not guarantee uniqueness. Instead, use mkdtemp() and we + can put whatever extension we want on the files that we create inside + the directory. + + In the case of app_minivm, we also now properly clean up any temporary + files that we create. + + ASTERISK-20858 #close + Reported by: Walter Doekes + + Change-Id: I30ad04f0e115f0b11693ff678ba5184d8b938e43 + +2017-08-25 12:20 +0000 [01b5913ce0] Sean Bright + + * app_record: Resolve some absolute vs. relative filename bugs + + If the Record() application is called with a relative filename that + includes directories, we were not properly creating the intermediate + directories and Record() would fail. + + Secondarily, updated the documentation for RECORDED_FILE to mention + that it does not include a filename extension. + + Finally, rewrote the '%d' functionality to be a bit more straight + forward and less noisy. + + ASTERISK-16777 #close + Reported by: klaus3000 + + Change-Id: Ibc2640cba3a8c7f17d97b02f76b7608b1e7ffde2 + +2017-08-23 10:01 +0000 [bf178a0f4f] Florian Floimair + + * alembic: Add dtls_fingerprint column in ps_endpoints table + + The ps_endpoints table was missing the dtls_fingerprint column + introduced with commit adba2a8d7fd. + + ASTERISK-27168 #close + + Change-Id: I9cb5006f7f50718b5239919562773adabb334cfd + +2016-02-28 19:05 +0000 [fff2f68616] Matt Jordan + + * main/app: Only look to end of file if ':end' is specified, and not just ':' + + There is a little known feature in app_controlplayback that will cause the + specified offset to be used relative to the end of a file if a ':end' is + detected within the filename. + + This feature is pretty bad, but okay. + + However, a bug exists in this code where a ':' detected in the filename + will cause the end pointer to be non-NULL, even if the full ':end' isn't + specified. This causes us to treat an unspecified offset (0) as being + "start playing from the end of the file", resulting in no file playback + occurring. + + This patch fixes this bug by resetting the end pointer if ':end' is not + found in the filename. + + ASTERISK-23608 #close + Reported by: Jonathan White + + Change-Id: Ib4c7b1b45283e4effd622a970055c51146892f35 + (cherry picked from commit 13efea24f7ce6ccc01d1a5a0603be2636d83a408) + +2017-08-24 09:42 +0000 [579d4593ac] Sean Bright + + * app_queue: Evaluate realtime queues when running dialplan functions + + ASTERISK-19103 #close + Reported by: Jim Van Meggelen + + Change-Id: I4bd32a9d1fcebb8ac56bff0e084d4f53e31b692b + +2017-08-23 09:19 +0000 [0af145de2d] Sean Bright + + * app_voicemail: Honor escape digits in "greeting only" mode + + ASTERISK-21241 #close + Reported by: Eelco Brolman + Patches: + Patch uploaded by Eelco Brolman (License 6442) + + Change-Id: Icbe39b5c82a49b46cf1d168dc17766f3d84f54fe + +2017-08-24 08:35 +0000 [d251a961ac] Sean Bright + + * res_smdi: Clean up memory leak + + Change-Id: I1e33290929e1aa7c5b9cb513f8254f2884974de8 + +2017-08-11 11:40 +0000 [3f22b53349] Richard Mudgett + + * bridge_softmix.c: Remove always true test. + + Change-Id: I26238df2ff0d0f6dfe95c3aa35da588f1ee71727 + +2017-08-17 16:46 +0000 [b88c3a4209] Sungtae Kim + + * app_queue: Fix initial hold time queue statistic + + Fixed to use correct initial value and fixed to use the + correct queue info to check the first value. + + ASTERISK-27204 + + Change-Id: Ia9e36c828e566e1cc25c66f73307566e4acb8e73 + +2017-08-21 04:28 +0000 [8e99969000] Torrey Searle + + * res/res_pjsip_session: allow SDP answer to be regenerated + + If an SDP answer hasn't been sent yet, it's legal to change it. + This is required for PJSIP_DTMF_MODE to work correctly, and can + also have use in the future for updating codecs too. + + ASTERISK-27209 #close + + Change-Id: Idbbfb7cb3f72fbd96c94d10d93540f69bd51e7a1 + +2017-08-20 08:15 +0000 [4faf77feec] Michael Kuron + + * res_xmpp: fix inverted return code check in OAuth + + fetch_access_token calls func_curl via ast_func_read. The latter returns 0 upon + success and -1 if the function is not available. + This commit inverts the return code check so that an error is printed if the + module is not loaded and not if it is loaded. + + ASTERISK-27207 #close + + Change-Id: I9ef903f80702d1218e8701f65a4e5e918e6548fb + +2017-08-17 12:00 +0000 [a6251ec373] Sean Bright + + * res_calendar_icalendar: Properly handle recurring events + + When looking for recurring events, use the correct end time based on the + configured 'timeframe.' + + ASTERISK-27174 #close + Reported by: Mark Thompson + + Change-Id: Id90c3cfc79d561a5521d79be176683e225f2edef + +2017-08-16 15:43 +0000 [572b5307e0] George Joseph + + * Fix downloader not working with curl + + The codec/dpma downloader wasn't handling curl correctly. The logic + that transforms makeopts into a bash-sourceable file wasn't + handling the make 'or' command in DOWNLOAD_TIMEOUT so bash was + looking for an 'or' command. + + That logic has been eliminated. Instead of trying to transform + and source makeopts, the downloader now calls a make scriptlet + to print the value of a specific variable. This way, make handles + the ors (or any other make construct that happens to creep into + that file). + + ASTERISK-27202 + Reported by: Sean McCord + + Change-Id: Iadfb6693528e4d4da7b8bb201fa66da2c71c7f99 + +2017-08-15 15:15 +0000 [8594f73a81] Richard Mudgett + + * configure: Check cache for valid pjproject tarball before downloading. + + On a fresh Asterisk source directory, the bundled pjproject tarball is + unconditionally downloaded even if the tarball is already in a specified + cache directory. + + * Made check if the pjproject tarball is valid in the cache directory + before downloading the tarball on a fresh source directory. + + Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5 + +2017-08-15 11:14 +0000 [d08342b0cb] Richard Mudgett + + * res_pjsip: Fix prune_on_boot to remove only contacts for the host. + + * Check that the contact's reg_server matches the host's name before + deleting any prune_on_boot contacts. We don't want to delete reliable + transport contacts made with other servers if the ps_contacts database + table is shared with other servers. + + Thanks to Ross Beer for pointing out that the original prune logic would + delete reliable transport contacts from other servers. + + ASTERISK-27147 + + Change-Id: I8e439d0d1c266ffdfd7b73d1e5e466180a689bd0 + +2017-08-04 09:25 +0000 [54e3ac402f] Andrey Egorov + + * res_xmpp: Google OAuth 2.0 protocol support for XMPP / Motif + + Add ability to use tokens instead of passwords according to Google OAuth 2.0 + protocol. + + ASTERISK-27169 + Reported by: Andrey Egorov + Tested by: Andrey Egorov + + Change-Id: I07f7052a502457ab55010a4d3686653b60f4c8db + +2017-08-10 14:18 +0000 [bac3e8c08b] Richard Mudgett + + * STUN/netsock2: Fix some valgrind uninitialized memory findings. + + * netsock2.c: Test the addr->len member first as it may be the only member + initialized in the struct. + + * stun.c:ast_stun_handle_packet(): The combinded[] local array could get + used uninitialized by ast_stun_request(). The uninitialized string gets + copied to another location and could overflow the destination memory + buffer. + + These valgrind findings were found for ASTERISK_27150 but are not + necessarily a fix for the issue. + + Change-Id: I55f8687ba4ffc0f69578fd850af006a56cbc9a57 + +2017-08-02 18:44 +0000 [1cf2c79f37] Richard Mudgett + + * res_pjsip_outbound_registration.c: Re-REGISTER on transport shutdown. + + The fix for the issue is broken up into three parts. + + This is part three which handles the client side of REGISTER requests. + The registered contact may no longer be valid on the server when the + transport used is reliable and the connection is broken. + + * Re-REGISTER our contact if the reliable transport is broken after + registration completes. We attempt to re-REGISTER immediately to minimize + the time we are unreachable. Time may have already passed between the + connection being broken and the loss being detected. + + * Reorder sip_outbound_registration_state_alloc() so the STATSD_GUAGE's + are still correct if an allocation failure happens. + + ASTERISK-27147 + + Change-Id: I3668405b1ee75dfefb07c0d637826176f741ce83 + +2017-07-31 14:21 +0000 [07d026b4cd] Richard Mudgett + + * res_pjsip: Remove ephemeral registered contacts on transport shutdown. + + The fix for the issue is broken up into three parts. + + This is part two which handles the server side of REGISTER requests when + rewrite_contact is enabled. Any registered reliable transport contact + becomes invalid when the transport connection becomes disconnected. + + * Monitor the rewrite_contact's reliable transport REGISTER contact for + shutdown. If it is shutdown then the contact must be removed because it + is no longer valid. Otherwise, when the client attempts to re-REGISTER it + may be blocked because the invalid contact is there. Also if we try to + send a call to the endpoint using the invalid contact then the endpoint is + not likely to see the request. The endpoint either won't be listening on + that port for new connections or a NAT/firewall will block it. + + * Prune any rewrite_contact's registered reliable transport contacts on + boot. The reliable transport no longer exists so the contact is invalid. + + * Websockets always rewrite the REGISTER contact address and the transport + needs to be monitored for shutdown. + + * Made the websocket transport set a unique name since that is what we use + as the ao2 container key. Otherwise, we would not know which transport we + find when one of them shuts down. The names are also used for PJPROJECT + debug logging. + + * Made the websocket transport post the PJSIP_TP_STATE_CONNECTED state + event. Now the global keep_alive_interval option, initially idle shutdown + timer, and the server REGISTER contact monitor can work on wetsocket + transports. + + * Made the websocket transport set the PJSIP_TP_DIR_INCOMING direction. + Now initially idle websockets will automatically shutdown. + + ASTERISK-27147 + + Change-Id: I397a5e7d18476830f7ffe1726adf9ee6c15964f4 + +2017-07-28 18:26 +0000 [ca261d4b70] Richard Mudgett + + * res_pjsip: PJSIP Transport state monitor refactor. + + The fix for the issue is broken up into three parts. + + This is part one which refactors the transport state monitor code to allow + more modules to be able to monitor transports. + + * Pull the management of PJPROJECT's transport state callback code from + res_pjsip_transport_management.c into res_pjsip. Now other modules can + dynamically add and remove themselves from transport monitoring without + worrying about breaking PJPROJECT's callback chain. + + * Add the ability for other modules to get a callback whenever a specific + transport is shutdown. + + ASTERISK-27147 + + Change-Id: I7d9a31371eb1487c9b7050cf82a9af5180a57912 + +2017-07-27 15:36 +0000 [162f6ab845] Richard Mudgett + + * res_pjsip_transport_management.c: Rename some variables. + + * Use monitored instead of the misleading keepalive name. + + Change-Id: I9e5bcbb4ab2b82d49bcd0f06dfe85d15e0b552b6 + +2017-08-10 09:09 +0000 [22575b6342] Scott Griepentrog + + * res_pjsip_messaging: IPv6 receive address needs brackets + + When handling an incoming SIP MESSAGE, PJSIP + attaches the IP address that the message was + received from to the message in the variable + PJSIP_RECVADDR. When the IP address is IPv6 + the :PORT appended results in an unparseable + mess. By using an additional bit flag on the + pj_sockaddr_print call, the conventional use + of brackets around the address is achieved. + + ASTERISK-27193 #close + + Change-Id: I12342521f2ce87a5b6e4883d480a3fd957aa9fd9 + +2017-08-09 08:01 +0000 [363d61ef58] George Joseph + + * configure: Add --with-download-cache option + + To make building without an internet connection easier, a new + ./configure option '--with-download-cache' was added that sets + the cache for externals (like pjproject, the codecs and the DPMA), + AND the sounds files. It can also be specified as an environment + variable named "AST_DOWNLOAD_CACHE". The existing + '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and + '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable + remain and if specified, will override '--with-downloads-cache'. + + Change-Id: I5c3cf15ee61e8fe191b52732303e969854f8d861 + +2017-07-26 09:17 +0000 [3608f96ea3] Torrey Searle + + * res_rtp_asterisk: enable rtcp & QOS stats on native bridge + + Asterisk wasn't generating or forwarding RTCP packets when native + bridge was activated. Also the stats weren't available via + CHANNEL(qos). Now the RTCP stats are always calculated. + + ASTERISK-27158 #close + + Change-Id: I46fb8f61c95e836b9d2dda6054b0cf205c16037b + +2017-07-26 11:39 +0000 [0de7312fac] Joshua Colp + + * res_pjsip_session: Release media resources on session end quicker. + + A change was made long ago where the session was kept around + until the underlying INVITE session had been destroyed. This + had the side effect of also keeping the underlying media resources + around for this time as well. + + This change ensures that when we know the session is ending we + release the media resources immediately. + + ASTERISK-27110 + + Change-Id: I643e431d5c3bf05cda220c1d39e824a505a29b82 + +2017-08-02 16:08 +0000 [905c4ca3dc] Corey Farrell + + * app_privacy: remove unused header asterisk/image.h + + Change-Id: I56ed530633a642633b18383821069e806c92ae82 + +2017-08-03 13:13 +0000 [38dbc708e7] Tzafrir Cohen + + * Support GMIME 3.0 + + Support building the Asterisk httpd with version 3.0 of gmime as + well as earlier versions of that library. + + ASTERISK-27173 + + Change-Id: I7e13dd05a3083ccb0df2dabf83110223f6a9fa8f + +2017-07-28 07:53 +0000 [c4f201cd73] Torrey Searle + + * res_rtp_asterisk: Make P2P bridge Asymmetric codec aware + + Introduce a new property to rtp-engine to make it aware of + the desire for assymetric codecs or not. If asymmetric codecs + is not allowed, the bridge will compare read/write formats + and shut down the p2p bridge if needed + + ASTERISK-26745 #close + + Change-Id: I0d9c83e5356df81661e58d40a8db565833501a6f + +2017-08-03 21:30 +0000 [84b6a5efd7] Corey Farrell + + * Correct some leaks in unit tests. + + * chan_sip: channel in test_sip_rtpqos_1. + * test_config: config hook, config info and global config holder. + * test_core_format: format in format_attribute_set_without_interface. + * test_stream: unneeded frame duplication. + * test_taskprocessor: task_data. + + Change-Id: I94d364d195cf3b3b5de2bf3ad565343275c7ad31 + +2017-07-26 17:49 +0000 [f9a823e9dc] Richard Mudgett + + * res_pjsip_transport_websocket.c: Fix serializer ref leak. + + Change-Id: Ib5a19bfd597f63d9021baeb645fc11153b3afa57 + +2017-08-02 18:41 +0000 [631180a0c3] Richard Mudgett + + * res_pjsip_outbound_registration.c: Misc fixes. + + * Remove unnecessary CMP_STOP. + + * In handle_client_registration() use DEBUG_ATLEAST() to only do work + needed for the debug log message when the debug log message is needed. + + * In sip_outbound_registration_state_destroy() check state->registration + for NULL. + + Change-Id: I656d0fa11dda0b00048103efb1558e67a426fd80 + +2017-07-31 20:20 +0000 [7b84c6693e] Richard Mudgett + + * res_pjsip_nat.c: Remove unnecessary CMP_STOP. + + Change-Id: I6279b0d723bc3b75b8d65e81e02da9ea9bc0c3da + +2017-07-31 14:20 +0000 [a32614a2a8] Richard Mudgett + + * res_pjsip_registrar.c: Remove unnecessary CMP_STOP. + + Most uses of CMP_STOP are superfluous and are only respected when + OBJ_MULTIPLE is used to search the container. + + Change-Id: I20571a202ec0aa1098bb2749eeba18de7ca110b8 + +2017-08-03 11:30 +0000 [d066758a4c] Corey Farrell + + * Fix compile error for old versions of GCC. + + Use -Wno-format-truncation only if supported by compiler. + + ASTERISK-27171 #close + + Change-Id: Iac0aed7a5bcaa16c21b7d62c4e4678d244c4ccb6 + +2017-08-01 15:57 +0000 [ed1bce956e] George Joseph + + * Revert "res_pjsip_session: Release media resources on session end quicker." + + This reverts commit 98709642d640b490f327d220fdcdea6d45fd65d7. + + See the 15 branch review. + + Change-Id: I8476b3cdacaad5157fa36b6247d0e4cdf1e8d5c6 + +2017-06-29 03:47 +0000 [9a09f7dd5d] Niklas Larsson + + * app_queue: Add priority to AMI QueueStatus + + Add priority to callers in AMI QueueStatus response + + ASTERISK-27092 #close + + Change-Id: I8d1f737a72c7c38f4cfe1a4ee3ecc0a4f85bd199 + +2017-07-26 11:39 +0000 [3418d8d145] Joshua Colp + + * res_pjsip_session: Release media resources on session end quicker. + + A change was made long ago where the session was kept around + until the underlying INVITE session had been destroyed. This + had the side effect of also keeping the underlying media resources + around for this time as well. + + This change ensures that when we know the session is ending we + release the media resources immediately. + + ASTERISK-27110 + + Change-Id: I3c6a82fe7d2c50b9dc9197cb12ef22f20d337501 + +2017-07-26 08:48 +0000 [4d318cac68] Sean Bright + + * res_pjsip_pidf_eyebeam_body_supplement: Correct status presentation + + This change fixes PIDF content generation when the underlying device + state is considered in use. Previously it was incorrectly marked + as closed meaning they were offline/unavailable. The code now + correctly marks them as open. + + Additionally: + + * Generate an XML element for our activity instead of a using a text + node. + + * Consider every extension state other than "unavailable" to be 'open' + status. + + * Update the XML namespaces and structure to reflect those + documented in RFC 4480 + + * Use 'on-the-phone' (defined in RFC 4880) instead of 'busy' as the + "in use" activity. This change results in eyeBeam using the + appropriate icon for the watched user. + + This was tested on eyeBeam 1.5.20.2 build 59030 on Windows. + + ASTERISK-26659 #close + Reported by: Abraham Liebsch + patches: + ASTERISK-26659.diff submitted by snuffy (license 5024) + + Change-Id: I6e5ad450f91106029fb30517b8c0ea0c2058c810 + +2017-07-23 18:34 +0000 [114602f434] Joshua Colp + + * res_pjsip: Add support for dnsmgr to external_media_address. + + The "external_media_address" option on transports is now + resolved using dnsmgr. This allows it to be automatically + refreshed regularly if refreshes are enabled in dnsmgr. + If the system is using a dynamic IP address a dynamic DNS + hostname can be provided to keep the IP address up to + date. + + Change-Id: Ia54771720dff0105bde55d5bbb81a3ba437e05b2 + +2017-07-27 20:58 +0000 [0f49e6ee2e] Corey Farrell + + * Fix compiler warnings on Fedora 26 / GCC 7. + + GCC 7 has added capability to produce warnings, this fixes most of those + warnings. The specific warnings are disabled in a few places: + + * app_voicemail.c: truncation of paths more than 4096 chars in many places. + * chan_mgcp.c: callid truncated to 80 chars. + * cdr.c: two userfields are combined to cdr copy, fix would break ABI. + * tcptls.c: ignore use of deprecated method SSLv3_client_method(). + + ASTERISK-27156 #close + + Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88 + +2017-07-27 06:35 +0000 [0d58fefa30] George Joseph + + * bundled_pjproject: Improve SSL/TLS error handling + + OpenSSL has 2 levels or error processing. It's possible for the + top layer to return SSL_ERROR_SYSCALL but the lower layer return + no error, in which case processing should continue. Only the top + layer was being examined though so connections were being torn + down when they didn't need to be. This patch adds the examination + of the lower level codes, and if they return no errors, allows + processing to continue. + + ASTERISK-27001 + Reported-by: Ian Gilmour + patches: + pjproject-2.6.patch submitted by Ian Gilmour (license 6889) + + Updated-by: George Joseph and Sauw Ming (Teluu) + + Merged to upstream pjproject on 7/27/2017 (commit 5631) + + Change-Id: I23844ca0c68ef1ee550f14d46f6dae57d33b7bd2 + +2017-06-26 07:52 +0000 [423d01cf16] Torrey Searle + + * chan_pjsip: add a new function PJSIP_DTMF_MODE + + This function is a replica of SIPDtmfMode, allowing the DTMF mode of a + PJSIP call to be modified on a per-call basis + + ASTERISK-27085 #close + + Change-Id: I20eef5da3e5d1d3e58b304416bc79683f87e7612 + +2017-07-25 15:17 +0000 [c16000f201] Sean Bright + + * res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours + + Change-Id: Ia578ede1a55b21014581793992a429441903278b + +2017-07-20 08:08 +0000 [708cdc0b8e] Sergej Kasumovic + + * res_stasis_device_state: Unsubscribe should remove old subscriptions + + Case scenario with Applications ARI: + + * Once you subscribe to deviceState with Applications REST API, it will be + added into subscription pool. + + * When you unsubscribe it will remove from the device_state_subscription + hash table but not from the subscription pool. + + * When you subscribe again, it will add it to pool again. + + * Now you will have two subscriptions and you will receive same event + twice. + + This fix should now remove deviceState subscription from pool and it + should fix unsubscribe on deviceState. + + ASTERISK-27130 #close + + Change-Id: I718b70d770a086e39b4ddba4f69a3c616d4476c4 + +2017-07-24 13:30 +0000 [24bb5a8908] Joshua Colp + + * core: Add VP9 passthrough support. + + This change adds VP9 as a known codec and creates a cached + "vp9" media format for use. + + Change-Id: I025a93ed05cf96153d66f36db1839109cc24c5cc + +2017-07-21 15:57 +0000 [07f8e45a90] Matthew Fredrickson + + * format.h: Fix a few minor errors in comments. + + A few minor problems were found in comments in format.h. This patch fixes them. + + Change-Id: I07f0bdb47b93359b361c4c3d8ecc87cd3199dd94 + +2017-07-21 17:04 +0000 [7e9aa74daa] Rusty Newton + + * say.c: Fix file locations for second, seconds, minute, minutes files + + The seconds and minutes files have always existed in the base language + directory of the Core package. So say.c has always been calling the wrong + location (under digits/) for those two files and in the case of second and + minute they didn't exist in the Core packages at all. + + The 1.6 sounds release moves the second and minute files into Core from + Extra for the languages that already had them. A future release will include + the second and minute files for languages that didn't already have them. + + This patch just changes all the target locations for second, seconds, + minute, and minutes that were under the digits subdir to be under the root of + sounds instead. Which is where the sounds will be for some languages after 1.6 + sounds and for all languages after a future release. + + ASTERISK-25810 #close + + Change-Id: I05d9d4bee6a7237030530a46e7eb3df15f13f702 + Reported-by: Nicolas Riendeau + +2017-07-19 18:11 +0000 [7ff9d8785d] Richard Mudgett + + * app_voicemail.c: Allow mailbox entry on authentication retry prompt. + + The following testsuite voicemail tests were failing to re-enter the + mailbox after the first login attempt. + + tests/apps/voicemail/authenticate_invalid_mailbox + tests/apps/voicemail/authenticate_invalid_password + + The tests were noting the start of the vm-incorrect-mailbox prompt and + immediately sending the mailbox for the next login attempt. Since the + invalid message playback had to complete before the digits were + recognized, the test passed for the wrong reason and added approximately + 20 seconds to the test times. + + * Allow the vm-incorrect-mailbox prompt to get interrupted by the mailbox + digits like the initial vm-login prompt so the tests are able to enter the + intended mailbox. + + Change-Id: I1dc53fe917bfe03a4587b2c4cd24c94696a69df8 + +2017-07-21 14:20 +0000 [4f93f75e7e] Rusty Newton + + * Sounds: Update Makefile for Extra sounds 1.5.1 release + + Incrementing version for the Extra sounds release. 1.5.1 Extra sounds + removes two prompts that were moved into the Core packages in the 1.6 Core + sounds release. + + ASTERISK-27142 #close + + Change-Id: I82f017812b0ea9599e19dd4635afd55611f13ee7 + +2017-07-20 09:57 +0000 [cea4ce246d] Sean Bright + + * corosync: Fix corosync library name in configure.ac + + Also add new corosync packages to install_prereq. + + Reported by Travis Ryan in #asterisk-dev + + Change-Id: Ib861c95ba630fed62dc54e56784ad8446ed9d2db + +2017-07-18 15:04 +0000 [9a47dd7113] Benjamin Keith Ford + + * pjsip: Increase maximum packet size. + + The maximum packet size for PJSIP has been increased to handle the + multiple streams being added for WebRTC. + + Change-Id: I9ea1e8d02668c544acadcb1c6200e1cc1bd588b3 + +2017-07-11 04:48 +0000 [1c3e7df26e] Holger Hans Peter Freyther + + * app_playback.c: Use the timezonename parameter + + In say_date_generic the timezonename parameter is passed but never + used. Fix it by passing it to the ast_localtime function. + + ASTERISK-27124 + + Change-Id: I6afa98f9163190043244b9f3ba91eb1874d1b586 + +2017-07-16 12:18 +0000 [51761b759d] Joshua Colp + + * res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use. + + This change makes it so that if an RTCP packet is being sent + the RTP ICE component is used for sending if RTCP-MUX is in use. + + ASTERISK-27133 + + Change-Id: I6200f611ede709602ee9b89501720c29545ed68b + +2017-07-11 09:55 +0000 [a4c85309f0] Torrey Searle + + * res/res_stasis_snoop: generate silence when audiohook returns null + + Currently when rtp is paused, no packets are written to the + recorded audio file, causing the silence to be skipped and recording + not properly time aligned. The read handler as been adapted to + return a silence frame of the correct size. + + ASTERISK-27128 #close + + Change-Id: I2d7f60650457860b9c70907b14426756b058a844 + +2017-07-14 01:25 +0000 [3858d99b73] Sergej Kasumovic + + * app_confbridge: Make sure name recordings are always removed from the filesystem + + This commit fixes two possible scenarios: + + * When recording name and if during recording you hangup, file is never + removed. This is due to the fact file location is nulled. + * When recording name and if you hangup during thank-you prompt, file + is never removed. + + ASTERISK-27123 #close + + Change-Id: I39b7271408b4b54ce880c5111a886aa8f28c2625 + +2017-07-14 01:11 +0000 [cdd6ca488a] Sergej Kasumovic + + * chan_iax2: On reload make sure to check for existing MWI subscription + + On every reload of chan_iax2 module, MWI subscription was added, which + results in additional taskprocessors being accumulated over time. + + This commit fixes it by making sure we check for existing subscription + first. + + This was verified with 'core show taskprocessors' CLI command. + + ASTERISK-27122 #close + + Change-Id: Ie2ef528fd5ca01b933eeb88188cc10967899cfb9 + +2017-07-13 15:43 +0000 [9f66fb7901] Rusty Newton + + * Sounds: Update for core sounds 1.6 release + + Added necessary lines to make the en_NZ language set selectable and to get + core sounds 1.6 pulled down. + + ASTERISK-26807 #close + ASTERISK-25816 #close + ASTERISK-26274 #close + + Change-Id: I84e4dd4696568cc1ba318d12ac4b075461d6eed4 + +2017-07-10 14:04 +0000 [df49ad2528] Corey Farrell + + * core: Add PARSE_TIMELEN support to ast_parse_arg and ACO. + + This adds support for parsing timelen values from config files. This + includes support for all flags which apply to PARSE_INT32. Support for + this parser is added to ACO via the OPT_TIMELEN_T option type. + + Fixes an issue where extra characters provided to ast_app_parse_timelen + were ignored, they now cause an error. + + Testing is included. + + ASTERISK-27117 #close + + Change-Id: I6b333feca7e3f83b4ef5bf2636fc0fd613742554 + +2017-07-12 15:07 +0000 [6d0ff310c6] Sean Bright + + * basic-pbx: Remove res_pjsip_multihomed from sample config + + ASTERISK-27127 #close + Reported by: HZMI8gkCvPpom0tM + + Change-Id: I2b0c54570d58156e37166ac536728af3b6c01789 + +2017-07-11 07:26 +0000 [4e555437dc] George Joseph + + * res_musiconhold: Add kill_escalation_delay, kill_method to class + + 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. + + Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b + +2017-07-03 07:30 +0000 [4f2f3bfebf] Tzafrir Cohen + + * Avoid setting maxfiles for a remote asterisk + + Setting maxfiles (maximum number of open files) has no practical + effect on a remote asterisk (rasterisk, rasterisk -x). + + It has an ill effect of printing an extra message, which + may be annoying in case of -x. + + ASTERISK-27105 #close + + Change-Id: Iaf9eb344e4b4b517df91b736b27ec55f6a6921a2 + +2017-07-05 15:31 +0000 [32b98ad956] George Joseph + + * http.c: Reduce log spam + + Messages like "fwrite() failed: Connection reset by peer" are no + help whatsoever, especially since they can be caused simply by a + client disconnecting. + + * Make those WARNINGs DEBUGs. + * Check the return of the headers fprintf. + + Change-Id: I17bd5f3621514152a7b2b263c801324c5e96568b + +2017-07-07 11:19 +0000 [25e18bf514] Benjamin Keith Ford + + * res_pjsip: Fix crash with from_user containing invalid characters. + + If the from_user field contains certain characters (like @, {, ^, etc.), + PJSIP will return a null value for the URI when attempting to parse it. + This causes a crash when trying to dial out through a trunk that contains + these invalid characters in its from_user field. + + This change checks the configuration and ensures that an endpoint will + not be created if the from_user contains an invalid character. It also + adds a null check to the PJSIP URI parsing as a backup. + + ASTERISK-27036 #close + Reported by: Maxim Vasilev + + Change-Id: I0396fdb5080604e0bdf1277464d5c8a85db913d0 + +2017-06-27 19:27 +0000 [8a803f75a0] Richard Mudgett + + * json.c: Add backtrace log to find 'Invalid UTF-8 string' errors + + Change-Id: I9020ff9f2b3749904317c0c173f47a1bbed6f929 + +2017-07-05 13:39 +0000 [aa514f420b] Richard Mudgett + + * res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock. + + When a message is received on the TURN socket, the code processing the + message needs to call into the ICE/STUN session for further processing. + This code path locks the TURN group lock then the ICE/STUN group lock. In + another thread an ICE/STUN timer can fire off to send a keep alive message + over the TURN socket. In this code path, the ICE/STUN group lock is + obtained then the TURN group lock is obtained to send the packet. A + classic deadlock case if the group locks are not the same. + + * Made TURN get created using the ICE/STUN session's group lock. + + NOTE: I was originally concerned that the ICE/STUN session can get + recreated by ice_reset_session() for an event like RTCP multiplexing + causing a change during SDP negotiation. In this case the TURN group lock + would become different. However, TURN is also recreated as part of the + ICE/STUN recreation in ice_create() when all known ICE candidates are + added to the new ICE session. While the ICE/STUN and TURN sessions are + being recreated there is a period where the group locks could be + different. + + ASTERISK-27023 #close + Patches: + res_rtp_asterisk-turn-deadlock-fix.patch (license #6502) + patch uploaded by Michael Walton (modified) + + Change-Id: Ic870edb99ce4988a8c8eb6e678ca7f19da1432b9 + +2017-07-06 05:55 +0000 [379fe65831] George Joseph + + * Fix alembic branches + + Change-Id: I04f607f084bda9b1b7f626e8e9735c37dc751187 + +2017-06-23 11:17 +0000 [22c4c1a0ba] Richard Mudgett + + * bridge_native_rtp.c: Fix direct media video RTP instance ACL check. + + The video stream was using the audio stream RTP instance addresses to + check if the video RTP gets directed to an allowed direct media Access + Control List (ACL) address. There is no guarantee that the video RTP + instance uses the same addresses as the audio RTP instance. + + This looks like it has been a bug since v11 when direct media ACL was + first added to chan_sip and then faithfully reproduced through a couple + code refactorings into the new bridging architecture. + + Change-Id: I8ddd56320e0eea769f3ceed3fa5b6bdfb51d681a + +2017-07-05 07:42 +0000 [6258de458b] Sean Bright + + * core: Fix segfault when invoking 'data get' CLI command + + Invoking 'data get /asterisk/core/channeltypes' caused a crash because + of an assumption of a tech's capabilities to be non-NULL. The + 'Surrogate' tech, however, does have a NULL capabilities member, + resulting in a crash. + + ASTERISK-27108 #close + + Change-Id: I2fbe7715681f43d5565d1e1599269468c26b0e0a + +2017-07-03 10:59 +0000 [39d2ebbf56] Alexander Traud + + * chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support). + + When sip.conf contained tcpenable=yes and autodomain=yes, the TCP domain was + added in any case, because of a local Boolean-negation error of the return value + of ast_sockaddr_cmp. After fixing this error for TCP and TLS, the TLS domain was + still always added with tlsenable=yes, because the domains were not compared + just on the address but also on the port – and TLS is always on a different port + than UDP/TCP. + + ASTERISK-27106 + + Change-Id: I14fe9e319e238320b094016980445ef3a5b3337c + +2017-07-03 10:38 +0000 [9f4b3b966e] Alexander Traud + + * chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support). + + Because of a copy-and-paste error when the struct ast_sockaddr changed, + tlsbindaddr was not added, when sip.conf contained autodomain=yes; see + "show sip domains" on the command-line interface (CLI) of Asterisk. + + ASTERISK-27106 + + Change-Id: I3d0957150017c223136968ef1266f275d0d6695e + +2017-06-29 13:58 +0000 [194625c1de] Sean Bright + + * app_voicemail: Cleanup ODBC connection handling + + The primary focus of this patch is adding a missing call to + ast_odbc_release_obj(), but is also a general cleanup of the ODBC + related code in app_voicemail. + + ASTERISK-27093 #close + + Change-Id: I8e285142eaeb3146b4287a928276b70db76c902b + +2017-06-30 23:57 +0000 [73520e9f58] Corey Farrell + + * channel: Clear channel flag in error branch. + + Clear channel flag AST_FLAG_END_DTMF_ONLY in ast_waitfordigit_full when + ast_read returns NULL. + + ASTERISK-27100 #close + + Change-Id: Id3039e9a4e74e0cb359f636c9fd0c9740ebf7d9d + +2017-06-29 18:27 +0000 [0d64cbde57] Richard Mudgett + + * pjsip_distributor.c: Fix deadlock with TCP type transports. + + When a SIP message comes in on a transport, pjproject obtains the lock on + the transport and pulls the data out of the socket. Unlike UDP, the TCP + transport does not allow concurrent access. Without concurrency the + transport lock is not released when the transport's message complete + callback is called. The processing continues and eventually Asterisk + starts processing the SIP message. The first thing Asterisk tries to do + is determine the associated dialog of the message to determine the + associated serializer. To get the associated serializer safely requires + us to get the dialog lock. + + To send a request or response message for a dialog, pjproject obtains the + dialog lock and then obtains the transport lock. Deadlock can result + because of the opposite order the locks are obtained. + + * Fix the deadlock by obtaining the serializer associated with the dialog + another way that doesn't involve obtaining the dialog lock. In this case, + we use an ao2 container to hold the associated endpoint and serializer. + The new locks are held a brief time and won't overlap other existing lock + times. + + ASTERISK-27090 #close + + Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd + +2017-06-29 18:22 +0000 [905d18e8bf] Richard Mudgett + + * pjsip_distributor.c: Fix unidentified_requests hash functions. + + The OBJ_SEARCH_xxx defines should not be used as if they were individual + bits. They represent a multi-bit enumeration value field. + + Change-Id: I32abc9a475396dab02402a7014357dd94284e17b + +2017-06-30 08:31 +0000 [bbe68f139d] George Joseph + + * pjproject_bundled: Allow passing configure options to bundled + + There wasn't any good way to pass options like --host or --build + down to the pjproject configure which makes cross-compiling difficult. + + * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which + can be used to pass arbitrary options to pjproject configure. + * Automatically set the pjproject configure --host and --build + options to match those supplied for the asterisk configure. + + ASTERISK-27097 #close + Reported-by: Kinsey Moore + + Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e + +2017-06-29 14:50 +0000 [6bd7c0f37c] George Joseph + + * chan_pjsip: Fix ability to send UPDATE on COLP + + When connected_line_method is "invite", we're supposed to determine + if the client can support UPDATE and if it can, send UPDATE instead + of INVITE to avoid the SDP renegotiation. Not only was pjproject + not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing + that invite_tsx wasn't NULL which isn't always the case. + + * Updated chan_pjsip/update_connected_line_information to drop the + requirement that invite_tsx isn't NULL. + * Submitted patch to pjproject sip_inv.c that sets the + PJSIP_INV_SUPPORT_UPDATE flag correctly. + * Updated pjsip.conf.sample to clarify what happens when "invite" + is specified. + + ASTERISK-27095 + + Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560 + +2017-06-27 04:37 +0000 [2c43ca0ac5] Ivan Poddubny + + * app_queue: Fix returning to dialplan when a queue is empty + + The fix for ASTERISK-25665 introduced a regression. + The return value of queue_exec used to be 0 in case of leavewhenempty + but it was changed to -1 (returned from wait_our_turn and passed + transparently by queue_exec), thus leading to hangup instead of returning + back to dialplan. + + This commit resets the value back to 0 in this case, restoring + original behavior. + + ASTERISK-27065 #close + Reported by: Marek Cervenka + + Change-Id: Id9c83b75aeda463250155e88c5004be52bbca5ac + +2017-06-28 09:03 +0000 [0426b1d88a] Joshua Colp + + * res_rtp_asterisk: Fix issues with ICE renegotiation. + + When re-inviting to add more streams it is possible for + the role of existing ICE sessions to be changed to the + incorrect value. This results in subsequent refreshes + within the sessions getting a role conflict and the ICE + session breaking down. This change only sets the role to + be the new value if an ICE renegotiation is actually + going to happen, otherwise the existing role is preserved. + + As well if we encounter a situation where a unidirectional + ICE negotiation happens and the other side does not send us + candidates we will not store any information for sending + traffic, even though we know where they are reachable. This + change fixes this by using the source of the ICE traffic + itself as the target if no candidates are known and we + receive some ICE traffic. + + ASTERISK-27088 + + Change-Id: I71228181e358917fcefc3100fad21b2fc02a59a9 + +2017-06-08 22:50 +0000 [eb48e99bd4] George Joseph + + * bridge_native_rtp: Keep rtp instance refs on bridge_channel + + There have been reports of deadlocks caused by an attempt to send a frame + to a channel's rtp instance after the channel has left the native bridge + and been destroyed. This patch effectively causes the bridge channel to + keep a reference to the glue and both the audio and video rtp instances + so what gets started will get stopped. + + ASTERISK-26978 #close + Reported-by: Ross Beer + + Change-Id: I9e1ac49fa4af68d64826ccccd152593cf8cdb21a + +2017-06-27 10:46 +0000 [1f59d08924] Torrey Searle + + * res/res_pjsip_t38: fix incorrect increment of media_count + + The T38 sdp callback incorrectly has a side effect of incrementing + the media_count. This can lead to core dumps. + + Change-Id: I7bb2f4987de4046ec52cfc34e5ea0662dae32af8 + +2017-06-15 03:12 +0000 [9fbc34d2bd] Torrey Searle + + * res_pjsip: Add DTMF INFO Failback mode + + The existing auto dtmf mode reverts to inband if 4733 fails to be + negotiated. This patch adds a new mode auto_info which will + switch to INFO instead of inband if 4733 is not available. + + ASTERISK-27066 #close + + Change-Id: Id185b11e84afd9191a2f269e8443019047765e91 + +2017-06-22 07:47 +0000 [154d2914fa] Torrey Searle + + * res/res_pjsip_t38 ensure t38 requests get rejected quickly + + arm the t38 webhook always, so we can correctly reject a + T38 negotiation request when t38 is disabled on a channel + + Change-Id: Ib1ffe35aee145d4e0fe61dd012580be11aae079d + +2017-06-21 17:57 +0000 [764d04fa87] Richard Mudgett + + * res_pjsip_mwi.c: Eliminate RAII_VAR in contact delete observer + + Change-Id: I0bc97c6608de1d1a4228826b3b3be43f162f05f3 + +2017-06-16 18:08 +0000 [0f6a9617eb] Alexei Gradinari + + * res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact + + Do not need to unsubscribe/subscribe on creating the ednpoint's contact. + The modified function create_mwi_subscriptions_for_endpoint adds + the subscription only if it does not exist. + + The subscriptions aren't added for active contacts + which are retrieved on startup from realtime + if mwi_disable_initial_unsolicited=yes. + Because the mwi_contact_added is not called. + So the subscriptions also should be created on updating contact. + + ASTERISK-26230 #close + + Change-Id: I47e265af9296ca09aa42a316fdacac104148cee4 + +2017-06-20 15:41 +0000 [1f9913f272] Kevin Harwell + + * core_local: local channel data not being properly unref'ed and unlocked + + In an earlier version of Asterisk a local channel [un]lock all functions were + added in order to keep a crash from occurring when a channel hung up too early + during an attended transfer. Unfortunately, when a transfer failure occurs and + depending on the timing, the local channels sometime do not get properly + unlocked and deref'ed after being locked and ref'ed. This happens because the + underlying local channel structure gets NULLed out before unlocking. + + This patch reworks those [un]lock functions and makes sure the values that get + locked and ref'ed later get unlocked and deref'ed. + + ASTERISK-27074 #close + + Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09 + +2017-06-20 16:01 +0000 [67664fbf95] Kevin Harwell + + * bridge: stuck channel(s) after failed attended transfer + + If an attended transfer failed it was possible for some of the channels + involved to get "stuck" because Asterisk was not hanging up the transfer target. + + This patch ensures Asterisk hangs up the transfer target when an attended + transfer failure occurs. + + ASTERISK-27075 #close + + Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9 + +2017-06-19 11:28 +0000 [cecf6540dc] Rodrigo Ramírez Norambuena + + * cdr: fix mistake spelling of a word for Unanswered. + + Change-Id: I7a610bef369924523a445c7e849ee88cc45dc5df + +2017-06-19 17:21 +0000 [8f356192d1] Alexei Gradinari + + * app_voicemail: IMAP connection control + + A new global option "imap_poll_logout" was added to specify whether need to + disconnect from the IMAP server after polling of mailboxes. + + ASTERISK-27068 #close + + Closing IMAP connection after loading mailbox from voicemail.conf + + ASTERISK-24052 #close + + Change-Id: Ib7558ba04516240a32b65f42e9be64372a0ae12a + +2017-06-12 16:17 +0000 [8e749c8f51] Alexei Gradinari + + * res_pjsip_mwi: unsubscribe unsolicited MWI on deleting endpoint last contact + + If the endpoint's last contact is deleted unsolicited MWI has to be + unsubscribed. + + ASTERISK-27051 #close + + Change-Id: I33e174e0b9dba0998927d16d6d100fda5c7254e0 + +2017-06-16 09:31 +0000 [edfdb4dff5] George Joseph + + * res_stasis: Plug reference leak on stolen channels + + When a stasis channel is stolen by another app, the control + structure is unreffed but never unlinked from the app_controls + container. This causes the channel reference to leak. + + Added OBJ_UNLINK to the callback in channel_stolen_cb. + + Also added some additional channel lifecycle debug messages to + channel.c. + + ASTERISK-27059 #close + Repoorted-by: George Joseph + + Change-Id: Ib820936cd49453f20156971785e7f4f182c56e14 + +2017-06-16 14:56 +0000 [0a40073750] Matthew Fredrickson + + * formats/format_g729: Fix typo in comment + + There was a typo in a comment. This commit is to fix the typo. + + ASTERISK-27060 #close + + Change-Id: Ic2699f8dbeaacd58ccb6ec3203e853e1babe3235 + +2017-06-12 09:23 +0000 [a6e4899612] Alexei Gradinari + + * res_pjsip: New endpoint option "notify_early_inuse_ringing" + + This option was added to control whether to notify dialog-info state + 'early' or 'confirmed' on Ringing when already INUSE. + The value "yes" is useful for some SIP phones (Cisco SPA) + to be able to indicate and pick up ringing devices. + + ASTERISK-26919 #close + + Change-Id: Ie050bc30023543c7dfb4365c5be3ce58c738c711 + +2017-03-30 09:33 +0000 [005a4afa6b] Jan Friesse + + * res_corosync: Change thread stack size + + In Corosync 2.x libraries were changed to use LibQB IPC. + Sadly LibQB IPC doesn't support copy-free access to received buffer, so + Corosync libraries were rewritten to use stack as buffer. Mostly the + needed stack size is quite small, but for all *_dispatch functions, 1MiB + is needed. + + Asterisk function ast_pthread_create_background set stack size for new + thread to much smaller AST_BACKGROUND_STACKSIZE (~500KiB). + + This results in Asterisk crash when running with Corosync 2.x. + + Patch solves this issue by creating it's own version of + ast_pthread_create_background which sets stack size to much higher value + (actually it's AST_BACKGROUND_STACKSIZE + 3MiB). + + Another problem may appear when "corosync show members" netconsole + command is executed. It is also executed in thread and also has only + 500KiB stack size. Sadly it calls corosync_cfg_get_node_addrs which + again needs at least 1MiB stack. + + Solution is to use HAVE_COROSYNC_CFG_STATE_TRACK as a discriminator + between Corosync 1.x and 2.x. If 1.x is found, nothing changes. If 2.x + is found, NodeID is displayed instead of IP address. + + ASTERISK-25370 #close + Reported by: mdu113 + + Change-Id: Id95b0d21ab6e708e7d74ad8786c587211676fa08 + +2017-06-13 11:33 +0000 [7901b9853e] George Joseph + + * res_ari: Add "module loaded" check to ari stubs + + The recent change to make the use of LOAD_DECLINE more consistent + caused res_ari to unload itself before declining if the ari.conf + file wasn't found. The ari stubs though still tried to use the + configuration resulting in segfaults. + + This patch creates a new CHECK_ARI_MODULE_LOADED macro which tests + to see if res_ari is actually loaded and causes the stubs to also + decline if it isn't. The macro was then added to the mustache + template's "load_module" function. + + ASTERISK-27026 #close + Reported-by: Ronald Raikes + + Change-Id: I263d56efa628ee3c411bdcd16d49af6260c6c91d + +2017-06-15 13:48 +0000 [3b6c327c51] Alexei Gradinari + + * app_voicemail: IMAP logout on reload/unload + + Closing IMAP connection on module reload or unload. + + ASTERISK-24052 #close + + Change-Id: I2a40182aa9ef249fa6865d33570430e9ada68525 + +2017-06-15 12:33 +0000 [b9a4ab8c8c] Richard Mudgett + + * chan_pjsip: Fix PJSIP_MEDIA_OFFER dialplan function read. + + The construction of the returned string assumed incorrectly that the + supplied buffer would always be initialized as an empty string. If it is + not an empty string we could overrun the supplied buffer by the length of + the non-empty buffer string plus one. It is also theoreticaly possible + for the supplied buffer to be overrun by a string terminator during a read + operation even if the supplied buffer is an empty string. + + * Fix the assumption that the supplied buffer would already be an empty + string. The buffer is not guaranteed to contain an empty string by all + possible callers. + + * Fix string terminator buffer overrun potential. + + Change-Id: If6a0806806527678c8554b1dcb34fd7808aa95c9 + +2017-06-15 07:32 +0000 [4910a3bf40] Joshua Colp + + * channel: Fix reference counting in ast_channel_suppress. + + The ast_channel_suppress function wrongly decremented the + reference count of the underlying structure used to keep + track of what should be suppressed on a channel if the + function was called multiple times on the same channel. + + This change cleans up the reference counting a bit so + this no longer occurs. + + ASTERISK-27016 + + Change-Id: I2eed4077cb4916e6626f9f120b63b963acc5c136 + +2017-06-14 12:34 +0000 [f1a209d5ac] Richard Mudgett + + * app_voicemail.c: Fix compile error when IMAP enabled. + + Change-Id: I2703f15b4099b4210c68eccf293105d1975c1fc1 + +2017-06-08 12:28 +0000 [dc307af7f2] Frederic LE FOLL + + * Core/PBX: Deadlock between dialplan execution and application unregistration. + + Not easy to reproduce, but we have noticed deadlocks when unloading a module + while dialplan is handling a request. + + The deadlock is between : + 1) Dialplan execution: pbx_extension_helper() first taking conlock, + then pbx_findapp() [when called] asking for lock on apps list. + 2) Application unregistration: ast_unregister_application() first taking lock + on apps list, then unreference_cached_app() [when called] asking for conlock. + + As a protection, I suggest to modify ast_unregister_application(), so that it + anticipates the need of conlock, before taking the lock on apps list. + The side effect is a longer unavailability of conlock when unregistering an + application. + + ASTERISK-27041 + + Change-Id: I0db0f1eb320da6a5758cce3a47d765be1face8e2 + +2017-06-14 11:12 +0000 [c2eea791e4] George Joseph + + * res_pjsip_pubsub: Fix reference to released endpoint + + destroy_subscription was attempting to get the id of the + subscription tree's endpoint after we'd already called ao2_cleanup + on it causing a segfault. + + Moved the cleanup until after the debug statement and since + endpoint could also be NULL at this point, check for that as well. + + ASTERISK-27057 #close + Reported-by: Ryan Smith + + Change-Id: Ice0a7727f560cf204d870a774c6df71e159b1678 + +2017-06-14 08:29 +0000 [2dee95cc7a] George Joseph + + * res_pjsip_session: Correct inverted test in session_outgoing_nat_hook + + There was a typo introduced in commit 776ffd77 which was preventing + the transport's external media address from being used. + + ASTERISK-27024 #close + Reported-by: Christopher van de Sande + patches: + patch.diff submitted by Florian Floimair (license 6892) + + Change-Id: I7ec617171eaa2d86d2680b00cf37d5088adafc27 + +2017-06-08 17:31 +0000 [e16a669c70] Jørgen H + + * res_pjsip_transport_websocket: Add NULL check in get_write_timeout + + Added check for NULL return value when calling + ast_sorcery_retrieve_by_id in function get_write_timeout + + ASTERISK-27046 + + Change-Id: I9357717278da631c3a1cb502c412693929b0cb41 + +2017-06-14 08:54 +0000 [7dafe82751] George Joseph + + * res_rtp_asterisk: Fix ssrc change for rtcp srtp + + It looks like there was a copy/paste error in ast_rtp_change_source + where if there was a rtcp srtp instance, instead of updating its + ssrc we were updating the srtp instance ssrc twice. + + ASTERISK-27022 #close + Reported-by: Michael Walton + + Change-Id: Ic88f3aee7227b401c58745ac265ff92c19620095 + +2017-06-08 14:38 +0000 [e414833f6e] Joshua Colp + + * bridge: Add a deferred queue. + + This change adds a deferred queue to bridging. If a bridge + technology determines that a frame can not be written and + should be deferred it can indicate back to bridging to do so. + Bridging will then requeue any deferred frames upon a new + channel joining the bridge. + + This change has been leveraged for T.38 request negotiate + control frames. Without the deferred queue there is a race + condition between the bridge receiving the T.38 request + negotiate and the second channel joining and being in the + bridge. If the channel is not yet in the bridge then the T.38 + negotiation fails. + + A unit test has also been added that confirms that a T.38 + request negotiate control frame is deferred when no other + channel is in the bridge and that it is requeued when a new + channel joins the bridge. + + ASTERISK-26923 + + Change-Id: Ie05b08523f399eae579130f4a5f562a344d2e415 + +2017-06-13 14:17 +0000 [6cdf3191d3] Kevin Harwell + + * res_pjsip_refer/session: Calls dropped during transfer + + When doing an attended transfer it's possible for the transferer, after + receiving an accepted response from Asterisk, to send a BYE to Asterisk, + which can then be processed before Asterisk has time to start and/or + complete the transfer process. This of course causes the transfer to not + complete successfully, thus dropping the call. + + This patch makes it so any BYEs received from the transferer, after the REFER, + that initiate a session end are deferred until the transfer is complete. This + allows the channel that would have otherwise been hung up by Asterisk to + remain available throughout the transfer process. + + ASTERISK-27053 #close + + Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a + +2017-06-13 10:47 +0000 [0bde568669] George Joseph + + * pjproject_bundled: Use the asterisk github mirror for download + + We now mirror the pjproject tarball and md5 at + https://github.com/asterisk/third-party/tree/master/pjproject + + To improve download reliability, we now get the tarball from + our mirror instead of from pjsip.org. + + ASTERISK-27052 #close + Reported-by: 'alex' + + Change-Id: I60236587a8935bfa71fcc391f4e2ecb31918c08a + +2017-06-12 17:55 +0000 [08be5e01e8] Alexei Gradinari + + * app_voicemail: IMAP logout on MWI unsubscribe + + Closing IMAP connection on MWI unsubscribe. + + ASTERISK-24052 #close + + Change-Id: I4ff964026002b2817b48c20fb4239f0a880228fd + +2017-06-12 09:57 +0000 [59c9bbe696] Alexei Gradinari + + * res_pjsip_mwi: don't create mwi subscriptions if initial unsolicited disabled + + If sending unsolicited mwi to all endpoints on startup is disabled + (mwi_disable_initial_unsolicited=yes) do not need to create subscriptions. + If there are many (thousands) realtime endpoints configured with unsolicited mwi + and Vociemail Storage configured as ODBC or IMAP there will be huge number of + DB/IMAP requests on startup. + + ASTERISK-26230 #close + + Change-Id: I50ae909639e3ee298b931a54def4b2b9e0fb86c5 + +2017-06-06 14:54 +0000 [68de35a6a0] David M. Lee + + * CFLAGS for BIND8 support + + Some systems (like macOS) require BIND_8_COMPAT to be defined so that + the nameser libraries are, well, BIND8 compatible. + + Change-Id: If79fc27a64f90de1835b5aa3aadfa9be22bd16b0 + +2017-06-11 12:06 +0000 [da3312457e] Sean Bright + + * codecs.conf.sample: Fix max_bandwidth speling error + + Reported by Sylvain Boily via asterisk-dev mailing list. + + Change-Id: Idc7623f335aea3e144dd369ba383b9a757480a9d + +2017-06-08 10:54 +0000 [6a64f65fe6] Guido Falsi + + * BuildSystem: Add patches to allow building with recent LibreSSL + + Add some #if defined checks which allow building against LibreSSL. + These patchess come from OpenBSD ports: + https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/telephony/asterisk/patches/ + + ASTERISK-27043 #close + Reported by: OpenBSD ports + + Change-Id: I2f6c08a5840b85ad4d2b75370b947ddde7a9a572 + +2017-06-08 10:36 +0000 [44cee2f4a1] Guido Falsi + + * BuildSystem: Fix build on FreeBSD due to missing crypt.h + + FreeBSD does not include a crypt.h include file. Definitions for + crypt() and crypt_r() are in unistd.h + + ASTERISK-27042 #close + + Change-Id: Ib307ee5e384870c6af50efa89fb73722dd0c3a7e + +2017-06-07 15:19 +0000 [1f10c6b3b0] Joshua Colp + + * chan_pjsip: Update device state when in early media. + + The chan_pjsip module uses a calculation approach for + determining device state. This means that in situations + where we would expect device state to change we need to + tell the core to query. A scenario that was missed is + when early media was signaled. + + This change adds the notification for the core to + query device state when we are told that early media + is being provided. + + ASTERISK-27039 + + Change-Id: Iafebfd152894966344ff2e950a3cee9f59a3eb6f + +2017-06-07 14:32 +0000 [590ffcaf0b] Sean Bright + + * eventfd: Disable during cross compilation + + Reported by Lonnie Abelbeck via private e-mail. + + Change-Id: Icc80f12b8d8d591e14a8e0ed9f1c02cbd193a89b + +2017-06-07 11:21 +0000 [5520b6c201] Alexei Gradinari + + * CHANGES: correct version for a new option 'refer_blind_progress' + + Change-Id: If4817d26a8974610827624fb8a4e56d681d6bf97 + +2017-06-06 07:04 +0000 [996a4791ff] Joshua Colp + + * pjsip: Extend 'asymmetric_rtp_codec' option to include us changing. + + PJSIP support in Asterisk differs from chan_sip in that it + allows media to be sent as-is without transcoding provided + the codecs were negotiated in the SDP. This is allowed + according to the RFC. Support for this differs quite a lot + though and some endpoints do not handle it well. + + This change extends the 'asymmetric_rtp_codec' option to + also cover this case. When set to no (the default) the code + behaves as chan_sip does - the best codec is selected and + we will only ever send that, unless we change what we are + sending if the remote side changes. When set to yes we + will send media as-is without transcoding if the codec + has been negotiated in the SDP. + + ASTERISK-26996 + + Change-Id: Ib1647f6902a0843e8c435946f831c2159e8d1d51 + +2017-06-06 10:04 +0000 [c093bf8072] Sean Bright + + * res_rtp_multicast: Use consistent timestamps when possible + + When a frame destined for a MulticastRTP channel does not have timing + information (such as when an 'originate' is done), we generate the RTP + timestamps ourselves without regard to the number of samples we are + about to send. + + Instead, use the same method as res_rtp_asterisk and 'predict' a + timestamp given the number of samples. If the difference between the + timestamp that we generate and the one we predict is within a specific + threshold, use the predicted timestamp so that we end up with timestamps + that are consistent with the number of samples we are actually sending. + + Change-Id: I2bf0db3541b1573043330421cbb114ff0f22ec1f + +2017-05-31 10:41 +0000 [746c2c5745] Joshua Colp + + * res_pjsip: Add support for returning only reachable contacts and use it. + + This introduces the ability for PJSIP code to specify filtering flags + when retrieving PJSIP contacts. The first flag for use causes the + query code to only retrieve contacts that are not unreachable. This + change has been leveraged by both the Dial() process and the + PJSIP_DIAL_CONTACTS dialplan function so they will now only attempt + calls to contacts which are not unreachable. + + ASTERISK-26281 + + Change-Id: I8233b4faa21ba3db114f5a42e946e4b191446f6c + +2017-06-05 10:45 +0000 [adfb28882b] Kevin Harwell + + * channel: ast_write frame wrongly freed after call to audiohooks + + ASTERISK-26419 introduced a bug when calling ast_audiohook_write_list in + ast_write. It would free the frame given to ast_write if the frame returned + by ast_audiohook_write_list was different than the given one. The frame + give to ast_write should never be freed within that function. It is the + caller's resposibility to free the frame after writing (or when it its done + with it). By freeing it within ast_write this of course led to some memory + corruption problems. + + This patch makes it so the frame given to ast_write is no longer freed within + the function. The frame returned by ast_audiohook_write_list is now subsequently + used in ast_write and is freed later. It is freed either after translate if the + frame returned by translate is different, or near the end of ast_write prior + to function exit. + + ASTERISK-26973 #close + + Change-Id: I463d4ac3b736ced95de986ee74a489c7c7ab103b + +2017-05-31 11:45 +0000 [283cc59af7] Sean Bright + + * pbx_builtin: Properly handle hangup during Background + + Before this patch, when a user hung up during a Background, we would + stuff 0xff into a char and attempt a dialplan lookup of it. This caused + problems for some realtime engines which interpreted the value as the + beginning of an invalid UTF-8 sequence. + + ASTERISK-19291 #close + Reported by: Andrew Nowrot + + Change-Id: I8ca6da93252d61c76ebdb46a4aa65e73ca985358 + +2017-05-31 04:25 +0000 [dc05183f4b] Joshua Colp + + * channel / app_meetme: Fix parentheses. + + ASTERISK-27025 + + Change-Id: Id736b0aa4ec6b6b0f04663d64fa8d151f81fdbed + +2017-05-30 16:07 +0000 [cf6cf59646] Sean Bright + + * stasis_recording: Correct ast_asprintf error checking + + ASTERISK-27021 #close + Reported by: Tim Morgan + + Change-Id: I0ac061f040093e806c3b1f4e2340864f3ce4dd75 + +2017-05-28 15:43 +0000 [70e5887906] Sean Bright + + * format: Reintroduce smoother flags + + In review 4843 (ASTERISK-24858), we added a hack that forced a smoother + creation when sending signed linear so that the byte order was adjusted + during transmission. This was needed because smoother flags were lost + during the new format work that was done in Asterisk 13. + + Rather than rolling that same hack into res_rtp_multicast, re-introduce + smoother flags so that formats can dictate their own options. + + Change-Id: I77b835fba0e539c6ce50014a984766f63cab2c16 + +2017-05-30 09:34 +0000 [97b003f5e2] Sean Bright + + * format_mp3: Re-work menuselect/build issues + + Rather than removing format_mp3 from ALL_C_MODS (which caused format_mp3 + to not show up in menuselect), use .PHONY targets when the necessary + source files are not present. + + ASTERISK-23951 + Reported by: Tzafrir Cohen + + Change-Id: I0a7512c51acc9e86043671795020b0de725bd9e8 + +2017-05-30 09:43 +0000 [c10341646d] George Joseph + + * test_json: Fix test names with reserved words + + Some of the test names were actually reserved words (true, false, + int, null, string, bool). When the jenkins test results analyzer + does its thing it tries to create a map using the test names as + keys and fails because they're reserved words. + + Added "type_" to those test names. + + Change-Id: I90d809f46969c78a1c605b736ff0635196a2cf1b + +2017-05-26 11:41 +0000 [b07b216235] Joshua Colp + + * manager: Clear the flag on the other channel. + + During the channel flag audit an incorrect change was + done. The flag should be cleared on the second channel. + + ASTERISK-26469 + + Change-Id: I770c5a389550a2fb5a6ade942fccbb2e1d9199c8 + +2017-05-26 11:06 +0000 [5e9cd1f20d] Sean Bright + + * res_srtp: Add support for libsrtp2 + + ASTERISK-25294 #close + Reported by: Tzafrir Cohen + + ASTERISK-26976 #close + Reported by: Alex + + Change-Id: I789b1c3d1ed31365bbd9339fa58ef36f48833c40 + +2017-05-25 11:10 +0000 [72213c98e3] Sean Bright + + * format_mp3: Don't try to build format_mp3 if we don't have sources + + ASTERISK-23951 #close + Reported by: Tzafrir Cohen + + Change-Id: Iebf181d44bb735787fde4b5be863c4d7e2478a30 + +2017-05-24 15:50 +0000 [65898c3af8] George Joseph + + * unittests: Add a unit test that causes a SEGV and... + + ...that can only be run by explicitly calling it with + 'test execute category /DO_NOT_RUN/ name RAISE_SEGV' + + This allows us to more easily test CI and debugging tools that + should do certain things when asterisk coredumps. + + To allow this a new member was added to the ast_test_info + structure named 'explicit_only'. If set by a test, the test + will be skipped during a 'test execute all' or + 'test execute category ...'. + + Change-Id: Ia3a11856aae4887df9a02b6b081cc777b36eb6ed + +2017-05-23 15:42 +0000 [90237dca11] Sean Bright + + * res_agi: Allow configuration of audio format of EAGI pipe + + This change allows the format of the EAGI audio pipe to be changed by + setting the dialplan variable 'EAGI_AUDIO_FORMAT' to the name of one of + the loaded formats. + + ASTERISK-26124 #close + + Change-Id: I7a10fad401ad2a21c68c2e7246fa357d5cee5bbd + +2017-05-23 13:33 +0000 [3eb7fbba72] Sean Bright + + * res_agi: Clarify 'RECORD FILE' documentation + + Documented the 'beep' option in both the parameters list and the command + description. + + ASTERISK-23839 #close + + Change-Id: I4970395c922dbdce3f7cf0f56d5b065ec9aa53ea + +2017-05-23 13:06 +0000 [f306e451f6] Sean Bright + + * res_agi: Prevent crash when SET VARIABLE called without arguments + + Explicitly check that the appropriate number of arguments were passed to + SET VARIABLE before attempting to reference them. Also initialize the + arguments array to zeroes before populating it. + + ASTERISK-22432 #close + + Change-Id: I5143607d80a2724f749c1674f3126b04ed32ea97 + +2017-05-23 12:35 +0000 [a007e438c3] Sean Bright + + * res_agi: Fix malformed AGI usage response + + If the generated XML documentation for a command does not end with a \n, + the postamble of the usage message does not appear on its own line. + + ASTERISK-25662 #close + + Change-Id: If190f1e9e37fe215fed95897d78d4a6e142b0020 + +2017-05-23 12:00 +0000 [971a401ce9] Sean Bright + + * sip.conf.sample: Clarify where DTLS settings are permitted + + ASTERISK-25101 #close + + Change-Id: I09a97793e5577b4422d0ae883fadb3f0d86725cc + +2017-05-23 10:06 +0000 [700ef6861a] Sean Bright + + * res_format_attr_h26x: Trim blanks in fmtp attributes + + Some devices separate format attributes with a semicolon followed by a + space, so trim blanks before trying to match them. + + ASTERISK-27008 #close + + Change-Id: Ia44cb2e4fef5c73dc541a29da79cb0e19c22d9cc + +2017-05-15 15:03 +0000 [6bfcb1acc7] Joshua Colp + + * app_queue: Fix members showing as being in call when not. + + A change was done which added an 'in_call' flag to queue + members that was set to true while talking to an agent. + Unfortunately in practice this does not accurately reflect + whether they are talking to an agent or not. If a Local + channel is involved and a transfer is performed then the + app_queue application would incorrectly think the agent + was still in a call with the caller. This was done to + fix a race condition between an agent becoming available + by device state and the checking of the last call information + for the wrapup time. There was a small window where the + last call information would be the previous value instead + of the new one. + + This change goes about fixing the original issue in a + different way by considering the call completed if device + state is received which would make the agent available + and if they are currently in a call. If this occurs the + last call information is updated before the agent becomes + available ensuring that old information is not present + when checking if the member should be called. This also + improves the transfer situation by actually updating + and enforcing the wrapup time. + + ASTERISK-26399 + ASTERISK-26400 + ASTERISK-26715 + ASTERISK-26975 + + Change-Id: Ife1cb686e3173b3a6d368601adef9aff69d4beea + +2017-05-23 05:45 +0000 [f1b32de2c5] Robert Mordec + + * app_confbridge: Race between removing and playing name recording while leaving + + When user leaves a conference, its channel calls async_play_sound_file() + in order to play the name announcement and then unlinks the sound file. + The async_play_sound_file() function adds a task to conference playback queue, + which then runs playback_common() function in a different thread. + + It leads to a race condition when, in some cases, channel thread may unlink + the sound file before playback_common() had a chance to open it. + + This patch creates a file deletion task, that is queued after playback. + + ASTERISK-27012 #close + + Change-Id: I412f7922d412004b80917d4e892546c15bd70dd3 + +2017-05-22 13:51 +0000 [e91efef2bb] Kevin Harwell + + * res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm + + When using rtcp mux if an rtcp payload came in it would still use the srtp + unprotect algorithm instead of the srtp unprotect rtcp method. Since rtcp + data was being passed to the rtp unprotect method this would result in an + error. + + This patch ensures that the correct unprotect method is chosen by making + sure the passed in rtcp flag is appropriately set when rtcp mux is enabled + and an rtcp payload is received. + + ASTERISK-26979 #close + + Change-Id: Ic5409f9d1a267f1d4785fc5aed867daaecca6241 + +2017-05-19 10:05 +0000 [4479038073] Sean Bright + + * chan_sip: Better ICE handling for RTCP-MUX + + If we are offered or are offering RTCP-MUX, don't consider RTCP ICE + candidates. This confuses certain browsers (current Firefox for + example) and causes intial audio setup delays. + + ASTERISK-26982 #close + + Change-Id: Ifeaf47e83972fe8dbe58b7fb3d6d1823400cfb91 + +2017-04-26 09:22 +0000 [36628cc9c4] Yasin CANER + + * res_pjsip_session : fixed wrong From Header number On Re-invite + + ASTERISK-26964 #close + + Change-Id: I55a9caa7dc90e6c4c219cb09b5c2ec08af84a302 + +2017-04-13 17:16 +0000 [919ccdb9ac] Mark Michelson + + * AST-2017-002: Ensure transaction key buffer is large enough. + + ASTERISK-26938 #close + + Change-Id: I266490792fd8896a23be7cb92f316b7e69356413 + +2017-04-13 17:17 +0000 [49c032abef] Mark Michelson + + * AST-2017-003: Handle zero-length body parts correctly. + + ASTERISK-26939 #close + + Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd + +2017-04-13 11:14 +0000 [1cc18d4025] George Joseph + + * AST-2017-004: chan_skinny: Add EOF check in skinny_session + + The while(1) loop in skinny_session wasn't checking for EOF so + a packet that was longer than a header but still truncated + would spin the while loop infinitely. Not only does this + permanently tie up a thread and drive a core to 100% utilization, + the call of ast_log() in such a tight loop eats all available + process memory. + + Added poll with timeout to top of read loop + + ASTERISK-26940 #close + Reported-by: Sandro Gauci + + Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898 + +2017-05-18 16:35 +0000 [c107ab4c04] Sean Bright + + * res_hep_rtcp: Add support level to module info + + Change-Id: I5661478f9cf12d431f730e42be79323b62831e92 + +2017-05-11 00:25 +0000 [cfeae52c0f] Ivan Poddubny + + * app_queue: Fix duplicate queue_log entries for EXITEMPTY and ABANDON + + There are 2 places in app_queue.c that log EXITEMPTY event: one in + wait_our_turn, and another one in queue_exec in the loop trying to + call an agent after wait_our_turn. + + In most cases it leads to logging EXITEMPTY twice. + + ABANDON is also logged on two places, and in the rare case when an agent + and caller hang up simultaneously it's also possible to get duplicates + in queue_log. + + This commit changes wait_our_turn to return -1 ("the caller should exit + the queue") instead of 0 ("the caller's turn has arrived") in case of + leaving when empty, so queue_exec skips the agent calling loop. + + Also, leave_queue is now executed only once in this case, because 2nd + time is just a noop when the queue entry has already been removed. + + Also, it sets qe->handled to -1 to indicate that the call was not + answered by an agent, but the necessary handling has already been done + in order to avoid logging an extra ABANDON entry. + + ASTERISK-25665 #close + Reported by: Ove Aursand + + Change-Id: I4578dd383bf2ac41589cf167865e8aaebcd4c11e + +2017-05-14 00:37 +0000 [5da91c65be] Rodrigo Ramírez Norambuena + + * Fix spelling queues.conf.sample file + + Change-Id: Ie1c2d83af66f27a449da09a68d987e0992627fee + +2017-05-13 11:40 +0000 [1618203964] Joshua Colp + + * asterisk: Audit locking of channel when manipulating flags. + + When manipulating flags on a channel the channel has to be + locked to guarantee that nothing else is also manipulating + the flags. This change introduces locking where necessary to + guarantee this. It also adds helper functions that manipulate + channel flags and lock to reduce repeated code. + + ASTERISK-26789 + + Change-Id: I489280662dba0f4c50981bfc5b5a7073fef2db10 + +2017-05-12 21:04 +0000 [b67363006f] Richard Mudgett + + * res_pjsip_session.c: Process initial INVITE sooner. (key exists) + + Retransmissions of an initial INVITE could be queued in the serializer + before we have processed the first INVITE message. If the first INVITE + message doesn't get completely processed before the retransmissions are + seen then we could try to setup the same call from the retransmissions. A + symptom of this is seeing a (key exists) message associated with an + INVITE. An earlier change attempted to address this kind of problem by + calculating a distributor serializer to use for unassociated messages. + Part of that change also made incoming calls keep using that distributor + serializer. (ASTERISK-26088) However, some leftover code was still + deferring the INVITE processing to the session's serializer even though we + were already in that serializer. This not only is unnecessary but would + cause the same call resetup problem. + + * Removed the code to defer processing the initial INVITE to the session's + serializer because we are already running in that serializer. + + ASTERISK-26998 #close + + Change-Id: I1e822d82dcc650e508bc2d40d545d5de4f3421f6 + +2017-05-08 15:56 +0000 [6af2dd34af] Alexei Gradinari + + * res_pjsip: New endpoint option "refer_blind_progress" + + This option 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". + + Some SIP phones like Mitel/Aastra or Snom keep the line busy until + receive "200 OK". + + ASTERISK-26333 #close + + Change-Id: Id606fbff2e02e967c02138457badc399144720f2 + +2017-05-09 10:34 +0000 [6fba0a41f0] Joshua Colp + + * tcptls: Improve error messages for TLS connections. + + This change uses the functions provided by OpenSSL to query + and better construct error messages for situations where + the connection encounters a problem. + + ASTERISK-26606 + + Change-Id: I7ae40ce88c0dc4e185c4df1ceb3a6ccc198f075b + +2017-05-04 17:28 +0000 [8ec6e19c86] Joshua Elson + + * Prevent Undefined Capath Crash + + It is possible to initialize a valid config without a capath + or cafile definition. This will cause a crash on a reload. + + This fix ensures capath is always allocated. + + ASTERISK-26983 #close + + Change-Id: I63ff715d9d9023427543a5b8a4ba7b0d82533c12 + +2017-05-05 11:33 +0000 [d6325373ac] George Joseph + + * cel_odbc: Fix timestamp processing for microseconds + + When a column is of type timestamp, the fraction part of the event + field's seconds was frequently parsed incorrectly especially if + there were leading zeros. For instance "2017-05-23 23:55:03.023" + would be parsed into an int as "23" then when the timestamp was + formatted again to be inserted into the database column it'd be + "2017-05-23 23:55:03.23" which is now 230 milliseconds instead of + 23 milliseconds. "03.000001" would be transformed to "03.1", etc. + + * If the event field is 'eventtime' and the db column is timestamp, + then existing processing has already correctly formatted the + timestamp so now we simply use it rather than parsing it and + re-printing it. This is the most common use case anyway. + + * If the event field is other than 'eventtime' and the db column + is timestamp, we now parse the seconds, including the fractional + part into a double rather than 2 ints. This preserves the + magnitude and precision of the fractional part. When we print + it, we now print it as a "%09.6lf" which correctly represents the + input. + + To be honest, why we parse the string timestamp into components, + test the components, then print the components back into a string + timestamp is beyond me. We should use parse it, test it, then if + it passes, use the original string representation in the database + call. Maybe someone thought that some implementations wouldn't + take a partial timestamp string like "2017-05-06" and decided to + always produce a full timestamp string even if an abbreviated one + was supplied. Anyway, I'm leaving it as it is. + + ASTERISK-25032 #close + Reported-by: Etienne Lessard + + Change-Id: Id407e6221f79a5c1120e1a70bc7e893bbcaf1938 + +2017-05-09 05:25 +0000 [10a49ab362] Joshua Colp + + * res_hep_rtcp: Provide chan_sip Call-ID for RTCP messages. + + This change adds the required logic to allow the SIP + Call-ID to be placed into the HEP RTCP traffic if the + chan_sip module is used. In cases where the option is + enabled but the channel is not either SIP or PJSIP then + the code will fallback to the channel name as done + previously. + + Based on the change on Nir's branch at: + team/nirs/hep-chan-sip-support + + ASTERISK-26427 + + Change-Id: I09ffa5f6e2fdfd99ee999650ba4e0a7aad6dc40d + +2017-05-08 16:11 +0000 [7d4a22bf2e] George Joseph + + * logger: 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. + Should something go bezerk and log tons of messages in a tight + loop, this will prevent memory escalation. + + When the limit is reached, a WARNING is logged to that effect + and messages are discarded until the queue is empty again. At + that time another WARNING will be logged with the count of + discarded messages. There's no "low water mark" for this queue + because the logger thread empties the entire queue and processes it + in 1 batch before going back and waiting on the queue again. + Implementing a low water mark would mean additional locking as + the thread processes each message and it's not worth it. + + A "test" was added to test_logger.c but since the outcome is + non-deterministic, it's really just a cli command, not a unit + test. + + Change-Id: Ib4520c95e1ca5325dbf584c7989ce391649836d1 + +2017-05-08 13:40 +0000 [1bcce442d0] Vitezslav Novy + + * chan_sip: Change sip_get_codec() to return correct codec list + + Return cahnnel nativeformats to fix bridge technology selection process. + Same approach as in pjsip module. + + ASTERISK-26143 + Reported-by: Henning Holtschneider + + Change-Id: I64e863753954d6ad67a9e722df2ebc328705ad48 + +2017-05-04 17:32 +0000 [614eda785d] Richard Mudgett + + * netsock2.c: Made get/set addr port avoid potential uninitialized memory. + + Change-Id: I532052bd7cd95a4b3565485fc01e2a1ea07ee647 + +2017-05-05 08:48 +0000 [c3ed63cb2c] Joshua Colp + + * func_cdr: Allow empty value for CDR dialplan function. + + A regression was introduced in 12 where passing an empty value + to the CDR dialplan function was not longer allowed. This + change returns to the behavior of 11 where it is permitted. + + ASTERISK-26173 + + Change-Id: I3f148203b54ec088007e29e30005a5de122e51c5 + +2017-05-04 16:04 +0000 [bed6c0d04b] George Joseph + + * app_confbridge: Fix reference to cfg in menu_template_handler + + menu_template_handler wasn't properly accounting for the fact that + it might be called both during a load/reload (which isn't really + valid but not prevented) and by a dialplan function. In both cases + it was attempting to use the "pending" config which wasn't valid in + the latter case. aco_process_config is also partly to blame because + it wasn't properly cleaning "pending" up when a reload was done and + no changes were made. Both of these contributed to a crash if + CONFBRIDGE(menu,template) was called in a dialplan after a reload. + + * aco_process_config now sets info->internal->pending to NULL + after it unrefs it although this isn't strictly necessary in the + context of this fix. + * menu_template_handler now uses the "current" config and silently + ignores any attempt to be called as a result of someone uses the + "template" parameter in the conf file. + + Luckily there's no other place in the codebase where + aco_pending_config is used outside of aco_process_config. + + ASTERISK-25506 #close + Reported-by: Frederic LE FOLL + + Change-Id: Ib349a17d3d088f092480b19addd7122fcaac21a7 + +2017-04-30 16:40 +0000 [7ffd80cc04] Joshua Colp + + * bridge: Fix returning to dialplan when executing Bridge() from AMI. + + When using the Bridge AMI action on the same channel multiple times + it was possible for the channel to return to the wrong location in + the dialplan if the other party hung up. This happened because the + priority of the channel was not preserved across each action + invocation and it would fail to move on to the next priority in + other cases. + + This change makes it so that the priority of a channel is preserved + when taking control of it from another thread and it is incremented + as appropriate such that the priority reflects where the channel + should next be executed in the dialplan, not where it may or may not + currently be. + + The Bridge AMI action was also changed to ensure that it too + starts the channels at the next location in the dialplan. + + ASTERISK-24529 + + Change-Id: I52406669cf64208aef7252a65b63ade31fbf7a5a + +2017-05-01 13:04 +0000 [bbe90d6aed] Kevin Harwell + + * res_rtp_asterisk: Clearing the remote RTCP address causes RTCP failures + + When a call gets put on hold RTP is temporarily stopped and Asterisk was + setting the remote RTCP address to NULL. Then when RTCP data was received + from the remote endpoint, Asterisk would be missing this information when + publishing the rtcp_message stasis event. Consequently, message subscribers + (in this case res_hep_rtcp) trying to parse the "from" field output the + following error: + + "ast_sockaddr_split_hostport: Port missing in (null)" + + This patch makes it so the remote RTCP address is no longer set to NULL when + stopping RTP. There was only one place that appeared to check if the remote + RTCP address was NULL as a way to tell if RTCP was running. This patch added + an additional check on the RTCP schedid for that case to make sure RTCP was + truly not running. + + ASTERISK-26860 #close + + Change-Id: I6be200fb20db647e48b5138ea4b81dfa7962974b + +2017-05-02 11:34 +0000 [526a0081a0] Sean Bright + + * cleanup: Change severity of fread short-read warning + + Many sound files don't have a full frame's worth of data at EOF, so the + warning messages were a bit too noisy. So we demote them to debug + messages. + + Change-Id: I6b617467d687658adca39170a81797a11cc766f6 + +2017-04-26 07:58 +0000 [23db04ed93] Thierry Magnien + + * channels/chan_sip.c: use binding IP address for outgoing TCP SIP connections + + For outgoing TCP connections, Asterisk uses the first IP address of the + interface instead of the IP address we asked him to bind to. + + ASTERISK-26922 #close + Reported-by: Ksenia + + Change-Id: I43c71ca89211dbf1838e5bcdb9be8d06d98e54eb + +2017-04-29 16:18 +0000 [02234e920c] Richard Mudgett + + * rtp_engine.c: Fix deadlock potential copying RTP payload maps. + + There is a theoretical potential to deadlock in + ast_rtp_codecs_payloads_copy() because it locks two different + ast_rtp_codecs locks. It is theoretical because the callers of the + function are either copying between a local ast_rtp_codecs struct and a + RTP instance of the ast_rtp_codecs struct. Or they are copying between + the caller and callee channel RTP instances before initiating the call to + the callee. Neither of these situations could actually result in a + deadlock because there cannot be another thread involved at the time. + + * Add deadlock avoidance code to ast_rtp_codecs_payloads_copy() since it + locks two ast_rtp_codecs locks to perform a copy. + + This only affects v13 since this deadlock avoidance code is already in + newer branches. + + Change-Id: I1aa0b168f94049bd59bbd74a85bd1e78718f09e5 + +2017-04-29 16:11 +0000 [9d5df48968] Richard Mudgett + + * res_pjsip_t38.c: Fix deadlock in T.38 framehook. + + A deadlock can happen between a channel lock and a pjsip session media + container lock. One thread is processing a reINVITE's SDP and walking + through the session's media container when it waits for the channel lock + to put the determined format capabilities onto the channel. The other + thread is writing a frame to the channel and processing the T.38 frame + hook. The T.38 frame hook then waits for the pjsip session's media + container lock. The two threads are now deadlocked. + + * Made the T.38 frame hook release the channel lock before searching the + session's media container. This fix has been done to several other + frame hooks to fix deadlocks. + + ASTERISK-26974 #close + + Change-Id: Ie984a76ce00bef6ec9aa239010e51e8dd74c8186 + +2017-04-28 10:56 +0000 [623832b94e] George Joseph + + * res_pjsip_outbound_authenticator_digest: Add context to log messages + + There was no context info in this module's log messages so it was + impossible to toubleshoot. + + Added endpoint or host to all messages and added the realms in the + challenge for the "No auth credentials for any realm" message. + + Change-Id: Ifeed2786f35fbea7d141237ae15625e472acff9b + +2017-04-27 08:02 +0000 [c5b9ed20fd] George Joseph + + * res_pjsip_session: Add cleanup to ast_sip_session_terminate + + If you use ast_request to create a PJSIP channel but then hang it + up without causing a transaction to be sent, the session will + never be destroyed. This is due ot the fact that it's pjproject + that triggers the session cleanup when the transaction ends. + app_chanisavail was doing this to get more granular channel state + and it's also possible for this to happen via ARI. + + * ast_sip_session_terminate was modified to explicitly call the + cleanup tasks and unreference session if the invite state is NULL + AND invite_tsx is NULL (meaning we never sent a transaction). + + * chan_pjsip/hangup was modified to bump session before it calls + ast_sip_session_terminate to insure that session stays valid + while it does its own cleanup. + + * Added test events to session_destructor for a future testsuite + test. + + ASTERISK-26908 #close + Reported-by: Richard Mudgett + + Change-Id: I52daf6f757184e5544c261f64f6fe9602c4680a9 + +2017-04-26 14:20 +0000 [c853cfdc7c] Kevin Harwell + + * res_pjsip/res_pjsip_callerid: NULL check on caller id name string + + It's possible for a name in a party id structure to be marked as valid, but the + name string itself be NULL (for instance this is possible to do by using the + dialplan CALLERID function). There were a couple of places where the name was + validated, but the string itself was not checked before passing it to functions + like 'strlen'. This of course caused a crashed. + + This patch adds in a NULL check before attempting to pass it into a function + that is not NULL tolerant. + + ASTERISK-25823 #close + + Change-Id: Iaa6ffe9d92f598fe9e3c8ae373fadbe3dfbf1d4a + +2017-04-25 11:43 +0000 [4d3b4fbf22] Kevin Harwell + + * vector: defaults and indexes + + Added an pre-defined integer vector declaration. This makes integer vectors + easier to declare and pass around. Also, added the ability to default a vector + up to a given size with a default value. Lastly, added functionality that + returns the "nth" index of a matching value. + + Also, updated a unit test to test these changes. + + Change-Id: Iaf4b51b2540eda57cb43f67aa59cf1d96cdbcaa5 + +2017-04-20 02:13 +0000 [566ad7c35d] Jean Aunis + + * chan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK + + Some equipments may send a re-INVITE containing an SDP in the final ACK + request. If this happens in the context of direct media, the remote end + should be updated with a re-INVITE. + This patch queues an "update RTP peer" frame to trigger the re-INVITE, + instead of the "source change" frame wich was used previously. + + ASTERISK-26951 + + Change-Id: I3644d2025f20e086ea9f8f62b486172c52b5b2e6 + +2017-04-26 08:45 +0000 [001dc2ade6] George Joseph + + * pjproject_bundled: Add --disable-libwebrtc to configure + + Without the disable, pjproject tries to build it's internal + webrtc implementation which requires sse2. This fails on + platforms without sse2. + + ASTERISK-26930 #close + Reported-by: abelbeck + + Change-Id: I07231f9160c35cfa42b194d3aad4e7d51fd9a410 + +2017-04-26 05:38 +0000 [ae696132a2] Joshua Colp + + * frame: Better handle interpolated frames. + + Interpolated frames are frames which contain a number of + samples but have no actual data. Audiohooks did not + handle this case when translating an incoming frame into + signed linear. It assumed that a frame would always contain + media when it may not. If this occurs audiohooks will now + immediately return and not act on the frame. + + As well for users of ast_trans_frameout the function has + been changed to be a bit more sane and ensure that the data + pointer on a frame is set to NULL if no data is actually + on the frame. This allows the various spots in Asterisk that + check for an interpolated frame based on the presence of a + data pointer to work as expected. + + ASTERISK-26926 + + Change-Id: I7fa22f631fa28d540722ed789ce28e84c7f8662b + +2017-04-21 12:04 +0000 [1b50df78d0] Sean Bright + + * cleanup: Fix fread() and fwrite() error handling + + Cleaned up some of the incorrect uses of fread() and fwrite(), mostly in + the format modules. Neither of these functions will ever return a value + less than 0, which we were checking for in some cases. + + I've introduced a fair amount of duplication in the format modules, but + I plan to change how format modules work internally in a subsequent + patch set, so this is simply a stop-gap. + + Change-Id: I8ca1cd47c20b2c0b72088bd13b9046f6977aa872 + +2017-04-25 07:52 +0000 [c09b9dba90] Joshua Colp + + * alembic: Add table for 'resource_list' PJSIP RLS type. + + This change adds an Alembic migration which adds a + ps_resource_list table that can contain resource_list + RLS configuration objects. + + ASTERISK-26929 + + Change-Id: I7c888fafc67b3e87012de974f71ca7a5b8b1ec05 + +2017-04-24 13:16 +0000 [1b88a3a4cf] Sean Bright + + * res_hep: Add additional config initialization and validation + + * Initialize hepv3_runtime_data.sockfd to -1 so that our ao2 destructor + does not close fd 0 + + * Add logging output when the required option - capture_address - is not + specified. + + * Remove a no longer relevant #define and correct related documentation + + * Pass appropriate flags to aco_option_register so that capture_address + cannot be the empty string. + + ASTERISK-26953 #close + + Change-Id: Ief08441bc6596d6f1718fa810e54a5048124f076 + +2017-04-17 19:06 +0000 [cea3742c54] Sean Bright + + * core: Use eventfd for alert pipes on Linux when possible + + The primary win of switching to eventfd when possible is that it only + uses a single file descriptor while pipe() will use two. This means for + each bridge channel we're reducing the number of required file + descriptors by 1, and - if you're using timerfd - we also now have 1 + less file descriptor per Asterisk channel. + + The API is not ideal (passing int arrays), but this is the cleanest + approach I could come up with to maintain API/ABI. + + I've also removed what I believe to be an erroneous code block that + checked the non-blocking flag on the pipe ends for each read. If the + file descriptor is 'losing' its non-blocking mode, it is because of a + bug somewhere else in our code. + + In my testing I haven't seen any measurable difference in performance. + + Change-Id: Iff0fb1573e7f7a187d5211ddc60aa8f3da3edb1d + +2017-04-21 12:33 +0000 [1213ac1ac5] Richard Mudgett + + * res_pjsip_session.c: Send 100 Trying out earlier to prevent retransmissions. + + If ICE is enabled and a STUN server does not respond then we will block + until we give up on the STUN response. This will take nine seconds. In + the mean time the peer that sent the INVITE will send retransmissions. + + * Restructure res_pjsip_session.c:new_invite() to send a 100 Trying out + earlier to prevent these retransmissions. + + ASTERISK-26890 + + Change-Id: Ie3fc611e53a0eff6586ad55e4aacad81cf6319a8 + +2017-04-21 12:07 +0000 [80fd7fd908] Richard Mudgett + + * res_pjsip_session.c: Restructure ast_sip_session_alloc() + + * Restructure ast_sip_session_alloc() to need less cleanup on off nominal + error paths. + + * Made ast_sip_session_alloc() and ast_sip_session_create_outgoing() avoid + unnecessary ref manipulation to return a session. This is faster than + calling a function. That function may do logging of the ref changes with + REF_DEBUG enabled. + + Change-Id: I2a0affc4be51013d3f0485782c96b8fee3ddb00a + +2017-04-19 15:08 +0000 [98e38daf82] Sean Bright + + * pbx: Use same thread if AST_OUTGOING_WAIT_COMPLETE specified + + Both ast_pbx_outgoing_app() and ast_pbx_outgoing_exten() cause the core + to spawn a new thread to perform the dial. When AST_OUTGOING_WAIT_COMPLETE + is passed to these functions, the calling thread will be blocked until + the newly created channel has been hung up. + + After this patch, we run the dial on the current thread rather than + spawning a new one. The only in-tree code that passes + AST_OUTGOING_WAIT_COMPLETE is pbx_spool, so you should see reduced + thread usage if you are using .call files. + + Change-Id: I512735d243f0a9da2bcc128f7a96dece71f2d913 + +2017-04-19 13:23 +0000 [55f452884f] Richard Mudgett + + * res_rtp_asterisk.c: Fix crash in RTCP DTLS operation. + + Occasionally a crash happens when processing the RTCP DTLS timeout + handler. The RTCP DTLS timeout timer could be left running if we have not + completed the DTLS handshake before we place the call on hold or we + attempt direct media. + + * Made ast_rtp_prop_set() stop the RTCP DTLS timer when disabling RTCP. + + * Made some sanity tweaks to ast_rtp_prop_set() when switching from + standard RTCP mode to RTCP multiplexed mode. + + ASTERISK-26692 #close + + Change-Id: If6c64c79129961acfa4b3d63a864e8f6b664acc0 + +2017-03-22 16:05 +0000 [f856cfbb51] Richard Mudgett + + * rtp_engine/res_rtp_asterisk: Fix RTP struct reentrancy crashes. + + The struct ast_rtp_instance has historically been indirectly protected + from reentrancy issues by the channel lock because early channel drivers + held the lock for really long times. Holding the channel lock for such a + long time has caused many deadlock problems in the past. Along comes + chan_pjsip/res_pjsip which doesn't necessarily hold the channel lock + because sometimes there may not be an associated channel created yet or + the channel pointer isn't available. + + In the case of ASTERISK-26835 a pjsip serializer thread was processing a + message's SDP body while another thread was reading a RTP packet from the + socket. Both threads wound up changing the rtp->rtcp->local_addr_str + string and interfering with each other. The classic reentrancy problem + resulted in a crash. + + In the case of ASTERISK-26853 a pjsip serializer thread was processing a + message's SDP body while another thread was reading a RTP packet from the + socket. Both threads wound up processing ICE candidates in PJPROJECT and + interfering with each other. The classic reentrancy problem resulted in a + crash. + + * rtp_engine.c: Make the ast_rtp_instance_xxx() calls lock the RTP + instance struct. + + * rtp_engine.c: Make ICE and DTLS wrapper functions to lock the RTP + instance struct for the API call. + + * res_rtp_asterisk.c: Lock the RTP instance to prevent a reentrancy + problem with rtp->rtcp->local_addr_str in the scheduler thread running + ast_rtcp_write(). + + * res_rtp_asterisk.c: Avoid deadlock when local RTP bridging in + bridge_p2p_rtp_write() because there are two RTP instance structs + involved. + + * res_rtp_asterisk.c: Avoid deadlock when trying to stop scheduler + callbacks. We cannot hold the instance lock when trying to stop a + scheduler callback. + + * res_rtp_asterisk.c: Remove the lock in struct dtls_details and use the + struct ast_rtp_instance ao2 object lock instead. The lock was used to + synchronize two threads to prevent a race condition between starting and + stopping a timeout timer. The race condition is no longer present between + dtls_perform_handshake() and __rtp_recvfrom() because the instance lock + prevents these functions from overlapping each other with regards to the + timeout timer. + + * res_rtp_asterisk.c: Remove the lock in struct ast_rtp and use the struct + ast_rtp_instance ao2 object lock instead. The lock was used to + synchronize two threads using a condition signal to know when TURN + negotiations complete. + + * res_rtp_asterisk.c: Avoid deadlock when trying to stop the TURN + ioqueue_worker_thread(). We cannot hold the instance lock when trying to + create or shut down the worker thread without a risk of deadlock. + + This patch exposed a race condition between a PJSIP serializer thread + setting up an ICE session in ice_create() and another thread reading RTP + packets. + + * res_rtp_asterisk.c:ice_create(): Set the new rtp->ice pointer after we + have re-locked the RTP instance to prevent the other thread from trying to + process ICE packets on an incomplete ICE session setup. + + A similar race condition is between a PJSIP serializer thread resetting up + an ICE session in ice_create() and the timer_worker_thread() processing + the completion of the previous ICE session. + + * res_rtp_asterisk.c:ast_rtp_on_ice_complete(): Protect against an + uninitialized/null remote_address after calling + update_address_with_ice_candidate(). + + * res_rtp_asterisk.c: Eliminate the chance of ice_reset_session() + destroying and setting the rtp->ice pointer to NULL while other threads + are using it by adding an ao2 wrapper around the PJPROJECT ice pointer. + Now when we have to unlock the RTP instance object to call a PJPROJECT ICE + function we will hold a ref to the wrapper. Also added some rtp->ice NULL + checks after we relock the RTP instance and have to do something with the + ICE structure. + + ASTERISK-26835 #close + ASTERISK-26853 #close + + Change-Id: I780b39ec935dcefcce880d50c1a7261744f1d1b4 + +2017-04-19 08:39 +0000 [dafcd97a77] Sean Bright + + * build: Update config.guess and config.sub + + Change-Id: Id078a1df07a771808775e1053cdfe1d99c8fb172 + +2017-04-14 13:52 +0000 [9bbfa6fda1] Sean Bright + + * format_wav: Read 16khz wav samples properly + + When opening a PCM wave file for reading, we aren't tracking the + frequency of the opened file, so we treat 16khz files as 8khz and do + half reads. + + This patch also cleans up some of the data types and an unnecessarily + complex `if` expression. + + ASTERISK-26613 #close + Reported by: Vitaly K + + Change-Id: I05f8b263058dc573ea8ffe0c62e7964506e11815 + +2017-04-16 19:54 +0000 [4ccaffe644] George Joseph + + * make ari-stubs so doc periodic jobs can run + + The periodic doc job does a make ari-stubs and checks that + there are no changes before generating the docs. Since I changed + the mustache template (and the generated code directly) recently + and forgot to regenerate the stubs, the doc job thinks they're out + of date. + + Change-Id: Ibd4bc649556615ff714d44534c45b6c2f6aa449d + +2017-04-14 12:51 +0000 [90c630aaa1] Sean Bright + + * format_ogg_vorbis: Clear ogg/vorbis data structures on close + + On filestream close, we need to clear out the ogg & vorbis data + structures to prevent a memory leak. + + ASTERISK-26169 #close + Reported by: Ivan Myalkin + + Change-Id: Iee94c5a5d5bdafbf8b181c5c064d15d90ace8274 + +2017-04-14 17:31 +0000 [9084c85cb1] Richard Mudgett + + * Revert "bridging: Ensure successful T.38 negotation" + + This reverts commit 3e7c396a51b240088c475dd53e7bac9869376129. + + Change-Id: I61d49d563babff788bb557345729b200d116bd88 + +2017-04-14 16:50 +0000 [357d1fbdcc] Sean Bright + + * res_stun_monitor: Don't fail to load if DNS resolution fails + + res_stun_monitor will fail to load if DNS resolution of the STUN server + fails. Instead, we continue without the STUN server being resolved and + we will re-attempt the resolution on the STUN refresh interval. + + ASTERISK-21856 #close + Reported by: Jeremy Kister + + Change-Id: I6334c54a1cc798f8a836b4b47948e0bb4ef59254 + +2017-04-14 14:36 +0000 [ac15ebc379] Sean Bright + + * format_pcm: Track actual header size of .au files + + Sun's Au file format has a minimum data offset 24 bytes, but this + offset is encoded in each .au file. Instead of assuming the minimum, + read the actual value and store it for later use. + + ASTERISK-20984 #close + Reported by: Roman S. + Patches: + asterisk-1.8.20.0-au-clicks-2.diff (license #6474) patch + uploaded by Roman S. + + Change-Id: I524022fb19ff2fd5af2cc2d669d27a780ab2057c + +2017-04-11 11:07 +0000 [f882ca2572] George Joseph + + * modules: change module LOAD_FAILUREs to LOAD_DECLINES + + In all non-pbx modules, AST_MODULE_LOAD_FAILURE has been changed + to AST_MODULE_LOAD_DECLINE. This prevents asterisk from exiting + if a module can't be loaded. If the user wishes to retain the + FAILURE behavior for a specific module, they can use the "require" + or "preload-require" keyword in modules.conf. + + A new API was added to logger: ast_is_logger_initialized(). This + allows asterisk.c/check_init() to print to the error log once the + logger subsystem is ready instead of just to stdout. If something + does fail before the logger is initialized, we now print to stderr + instead of stdout. + + Change-Id: I5f4b50623d9b5a6cb7c5624a8c5c1274c13b2b25 + +2017-04-07 16:14 +0000 [cd80af508e] Richard Mudgett + + * res_rtp_asterisk.c: Add stun_blacklist option + + 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. + + ASTERISK-26890 #close + + Change-Id: I3ff4f729e787f00c3e6e670fe6435acce38be342 + +2017-04-06 17:31 +0000 [f8219a2e12] Richard Mudgett + + * stun.c: Fix ast_stun_request() erratic timeout. + + If ast_stun_request() receives packets other than a STUN response then we + could conceivably never exit if we continue to receive packets with less + than three seconds between them. + + * Fix poll timeout to keep track of the time when we sent the STUN + request. We will now send a STUN request every three seconds regardless + of how many other packets we receive while waiting for a response until we + have completed three STUN request transmission cycles. + + Change-Id: Ib606cb08585e06eb50877f67b8d3bd385a85c266 + +2017-04-06 18:30 +0000 [19b82a8644] Richard Mudgett + + * sorcery.c: Speed up ast_sorcery_retrieve_by_id() + + Return early if ast_sorcery_retrieve_by_id() is not passed an id to find. + Also eliminated the RAII_VAR() usage in the function. + + Change-Id: I871dbe162a301b5ced8b4393cec27180c7c6b218 + +2017-04-10 11:30 +0000 [aecf19e7d2] Richard Mudgett + + * res_pjsip: Fix pointer use after unref. + + Change-Id: I4b6e1b0070563eeaee223cb58326f1b962ed5bc1 + +2017-04-06 18:18 +0000 [304f652cda] Richard Mudgett + + * res_pjsip_sdp_rtp.c: Don't use deprecated transport struct member. + + * create_rtp(): Eliminate use of deprecated transport struct member. That + member and several others in the transport structure were deprecated + because of an infinite loop created when using realtime configuration. + See 2451d4e4550336197ee2e482750cc53f30afa352 + + ASTERISK-26851 + + Change-Id: I0533aa13c9ce3c6cc394e0fd2b5bf1cd1b2ef3bc + +2017-04-10 17:45 +0000 [bb8cd2add7] Richard Mudgett + + * tcptls.c: Cleanup TCP/TLS listener thread on abnormal exit. + + Temporarily running out of file descriptors should not terminate the + listener thread. Otherwise, when there becomes more file descriptors + available, nothing is listening. + + * Added EMFILE exception to abnormal thread exit. + + * Added an abnormal TCP/TLS listener exit error message. + + * Closed the TCP/TLS listener socket on abnormal exit so Asterisk does not + appear dead if something tries to connect to the socket. + + ASTERISK-26903 #close + + Change-Id: I10f2f784065136277f271159f0925927194581b5 + +2017-04-07 08:58 +0000 [d8967ff2c0] Torrey Searle + + * strings.h: Avoid overflows in the string hash functions + + On 2's compliment machines abs(INT_MIN) behavior is undefined and + results in a negative value still being returnd. This results in + negative hash codes that can result in crashes. + + ASTERISK-26528 #close + + Change-Id: Idff550145ca2133792a61a2e212b4a3e82c6517b + +2017-04-08 03:05 +0000 [bbbd262ec0] Walter Doekes + + * samples: Undo removal of include from canonicalize-app-names commit. + + This include was accidentally removed in changeset + Ia79aea64de89531362e993e34230c2044a70aa93. My bad. + + Change-Id: I1d716c7f9590b4e97909fb8bca1f2ed9bd0e4082 + +2017-04-07 08:35 +0000 [b3f4a6365e] Joshua Colp + + * pjsip: Add Alembic for PUBLISH support. + + This change adds database tables for the PUBLISH support so it + can be configured using realtime. A minor fix to the + res_pjsip_publish_asterisk module was done so that it read the + sorcery configuration from the correct section. Finally the + sample configuration files have been updated. + + ASTERISK-26928 + + Change-Id: I81991ae5c75af98d247f7eacd1c0b0a763675952 + +2017-04-07 08:06 +0000 [e0e5a337fd] Alexander Traud + + * pjproject_bundled: Crash on pj_ssl_get_info() while ioqueue_on_read_complete(). + + When the Asterisk channel driver res_pjsip offers SIP-over-TLS, sometimes, not + reproducible, Asterisk crashed in pj_ssl_sock_get_info() because a NULL pointer + was read. This change avoids this crash. + + ASTERISK-26927 #close + + Change-Id: I24a6011b44d1426d159742ff4421cf806a52938b + +2017-04-05 06:41 +0000 [3e7c396a51] Torrey Searle + + * bridging: Ensure successful T.38 negotation + + When a T.38 happens immediatly after call establishment, the control + frame can be lost because the other leg is not yet in the bridge. + + This patch detects this case an makes sure T.38 negotation happens + when the 2nd leg is being made compatible with the negotating + first leg + + ASTERISK-26923 #close + + Change-Id: If334125ee61ed63550d242fc9efe7987e37e1d94 + +2017-04-04 16:20 +0000 [4e6e069491] George Joseph + + * pjproject_bundled: Add 3 upstream patches + + 0035-r5572-svn-backport-dialog-transaction-deadlock.patch + 0036-r5573-svn-backport-ua-pjsua-transaction-deadlock.patch + 0037-r5576-svn-backport-session-timer-crash.patch + + Also removed the progress bar from wget download to stdout. + + ASTERISK-26905 #close + Reported-by: Ross Beer + + Change-Id: I268fb3cf71a3bb24283ff0d24bd8b03239d81256 + +2017-04-05 14:50 +0000 [d2a33cdedc] George Joseph + + * sample_config: Add samples for pubsub to pjsip.conf.sample + + Added: + * outbound-publish + * resource_list + * inbound-publication + * asterisk-publication + + Change-Id: I65043a896c35483f30a92d30b5b118359af7ba5a + +2017-04-05 09:10 +0000 [ab9d2fc86d] Walter Doekes + + * samples: Canonicalize app names in extensions.conf.sample. + + This takes care of warnings by ossobv/asterisklint. + + Change-Id: Ia79aea64de89531362e993e34230c2044a70aa93 + +2017-04-03 15:38 +0000 [6906765381] Richard Mudgett + + * res_pjsip_sdp_rtp.c: Don't alter global addr variable. + + * create_rtp(): Fix unexpected alteration of global address_rtp if a + transport is bound to an address. + + * create_rtp(): Fix use of uninitialized memory if the endpoint RTP media + address is invalid or the transport has an invalid address. + + ASTERISK-26851 + + Change-Id: Icde42e65164a88913cb5c2601b285eebcff397b7 + +2017-03-27 09:03 +0000 [68bde0f07d] Corey Farrell + + * CDR: Protect from data overflow in ast_cdr_setuserfield. + + ast_cdr_setuserfield wrote to a fixed length field using strcpy. This could + result in a buffer overrun when called from chan_sip or func_cdr. This patch + adds a maximum bytes written to the field by using ast_copy_string instead. + + ASTERISK-26897 #close + patches: + 0001-CDR-Protect-from-data-overflow-in-ast_cdr_setuserfie.patch submitted + by Corey Farrell (license #5909) + + Change-Id: Ib23ca77e9b9e2803a450e1206af45df2d2fdf65c + +2017-03-25 19:01 +0000 [70e5a2655d] Daniel Journo + + * Unused realtime MOH classes not purged on 'moh reload' + + Purge Realtime MOH classes on 'moh reload' even when musiconhold.conf + hasn't changed. + + ASTERISK-25974 #close + + Change-Id: I42c78ea76528473a656f204595956c9eedcf3246 + +2017-04-03 13:56 +0000 [27b556778d] Richard Mudgett + + * res_pjsip: Fix transport ref leak. + + We were leaking a transport ref in multihomed_on_rx_message() which + resulted in the FRACK about excessive ref counts. + + ASTERISK-26916 #close + + Change-Id: I7a96658a9614a060565bb9ad51cb1c9c11ee145f + +2017-04-03 02:30 +0000 [94bd529f9e] Alexander Traud + + * chan_sip: Session Timers required but refused wrongly. + + SIP user-agents indicate which protocol extensions are allowed in headers + like Supported and Required. Such protocol extensions are Session Timers + (RFC 4028) for example. Session Timers are supported since Mantis-10665. + Since ASTERISK-21721, not only the first but multiple Supported/Required + headers in a message are parsed. In that change, an existing variable was + re-used within a newly added do-loop. Currently, at the end of that loop, + that variable is an empty string always. Previously, that variable was used + within log output. However, the log output was not changed. + + ASTERISK-26915 #close + + Change-Id: I09315f31b4d78fb214bb2a9fb6c0f5e143eae990 + +2017-03-31 16:31 +0000 [bca9685d39] Joshua Colp + + * res_pjsip_session: Allow BYE to be sent on disconnected session. + + It is perfectly acceptable for a BYE to be sent on a disconnected + session. This occurs when we respond to a challenge to the BYE + for authentication credentials. + + ASTERISK-26363 + + Change-Id: I6ef0ddece812fea6665a1dd2549ef44fb9d90045 + +2017-03-30 18:28 +0000 [c701550803] Corey Farrell + + * Forward declare 'struct ast_json' in asterisk.h + + The ast_json structure is used in many Asterisk headers and is often the + only part of json.h used. This adds a forward declaration to asterisk.h + and removes the include of json.h from many headers. The declaration + has been left in endpoints.h and stasis.h to avoid problems with source + files that use ast_json functions without directly including json.h. + + ari.h continues to include json.h as it uses enum + ast_json_encoding_format. + + Change-Id: Id766aabce6bed56626d27e8d29f559b5e687b769 + +2017-03-30 08:11 +0000 [754e99d517] Sean Bright + + * cdr_pgsql: Fix buffer overflow calling libpq + + Implement the same buffer size checking done in cel_pgsql. + + ASTERISK-26896 #close + Reported by: twisted + + Change-Id: Iaacfa1f1de7cb1e9414d121850d2d8c2888f3f48 + +2017-03-28 13:01 +0000 [7954b39a50] Walter Doekes + + * build: Fix deb build issues with fakeroot + + If DESTDIR is set, don't call ldconfig. Assume that DESTDIR is used to + create a binary archive. The ldconfig call should be delegated to the + archive postinst script. This fixes the case where fakeroot wraps 'make + install' causing $EUID to be 0 even though it doesn't have permission to + call ldconfig. + + The previous logic in configure.ac to detect and correct libdir + has been removed as it was not completely accurate. CentOS 64-bit + users should again specifiy --libdir=/usr/lib64 when configuring + to prevent install to /usr/lib. + + Updated Makefile:check-old-libdir to check for orphans in + lib64 when installing to lib as well as orphans in lib when installing + to lib64. + + Updated Makefile and main/Makefile uninstall targets to remove the + orphans using the new logic. + + ASTERISK-26705 + + Change-Id: I51739d4a03e60bff38be719b8d2ead0007afdd51 + +2017-03-29 10:11 +0000 [c9648f4690] Sean Bright + + * astobj2: Prevent potential deadlocks with ao2_global_obj_release + + The ao2_global_obj_release() function holds an exclusive lock on the + global object while it is being dereferenced. Any destructors that + run during this time that call ao2_global_obj_ref() will deadlock + because a read lock is required. + + Instead, we make the global object inaccessible inside of the write + lock and only dereference it once we have released the lock. This + allows the affected destructors to fail gracefully. + + While this doesn't completely solve the referenced issue (the error + message about not being able to create an IQ continues to be shown) + it does solve the backtrace spew that accompanied it. + + ASTERISK-21009 #close + Reported by: Marcello Ceschia + + Change-Id: Idf40ae136b5070dba22cb576ea8414fbc9939385 + +2017-03-30 11:57 +0000 [1d1309b1ed] Joshua Colp + + * Revert "Update for 13.15.0-rc1" + + This reverts commit 552cf009c0939c8b6597708135412bdc596df4bb. + + Change-Id: Ie345bea481261b761c44079e9472622040fda302 + +2017-03-30 10:18 +0000 [3c23ebdef4] Corey Farrell + + * CEL: Remove header declarations of non-existant functions. + + ast_cel_alloc and ast_cel_destroy do not exist in code, remove them from + the headers. + + Change-Id: I99ce848e2e109e7d61771559f559b9e57973e45c + +2017-03-29 08:27 +0000 [ef19db9261] Alexander Traud + + * srtp: Allow zero as tag value for a sRTP Crypto Suite. + + ASTERISK-25490 #close + + Change-Id: I1c5fc0942c33c96d62b24203aad0f1e1a1a0131f + +2017-03-28 13:10 +0000 [a827892ff7] George Joseph + + * res_pjsip_config_wizard: Add 2 new parameters to help with proxy config + + 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 request + 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. + + Change-Id: I678e5f80765734c056620528a6d40d82736ceeb0 + +2017-03-28 09:29 +0000 [864dda07f3] Sean Bright + + * alembic: Turn off execute bit on non-executable python scripts + + Change-Id: I744c986da4a38aeff8c00837eb89de7841fbc86c + +2017-03-27 12:37 +0000 [a9529cbb21] Richard Mudgett + + * Add DTLS sanity check. + + Change-Id: Ib32612cf6c7ce9213a11b9cba82f630f8cd3564b + +2017-03-27 11:49 +0000 [bb68f57a03] Josh Roberson + + * cel_pgsql.c: Fix buffer overflow calling libpq + + PQEscapeStringConn() expects the buffer passed in to be an + adequitely sized buffer to write out the escaped SQL value string + into. It is possible, for large values (such as large values to + Dial with a lot of devices) to have more than our 512+1 byte + allocation and thus cause libpq to create a buffer overrun. + + glibc will nicely ABRT asterisk for you, citing a stack smash. + + Let's only allocate it to be as large as needed: + If we have a value, then (strlen(value) * 2) + 1 (as recommended + by libpq), and if we have none, just one byte to hold our null + will do. + + ASTERISK-26896 #close + + Change-Id: If611c734292618ed68dde17816d09dd16667dea2 + +2017-03-24 07:43 +0000 [79a2c26c03] Sean Bright + + * core: Remove embedded module support + + This has not worked for some time and is no longer actively maintained. + + Change-Id: I5110b0db69c152761b58fa025cb0a53b0e544d99 + +2017-03-27 09:35 +0000 [2c28f7a922] Sean Bright + + * res_musiconhold: Document the 'format' option + + ASTERISK-26086 #close + Reported by: Jens Bürger + + Change-Id: I6aab666c0bf01fd0c64d7a5bcb22fa7f5d41335e + +2017-03-27 08:58 +0000 [61fd70c250] Sean Bright + + * res_musiconhold: Don't chdir() when scanning MoH files + + There doesn't appear to be any reason that we are chdir'ing in + moh_scan_files, and in the event of an Asterisk crash, the core files + may not get written because we have changed into a read-only directory. + + ASTERISK-23996 #close + Reported by: Walter Doekes + + Change-Id: Iac806dce01b3335963fbd62d4b4da9a65c614354 + +2017-03-23 09:48 +0000 [73bb08fd6a] Sean Bright + + * res_xmpp: Use incremental backoff when a read error occurs + + If a read error occurs, we immediately attempt a reconnect without any + delay. Instead, let's sleep and backoff up to 60 seconds before we try + again. + + ASTERISK-24712 #close + Reported by: Matthias Urlichs + + Change-Id: I6fe10ef4734837727437beab715e336777f13f48 + +2017-03-23 05:19 +0000 [55693383e2] Sean Bright + + * res_xmpp: Fix ref counting issue + + The only remaining reference to the endpoint is in the endpoints + container, and because it is unlinked in ast_endpoint_shutdown, we don't + have to explicitly cleanup the endpoint ourselves. + + Change-Id: I912a2692e52d3e2ed445b32d8ae3f9004bc2f2e8 + +2017-03-23 09:45 +0000 [1966265562] Sean Bright + + * res_xmpp: Try to provide useful errors messages from OpenSSL + + If any errors occur during the TLS connection setup, we currently dump a + fairly generic error message. So instead we try to pull in something + useful from OpenSSL to report instead. + + ASTERISK-24712 + Reported by: Matthias Urlichs + + Change-Id: I288500991a9681f447d92913b11fedaf426087f4 + +2017-03-23 09:30 +0000 [03b99ae3d2] Sean Bright + + * res_xmpp: Correctly check return value of SSL_connect + + SSL_connect returns non-zero for both success and some error conditions + so simply negating is inadequate. + + Change-Id: Ifbf882896e598703b6c615407fa456d3199f95b1 + +2017-03-24 11:29 +0000 [d9d2beba1c] Sean Bright + + * res_pjsip_sdp_rtp: Set hangup cause for RTP timeouts + + chan_sip sets the hangup cause code to AST_CAUSE_REQUESTED_CHAN_UNAVAIL + (44) when a channel is hung up due to an RTP timeout. So do the same + when it happens with PJSIP for parity. + + Change-Id: I3546ebbde6460c22a27c9da1bf321711b5961ab8 + +2017-03-23 15:33 +0000 [552cf009c0] Kevin Harwell + + * Update for 13.15.0-rc1 + +2017-03-23 14:03 +0000 [f1b34e6eb4] Kevin Harwell + + * AMI: Updated version + + Updated the AMI version for the following reason (see CHANGES for more details): + + The 'PJSIPShowEndpoint' command's response event of 'IdentifyDetail' now + contains a new optional parameter, 'MatchHeader'. + + Change-Id: I9aeac4decc89f9b464b3f026e97c7ef1acc79242 + +2017-03-23 12:07 +0000 [e6aeeabddf] Kevin Harwell + + * pjproject_bundled: raise timeout value used when downloading + + After configuring Asterisk with '--with-pjproject-bundled' the configure/build + process attempts to download pjproject from its download site. Currently, a + timeout of 10 seconds is used that will stop the download process if pjproject + has not been fully downloaded in that time. For some systems this was not enough + time and the process was timing out too early. + + This patch raises the download timeout value to '60'. Also, this patch fixes + another bug where the DOWNLOAD_TIMEOUT variable was not being properly exported + due to a naming error. DOWNLOAD_MAX_TIMEOUT is now properly renamed to + DOWNLOAD_TIMEOUT. + + ASTERISK-26814 #close + + Change-Id: Ia56e4e8a3d39db76bc8a1852b2cf07ec10b39842 + +2017-03-22 20:33 +0000 [0939a19cff] Sean Bright + + * res_xmpp: Correct implementation of JABBER_STATUS & JabberStatus + + The documentation for JABBER_STATUS (and the deprecated JabberStatus + app) indicate that a return value of 7 indicates that the specified + buddy was not in the roster. It also indicates that you can specify a + "bare" JID (one without a resource). Unfortunately the actual behavior + does not match the documented behavior. + + Assuming that our roster includes the buddy online and available + "valid@example.org/Valid" and does *not* include the buddy + "invalid@example.org", the JABBER_STATUS() function returns the + following before this patch: + + +------------------------------+------------+--------------------------+ + | Buddy | Status | Result | + +------------------------------+------------+--------------------------+ + | valid@example.org | Online | 7 (Not in roster) | + | valid@example.org/Valid | Online | 1 (Online) | + | valid@example.org/Invalid | N/A | 7 (Not in roster) | + | invalid@example.org | N/A | Error logged, no return | + | invalid@example.org/Valid | N/A | Error logged, no return | + +------------------------------+------------+--------------------------+ + + And after this patch: + + +------------------------------+------------+--------------------------+ + | Buddy | Status | Result | + +------------------------------+------------+--------------------------+ + | valid@example.org | Online | 1 (Online) | + | valid@example.org/Valid | Online | 1 (Online) | + | valid@example.org/Invalid | N/A | 6 (Offline) | + | invalid@example.org | N/A | 7 (Not in roster) | + | invalid@example.org/Valid | N/A | 7 (Not in roster) | + +------------------------------+------------+--------------------------+ + + This brings the behavior in line with the documentation. + + ASTERISK-23510 #close + Reported by: Anthony Critelli + + Change-Id: I9c3241035363ef4a6bdc21fabfd8ffcd9ec657bf + +2017-03-22 17:32 +0000 [a487f6fb97] Sean Bright + + * res_xmpp: Don't crash when trying to send a message without a connection + + If we never establish a connection to our Jabber server, iksemel never sets up + its internal transport pointer, so attempting to send a message dereferences a + NULL pointer and causes a crash. + + ASTERISK-21855 #close + Reported by: Jeremy Kister + + Change-Id: I204a568894e4a53ab929783ecc594a000f04d79c + +2017-03-22 15:40 +0000 [90fb1fca41] Sean Bright + + * res_xmpp: Include client name in connection related error messages + + ASTERISK-25622 #close + Reported by: Sean Darcy + + Change-Id: I8472cb7bfb58d411a3cfbd482da98cae2d94d1e9 + +2017-03-21 12:32 +0000 [e196190f11] Sebastian Gutierrez + + * cdr: Allow setting of user field from 'h' extension + + The CDR code previously did not allow the user field to be set + from the 'h' extension in the dialplan. This change removes that + limitation and allows it to be set. + + ASTERISK-26818 + + Change-Id: I0fed8a79b5e408bac4e30542b8f33a61c5ed9aa6 + +2017-03-14 16:45 +0000 [398e5ec16c] Richard Begg + + * res_pjsip_session: Enable RFC3578 overlap dialing support. + + Support for RFC3578 overlap dialling (i.e. 484 Response to partially matched + destinations) as currently provided by chan_sip is missing from res_pjsip. + This patch adds a new endpoint attribute (allow_overlap) [defaults to yes] + which when set to yes enables 484 responses to partial destination + matches rather than the current 404. + + ASTERISK-26864 + + Change-Id: Iea444da3ee7c7d4f1fde1d01d138a3d7b0fe40f6 + +2017-03-21 06:59 +0000 [218f618095] Sean Bright + + * res_hep: Capture actual transport type in use + + Rather than hard-coding UDP, allow consumers of the HEP API to specify + which protocol is in use. Update the PJSIP provider to pass in the + current protocol type. + + ASTERISK-26850 #close + + Change-Id: I54bbb0a001cfe4c6a87ad4b6f2014af233349978 + +2017-03-21 09:57 +0000 [1c8b81a2a4] Sean Bright + + * Revert "app_queue: Handle the caller being redirected out of a queue bridge" + + This reverts commit 163e9e53dc7d84dd42721e733b7706c8147bdd27. + + Change-Id: Ief28479c77a298879dfe2c56be7ee92dc465da4b + +2017-03-21 08:26 +0000 [b3cc20799b] Sean Bright + + * res_pjsip_messaging: Check URI type before dereferencing + + We aren't validating that the URI we just parsed is a SIP/SIPS one before + trying to access the user, host, and port members of a possibly uninitialized + structure. + + Also update the MessageSend documentation to indicate what 'from' formats are + accepted. + + ASTERISK-26484 #close + Reported by: Vinod Dharashive + + Change-Id: I476b5cc5f18a7713d0ee945374f2a1c164857d30 + +2017-03-13 15:21 +0000 [91c97b5da5] Joshua Elson + + * pjsip: prevent memory corruption on creation of xml bodies + + ASTERISK-26776 #close + + Change-Id: I884b6f4e8233a355d0be687ec78d41bc0e4d3fd2 + +2017-03-20 16:27 +0000 [7f34c11b6a] Sean Bright + + * bridge_softmix: Ignore non-voice frames from translator + + Some codecs - codec_speex specifically - take voice frames and return + other types of frames, like CNG. If we subsequently treat those as + voice frames, we'll run into trouble when destroying the frame because + of the requirement that each voice frame have an associated format. + + ASTERISK-26880 #close + Reported by: Kirsty Tyerman + + Change-Id: I43f8450c48fb276ad8b99db8512be82949c1ca7c + +2017-03-14 23:49 +0000 [d5b480afca] Aaron An + + * audiohook.c: Lost RTP packets lead to out-of-sync MixMonitor. + + Fixed a bug in function "ast_audiohook_write_frame" that checked the + variable other_factory_samples and only flushed the factories, so they + would be in sync, when other_factory_samples > 0. When there is not any + rtp incoming the variable other_factory_samples will be 0, and although + the result of "our_factory_ms - other_factory_ms" may be very large, + this led to the record file not syncing. + + ASTERISK-26875 #close + Reported-by: Aaron An + Tested-by: Aaron An + + Change-Id: Ia4d890fb8fc1636a7188502bab35f555685aea22 + +2017-03-18 12:30 +0000 [38cebc73a3] Sean Bright + + * thread safety: Don't use getprotobyname() + + POSIX does not require getprotobyname() to be thread safe and some + implementations use static memory which causes issues when multiple + threads are used. + + Further, our usage of it today is just to ultimately get IPPROTO_TCP + for calls to setsockopt(). So instead we just use IPPROTO_TCP directly. + + Change-Id: I2e14e58674808f7ce99b2f5e900d0f90d0d8da48 + +2017-03-19 13:26 +0000 [265455bc2d] Sean Bright + + * res_rtp_asterisk: Pass correct data length to ast_rtcp_interpret + + We are currently passing in the capacity of the read buffer instead of the + number of bytes that we actually read off the wire. + + Change-Id: I60465049727d955c7f9a5e529e6f2aaff04cda36 + +2017-03-14 09:27 +0000 [76afb9e18a] Robert Mordec + + * app_queue: Member stuck as pending after forwarding previous call from queue + + Queue member will get stuck in pending_members if queue calls a device + that is different from the one observed for state changes. + + This patch removes members from pending_members as a result of channel stasis + events such as blind or attended transfers and hangup. + + ASTERISK-26862 #close + + Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727 + +2017-02-22 23:26 +0000 [60b372a883] Richard Mudgett + + * CHANNEL(callid): Give dialplan access to the callid. + + * Added CHANNEL(callid) to retrieve the call identifier log tag associated + with the channel. 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. + + ASTERISK-26878 + + Change-Id: I2c97ebd928b6f3c5bc80c5729e4d3c07f453049f + +2017-03-16 08:42 +0000 [9a57b24e17] Sean Bright + + * app_queue: Fix locking behavior in stasis message handlers + + The queue_stasis_data structure contains various mutable fields that require + appropriate locking. Specifically, the 'dying,' 'member_uniqueid,' and + 'caller_uniqueid' fields need to be locked when read from or written to. + + Change-Id: I246b7dbff8447acc957a1299f6ad0ebd0fd39088 + +2017-03-07 19:28 +0000 [8721d0bf1b] Sean Bright + + * chan_sip: Add rtcp-mux support + + ASTERISK-26846 #close + + Change-Id: I541a1602ff55ab73684e9f8002edb9e0e745d639 + +2017-03-16 16:50 +0000 [792171ea9e] Richard Mudgett + + * app_confbridge: Fix ConfbridgeTalking AMI event description. + + Thanks to Chris Howard for pointing this out on the wiki. + + Change-Id: I18e56de09a70e736b5d04719d45ef29cf0636705 + +2017-03-16 16:37 +0000 [047fb7f11e] Richard Mudgett + + * res_pjsip_asterisk.c: Fix compile error if libsrtp is not installed. + + struct ast_rtcp does not define the dtls member if SRTP is not enabled. + + ASTERISK-26732 + + Change-Id: Id15ea212e04490e012f2cf4a56818b4dd948875e + +2017-03-16 15:45 +0000 [a75f02c089] Richard Mudgett + + * res_pjsip_sdp_rtp.c: Fix cut-n-paste error + + We were inadvertenly referencing the cos_video option to determine if we + should set the tos_audio and cos_audio value on the RTP instance. + + Change-Id: Ia7964f486801d39dc6f5dae570baff079e1595b0 + +2017-03-16 10:39 +0000 [776ffd7724] Matt Jordan + + * res/res_pjsip_session: Only check localnet if it is defined + + If local_net is not defined on a transport, transport_state->localnet + will be NULL. ast_apply_ha will, be default, return AST_SENSE_ALLOW in + this case, causing the external_media_address, if set, to be skipped. + + This patch causes us to only check if we are sending within a network if + local_net is defined. + + ASTERISK-26879 #close + + Change-Id: Ib661c31a954cabc9c99f1f25c9c9a5c5b82cbbfb + +2017-03-14 16:22 +0000 [139bc3495f] Richard Begg + + * res_pjsip_sdp_rtp: RTP instance does not use same IP as explicit transport + + Currently a wildcard address is used for the local RTP socket, which + will not always result in the same address as used by the SIP socket + (e.g. if explicit transport addresses are configured). + Use the transport's host address when binding new local RTP sockets if + available. + + ASTERISK-26851 + + Change-Id: I098c29c9d1f79a4f970d72ba894874ac75954f1a + +2017-03-16 09:07 +0000 [7ea7797e12] Joshua Colp + + * res_rtp_asterisk: Fix crash when RTCP is not present when DTLS is stopped. + + This change removes an assumption that when DTLS is stopped + an RTCP session will be present on the RTP session. This is not + always the case. + + ASTERISK-26732 + + Change-Id: Ib9f7c09ce0b005efe362dbcc8795202b18f94611 + +2017-03-07 08:33 +0000 [9b756662a8] George Joseph + + * res_pjsip: Symmetric transports + + 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. + + * config_transport was modified to accept and store the new parameter. + + * config_transport/transport_apply was updated to store the transport + name in the pjsip_transport->info field using the pjsip_transport->pool + on UDP transports. + + * A 'multihomed_on_rx_message' function was added to + pjsip_message_ip_updater that, for incoming requests, retrieves the + transport name from pjsip_transport->info and retrieves the transport. + If transport->symmetric_transport is set, an 'x-ast-txp' uri parameter + containing the transport name is added to the incoming Contact header. + + * An 'ast_sip_get_transport_name' function was added to res_pjsip. + It takes an ast_sip_endpoint and a pjsip_sip_uri and returns a + transport name if endpoint->transport is set or if there's an + 'x-ast-txp' parameter on the uri and the uri host is an ipv4 or + ipv6 address. Otherwise it returns NULL. + + * An 'ast_sip_dlg_set_transport' function was added to res_pjsip + which takes an ast_sip_endpoint, a pjsip_dialog, and an optional + pjsip_tpselector. It calls ast_sip_get_transport_name() and if + a non-NULL is returned, sets the selector and sets the transport + on the dialog. If a selector was passed in, it's updated. + + * res_pjsip/ast_sip_create_dialog_uac and ast_sip_create_dialog_uas + were modified to call ast_sip_dlg_set_transport() instead of their + original logic. + + * res_pjsip/create_out_of_dialog_request was modified to call + ast_sip_get_transport_name() and pjsip_tx_data_set_transport() + instead of its original logic. + + * Existing transport logic was removed from endpt_send_request + since that can only be called after a create_out_of_dialog_request. + + * res_pjsip/ast_sip_create_rdata was converted to a wrapper around + a new 'ast_sip_create_rdata_with_contact' function which allows + a contact_uri to be specified in addition to the existing + parameters. (See below) + + * res_pjsip_pubsub/internal_pjsip_evsub_send_request was eliminated + since all it did was transport selection and that is now done in + ast_sip_create_dialog_uac and ast_sip_create_dialog_uas. + + * 'contact_uri' was added to subscription_persistence. This was + necessary because although the parsed rdata contact header has the + x-ast-txp parameter added (if appropriate), + subscription_persistence_update stores the raw packet which + doesn't have it. subscription_persistence_recreate was then + updated to call ast_sip_create_rdata_with_contact with the + persisted contact_uri so the recreated subscription has the + correct transport info to send the NOTIFYs. + + * res_pjsip_session/internal_pjsip_inv_send_msg was eliminated since + all it did was transport selection and that is now done in + ast_sip_create_dialog_uac. + + * pjsip_message_ip_updater/multihomed_on_tx_message was updated + to remove all traces of the x-ast-txp parameter from the + outgoing headers. + + NOTE: This change does NOT modify the behavior of permanent + contacts specified on an aor. To do so would require that the + permanent contact's contact uri be updated with the x-ast-txp + parameter and the aor sorcery object updated. If we need to + persue this, we need to think about cloning permanent contacts into + the same store as the dynamic ones on an aor load so they can be + updated without disturbing the originally configured value. + + You CAN add the x-ast-txp parameter to a permanent contact's uri + but it would be much simpler to just set endpoint->transport. + + Change-Id: I4ee1f51473da32ca54b877cd158523efcef9655f + +2017-03-15 13:24 +0000 [adad6020be] Richard Mudgett + + * autochan/mixmonitor/chanspy: Fix unsafe channel locking and references. + + Dereferencing struct ast_autochan.chan without first calling + ast_autochan_channel_lock() is unsafe because the pointer could change at + any time due to a masquerade. Unfortunately, ast_autochan_channel_lock() + itself uses struct ast_autochan.chan unsafely and can result in a deadlock + if the original channel happens to get destroyed after a masquerade in + addition to the pointer getting changed. + + The problem is more likely to happen with v11 and earlier because + masquerades are used to optimize out local channels on those versions. + However, it could still happen on newer versions if the channel is + executing a dialplan application when the channel is transferred or + redirected. In this situation a masquerade still must be used. + + * Added a lock to struct ast_autochan to safely be able to use + ast_autochan.chan while trying to get the channel lock in + ast_autochan_channel_lock(). The locking order is the channel lock then + the autochan lock. Locking in the other direction requires deadlock + avoidance. + + * Fix unsafe ast_autochan.chan usages in app_mixmonitor.c. + + * Fix unsafe ast_autochan.chan usages in app_chanspy.c. + + * app_chanspy.c: Removed unused autochan parameter from next_channel(). + + ASTERISK-26867 + + Change-Id: Id29dd22bc0f369b44e23ca423d2f3657187cc592 + +2017-03-07 14:13 +0000 [7bc69753bc] Mark Michelson + + * Add rtcp-mux support + + This commit adds support for RFC 5761: Multiplexing RTP Data and Control + Packets on a Single Port. Specifically, it enables the feature when + using chan_pjsip. + + A new option, "rtcp_mux" has been added to endpoint configuration in + pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with + whatever it communicates with. Asterisk follows the rules set forth in + RFC 5761 with regards to falling back to standard RTCP behavior if the + far end does not indicate support for rtcp-mux. + + The lion's share of the changes in this commit are in + res_rtp_asterisk.c. This is because it was pretty much hard wired to + have an RTP and an RTCP transport. The strategy used here is that when + rtcp-mux is enabled, the current RTCP transport and its trappings (such + as DTLS SSL session) are freed, and the RTCP session instead just + mooches off the RTP session. This leads to a lot of specialized if + statements throughout. + + ASTERISK-26732 #close + Reported by Dan Jenkins + + Change-Id: If46a93ba1282418d2803e3fd7869374da8b77ab5 + +2017-03-09 11:05 +0000 [163e9e53dc] Sean Bright + + * app_queue: Handle the caller being redirected out of a queue bridge + + A caller can leave the Queue() application after being bridged with a + member in a few ways: + + * Caller or member hangup + * Caller is transferred somewhere else (blind or atx) + * Caller is externally redirected elsewhere + + The first 2 scenarios are currently handled by subscribing to stasis + messages, but the 3rd is not explicitly covered. If a caller is + redirected away from the Queue() application, the member who was last + bridged with that caller will remain in an "In use" state until the + caller hangs up. + + This patch adds handling of the caller leaving the queue via + redirection. We monitor the caller-member bridge, and if the caller is + the one that leaves, we treat it the same as we would a caller hangup. + + ASTERISK-26400 #close + Reported by: Etienne Lessard + + Change-Id: Iba160907770de5a6c9efeffc9df5a13e9ea75334 + +2017-03-15 08:44 +0000 [7612601964] Joshua Colp + + * res_pjsip_endpoint_identifier_ip: Don't output error if no header_match. + + This change ensures that if no header_match option is set on an + identify an error message is not output stating the option is set + to an invalid value. + + ASTERISK-26863 + + Change-Id: I239bc6d2319dd3da24ba96a38d4d6e9b5526d62a + +2017-03-14 08:49 +0000 [48447313b6] Torrey Searle + + * res/res_pjsip_refer: call xfer w/o extension + + When transfering to a URI without an extension, ensure that the + s extension of the dialplan is entered + + ASTERISK-26869 #close + + Change-Id: I07403df66cf93f09e00a40ab5b41bfc6f72b1525 + +2017-03-14 16:16 +0000 [9fd9b39e8b] Richard Mudgett + + * pbx.c: Fix crash from malformed exten pattern. + + Forgetting to indicate an exten is a pattern can cause a crash if the + "pattern" has a character set range. e.g., "9999[3-5]" The crash is due + to a buffer overwrite because the '-' exten eye-candy wasn't removed as + expected and overran the allocated space. + + The buffer overwrite is fixed two ways in this patch. + + 1) Fix ext_strncpy() to distinguish between pattern and non-pattern + extens. Now '-' characters are removed when they are eye-candy and not + when they are part of a pattern character set. Since the function is + private to pbx.c, the return value now returns the number of bytes written + to the destination buffer instead of the strlen() of the final buffer so + the callers that care don't need to add one. + + 2) Fix callers to ext_strncpy() to supply the correct available buffer + size of the destination buffer. + + ASTERISK-26668 + + Change-Id: I555d97411140e47e0522684062d174fbe32aa84a + +2017-03-14 16:51 +0000 [5389666d6f] Richard Begg + + * chan_iax2: Reload of iax peer results in loss of host address/port + + When using a non-dynamic peer address, build_peer() invalidates the + peer address structure by setting the address family to unspecified. + However, if dnsmgr is enabled, the subsequent call to ast_dnsmgr_lookup() + will not amend the peer address if the cache is still valid, resulting + in peer connectivity failures. + To fix this, we call ast_dnsmgr_refresh() instead. + + ASTERISK-26865 + + Change-Id: Id8a89a2f771ebbaf32255a35fe596a6dcb97a082 + +2017-03-14 15:12 +0000 [658d59c683] Matt Jordan + + * configure: Don't use the progress bar with curl when downloading to stdout + + In some scenarios, such as when there may not be a terminal (such as + inside a Docker container), curl will apparently direct the progress bar + to stdout. This can cause extra data to be appended to a file curl'd + down to stdout, resulting in md5 verification failures. + + This patch removes the progress bar, and tells curl to download the file + silently. + + ASTERISK-26872 #close + + Change-Id: Ie860b020f627d4372b3e7ce9453de5faafeebe6c + +2017-03-14 07:50 +0000 [b3c2c996f1] Matt Jordan + + * res_pjsip_endpoint_identifier_ip: Add an option to match requests by header + + This patch adds a new features to the endpoint identifier module, + 'match_header'. When set, inbound requests are matched by a provided SIP + header: value pair. This option works in conjunction with the existing + 'match' configuration option, such that if any 'match*' attribute + matches an inbound request, the request is associated with the specified + endpoint. + + Since this module now identifies by more than just IP address, + appropriate renaming of the module and/or variables can be done in a + non-release branch. + + ASTERISK-26863 #close + + Change-Id: Icfc14835c962f92e35e67bbdb235cf0589de5453 + (cherry picked from commit 30f52d79d7fc9ab0b628bef2b61ea515413795a2) + +2017-03-14 09:55 +0000 [51985565ef] Matt Jordan + + * configs/samples/hep.conf.sample: Clarify how the HEP stack works + + This patch updates the documenation in hep.conf.sample to better specify + how the various HEP modules interact. + + ASTERISK-26717 #close + + Change-Id: I337fb742a89e3ec5edc7fc7a7a0295218d841124 + +2017-03-14 09:59 +0000 [f9b791debe] Matt Jordan + + * funcs/func_devstate: Remove new line in Device field of during module load + + During module loading of func_devstate, Asterisk emits the current + device state of all Custom device states currently stored in the AstDB. + This was erroneously including a new line character ('\n') to the end of + the device state, causing two new lines to be emitted in + DeviceStateChange AMI events. + + Note that this only happened for those device state changes that + occurred during startup. Regular device state changes for Custom device + states are handled elsewhere, and did not have the newline. + + ASTERISK-26643 #close + Reported by: Roman Bedros + Tested by: Matt Jordan + patches: + ami_devstate.diff uploaded by Roman Bedros (License 6842) + + Change-Id: I1f4c02fc79c448d43bf725f5039c83d9611d7d93 + +2017-03-14 09:37 +0000 [216e28aa95] Matt Jordan + + * main/stasis_cache: Demote the ERROR message when removing a nonexistent item + + This patch demotes the ERROR message that is displayed when a + nonexistent item is removed from the Stasis cache. The genesis of this + demotion is due to chan_sip's realtime peers and their interaction with + Asterisk's core ast_endpoint code, but ostensibly it could happen from + other channel drivers as well. + + Since Mark Michelson already did an excellent job of explaining on this + issue, it is quoted here for posterity: + + "Internally, when a realtime peer is retrieved, Asterisk creates an + ast_endpoint structure. When that peer is destroyed, the ast_endpoint is + destroyed as well. Part of the destruction of the ast_endpoint involves + clearing the Stasis cache of all information about that endpoint. The + problem here is that the act of creating the ast_endpoint is not enough + to actually put any information in the Stasis cache. Instead, something + has to happen, such as a state change, in order for the Stasis cache to + have any information about that endpoint. When a device registers, + chan_sip creates an ast_endpoint structure, processes the REGISTER, and + then destroys the ast_endpoint. When the ast_endpoint is destroyed, + there is nothing to destroy in the Stasis cache, so an error message is + emitted. When you use rtcachefriends, ast_endpoint structures persist + for the lifetime of the module and so you do not see this error + message." + + ASTERISK-25237 #close + + Change-Id: I53cebc6b4a897a1ab9564182b75c177780feff70 + +2017-03-12 09:21 +0000 [c8d1b915d7] Joshua Colp + + * chan_pjsip: Don't assume a session will have a channel. + + When querying for PJSIP specific information using the dialplan + function CHANNEL() it is possible that the underlying session + will no longer have a channel associated with it. This is + most likely to occur when the RTCP HEP module attempts to get + the channel name. If this happens then a crash will occur. + + This change just adds a check that the channel exists on the + session before querying it. + + ASTERISK-26857 + + Change-Id: I113479cffff6ae64cf8ed089e9e1565223426f01 + +2017-03-13 10:45 +0000 [6d1eb880c2] George Joseph + + * menuselect: Add a new 'options' support type + + The Binaural Rendering patches in the master branch required + menuselect to be updated with a new support type called 'option'. + This allows binaural rendering to be turned on or off when + bridge_softmix is built. This patch backports the 'option' + functionality to the 13 and 14 branches. + + Here's what it looks like in menuselect: + + [*] bridge_simple + [*] bridge_softmix + --- Module Options --- + [ ] binaural_rendering_in_bridge_softmix + + To create an option for a module, you can create (or update) the + menuselect-tree xml snippet in the directory where the module + resides and add a member element with an 'option' support_level. + + Example (abbreviated) from bridges/bridges.xml: + + + option + bridge_softmix + fftw3 + no + + + The 'name' will be added or removed from the MENUSELECT_ + make variable following the standard module "missing means yes" + rules. + + Example (abbreviated) from bridges/Makefile: + + ifeq ($(findstring binaural_rendering,$(MENUSELECT_BRIDGES)),) + bridge_softmix.o: _ASTCFLAGS+=-DBINAURAL_RENDERING + bridge_softmix.so: LIBS+=$(FFTW3_LIB) + endif + + Change-Id: I66d23755ed6e81f8d439cad410f2ffa7c30f25ad + +2017-03-10 20:29 +0000 [523de8eb8e] George Joseph + + * pjproject_bundled: Reduce the need for rebuilds + + Bundled pjproject should now only rebuild if one of the menuselect + "Compiler Flags" options changes. + + Change-Id: If114a2e16b9e77af371a600d6a5e197bbf28fe43 + +2017-03-07 08:12 +0000 [d3ef833b3b] Jean Aunis + + * chan_sip: Call not cancelled after receiving a 422 response + + When receiving a 422 response, the invitestate variable must be reset to + INV_CALLING. + + ASTERISK-26841 + + Change-Id: Ia0502d6b02192664cefa4e75bafdd2645ce56099 + +2017-03-05 15:26 +0000 [67c989ce78] Daniel Journo + + * pjsip/cli_commands: pjsip show channelstats shows wrong codec + + * cli_commands.c Fixed CLI output + + ASTERISK-26822 #close + + Change-Id: I3889ef6a8f6738fc312fab42db5efacd6e452b01 + +2017-03-07 07:37 +0000 [2a85888262] Joshua Colp + + * res_pjsip_transport_websocket: Add support for IPv6. + + This change adds a PJSIP patch (which has been contributed upstream) + to allow the registration of IPv6 transport types. + + Using this the res_pjsip_transport_websocket module now registers + an IPv6 Websocket transport and uses it for the corresponding + traffic. + + ASTERISK-26685 + + Change-Id: Id1f9126f995b31dc38db8fdb58afd289b4ad1647 + +2017-03-08 08:16 +0000 [bc6eeab822] Daniel Journo + + * app_voicemail: Cannot set fromstring on a per-mailbox basis + + * apps/app_voicemail.c fromstring field added to mailbox which will + override the global fromstring if set. + + ASTERISK-24562 #close + + Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe + +2017-03-06 15:54 +0000 [d9972423d1] Daniel Journo + + * Saynumber is trying to get "and" from "digits/" subfolder + + * say.c Changed 'digits/and' to 'vm-and' for en_GB + + ASTERISK-26598 #close + + Change-Id: If1b713e5daea6f952b339f139178d292a6c4fcfe + +2017-03-06 13:15 +0000 [77901a58ca] Sean Bright + + * pbx_spool: Gracefully handle long lines in call files + + Per the linked issue, we aren't checking the buffer filled by fgets() + to determine if it contains a newline, so we will fail to correctly + parse the trailing portion of a long line. + + This patch increases the buffer size from 256 to 1024, and skips any + line that exceeds that length, logging a warning in the process. + + ASTERISK-17067 #close + Reported by: Dave Olszewski + + Change-Id: I51bcf270c1b4347ba05b43f18dc2094c76f5d7b0 + +2017-03-02 21:27 +0000 [4271c700f7] Richard Mudgett + + * core: Cleanup ast_get_hint() usage. + + * manager.c:manager_state_cb() Fix potential use of uninitialized hint[] + if a hint does not exist for the requested extension. Ran into this when + developing a testsuite test. The AMI event ExtensionStatus came out with + the hint header value containing garbage. The AMI event PresenceStatus + also had the same issue. + + * manager.c:action_extensionstate() no need to completely initialize the + hint[]. Only initialize the first element. + + * pbx.c:ast_add_hint() Remove unnecessary assignment. + + * chan_sip.c: Eliminate an unneeded hint[] local variable. We only care + about the return value of ast_get_hint() there. + + Change-Id: Ia9a8786f01f93f1f917200f0a50bead0319af97b + +2017-02-16 04:22 +0000 [e510595c86] Jørgen H + + * res_pjsip WebRTC/websockets: Fix usage of WS vs WSS. + + According to the RFC[1] WSS should only be used in the Via header + for secure Websockets. + + * Use WSS in Via for secure transport. + + * Only register one transport with the WS name because it would be + ambiguous. Outgoing requests may try to find the transport by name and + pjproject only finds the first one registered. This may mess up unsecure + websockets but the impact should be minimal. Firefox and Chrome do not + support anything other than secure websockets anymore. + + * Added and updated some debug messages concerning websockets. + + * security_events.c: Relax case restriction when determining security + transport type. + + * The res_pjsip_nat module has been updated to not touch the transport + on Websocket originating messages. + + [1] https://tools.ietf.org/html/rfc7118 + + ASTERISK-26796 #close + + Change-Id: Ie3a0fb1a41101a4c1e49d875a8aa87b189e7ab12 + +2017-03-01 07:23 +0000 [76971d4c4a] Sean Bright + + * res_config_pgsql: Make 'require' return consistent with other backends + + res_config_pgsql should match the behavior of other realtime backend + drivers so that queue_log can disable adaptive logging. + + ASTERISK-25628 #close + Reported by: Dmitry Wagin + + Change-Id: Ic1fb1600c7ce10fdfb1bcdc43c5576b7e0014372 + +2017-02-28 09:41 +0000 [fa8f6c2fc4] Sean Bright + + * res_config_pgsql: Release table locks where appropriate + + The find_table() functions NULL or a locked table pointer. We are + not consistently calling release_table() in failure paths. + + Change-Id: I6f665b455799c84b036e5b34904b82b05eab9544 + +2017-02-28 05:41 +0000 [5b34b751a0] Tzafrir Cohen + + * pjsip.conf.sample: user_agent: not a specific version + + Use the description of useragent from sip.conf here. + + ASTERISK-26825 #close + + Change-Id: I5b33a4aaa0ae1d793289d05e3bc09521affbf755 + +2017-02-27 20:07 +0000 [8e6ecdade2] George Joseph + + * res_pjsip_pubsub: Remove unneeded endpoint unref + + When a subscription was being recreated and the endpoint wasn't + found, we were trying to unref the endpoint. This was causing + FRACKs. Removed the unref. + + ASTERISK-26823 #close + + Change-Id: If86d2aecff8fe853c7f38a1bfde721fcef3cd164 + +2017-02-16 04:16 +0000 [0595c31da7] Jørgen H + + * res_pjsip: Fix crash when contact has no status + + This change fixes an assumption in res_pjsip that a contact will + always have a status. There is a race condition where this is + not true and would crash. The status will now be unknown when + this situation occurs. + + ASTERISK-26623 #close + + Change-Id: Id52d3ca4d788562d236da49990a319118f8d22b5 + +2017-02-21 18:06 +0000 [c07bcca87e] George Joseph + + * res_pjsip_outbound_registration: Subscribe to network change events + + Outbound registration now subscribes to network change events + published by res_stun_monitor and refreshes all registrations + when an event happens. + + 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 also updated to + accept '*all'. + + ASTERISK-26808 #close + + Change-Id: Iad58a9e0aa5d340477fca200bf293187a6ca5a25 + +2017-02-26 10:09 +0000 [d91f61f0b5] Vitezslav Novy + + * chan_sip: Allow DTLS to be disabled when reloading. + + This change fixes a problem where removing the DTLS configuration + options and reloading would not disable DTLS. This occurred + because the DTLS configuration was not reset to an unconfigured + state on reload. + + ASTERISK-26313 + + Change-Id: I10952709cc4a7727fb50534b042bce9d64894b39 + +2017-02-27 12:25 +0000 [3d2c119778] George Joseph + + * build: Warn if asterisk is installed in both 32 and 64 bit sys dirs + + ... and clean them both up on uninstall. + + We've fixed the issue where 'make install' was installing to + /usr/lib on 64-bit systems that use /usr/lib64. Now we need + to clean up the remnants in /usr/lib. + + * 'make install' now prints a warning if DESTDIR/ASTLIBDIR + contains 'lib64' and libasterisk* shared libraries or modules + are also found in DESTDIR/ASTLIBDIR with 'lib64' transformed + to 'lib'. + + * 'make uninstall' ALWAYS cleans up both DESTDIR/ASTLIBDIR and + DESTDIR/ASTLIBDIR with 'lib64' transformed to 'lib'. + + ASTERISK-26705 + + Change-Id: I6edddeb3c07a51e7c7ba7cac3c05e4bf3ec3f01f + +2017-02-27 07:02 +0000 [eac818801b] Joshua Colp + + * bridge_native_rtp: Handle case where channel joins already suspended. + + The bridge_native_rtp module did not properly handle the case where + a smart bridge operation occurs while a channel is suspended. In this + scenario the module would incorrectly set up local or remote RTP + bridging despite the media having to flow through Asterisk. The remote + endpoint would see two media streams and experience wonky audio. + + The module has been changed so that it ensures both channels are + not suspended when performing the native RTP bridging and this + requirement has been documented in the bridge technology. + + ASTERISK-26781 + + Change-Id: Id4022d73ace837d4a293106445e3ade10dbc7c7c + +2017-02-24 11:49 +0000 [d49af061bc] Joshua Colp + + * config: Improve documentation and behavior of outbound_proxy option. + + This change updates the documentation for the outbound_proxy option + to ensure it is consistently stated that a full SIP URI must be + provided for the option. + + The res_pjsip_outbound_registration module has also been changed so + that the provided outbound_proxy value is checked to ensure it is a + URI and if not an error is output stating so. + + ASTERISK-26782 + + Change-Id: I6c239a32274846fd44e65b44ad9bf6373479b593 + +2017-02-09 18:05 +0000 [9c05ddbddd] George Joseph + + * pjproject_bundled: Update for pjproject 2.6 + + * Removed all 2.5.5 functional patches. + * Updated usages of pj_release_pool to be "safe". + * Updated configure options to disable webrtc. + * Updated config_site.h to disable webrtc in pjmedia. + * Added Richard Mudgett's recent resolver patches. + + Change-Id: Ib400cc4dfca68b3d07ce14d314e829bfddc252c7 + +2017-02-23 15:49 +0000 [bee55aaf2c] George Joseph + + * build: Execute ldconfig to build cache. (take two) + + On some platforms a multiarch approach is used for libraries. + The build system does not take this into account and still + places libraries into the lib directory if no --libdir is + specified to configure. On initial startup this results in + libasteriskssl.so not being found, as it is not in the multiarch + lib directory. To make matters worse, options were being passed + to ldconfig on both Linux and FreeBSD that actually prevented + the rebuild of the cache. + + * Fedora has a /usr/share/config.site that automatically tells + autoconf to use /usr/lib64 but CentOS does not. This logic was + copied to configure.ac and modified so systems like Ubuntu, + which still use /usr/lib for 64-bit systems, aren't affected. + + Now that we have them in the correct directory... + + In order for the system loader to find libasteriskssl and + libasteriskpj, one of 3 things has to happen... + + - The linker cache must be rebuilt including the directory + where the libasterisk* libraries were installed. Only root + can rebuild the cache. This was busted. + - We have to link the asterisk binary with an rpath pointing + to the directrory where the libasterisk* libraries were + installed. This makes things very complicated and will happen + over the collective dead bodies of everyone who's had to + package a distribution with an rpath. + - Finally, you can start asterisk with LD_LIBRARY_PATH set to the + directrory where the libasterisk* libraries were installed. + + There are no other options. So... + + * The invokation of ldconfig has been moved from main/Makefile + to ASTTOPDIR/Makefile, the options have been removed, and + DESTDIR/ASTLIBDIR appended. If you aren't root, you will be + warned after the "Asterisk Installation Compete" banner that + you must re-run 'make install' as root, manually run + 'ldconfig DESTDIR/ASTLIBDIR' as root, or run asterisk with + LD_LIBRARY_PATH. + + ASTERISK-26705 + + Change-Id: I2a64b7c33a7d3e9bde20f47e3d3ab771977af982 + +2017-02-23 14:48 +0000 [da0cadd100] Sean Bright + + * res_config_pgsql: Fix thread safety problems + + * A missing AST_LIST_UNLOCK() in find_table() + + * The ESCAPE_STRING() macro uses pgsqlConn under the hood and we were + not consistently locking before calling it. + + * There were a handful of other places where pgsqlConn was accessed + directly without appropriate locking. + + Change-Id: Iea63f0728f76985a01e95b9912c3c5c6065836ed + +2017-02-22 08:53 +0000 [f1963c5b8d] Sean Bright + + * res_config_ldap: Various code improvements + + The initial motivation for this patch was to properly handle memory + allocation failures - we weren't checking the return values from the + various LDAP library allocation functions. + + In the process, because update_ldap() and update2_ldap() were + substantially the same code, they've been consolidated. + + Change-Id: Iebcfe404177cc6860ee5087976fe97812221b822 + +2017-02-22 13:08 +0000 [1ec796ce18] Michael L. Young + + * build_tools: Fix download_externals to allow the use of curl or wget + + Not sure if this is really a bug versus an improvement. I can see it being + viewed as a bug though by some. + + The current build_tools/download_externals file depends on wget in order to + download external modules. The current build system is able to discover + which tool to use for fetching remote files - either wget or curl. + + This patch takes advantage of this capability by modifying the two calls to + the wget binary to instead use what was discovered by the build system. + + ASTERISK-26812 #close + + Change-Id: If9411a2554f009274d377445613ae91192d948a1 + +2017-02-22 11:13 +0000 [5c9c097d17] Joshua Colp + + * Revert "build: Execute ldconfig to build cache." + + This reverts commit d90430953c508670a67de68de400fef44f5e9fba. + + Change-Id: I758fe7ea0408f83a6df8e1774310d69f482700f6 + +2017-02-21 10:47 +0000 [ca6d001144] Sean Bright + + * pbx_realtime: Prevent premature extension matching + + The patterns provided by pbx_realtime were checked in the order in + which they were returned from the realtime backend. If there was + overlap between multiple patterns, the first one to correctly match was + chosen even though it may not have been the best match. + + We now sort the patterns descending by their length and compare in that + order. There may be cases where this still results in a sub-optimal + match, but this patch should improve the overall behavior. + + ASTERISK-18271 #close + Reported by: Charlie Smurthwaite + + Change-Id: I56d9ac15810eb1775966b669c3028e32cc7bd809 + +2017-02-21 15:09 +0000 [0654bf637c] Sean Bright + + * pbx_dundi: DUNDi weight parameter not processed correctly + + The DUNDi weight field is not always converted from network byte order + to host byte order. This can result in incorrect weight values and + incorrect selection of DUNDi destinations. + + ASTERISK-18731 #close + Reported by: Peter Racz + Patches: + dundi_weight.patch (license #6290) patch uploaded by Peter Racz + + Change-Id: Iba3e1a700ff539db57211a7bbc26f7b22ea9a1be + +2017-02-21 10:47 +0000 [d5522de597] Sean Bright + + * realtime: Fix ast_load_realtime_multientry handling + + ast_load_realtime_multientry() returns an ast_config structure whose + ast_categorys are keyed with the empty strings. Several modules were + giving semantic meaning to the category names causing problems at + runtime. + + * app_directory: Treated the category name as the mailbox name, and + would fail to direct calls to the appropriate extension after an + entry was chosen. + + * app_queue: Queues, queue members, and queue rules were all affected + and needed to be updated. + + * pbx_realtime: Pattern matching would never succeed because the + extension entered by the user was always compared to the empty + string. + + Change-Id: Ie7e44986344b0b76ea8f6ddb5879f5040c6ca8a7 + +2017-02-21 08:56 +0000 [5eb7875243] Sean Bright + + * realtime: Centralize some common realtime backend code + + All of the realtime backends create artificial ast_categorys to pass + back into the core as query results. These categories have no filename + or line number information associated with them and the backends differ + slightly on how they create them. So create a couple helper macros to + help make things more consistent. + + Also updated the call sites to remove redundant error messages about + memory allocation failure. + + Note that res_config_ldap sets the category filename to the 'table name' + but that is not read by anything in the core, so I've dropped it. + + Change-Id: I3a1fd91e0c807dea1ce3b643b0a6fe5be9002897 + +2017-02-16 10:30 +0000 [d90430953c] Joshua Colp + + * build: Execute ldconfig to build cache. + + On some platforms a multiarch approach is used for libraries. + The build system does not take this into account and still + places libraries into the lib directory if no --libdir is + specified to configure. On initial startup this results in + libasteriskssl.so not being found, as it is not in the multiarch + lib directory. + + This change does the minimally invasive thing and executes + ldconfig so that the libraries in the lib directory are found + and their location cached. By doing so Asterisk starts up fine. + + If DESTDIR is specified, however, the old logic is executed as + the install process may not have permission to alter the ldconfig + cache. + + ASTERISK-26705 + + Change-Id: If4eca46ac510c6fea5568256280ffdb3888d7bb4 + +2017-01-08 20:32 +0000 [3b606093d3] Richard Mudgett + + * res_pjsip_authenticator_digest.c: Fix sorcery's immutable contract violation. + + The inbound authentication object is supposed to be immutable when it is + stored in sorcery. However, the immutable property is violated if the + authentication object does not have a realm set. + + The immutable contract violation has a different effect depending upon + what sorcery back end is used. If it is the config file back end you + would get the same object back until res_pjsip is reloaded. If it is the + real-time or AstDB back end you would get a new object on each query. If + it is cached you would get the same object back until it is refreshed from + the database. + + Once an inbound authentication object has its realm set it may or may not + get updated again if the default_realm changes. + + If the same authentication object is used for inbound and outbound + authentication then the immutable violation can make it very hard to + determine why the outbound authentication now fails. The only diagnostic + message is a complaint about no realms matching when it had worked + earlier. It fails because of the difference in behaviour for an empty + realm setting between inbound and outbound authentication objects. + + * Fixed the sorcery object immutable violation by creating a new object + and setting the default_realm on it instead. The new object is a shallow + copy for speed. + + * The auth_store thread storage no longer holds an auth ref. It + interferes with the shallow copy and never needed a ref anyway. + + ASTERISK-26799 #close + + Change-Id: I2328a52f61b78ed5fbba38180b7f183ee7e08956 + +2017-02-04 20:17 +0000 [6208962b00] Richard Mudgett + + * res_pjsip: Update artificial auth whenever default_realm changes. + + There was code attempting to update the artificial authentication object + whenever the default_realm changed. However, once the artificial + authentication object was created it would never get updated. The + artificial authentication object would require a system restart for a + change to the default_realm to take effect. + + ASTERISK-26799 + + Change-Id: Id59036e9529c2d3ed728af2ed904dc36e7094802 + +2017-01-01 08:02 +0000 [9f11da85a2] Richard Mudgett + + * res_pjsip: Update authentication realm documentation. + + Using the same auth section for inbound and outbound authentication is not + recommended. There is a difference in meaning for an empty realm setting + between inbound and outbound authentication uses. + + An empty inbound auth realm represents the global section's default_realm + value when the authentication object is used to challenge an incoming + request. An empty outgoing auth realm is treated as a don't care wildcard + when the authentication object is used to respond to an incoming + authentication challenge. + + ASTERISK-26799 + + Change-Id: Id3952f7cfa1b6683b9954f2c5d2352d2f11059ce + +2017-02-13 17:11 +0000 [473813311b] Richard Mudgett + + * pjproject: Fixes to resolve DNS SRV crashes. + + * Re #1945 (misc): Don't trigger SRV complete callback when there is a + parse error. + + * srv_resolver.c: Don't try to send query if already considered resolved. + + ** In resolve_hostnames() don't try to resolve a query that is already + considered resolved. + + ** In resolve_hostnames() fix DNS typo in comments. + + ** In build_server_entries() move a common expression assigning to cnt + earlier. + + * sip_transport.c: Fix tdata object name to actually contain the pointer. + + It helps if the logs referencing a tdata object buffer actually have a + name that includes the correct pointer as part of the name. Also since + the tdata has its own pool it helps if any logs referencing the pool have + the same name as the tdata object. This change brings tdata logging in + line with how tsx objects are named. + + ASTERISK-26669 #close + ASTERISK-26738 #close + + Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af + +2017-02-06 14:26 +0000 [d58fdae811] Richard Mudgett + + * pjsip_distributor.c: Update some debug messages to get transaction name. + + * Removed overloaded unmatched response ignore. We obviously sent the + request so we shouldn't ignore it because it isn't new work. + + ASTERISK-26669 + ASTERISK-26738 + + Change-Id: I55fb5cadc83a8e6699b347c6dc7fa32c5a617d37 + +2017-02-04 16:00 +0000 [eb9ae4f7cb] Richard Mudgett + + * res_pjsip: Record the serializer earlier on the tdata. + + When PJPROJECT needs to do a DNS resolution and there is not a cached + entry available, the SIP request message goes out on the PJSIP monitor + thread instead of the original serializer thread. Thus when the response + comes back it does not get processed by the original sending serializer. + + This patch records the serializer on tdata before passing a request + message to PJPROJECT where it can in Asterisk code. There are several + places in PJPROJECT for outbound registration and publishing support that + would need to record the serializer. Unfortunately, without replacing the + PJPROJECT DNS resolver as was done in v14 we cannot fix those without + modifying PJPROJECT. + + Even if we backported the DNS resolver from v14, the outbound registration + refresh timer does not go out on a serializer thread but the PJSIP monitor + thread. Fortunately, Asterisk's outbound publish support doesn't use the + auto refresh timer that would also not go out under the serializer thread. + + This patch is v13 only. + + ASTERISK-26669 + ASTERISK-26738 + + Change-Id: I9997b9ed6dbcebd2c37d6a67dc6dcee9c78914a4 + +2017-02-20 13:38 +0000 [57f19d6efb] Richard Mudgett + + * pjproject: Increase SENDER_WIDTH column size for 64-bit system logs. + + ASTERISK-26669 + ASTERISK-26738 + + Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0 + +2017-02-20 06:28 +0000 [47daca8a2b] Sean Bright + + * app_voicemail: vm_authenticate accesses uninitialized memory + + vm_authenticate doesn't always set the passed ast_vm_user argument, so + we initialize to 0 before passing it in. + + ASTERISK-25893 #close + Reported by: Filip Jenicek + + Change-Id: Ia3cc0128f93d352ed9add8d5c2f0f7232c2cbe4a + +2017-02-20 11:19 +0000 [06214173a9] Joshua Colp + + * Revert "build: Execute ldconfig to build cache." + + This reverts commit e910dbab90ef3d628955c49f441b2c9dda1f222c. + + Change-Id: I242aa0a965a79738dc898299959c6d2e020c86bd + +2017-02-20 08:04 +0000 [c9ea98f9bf] George Joseph + + * pjproject cli: Add object count after object lists + + When listing a container, we now print the number of objects + in the container at the end of the list. + + Change-Id: I791cbc3ee9da9a2af9adc655164b5d32953df812 + +2017-02-20 05:53 +0000 [d8972f50f4] Sean Bright + + * res_config_ldap: Don't try to delete non-existent attributes + + OpenLDAP will raise an error when we try to delete an LDAP attribute + that doesn't exist. We need to filter out LDAP_MOD_DELETE requests + based on which attributes the current LDAP entry actually has. There + is of course a small window of opportunity for this to still fail, + but it is much less likely now. + + Change-Id: I3fe1b04472733e43151563aaf9f8b49980273e6b + +2017-02-20 05:49 +0000 [b980cae1f7] Sean Bright + + * res_config_ldap: Remove extraneous line numbers from log messages + + Extraneous line numbers were being output in many log messages. These + have been removed. + + Change-Id: Ice9efa3d252ee87f37fa8f5ea852fda482675431 + +2017-02-20 05:45 +0000 [011b7be62a] Sean Bright + + * res_config_ldap: Make memory allocation more consistent + + The code in update_ldap() and update2_ldap() was using both Asterisk's + memory allocation routines as well as OpenLDAP's. I've changed it so + that everything that is passed to OpenLDAP's functions are allocated + with their routines. + + Change-Id: Iafec9c1fd8ea49ccc496d6316769a6a426daa804 + +2017-02-20 05:30 +0000 [b2836dde7e] Sean Bright + + * res_config_ldap: Fix configuration inheritance from _general + + The "_general" configuration section allows administrators to provide + both general configuration options (host, port, url, etc.) as well as a + global realtime-to-LDAP-attribute mapping that is a fallback if one of + the later sections do not override it. This neglected to exclude the + general configuration options from the mapping. As an example, during + my testing, chan_sip requested 'port' from realtime, and because I did + not have it defined, it pulled in the 'port' configuration option from + "_general." We now filter those out explicitly. + + Change-Id: I1fc61560bf96b8ba623063cfb7e0a49c4690d778 + +2017-02-20 05:27 +0000 [6d5e9993b2] Sean Bright + + * res_config_ldap: Fix erroneous LDAP_MOD_REPLACE in LDAP modify + + We always treat the first change of our modification batch as a + replacement when it sometimes is actually a delete. So we have to pass + the correct arguments to the OpenLDAP library. + + ASTERISK-26580 #close + Reported by: Nicholas John Koch + Patches: + res_config_ldap.c-11.24.1.patch (license #6833) patch uploaded + by Nicholas John Koch + + Change-Id: I0741d25de07c9539f1edc6eff3696165dfb64fbe + +2017-02-15 11:55 +0000 [5b7c6678ae] Sean Bright + + * res_config_sqlite3: Fix crash when loading with invalid config + + When ast_config_load() fails with CONFIG_STATUS_FILEINVALID, it has + already destroyed the ast_config struct for us. Trying to do it again + results in a crash. + + Change-Id: If6a5c0ca718ad428e01a1fb25beb209a9ac18bc6 + +2017-02-17 16:57 +0000 [096496e13e] Richard Mudgett + + * tcptls.c: Add some missing allocation failure checks. + + Change-Id: I0ddf01cd3c10d3b6666d7bf68d4e206a37f4fbdb + +2017-02-17 17:06 +0000 [047a1e7dcc] Sean Bright + + * pjproject-bundled: Fix checksum verification when using cURL + + ASTERISK-26802 #close + Reported by: Michael L. Young + + Change-Id: Iad293080f55d4d69ab615717a15211d916eed613 + +2017-02-16 08:38 +0000 [2cd75fe311] Sean Bright + + * realtime: Fix LIKE escaping in SQL backends + + The realtime framework allows for components to look up values using a + LIKE clause with similar syntax to SQL's. pbx_realtime uses this + functionality to search for pattern matching extensions that start with + an underscore (_). + + When passing an underscore to SQL's LIKE clause, it will be interpreted + as a wildcard matching a single character and therefore needs to be + escaped. It is (for better or for worse) the responsibility of the + component that is querying realtime to escape it with a backslash before + passing it in. Some RDBMs support escape characters by default, but the + SQL92 standard explicitly says that there are no escape characters + unless they are specified with an ESCAPE clause, e.g. + + SELECT * FROM table WHERE column LIKE '\_%' ESCAPE '\' + + This patch instructs 3 backends - res_config_mysql, res_config_pgsql, + and res_config_sqlite3 - to use the ESCAPE clause where appropriate. + + Looking through documentation and source tarballs, I was able to + determine that the ESCAPE clause is supported in: + + MySQL 5.0.15 (released 2005-10-22 - earliest version available from + archives) + PostgreSQL 7.1 (released 2001-04-13) + SQLite 3.1.0 (released 2005-01-21) + + The versions of the relevant libraries that we depend on to access MySQL + and PostgreSQL will not work on versions that old, and I've added an + explicit check in res_config_sqlite3 to only use the ESCAPE clause when + we have a sufficiently new version of SQLite3. + + res_config_odbc already handles the escape characters appropriately, so + no changes were required there. + + ASTERISK-15858 #close + Reported by: Humberto Figuera + + ASTERISK-26057 #close + Reported by: Stepan + + Change-Id: I93117fbb874189ae819f4a31222df7c82cd20efa + +2017-02-16 10:30 +0000 [e910dbab90] Joshua Colp + + * build: Execute ldconfig to build cache. + + On some platforms a multiarch approach is used for libraries. + The build system does not take this into account and still + places libraries into the lib directory if no --libdir is + specified to configure. On initial startup this results in + libasteriskssl.so not being found, as it is not in the multiarch + lib directory. + + This change does the minimally invasive thing and executes + ldconfig so that the libraries in the lib directory are found + and their location cached. By doing so Asterisk starts up fine. + + ASTERISK-26705 + + Change-Id: I6d30b6427e9d5e69470e11327c7ff203fa7da519 + +2017-02-16 05:46 +0000 [9b02bbfa88] Sean Bright + + * res_config_sqlite3: Properly create missing columns when necessary + + There were two specific issues resolved here: + + 1) The code that iterated over the required fields + (via ast_realtime_require) was broken for the RQ_INTEGER1 field + type. Iteration would stop when the first RQ_INTEGER1 (0) field + was encountered. + + 2) sqlite3_changes() was used to try and count the number of rows + returned by a SELECT statement. sqlite3_changes() only counts + affected rows, so this was always returning the value from the + most recent data modification statement. We now separate read-only + queries from data modification queries and count rows appropriately + in both cases. + + ASTERISK-23457 #close + Reported by: Scott Griepentrog + + Change-Id: I91ed20494efc3fcfbc2a96ac7646999a49814884 + +2017-02-15 14:44 +0000 [0fc27fa364] Joshua Elson + + * http: Ensure capath is defined on all http creations + + ASTERISK-26794 #close + + Change-Id: I9cbc3b6b6a8aab590f5ccde9c262a98e4d5253a1 + +2017-02-15 23:09 +0000 [7aa731c1c7] Igor Goncharovsky + + * chan_unistim: fix char type to have consistent behavior on ARM + + There is difference exists in behaviour of char type on x86 and ARM. + On x86 by default char variable type means signed char, but in ARM + unsigned char used. This make binary calculations and negative values + works wrong on ARM. + + This patch change type of char variables used for store negative + values and binary calculations to signed char. + + ASTERISK-26714 + + Change-Id: Id78716dee9568a58419d4ef63c038affc3dfc7ab + +2017-02-07 13:17 +0000 [be77b845d9] George Joseph + + * res_pjsip_pubsub: Correctly implement persisted subscriptions + + This patch fixes 2 original issues and more that those 2 exposed. + + * When we send a NOTIFY, and the client either doesn't respond or + responds with a non OK, pjproject only calls our + pubsub_on_evsub_state callback, no others. Since + pubsub_on_evsub_state (which does the sub_tree cleanup) does not + expect to be called back without the other callbacks being called + first, it just returns leaving the sub_tree orphaned. Now + pubsub_on_evsub_state checks the event for PJSIP_EVENT_TSX_STATE + which is what pjproject will set to tell us that it was the + transaction that timed out or failed and not the subscription + itself timing our or being terminated by the client. If is + TSX_STATE, pubsub_on_evsub_state now does the proper cleanup + regardless of the state of the subscription. + + * When a client renews a subscription, we don't update the + persisted subscription with the new expires timestamp. This causes + subscription_persistence_recreate to prune the subscription if/when + asterisk restarts. Now, pubsub_on_rx_refresh calls + subscription_persistence_update to apply the new expires timestamp. + This exposed other issues however... + + * When creating a dialog from rdata (which sub_persistence_recreate + does from the packet buffer) there must NOT be a tag on the To + header (which there will be when a client refreshes a + subscription). If there is one, pjsip_dlg_create_uas will fail. + To address this, subscription_persistence_update now accepts a flag + that indicates that the original packet buffer must not be updated. + New subscribes don't set the flag and renews do. This makes sure + that when the rdata is recreated on asterisk startup, it's done + from the original subscribe packet which won't have the tag on To. + + * When creating a dialog from rdata, we were setting the dialog's + remote (SUBSCRIBE) cseq to be the same as the local (NOTIFY) cseq. + When the client tried to resubscribe after a restart with the + correct cseq, we'd reject the request with an Invalid CSeq error. + + * The acts of creating a dialog and evsub by themselves when + recreating a subscription does NOT restart pjproject's subscription + timer. The result was that even if we did correctly recreate the + subscription, we never removed it if the client happened to go away + or send a non-OK response to a NOTIFY. However, there is no + pjproject function exposed to just set the timer on an evsub that + wasn't created by an incoming subscribe request. To address this, + we create our own timer using ast_sip_schedule_task. This timer is + used only for re-establishing subscriptions after a restart. + + An earlier approach was to add support for setting pjproject's + timer (via a pjproject patch) and while that patch is still included + here, we don't use that call at the moment. + + While addressing these issues, additional debugging was added and + some existing messages made more useful. A few formatting changes + were also made to 'pjsip show scheduled tasks' to make displaying + the subscription timers a little more friendly. + + ASTERISK-26696 + ASTERISK-26756 + + Change-Id: I8c605fc1e3923f466a74db087d5ab6f90abce68e + +2017-02-15 11:03 +0000 [73133d5354] Sean Bright + + * res_rtp_asterisk: Use PJ_ICE_MAX_CAND instead of hard-coding 16 + + pjsip limits the total number of ICE candidates to PJ_ICE_MAX_CAND, + which is a compile-time constant. Instead of hard-coding 16 when we + enumerate local interfaces, use PJ_ICE_MAX_CAND so that we can + potentially collect more interfaces if the compile time options are + changed. + + Tangentially related to ASTERISK~24464 + + Change-Id: I1b85509e39e33b1fed63c86261fc229ba14bbabd + +2017-02-03 02:25 +0000 [99b40e72ae] Tzafrir Cohen + + * libasteriskssl: do nothing with OpenSSL >= 1.1 + + OpenSSL 1.1 requires no explicit initialization. The hacks in the + library are not needed. They also happen to fail running Asterisk. + + ASTERISK-26109 #close + + Change-Id: I3b3efd5d80234a4c45a8ee58dcfe25b15d9ad100 + +2017-02-13 16:50 +0000 [4c31e03e80] Sean Bright + + * app_voicemail: Allow 'Comedian Mail' branding to be overriden + + Original patch by John Covert, slight modifications by me. + + ASTERISK-17428 #close + Reported by: John Covert + Patches: + app_voicemail.c.patch (license #5512) patch uploaded by + John Covert + + Change-Id: Ic3361b0782e5a5397a19ab18eb8550923a9bd6a6 + +2017-01-20 23:59 +0000 [e97e50b68b] Tzafrir Cohen + + * tcptls: use TLS_client_method with OpenSSL 1.1 + + OpenSSL 1.1 introduced TLS_client_method() and deprecated the previous + version-specific methods (such as TLSv1_client_method(). Other than + being simpler to use and more correct (gain support for TLS newer that + TLS1, in our case), the older ones produce a deprecation warning that + fails the build in dev-mode. + + ASTERISK-26109 #close + + Change-Id: I257b1c8afd09dcb0d96cda3a41cb9f7a15d0ba07 + +2017-01-20 23:57 +0000 [0d555f0d81] Tzafrir Cohen + + * openssl 1.1 support: use OPENSSL_VERSION_NUMBER + + Use OPENSSL_VERSION_NUMBER instead of OPENSSL_API_COMPAT to detect + the openssl 1.1 API. + + ASTERISK-26109 #close + + Change-Id: I4e448f55ef516aedf6ad154037c35577a421a458 + +2017-01-25 16:25 +0000 [9d34df9a5e] Ryan Rittgarn + + * app_voicemail: VoiceMailPlayMsg did not play database stored messages + + When attempting to use VoiceMailPlayMsg with a realtime data backend + the message is located, but never retrieved. This patch adds the + required RETRIEVE and DISPOSE calls that will fetch the message from + the database (and IMAP storage as well for that matter). + + Also, removed extraneous make_file call. + + ASTERISK-26723 #close + + Change-Id: I1e122dd53c0f3d7faa10f3c2b7e7e76a47d51b8c + +2017-02-14 08:12 +0000 [f99e5f4de4] Sean Bright + + * app_record: Add option to prevent silence from being truncated + + When using Record() with the silence detection feature, the stream is + written out to the given file. However, if only 'silence' is detected, + this file is then truncated to the first second of the recording. + + This patch adds the 'u' option to Record() to override that behavior. + + ASTERISK-18286 #close + Reported by: var + Patches: + app_record-1.8.7.1.diff (license #6184) patch uploaded by var + + Change-Id: Ia1cd163483235efe2db05e52f39054288553b957 + +2017-02-11 09:57 +0000 [ea8a610776] Sean Bright + + * cli: Fix various CLI documentation and completion issues + + * app_minivm: Use built-in completion facilities to complete optional + arguments. + + * app_voicemail: Use built-in completion facilities to complete + optional arguments. + + * app_confbridge: Add missing colons after 'Usage' text. + + * chan_alsa: Use built-in completion facilities to complete optional + arguments. + + * chan_sip: Use built-in completion facilities to complete optional + arguments. Add completions for 'load' for 'sip show user', 'sip show + peer', and 'sip qualify peer.' + + * chan_skinny: Correct and extend completions for 'skinny reset' and + 'skinny show line.' + + * func_odbc: Correct completions for 'odbc read' and 'odbc write' + + * main/asterisk: Correct and extend completions for 'core show file + version.' + + * main/astmm: Use built-in completion facilities to complete arguments + for 'memory' commands. + + * main/bridge: Correct completions for 'bridge kick.' + + * main/ccss: Use built-in completion facilities to complete arguments + for 'cc cancel' command. + + * main/cli: Add 'all' completion for 'channel request hangup.' Correct + completions for 'core set debug channel.' Correct completions for 'core + show calls.' + + * main/pbx_app: Remove redundant completions for 'core show + applications.' + + * main/pbx_hangup_handler: Remove unused completions for 'core show + hanguphandlers all.' + + * res_sorcery_memory_cache: Add completion for 'reload' argument of + 'sorcery memory cache stale' and properly implement. + + Change-Id: Iee58c7392f6fec34ad9d596109117af87697bbca + +2017-01-13 11:21 +0000 [17030100ca] Norbert Varga + + * chan_pjsip: Multidomain endpoint finding on call + + When PJSIP tries to call an endpoint with a domain (e.g. 1000@test.com), + the user part is stripped down as it would be a trunk with a specified user, + and only the host part is called as a PJSIP endpoint and can't be found. + This is not correct in the case of a multidomain SIP account, so the stripping + after the @ sign is done only if the whole endpoint (in multidomain case + 1000@test.com) can't be found. + + ASTERISK-26248 + + Change-Id: I3a2dd6f57f3bd042df46b961eccd81d31ab202e6 + +2017-02-13 05:05 +0000 [18f1b52601] Joshua Colp + + * channel: Protect flags in ast_waitfor_nandfds operation. + + The ast_waitfor_nandfds operation will manipulate the flags + of channels passed in. This was previously done without + the channel lock being held. This could result in incorrect + values existing for the flags if another thread manipulated + the flags at the same time. + + This change locks the channel during flag manipulation. + + ASTERISK-26788 + + Change-Id: I2c5c8edec17c9bdad4a93291576838cb552ca5ed + +2017-02-11 11:25 +0000 [a46a21642e] Richard Mudgett + + * res_pjsip.c: Fix inconsistency between warning and action. + + The original return value corresponded to AST_SIP_AUTHENTICATION_CHALLENGE + but we have no authenticator registered to create the challenge. + + Change-Id: I62368180d774b497411b80fbaabd0c80841f8512 + +2017-02-11 11:26 +0000 [67b21dc63a] Richard Mudgett + + * pjsip_distributor.c: Fix off-nominal tdata ref leak. + + Change-Id: I571f371d0956a8039b197b4dbd8af6b18843598d + +2017-02-09 10:01 +0000 [8936568515] Sean Bright + + * manager: Restore Originate failure behavior from Asterisk 11 + + In Asterisk 11, if the 'Originate' AMI command failed to connect the provided + Channel while in extension mode, a 'failed' extension would be looked up and + run. This was, I believe, unintentionally removed in 51b6c49. This patch + restores that behavior. + + This also adds an enum for the various 'synchronous' modes in an attempt to + make them meaningful. + + ASTERISK-26115 #close + Reported by: Nasir Iqbal + + Change-Id: I8afbd06725e99610e02adb529137d4800c05345d + +2017-02-08 14:27 +0000 [2817f87d27] Richard Mudgett + + * core: Cleanup some channel snapshot staging anomalies. + + We shouldn't unlock the channel after starting a snapshot staging because + another thread may interfere and do its own snapshot staging. + + * app_dial.c:dial_exec_full() made hold the channel lock while setting up + the outgoing channel staging. Made hold the channel lock after the called + party answers while updating the caller channel staging. + + * chan_sip.c:sip_new() completed the channel staging on off-nominal exit. + Also we need to use ast_hangup() instead of ast_channel_unref() at that + location. + + * channel.c:__ast_channel_alloc_ap() added a comment about not needing to + complete the channel snapshot staging on off-nominal exit paths. + + * rtp_engine.c:ast_rtp_instance_set_stats_vars() made hold the channel + locks while staging the channels for the stats channel variables. + + Change-Id: Iefb6336893163f6447bad65568722ad5d5d8212a + +2017-02-10 09:35 +0000 [c7fcc4468f] George Joseph + + * configs/samples: Fix placement of 'identify' entry in sorcery.conf + + The entry for 'identify' was incorrectly placed in the + res_pjsip section when it should be in + res_pjsip_endpoint_identifier_ip. + + ASTERISK-26785 #close + + Change-Id: Ia1372b12a952bfe2df6b1b1e0e725ca306a5d41a + +2017-02-08 11:50 +0000 [cbc23c31cf] Mark Michelson + + * Revert "Update qualifies when AOR configuration changes." + + This reverts commit 6492e91392b8fd394193e411c6eb64b45486093f. + + The change in question was intended to prevent the need to reload in + order to update qualifies on contacts when an AOR changes. However, this + ended up causing a deadlock instead. + + Change-Id: I1a835c90a5bb65b6dc3a1e94cddc12a4afc3d71e + +2017-02-07 12:01 +0000 [7e14e086cf] Joshua Colp + + * srv: Fix crash when ast_srv_lookup is used and 0 records are returned. + + When performing an SRV lookup using the ast_srv_lookup function it + did not properly handle the situation where 0 records are returned. + If this happened it would wrongly assume that at least one record + was present. + + This change fixes the code so it will exit early if an error occurs + or if 0 records are returned. + + ASTERISK-26772 + patches: + srv_lookup.patch submitted by nappsoft (license 6822) + + Change-Id: I09b19081c74e0ad11c12bf54a257243b1bcb2351 + +2017-02-06 11:40 +0000 [7b39d6901a] Joshua Colp + + * res_stasis_device_state: Protect the adding/removing of subscriptions. + + The adding and removing of device state subscriptions did not protect + fully against simultaneous manipulation. In particular the subscribe + case allowed a small window where two subscriptions could be added for + the same device state instead of just one. + + This change makes the code hold the subscriptions lock for the entirety + of each operation to ensure that two are not occurring at the same time. + + ASTERISK-26770 + + Change-Id: I3e7f8eb9d09de440c9024d2dd52029f6f20e725b + +2017-02-01 17:56 +0000 [c384dfd6b0] Richard Mudgett + + * res_pjsip: Fix some off nominal tdata leaks. + + Change-Id: I243a4be5e7fbfe604923764969c4ee04eee89b9d + +2017-02-02 11:26 +0000 [70aff89e5d] Sean Bright + + * res_odbc: Remove deprecated settings from sample configuration file + + ASTERISK-26704 #close + Reported by: Anthony Messina + + Change-Id: I976a1f94cf79c5f31e76174c61f5c6a65fd6354f + +2017-02-01 15:56 +0000 [3aee199913] Sean Bright + + * audiohooks: Muting a hook can mute underlying frames + + If an audiohook is placed on a channel that does not require transcoding, + muting that hook will cause the underlying frames to be muted as well. + + The original patch is from David Woolley but I have modified slightly. + + ASTERISK-21094 #close + Reported by: David Woolley + Patches: + ASTERISK-21094-Patch-1.8-1.txt (license #5737) patch uploaded + by David Woolley + + Change-Id: Ib2b68c6283e227cbeb5fa478b2d0f625dae338ed + +2017-02-01 13:54 +0000 [6492e91392] Mark Michelson + + * Update qualifies when AOR configuration changes. + + Prior to this change, qualifies would only update in the following + cases: + * A reload of res_pjsip.so was issued. + * A dynamic contact was re-registered after its AOR's qualify_frequency + had been changed + This does not work well if you are using realtime for your AORs. You can + update your database to have a new qualify_frequency, but the permanent + contacts on that AOR will not have their qualifies updated. And the + dynamic contacts on that AOR will not have their qualifies updated until + the next registration, which could be a long time. + + This change seeks to fix this problem by making it so that whenever AOR + configuration is applied, the contacts pertaining to that AOR have their + qualifies updated. + + Additions from this patch: + * AOR sorcery objects now have an apply handler that calls into a newly + added function in the OPTIONS code. This causes all contacts + associated with that AOR to re-schedule qualifies. + * When it is time to qualify a contact, the OPTIONS code checks to see + if the AOR can still be retrieved. If not, then qualification is + canceled on the contact. + + Alterations from this patch: + * The registrar code no longer updates contact's qualify_frequence and + qualify_timeout. There is no point to this since those values already + get updated when the AOR changes. + * Reloading res_pjsip.so no longer calls the OPTIONS initialization + function. Reloading res_pjsip.so results in re-loading AORs, which + results in re-scheduling qualifies. + + Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121 + +2017-01-31 18:28 +0000 [43f0ff4b69] Richard Mudgett + + * channel.c: Fix unbalanced read queue deadlocking local channels. + + Using the timerfd timing module can cause channel freezing, lingering, or + deadlock issues. The problem is because this is the only timing module + that uses an associated alert-pipe. When the alert-pipe becomes + unbalanced with respect to the number of frames in the read queue bad + things can happen. If the alert-pipe has fewer alerts queued than the + read queue then nothing might wake up the thread to handle received frames + from the channel driver. For local channels this is the only way to wake + up the thread to handle received frames. Being unbalanced in the other + direction is less of an issue as it will cause unnecessary reads into the + channel driver. + + ASTERISK-26716 is an example of this deadlock which was indirectly fixed + by the change that found the need for this patch. + + * In channel.c:__ast_queue_frame(): Adding frame lists to the read queue + did not add the same number of alerts to the alert-pipe. Correspondingly, + when there is an exceptionally long queue event, any removed frames did + not also remove the corresponding number of alerts from the alert-pipe. + + ASTERISK-26632 #close + + Change-Id: Ia98137c5bf6e9d6d202ce0eb36441851875863f6 + +2017-01-31 16:38 +0000 [a199f94908] Richard Mudgett + + * res_agi: Prevent an AGI from eating frames it should not. (Re-do) + + A dialplan intercept routine is equivalent to an interrupt routine. As + such, the routine must be done quickly and you do not have access to the + media stream. These restrictions are necessary because the media stream + is the responsibility of some other code and interfering with or delaying + that processing is bad. A possible future dialplan processing + architecture change may allow the interception routine to run in a + different thread from the main thread handling the media and remove the + execution time restriction. + + * Made res_agi.c:run_agi() running an AGI in an interception routine run + in DeadAGI mode. No touchy channel frames. + + ASTERISK-25951 + + ASTERISK-26343 + + ASTERISK-26716 + + Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43 + +2017-01-31 16:32 +0000 [6bed318a66] Richard Mudgett + + * Frame deferral: Revert API refactoring. + + There are several issues with deferring frames that are caused by the + refactoring. + + 1) The code deferring frames mishandles adding a deferred frame to the + deferred queue. As a result the deferred queue can only be one frame + long. + + 2) Deferrable frames can come directly from the channel driver as well as + the read queue. These frames need to be added to the deferred queue. + + 3) Whoever is deferring frames is really only doing the __ast_read() to + collect deferred frames and doesn't care about the returned frames except + to detect a hangup event. When frame deferral is completed we must make + the normal frame processing see the hangup as a frame anyway. As such, + there is no need to have varying hangup frame deferral methods. We also + need to be aware of the AST_SOFTHANGUP_ASYNCGOTO hangup that isn't real. + That fake hangup is to cause the PBX thread to break out of loops to go + execute a new dialplan location. + + 4) To properly deal with deferrable frames from the channel driver as + pointed out by (2) above, means that it is possible to process a dialplan + interception routine while frames are deferred because of the + AST_CONTROL_READ_ACTION control frame. Deferring frames is not + implemented as a re-entrant operation so you could have the unsupported + case of two sections of code thinking they have control of the media + stream. + + A worse problem is because of the bad implementation of the AMI PlayDTMF + action. It can cause two threads to be deferring frames on the same + channel at the same time. (ASTERISK_25940) + + * Rather than fix all these problems simply revert the API refactoring as + there is going to be only autoservice and safe_sleep deferring frames + anyway. + + ASTERISK-26343 + + ASTERISK-26716 #close + + Change-Id: I45069c779aa3a35b6c863f65245a6df2c7865496 + +2017-01-31 11:17 +0000 [e371e13b9e] Joshua Colp + + * res_pjsip: Handle invocation of callback on outgoing request when error occurs. + + There are some error cases in PJSIP when sending a request that will + result in the callback for the request being invoked. The code did not + handle this case and assumed on every error case that the callback was not + invoked. + + The code has been changed to check whether the callback has been invoked + and if so to absorb the error and treat it as a success. + + ASTERISK-26679 + ASTERISK-26699 + + Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91 + +2017-01-30 09:02 +0000 [339c30f2b6] Sean Bright + + * res_rtp_asterisk: Swap byte-order when sending signed linear + + Before Asterisk 13, signed linear was converted into network byte order by a + smoother before being sent over the network. We restore this behavior by + forcing the creation of a smoother when slinear is in use and setting the + appropriate flags so that the byte order conversion is always done. + + ASTERISK-24858 #close + Reported-by: Frankie Chin + + Change-Id: I868449617d1a7819578f218c8c6b2111ad84f5a9 + +2017-01-31 12:46 +0000 [7fd28cefdb] George Joseph + + * debug_utilities: Install ast_logescalator to /var/lib/asterisk/scripts + + Forgot to install it with the original patch + + Change-Id: I8bdb540a6694971ae5fe21f48d532332c6482e4c + +2017-01-25 06:50 +0000 [456bc3c704] George Joseph + + * debug_utilities: Add ast_logescalator + + The escalator works by creating a set of startup commands in cli.conf + that set up logger channels and issue the debug commands for the + subsystems specified. If asterisk is running when it is executed, + the same commands will be issued to the running instance. The original + cli.conf is saved before any changes are made and can be restored by + executing '$prog --reset'. + + The log output will be stored in... + $astlogdir/message.$uniqueid + $astlogdir/debug.$uniqueid + $astlogdir/dtmf.$uniqueid + $astlogdir/fax.$uniqueid + $astlogdir/security.$uniqueid + $astlogdir/pjsip_history.$uniqueid + $astlogdir/sip_history.$uniqueid + + Some minor tweaks were made to chan_sip, and res_pjsip_history + so their history output could be send to a log channel as packets + are captured. + + A minor tweak was also made to manager so events are output to verbose + when "manager set debug on" is issued. + + Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543 + +2017-01-23 09:35 +0000 [54b027916a] Torrey Searle + + * libastssl/pj: libastssl/pj should have an so_version + + Issue introduced in b59956a87. In the non-darwin case libastssl/pj + should be versioned. This causes the symbol file for this lib + to not be generated. + + Change-Id: Ib07ae8c40252813c488e2c1ac6204fd42816dd4c + +2017-01-24 19:51 +0000 [3c8f84786e] Kirill Katsnelson + + * make_build_h: handle backslashes in external strings + + LikewiseOpen creates user names with a backslash in them. A gentle + massage with sed(1) allows such strings to be inserted into build.h + properly quoted. I am also adding the same for host name and other + strings used in the script that are more or less user-controlled. + + ASTERISK-26754 + + Change-Id: Iac5ef2b67a68ee58f35ddbf86bb818ba6eabecae + +2017-01-17 20:46 +0000 [555e8cd2ba] Kirill Katsnelson + + * ast_careful_fwrite to support EPIPE gracefully + + When a reading end of the network socket is closed by an AMI manager, + the EPIPE is signaled when writing to our end, resulting in the + spurious log error message + + ast_careful_fwrite: fwrite() returned error: Broken pipe + + Previously EPIPE was handled in ast_carefulwrite() a few lines above, + but not in this function. + + ASTERISK-26753 + + Change-Id: I6a67335cd6526608bb9b78f796c626b1677664b8 + +2017-01-24 22:31 +0000 [be92f10a16] Kirill Katsnelson + + * app_queue: Fix queues randomly disappearing on reload + + With 500+ queues and a reload every minute, a random queue disappears + upon reload. The cause is mususe of the 'dead' flag. Namely, all queues + were marked dead up front, and then "resurrected" by dropping this flag + for those found in the configuration. But a queue marked dead can be + removed also when control leaves the app entry point on a PBX thread. + + With this change, the queue is marked only not found, and at the end of + reload only the queues that are still not found are actually marked as + dead, so the dead flag is never reset, and set only on positively dead + queues. + + ASTERISK-26755 + + Change-Id: I3a4537aec9eb8d8aeeaa0193407e3523feb004bf + +2017-01-26 07:57 +0000 [aae9df0643] Joshua Colp + + * res_pjsip_endpoint_identifier_ip: Fix memory leak of hosts when resolving. + + This change adds a missing unreference of the hostname when resolving and + also cleans up the iterator. + + ASTERISK-26735 + + Change-Id: Ic012ebaf3d89e714eec340b7b0c5e63c66af857a + +2017-01-25 15:26 +0000 [9e3150b98d] Mark Michelson + + * Add reload options to CLI/AMI stale object commands. + + Marking an object as stale in a memory cache is supposed to prime the + cache so that the next time the item is retrieved, the stale item is + deleted from the cache and a background task is run to re-populate the + cache with a fresh version of the object. + + The problem is, there are some object types out there for which there is + no natural reason that they would be retrieved from the backend with any + regularity. Outbound PJSIP registrations are a good example of this. At + startup, they are read, and an object-specific state is created that + refers to the initially-retrieved object for all time. + + Adding the "reload" option to the CLI/AMI commands gives the cache the + opportunity to manually re-retrieve the object from the backend, both + storing the new object in the cache and applying the new object's + configuration to the module that uses that object. + + Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8 + +2017-01-10 17:39 +0000 [c54f9d2bf0] Richard Mudgett + + * T.140: Fix format ref and memory leaks. + + * channel.c:ast_sendtext(): Fix T.140 SendText memory leak. + + * format_compatibility.c: T.140 RED and T.140 were swapped. + + * res_rtp_asterisk.c:rtp_red_init(): Fix ast_format_t140_red ref leak. + + * res_rtp_asterisk.c:rtp_red_init(): Fix data race after starting periodic + scheduled red_write(). + + * res_rtp_asterisk.c: Some other minor misc tweaks. + + Change-Id: Ifa27a2e0f8a966b1cf628607c86fc4374b0b88cb + +2017-01-24 15:39 +0000 [a2f0adccbd] Joshua Colp + + * res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0. + + When configuring a match using a netmask the error variable was + not defaulting to 0. For some people this would cause the code + to think an error occurred when adding the match when in reality + it added perfectly fine. + + ASTERISK-26693 + + Change-Id: I850c250813742bddde65c84e739093c9e01dfe56 + +2017-01-10 17:37 +0000 [607b3ac736] Richard Mudgett + + * astobj2.c: Add excessive ref count trap. + + Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a + +2017-01-10 13:11 +0000 [ab8cb5a7ce] Richard Mudgett + + * main/app.c: Memory corruption from early format destruction. + + * make_silence() created a malloced silence slin frame without adding a + slin format ref. When the frame is destroyed it will unref the slin + format that never had a ref added. Memory corruption is expected to + follow. + + * Simplified and fixed counting the number of samples in a frame list for + make_silence(). + + * Eliminated an unnecessary RAII_VAR associated with the make_silence() + frame. + + Change-Id: I47de3f9b92635b7f8b4d72309444d6c0aee6f747 + +2017-01-11 14:59 +0000 [dcd8e4b1a0] Richard Mudgett + + * frame.c: Fix off-nominal format ref leaks. + + * ast_frisolate() could leak frame format refs on allocation + failures. + + * Similified code in ast_frisolate() and code used by + ast_frisolate(). + + Change-Id: I79566d4d36b3d7801bf0c8294fcd3e9a86a2ed6d + +2017-01-13 19:08 +0000 [00a227e93d] Richard Mudgett + + * stasis_bridge.c: Fix off-nominal stasis control ref leak. + + Change-Id: Ib17218343a6596832060180e19386da9df150ac8 + +2017-01-10 12:30 +0000 [38a2021c68] Richard Mudgett + + * res_musiconhold.c: Fix format ref leak when parsing MOH config class. + + Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5 + +2017-01-10 14:03 +0000 [ab7a9fc5b2] Richard Mudgett + + * chan_oss.c: Fix format ref leak in oss_read(). + + Change-Id: I0a5d56c7dcf327d60f86a4c25a23571733709fd0 + +2017-01-10 17:48 +0000 [1484a991e1] Richard Mudgett + + * Add notes about embedded ast_frame structs holding a format ref. + + mod_format.h: Note ast_filestream.fr holds a format ref. + + translate.h: Note ast_trans_pvt.f holds a format ref. + + Change-Id: I86bda354d725207b41e08920355d7c31b2d7f749 + +2017-01-19 09:05 +0000 [17f4989d49] George Joseph + + * ari: Implement 'debug all' and request/response logging + + 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. To accomplish this, a new global_debug global + variable was added to res/stasis/app.c and new APIs were added to + set and query the value. + + 'ari set debug' now displays requests and responses as well as events. + This required refactoring the existing debug code. + + * The implementation for 'ari set debug' was moved from stasis/cli.{c,h} + to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted. + * In order to print the body of incoming requests even if a request + failed, the consumption of the body was moved from the ari stubs + to ast_ari_callback in res_ari.c and the moustache templates were + then regenerated. The body is now passed to ast_ari_invoke and then + on to the handlers. This results in code savings since that template + was inserted multiple times into all the stubs. + + An additional change was made to the ao2_str_container implementation + to add partial key searching and a sort function. The existing cli + code assumed it was already there when it wasn't so the tab completion + was never working. + + Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf + +2017-01-20 21:13 +0000 [30cb4eb57f] Richard Mudgett + + * PJPROJECT logging: Fix detection of max supported log level. + + The mechanism used for detecting the maximum log level compiled into the + linked pjproject did not work. The API call simply stores the requested + level into an integer and does no range checking. Asterisk was assuming + that there was range checking and limited the new value to the allowable + range. To get the actual maximum log level compiled into the linked + pjproject we need to get and save off the initial set log level from + pjproject. This is the maximum log level supported. + + * Get and save off the initial log level setting before altering it to the + desired level on startup. This has to be done by a macro rather than + calling a core function to avoid incorrectly linking pjproject. + + * Split the initial log level warning messages to warn if the linked + pjproject cannot support the requested startup level and if it is too low + to get the pjproject buildopts for "pjproject show buildopts". + + * Adjust the CLI "pjproject set log level" to check the saved max log + level and to generate normal output messages instead of a warning message. + + ASTERISK-26743 #close + + Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4 + +2017-01-21 14:43 +0000 [cd2677f966] Tzafrir Cohen + + * tests: use datadir for sound files + + Some (voicemail-related) tests API symlinks beep.gsm and other files + from ast_config_AST_VAR_DIR. It should use ast_config_AST_DATA_DIR. + + ASTERISK-26740 #close + + Change-Id: Id49c56fb9e16df64b1a2b829693ca7601252df89 + +2017-01-20 23:41 +0000 [b62f84bfb1] Tzafrir Cohen + + * test_voicemail_api: order of params to VERIFY macros + + Fix order of parameters in calls to VM_API_INT_VERIFY and + VM_API_STRING_VERIFY + + ASTERISK-26739 #close + + Change-Id: I30dc6b36893aadad6012be3f16f93aa5720870d6 + Note: status: builds. Not tested any further. + +2017-01-05 13:21 +0000 [e3dcb9ddd9] Richard Mudgett + + * res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands. + + ASTERISK-23828 #close + + Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567 + +2017-01-23 16:18 +0000 [75497c33ea] Mark Michelson + + * Free endpoint ACLs when destroying PJSIP endpoints. + + If endpoint ACLs were specified, they were not being freed + when endpoints were destroyed. On systems with realtime endpoints, this + could add up quickly since each DB lookup would allocate the ACL without + freeing it. + + ASTERISK-26731 #close + Reported by Ustinov Artem + + Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad + +2017-01-23 09:10 +0000 [177e81ee47] George Joseph + + * pjproject_bundled: Fix setting max log level + + An earlier attempt to prevent pjsua from spitting out an extra 6795 + lines of debug output every time the testsuite called it was also + turning off the ability for asterisk to output debug info when it + needed to. This patch reverts the earlier fix and instead adds + a pjproject patch that sets the startup log level to 1 for pjsua + pjsystest and the pjsua python binding. This is an asterisk-only + patch that does not affect pjproject functionality and will not be + submitted upstream. + + Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8 + +2017-01-23 10:08 +0000 [6d23b2e360] Joshua Colp + + * res_pjsip_endpoint_identifier_ip: Read settings before resolving. + + An option has been added, srv_lookups, which controls whether + SRV lookups are performed on the provided match hosts or not. + It was possible for this option to be applied after resolution + had already happened. + + This change makes it so hosts are stored away, settings are read + and applied, and then resolution is done. This ensures that no + matter the ordering the srv_lookups option is in effect. + + ASTERISK-26735 + + Change-Id: I750378cb277be0140f8c5539450270afbfc43388 + +2017-01-22 17:25 +0000 [a969bf3577] Richard Mudgett + + * LISTFILTER: Remove outdated ERROR message. + + Feeding LISTFILTER an empty variable results in an invalid ERROR message. + Earlier changes made the message useless because we can no longer tell if + the variable is empty or does not exist. It is valid to try to remove a + value from an empty list just as it is valid to try to remove a value that + is not in a non-empty list. + + * Removed the outdated ERROR message. + + * Added more test cases to the LISTFILTER unit test. + + Change-Id: Ided9040e6359c44a335ef54e02ef5950a1863134 + +2017-01-05 15:11 +0000 [3890337e7a] Richard Mudgett + + * res_pjsip_pubsub.c: Fix AMI event list counts. + + Fix the AMI PJSIPShowSubscriptionsInbound, PJSIPShowSubscriptionsOutbound, + and PJSIPShowResourceLists actions event counts. The reported counts may + not necessarily be accurate depending on what happens. + + The subscriptions count would be wrong if Asterisk ever has outbound + subscriptions. + + The resource list count could be wrong if a list were added or removed + during the AMI action being processed. + + Change-Id: I4344301827523fa174960a42c413fd19abe4aed5 + +2017-01-05 13:02 +0000 [fe4801c4f9] Richard Mudgett + + * res_pjsip_pubsub.c: Fix incorrect message string wrapping. + + Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120 + +2017-01-05 13:01 +0000 [46484b8730] Richard Mudgett + + * res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage. + + Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be + +2017-01-05 12:58 +0000 [8160474d7d] Richard Mudgett + + * res_pjsip: alloca can never fail. + + Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1 + +2017-01-13 11:03 +0000 [c628a7acac] George Joseph + + * debug_utilities: Create ast_loggrabber + + ast_loggrabber gathers log files from customizable search patterns, + optionally converts POSIX timestamps to a readable format and + tarballs the results. + + Also a few tweaks were made to ast_coredumper. + + Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495 + (cherry picked from commit 5fa1c56d7e76999aa14f133a33f6b168e7c3b99c) + +2017-01-01 03:47 +0000 [e335b706ee] Richard Mudgett + + * res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages. + + Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49 + +2017-01-12 15:58 +0000 [883e7fde31] Kevin Harwell + + * abstract/fixed/adpative jitter buffer: disallow frame re-inserts + + It was possible for a frame to be re-inserted into a jitter buffer after it + had been removed from it. A case when this happened was if a frame was read + out of the jitterbuffer, passed to the translation core, and then multiple + frames were returned from said translation core. Upon multiple frames being + returned the first is passed on, but sebsequently "chained" frames are put + back into the read queue. Thus it was possible for a frame to go back into + the jitter buffer where this would cause problems. + + This patch adds a flag to frames that are inserted into the channel's read + queue after translation. The abstract jitter buffer code then checks for this + flag and ignores any frames marked as such. + + Change-Id: I276c44edc9dcff61e606242f71274265c7779587 + +2017-01-13 21:23 +0000 [473330983b] Richard Mudgett + + * taskprocessor.c: Change when high water warning logged. + + The task processor queue reached X scheduled tasks message was originally + intended to get logged only once per task processor to prevent spamming + the log. This is no longer necessary since high and low water thresholds + can better control when the message is logged. + + It is beneficial to generate the warning each time a task processor + reaches the high water level because PJSIP stops processing new requests + while any high water alert is active. Without this change you would have + to enable at least debug level 3 logging to know about a repeated alert + trigger. + + * Made generate the warning message whenever a task is pushed into the + task processor that triggers the high water alert. + + * Appended 'again' to the warning for a repeated high water alert trigger. + + Change-Id: Iabf75a004f7edaf1e5e8c323099418e667cac999 + +2017-01-10 05:54 +0000 [0047b1bc49] Aaron An + + * res_rtp_asterisk: Fix bug in function CHANNEL(rtcp, all_rtt) + + Function CHANNEL(rtcp,all_rtt) CHANNEL(rtcp,all_loss) CHANNEL(rtcp,all_jitter) + always return 0.0 due to wrong define of macro "AST_RTP_SATA_SET" and + "AST_RTP_STAT_STRCPY". + It should compare "combined" with "stat" not "current_stat". + + ASTERISK-26710 #close + Reported-by: Aaron An + Tested-by: AaronAn + + Change-Id: Id4140fafbf92e2db689dac5b17d9caa009028a15 + +2017-01-10 18:10 +0000 [47474cfd54] George Joseph + + * debug_utilities: Create the ast_coredumper utility + + This utility allows easy manipulation of asterisk coredumps. + + * Configurable search paths and patterns for existing coredumps + * Can generate a consistent coredump from the running instance + * Can dump the lock_infos table from a coredump + * Dumps backtraces to separate files... + - thread apply 1 bt full -> .thread1.txt + - thread apply all bt -> .brief.txt + - thread apply all bt full -> .full.txt + - lock_infos table -> .locks.txt + * Can tarball corefiles and optionally delete them after processing + * Can tarball results files and optionally delete them after processing + * Converts ':' in coredump and results file names '-' to facilitate + uploading. Jira for instance, won't accept file names with colons + in them. + + Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1]. + + [1] For *BSDs, the "devel/gdb" package might have to be installed to + get a recent gdb. The utility will check all instances of gdb + it finds in $PATH and if one isn't found that can run python, it + prints a friendly error. + + Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd + +2017-01-08 10:29 +0000 [f8cd73ec3c] George Joseph + + * pjproject_bundled: Fix compilation with MALLOC_DEBUG + + When MALLOC_DEBUG was specified, make was failing. Immediately + remaking would work. The issues was in the ordering of the make + dependencies. + + Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd + +2017-01-05 06:11 +0000 [37aaaa2da2] Joshua Colp + + * res_pjsip_endpoint_identifier_ip: Add support for SRV lookups. + + This change implements SRV support for the IP based endpoint + identifier module. All possible addresses through SRV are looked + up and added as matches. If no SRV records are available a + fallback to normal host resolution is done. If an IP address + is provided then no SRV lookup occurs. + + This is configured using the "srv_lookups" option on the + identify section and defaults to "yes". + + ASTERISK-26693 + + Change-Id: I6b641e275bf96629320efa8b479737062aed82ac + +2016-12-22 09:13 +0000 [569dac8e50] Alexander Traud + + * res_pjsip_session: Access SIPDOMAIN via Dialplan. + + This feature was available in the SIP channel driver chan_sip. For example, + Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not + local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect + and dial remote SIP-URIs. This change here sets the SIP destination domain of + an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well. + + ASTERISK-26670 #close + + Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243 + +2017-01-04 05:50 +0000 [367128e70b] Alexander Traud + + * chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND. + + After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats + but remember the joint format. Cached formats contain default parameters, + often create an empty fmtp line. However, a joint format might have passed + format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and + contain the resulting format parameters from a SDP negotiation. + + ASTERISK-26691 #close + + Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc + +2017-01-03 15:14 +0000 [d7e5a747c3] George Joseph + + * pjproject_bundled: Compile pjsua with max log level = 2 + + A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6. + This allowed us to control the log level better from inside Asterisk. + An unfortunate side effect of this was that the pjsua binary and + python bindings were also compiled with log level set to 6 so whenever + a testsuite test that uses pjsua runs, it spits out 6795 lines of + debug in an instant even before the test starts. I believe this + overruns the Jenkins capture buffer and prevents the test from + properly terminating. In turn, this results in the testsuite just + hanging until the job is killed. It's more frequent on the higher + end agents because they can spit out the messages faster. + + Unfortunately, the messages are all spit out before we have control + of the python pj.Lib instance where we can set logging levels so the + only alternative was to actually compile pjsua and _pjsua.so with an + overridden PJ_LOG_MAX_LEVEL. Although defining a lower max level was + done in the Makefile, the define in config_site.h had to be wrapped + with "#ifndef" so the change would take effect. + + Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff + +2016-12-22 16:00 +0000 [34e728cfb9] Joshua Colp + + * chan_pjsip: Use session for retrieving CHANNEL() information. + + The CHANNEL() dialplan function implementation for PJSIP allows + querying of PJSIP specific information. This used the channel + passed in to get the PJSIP session and associated information. + It is possible for this channel to be masqueraded and end + up as a different channel type by the time the information + request is actually acted upon. + + This change retrieves the PJSIP session safely and accesses + data from it (including channel). This provides a guarantee + that the session and channel will not be altered when the + request is being acted upon. + + ASTERISK-26673 + + Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6 + +2016-12-31 19:56 +0000 [a398f98b08] Joshua Elson + + * res_pjsip: Fix known compact header issues + + ASTERISK-26684 #close + + Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a + +2016-12-30 09:10 +0000 [0ab9d103f6] George Joseph + + * res_pjsip_refer: Handle compact Refer-To header. + + refer_incoming_refer_request needed to look for the "r" header as well + as the "Refer-To" header. + + ASTERISK-26655 #close + patches: + refer_compact_fix.diff submitted by JoshE (license 6075) + + Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f + +2016-12-23 12:11 +0000 [21151408f7] Richard Mudgett + + * bridge_native_rtp.c: Minor code cleanups. + + In native_rtp_bridge_compatible_check() + + * Made one variable declaration per line. + + * Extracted if test assignment to make the test easier to see. + + * Made long if tests easier to see the combinatorial logic. + + * Added bridge id to a couple debug messages. + + Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad + +2016-12-23 12:10 +0000 [9dcf9e9cea] Richard Mudgett + + * bridge_native_rtp.c: Fix native rtp bridge data race. + + native_rtp_bridge_compatible() didn't lock the bridge channels before + checking the channels for native bridging ability. As a result, one of + the channel's native format capabilities structure got replaced out from + under the native bridge check. Use of a stale pointer to freed memory + causes bad things to happen. + + MALLOC_DEBUG, DO_CRASH, and the + tests/channels/pjsip/transfers/blind_transfer/caller_direct_media + testsuite test caught this. + + * Add missing channel locking in native_rtp_bridge_compatible(). + + Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53 + +2016-12-21 16:28 +0000 [a9e459f8ac] Richard Mudgett + + * res_rtp_asterisk.c: Fix uninitialized memory crash. + + ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to + ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' + parameter may not get initialized. Thus when the code tries to save the + 'us' parameter to the local address we could try to copy a ridiculous + sized memory buffer and segfault. + + * Made pass an initialized 'us' parameter to ast_ouraddrfor(). + + * Optimized out the 'us' struct variable. + + ASTERISK-26672 #close + + Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc + +2016-12-21 17:55 +0000 [bcdd282ada] Richard Mudgett + + * res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip(). + + We access uninitialized memory when the 'ourip' parameter does not + have an initial guess to our IP address. + + ASTERISK-26672 + + Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15 + +2016-12-21 16:25 +0000 [ac31233dbe] Richard Mudgett + + * acl.c: Improve ast_ouraddrfor() diagnostic messages. + + * Made not generate strings unless they will actually be used. + + ASTERISK-26672 + + Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3 + +2016-12-21 17:54 +0000 [0aa5db4b38] Richard Mudgett + + * chan_rtp.c: Fix uninitialized memory crash. + + unicast_rtp_request() could pass an uninitialized 'us' parameter to + ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' + parameter may not get initialized. Thus when the code tries to save the + 'us' parameter to the local address we could try to copy a ridiculous + sized memory buffer and segfault. + + * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort + the UnicastRTP channel request if it fails. + + ASTERISK-26672 + + Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0 + +2016-12-07 15:23 +0000 [e2fa3c7eda] Richard Mudgett + + * res_rtp_asterisk.c: Fix off nominal memory leak. + + Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75 + +2016-12-09 12:23 +0000 [d13be4eff6] Martin Tomec + + * app_queue: Ensure member is removed from pending when hanging up. + + In some cases member is added to pending_members, and the channel + is hung up before any extension state change. So the member would + stay in pending_members forever. So when we call do_hang, we + should also remove member from pending. + + ASTERISK-26621 #close + + Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54 + +2016-12-18 15:23 +0000 [815f755155] George Joseph + + * pjproject_bundled: Make build single threaded + + There were just too many issues in various environments with + multi threaded building of pjproject. It doesn't really speed + things up anyway since asterisk is already being compiled in + parallel. + + Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1 + +2016-12-08 20:00 +0000 [493849dcd7] Corey Farrell + + * chan_sip: Reorder unload_module to deal with stuck TCP threads. + + In some situations TCP threads may become frozen. This creates the + possibility that Asterisk could segfault if they become unfrozen after + chan_sip has been dlclose'd. This reorders the unload_module process to + allow abort if threads do not exit within 5 seconds. + + High level order as follows: + 1) Unregister from the core to stop new requests. + 2) Signal threads to stop + 3) Clear config based tables (but do not free the table itself). + 4) Verify that threads have shutdown, cancel unload if not. + 5) Clean all remaining resources. + + ASTERISK-26586 + + Change-Id: Ie23692041d838fbd35ece61868f4c640960ff882 + +2016-12-16 01:32 +0000 [ab447f8a6a] David M. Lee + + * configure: fix with-pjproject-bundled + + The AC_ARG_WITH macro's shell variable is withval; not enableval. Purely + coincidentally, the option would work when --enable-dev-mode is given. + + Also fixed a portability problem with bootstrap.sh, since -printf is not + a portable option for find. + + Change-Id: I0f0e5b1a934b5af5737713834361e9c95b96b376 + +2016-12-15 13:25 +0000 [35736d419a] Richard Mudgett + + * autosupport: Add 'pjproject show buildopts' + + Change-Id: I8aa55a7c3fb175235ddc7f85e9457d5102d06fa7 + +2016-12-14 14:21 +0000 [4b285d226d] Richard Mudgett + + * chan_dahdi.c: Fix bounds check regression. + + Caused by ASTERISK-25494 + + Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb + +2016-12-13 14:34 +0000 [9114574188] Richard Mudgett + + * res_pjsip: Add/update ERROR msg if invalid URI. + + ASTERISK-24499 + + Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c + +2016-12-12 18:38 +0000 [75a6afbec5] Richard Mudgett + + * MESSAGE: Flush Message/ast_msg_queue channel alert pipe. + + ASTERISK-25083 + + Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2 + +2016-12-13 14:06 +0000 [91485734a4] George Joseph + + * res_sorcery_memory_cache: Change an error to a debug message + + When a sorcery user calls ast_sorcery_delete on an object that + may have already expired from the cache, res_sorcery_memory_cache + spits out an ERROR. Since this can happen frequently and validly when + an inbound registration expires after the cache entry expired, the + errors are unnecessary and misleading. Changed to a debug/1. + + Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7 + +2016-12-09 08:14 +0000 [cd46e86491] George Joseph + + * pjproject_bundled: Retry download if previously saved tarball is bad + + If a tarball is corrupted during download, the makefile will attempt to + download it again. If the tarball somehow gets corrupted after it's + downloaded however, the makefile was just failing. We now + retry the download. + + ASTERISK-26653 #close + + Change-Id: I1b24d454852d80186f60c5a65dc4624ea8a1c359 + +2016-12-08 12:54 +0000 [22820e10fe] Badalyan Vyacheslav + + * chan_sip: Delete unneeded check + + P is always true. We check it before + + Change-Id: Iee61cda002a9f61aee26b9f66c5f9b59e3389efb + +2016-12-08 12:58 +0000 [6aa2c5e5f9] Badalyan Vyacheslav + + * Small code cleanup in chan_sip + + The conditional expressions of the 'if' operators situated + alongside each other are identical. + + Change-Id: I2cf7c317b106ec14440c7f1b5dcfbf03639f748a + +2016-12-08 12:43 +0000 [b596fac838] Badalyan Vyacheslav + + * Fix typo in chan_sip + + The conditional expressions of the 'if' operators + situated alongside each other are identical. + + Change-Id: I652b6dcddb3be007e669a6aa8107edb31a1ddafb + +2016-12-08 12:30 +0000 [483ed9f1aa] Badalyan Vyacheslav + + * res_pjsip: Fix 'A = B != C' kind. + + Consider reviewing the expression of the 'A = B != C' kind. + The expression is calculated as following: 'A = (B != C)' + + Change-Id: Ibaa637dfda47d51a20e26069d3103e05ce80003d + +2016-11-30 09:31 +0000 [41c6319c4e] Walter Doekes + + * chan_sip: Do not allow non-SP/HTAB between header key and colon. + + RFC says SIP headers look like: + + HCOLON = *( SP / HTAB ) ":" SWS + SWS = [LWS] ; sep whitespace + LWS = [*WSP CRLF] 1*WSP ; linear whitespace + WSP = SP / HTAB ; from rfc2234 + + chan_sip implemented this: + + HCOLON = *( LOWCTL / SP ) ":" SWS + LOWCTL = %x00-1F ; CTL without DEL + + This discrepancy meant that SIP proxies in front of Asterisk with + chan_sip could pass on unknown headers with \x00-\x1F in them, which + would be treated by Asterisk as a different (known) header. For + example, the "To\x01:" header would gladly be forwarded by some proxies + as irrelevant, but chan_sip would treat it as the relevant "To:" header. + + Those relying on a SIP proxy to scrub certain headers could mistakenly + get unexpected and unvalidated data fed to Asterisk. + + This change fixes so chan_sip only considers SP/HTAB as valid tokens + before the colon, making it agree on the headers with other speakers of + SIP. + + ASTERISK-26433 #close + AST-2016-009 + + Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b + +2016-11-14 18:18 +0000 [888142e891] Joshua Colp + + * res_format_attr_opus: Fix crash when fmtp contains spaces. + + When an opus offer or answer was received that contained an + fmtp line with spaces between the attributes the module would + fail to properly parse it and crash due to recursion. + + This change makes the module handle the space properly and + also removes the recursion requirement. + + ASTERISK-26579 + + Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3 + +2016-12-06 14:54 +0000 [ebc67d3053] George Joseph + + * res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command + + The PJSIPShowRegistrationsInbound AMI command was just dumping out + all AORs which was pretty useless and resource heavy since it had + to get all endpoints, then all aors for each endpoint, then all + contacts for each aor. + + PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail + events which meets the intended purpose of the other command and has + significantly less overhead. Also, some additional fields that were + added to Contact since the original creation of the ContactStatusDetail + event have been added to the end of the event. + + For compatibility purposes, PJSIPShowRegistrationsInbound is left + intact. + + ASTERISK-26644 #close + + Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a + +2016-12-06 16:45 +0000 [d506874477] Richard Mudgett + + * Bundled pjproject: Fix finding SIP transactions. + + Occasionally SIP message transactions are not found when they should be. + In the particular case an incoming INVITE transaction is CANCELed but the + INVITE transaction cannot be found so a 481 response is returned for the + CANCEL. The problematic calls have a '_' character in the Via branch + parameter. + + The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code. + The problem with the "own tolower" code is that it does not calculate the + same hash value as when the pj_tolower() function is used. The "own + tolower" code will erroneously modify the ASCII characters '@', '[', '\\', + ']', '^', and '_'. Calls to pj_hash_calc_tolower() can use the + PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled. Calls to + pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call + find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm. As a + result you may not be able to find a hash tabled entry because the + calculated hash values would differ. + + * Simply disable PJ_HASH_USE_OWN_TOLOWER. + + ASTERISK-26490 #close + + Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253 + +2016-12-06 12:06 +0000 [4b233675d8] George Joseph + + * pjproject_bundled: Fix missing inclusion of symbols + + Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to + the CFLAGS. Not sure how they went missing. + + Also fixed an uninstall problem where we weren't removing the + symlink from libasteriskpj.so.2 to libasteriskpj.so. While I was + there, I fixed it for libasteriskssl as well. + + Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556 + +2016-12-02 12:04 +0000 [580f83dac7] Richard Mudgett + + * Remove files that got merged in error somehow to the 13 branch. + + Change-Id: Id79e2226c31084f9252d5aede9050d3cf13322c8 + +2016-11-30 18:25 +0000 [61ba2a014a] Richard Mudgett + + * res_pjsip_outbound_registration.c: Filter redundant statsd reporting. + + Increasing the testsuite shutdown timeout before forcibly killing + Asterisk allowed more events to be sent out. Some tests failed as + a result. The tests/channels/pjsip/statsd/registrations failed + because we now get the statsd events that a comment in the test + configuration stated couldn't be intercepted. Unfortunately, we + get a variable number of events because of internal status state + transition races generating redundant statsd events. + + We were reporting redundant statsd PJSIP.registrations.state changes + for internal state changes that equated to the same thing publicly. + + * Made update_client_state_status() filter out redundant statsd + updates. + + ASTERISK-26527 + + Change-Id: If851c7d514bb530d9226e4941ba97dcf52000646 + +2016-11-22 11:20 +0000 [2ceb609edb] Guido Falsi + + * res_rtp: Fix regression when IPv6 is not available. + + The latest Release candidate fails to create RTP streams when IPv6 + is not available. Due to the changes made in September the ast_sockaddr + structure passed around to create these streams is always of AF_INET6 + type, causing failure when used for IPv4. This patch adds a utility + function to check for availability of IPv6 and applies such check + at startup to determine how to create the ast_sockaddr structures. + + ASTERISK-26617 #close + + Change-Id: I627a4e91795e821111e1cda523f083a40d0e0c3e + +2016-11-28 19:43 +0000 [53459cdaa9] Eduardo S. Libardi + + * res_calendar_caldav: Add support reading gmail calendar + + The response from gmail calendar includes the string name + "caldav:calendar-data". res_calendar_caldav implements + the example included in RFC 4791: string "C:calendar-data". + When reading the calendar, res_calendar_caldav compare the + string and if does not match just discards the event. + This commit compares the response to both strings, + successfully loading gmail calendar events. + Writing to gmail calendar is working prior to this fix. + + ASTERISK-26624 + Reported by: Eduardo S. Libardi + + Change-Id: Ia1eef10552ae616efb645d390f5ffe81260d7d4a + +2016-11-23 18:27 +0000 [44fe4a5769] Richard Mudgett + + * PJPROJECT logging: Made easier to get available logging levels. + + Use of the new logging is as simple as issuing the new CLI command or + setting the new pjproject.conf option. + + Other options that can affect the logging are how you have the pjproject + log levels mapped to Asterisk log types in pjproject.conf and if you have + configured Asterisk to log the DEBUG type messages. Altering the + pjproject.conf level mapping shouldn't be necessary for most installations + as the default mapping is sensible. Configuring Asterisk to log the DEBUG + message type is standard practice for collecting debug information. + + * Added CLI "pjproject set log level" command to dynamically adjust the + maximum pjproject log message level. + + * Added CLI "pjproject show log level" command to see the currently set + maximum pjproject log message level. + + * Added pjproject.conf startup section "log_level" option to set the + initial maximum pjproject log message level so all messages could be + captured from initialization. + + * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into + bundled pjproject. Pjproject will use the currently set run time log + level to determine if a log message is generated just like Asterisk + verbose and debug logging levels. + + * In log_forwarder(), made always log enabled and mapped pjproject log + messages. DEBUG mapped log messages are no longer gated by the current + Asterisk debug logging level. + + * Removed RAII_VAR() from res_pjproject.c:get_log_level(). + + ASTERISK-26630 #close + + Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389 + +2016-11-30 10:48 +0000 [17b0b91afa] Mark Michelson + + * Frame deferral: Re-queue deferred frames one-at-a-time. + + The recent change that made frame deferral into an API had a behavior + change to it. When frame deferral was completed, we would take all of + the deferred frames and queue them all onto the channel in one call to + ast_queue_frame_head(). Before frame deferral was API-ized, places that + performed manual frame deferral would actually take each deferred frame + and queue them onto the channel. + + This change in behavior caused the confbridge_recording test to start + failing consistently. Without going too crazily deep into the details, + a channel was getting "stuck" in an ast_safe_sleep(). An AMI redirect + was attempting to break it out of the sleep, but because there were more + frames in the channel read queue than expected, the channel ended up + being unable to break from its sleep loop. + + By restoring the behavior of individual frame queuing after deferral, + the test starts passing again. + + Note, this points to a potential underlying issue pointing to an + "unbalance" that can occur when queuing multiple frames at once, + and so a follow-up issue is being created to investigate that + possibility. + + Change-Id: Ied5dacacda06d343dea751ed5814a03364fe5a7d + +2016-06-28 16:26 +0000 [b0c9f07f04] Tzafrir Cohen + + * OpenSSL 1.1.0 support + + OpenSSL 1.1.0 includes some major changes in the interface. See + https://wiki.openssl.org/index.php/1.1_API_Changes . + + Status: Right now there are still a few deprecation notes with OpenSSL + 1.1.0. But it's a start. + + Changes: + * CRYPTO_LOCK is no longer available. Replace it with its value for now. + I don't completely understand what it is used for there. + * Remove several functions from libasteriskssl that seem to no longer be + needed. + * Structures have become opaque and are accesses with accessors. + * ERR_remove_thread_state() no longer needed. + * SSLv2 code now could no longer be used in 1.1. + + ASTERISK-26109 #close + + Change-Id: I5e29d477d486ca29b6aae0dc2f5dff960c1cb82b + +2016-11-28 15:12 +0000 [a33ed3327a] Matt Jordan + + * res/res_pjsip: Fix documentation whitespace issues + + Tabs > Spaces. + + Change-Id: If1e43a71822615a898e958e0f8b2e882606f0bd0 + +2016-11-22 10:27 +0000 [09c36a6535] Matt Jordan + + * res_pjsip/chan_sip: Advertise 'ws' in the SIP URI transport parameter + + Per RFC 7118 5.2, the SIP URI 'transport' parameter should advertise + 'ws' when WebSockets are to be used as the transport. This applies to + both secure and insecure WebSockets. + + There were two bugs in Asterisk with respect to this: + + (1) The most egregious occurs in res_pjsip. There, we advertise 'ws' for + insecure websockets and 'wss' for secure websockets. While this + would seem to make sense - since 'WS' and 'WSS' are used for the Via + Transport parameter - this is not the case for the SIP URI. This + patch corrects that by registering the secure websockets with + pjproject using the shorthand 'WS', and by returning 'ws' when asked + for the transport parameter. Note that in pjproject, it is perfectly + valid to have multiple transports use the same shorthand. + + (2) In chan_sip, we return an upper-case version of the transport 'WS' + instead of 'ws'. Since we should be strict in what we send and + liberal in what we accept (within reason), this patch lower-cases + the transport before appending it to the parameter. + + ASTERISK-24330 #close + Reported by: cervajs, Inaki Baz Castillo + + Change-Id: Iff77b645f8cc3b7cd35168a6676c26b147f22f42 + +2016-11-28 11:03 +0000 [29e887e9e1] George Joseph + + * build_tools: Fix download_externals to handle certified branches + + download_externals wasn't handling the "certified/13.x" version + correctly. + + Change-Id: I124d195bb117ca36fd7bf1150c630f3b474a9d9a + +2016-11-02 05:05 +0000 [bfb8c962c4] Tzafrir Cohen + + * autoconf: more variants for OSARCH linux-gnu + + There are quite a few odd GNU/Linux platforms. Just call all of them + linux-gnu. + + Specifically this fixes building the Debian platforms mips64el and x32. + And maybe also others. + + ASTERISK-26546 #close + + Change-Id: I06ec4bd7f0ee1c84b6b24d81538223b07c4174b1 + +2016-11-17 08:25 +0000 [a1fa909033] Timo Teräs + + * codec_dahdi: Fix poll.h include. + + POSIX defines poll.h. sys/poll.h should not be used as it is c-library + internal header which may or may not exist. Notably in musl including + sys/poll.h generates warning of being incorrect. + + Change-Id: Ib318c1c7142a737bcf3caa4d8d72560bebe39252 + +2016-11-26 10:57 +0000 [0cc8351484] Michael Kuron + + * chan_sip: Fix segfault during module unload + + If a TCP/TLS connection was pending (not accepted and not timed out) during + unload of chan_sip, Asterisk would segfault when trying to send a signal to + a thread whose thread ID hadn't been recorded yet. This commit fixes that by + recording the thread ID before calling the blocking connect() syscall. + This was a regression introduced by 776a14386a55b5425c7e9617eff8af8b45427144. + + The above wasn't enough to fix the segfault, which was now delayed to the + point where connect() timed out. Therefore, it was necessary to also remove + the SA_RESTART flag from the SIGURG sigaction so that pthread_kill() could be + used to interruput the connect() syscall. + This was a regression introduced by 5d313f51b982a18f7321adcf7c7a4e822d8b2714. + + ASTERISK-26586 #close + + Change-Id: I76fd9d47d56e4264e2629bce8ec15fecba673e7b + +2016-11-11 08:16 +0000 [8756ce64b7] gestoip2 + + * res_rtp_asterisk: RTT miscalculation in RTCP + + When retrieving RTCP stats for PJSIP channels, RTT values are unreliable. + RTT calculation is correct, but the data representation isn't. RTT is + represented by a 32-bit fixed-point number with the integer part in the + first 16 bits and the fractional part in the last 16 bits. In order to + get the RTT value, the fractional part is miscalculated, there is an + unnecessary 16 bit shift that causes overflow. Besides this there is + another mistake, when transforming the integer value to the fixed point + fractional part via bitwise operation, that loses precision. + + * RTT fractional part is no longer shifted, avoiding overflow. + + * RTT fractional part is transformed to its fixed-point value more + precisely. + + * Fixed timeval2ntp() and ntp2timeval() second fraction conversions. + + * Fixed NTP timestamp report logging. The usec was inexplicably + multiplied by 4096. + + ASTERISK-26566 #close + Reported by Hector Royo Concepcion + + Change-Id: Ie09bdabfee75afb3f1b8ddfd963e5219ada3b96f + +2016-11-15 13:44 +0000 [8e77d6f520] Michael Kuron + + * tcptls: Use new certificate upon sip reload + + Previously, a TLS server socket would only be restarted upon sip reload if the + bind address had changed. This commit adds checking for changes to TLS + parameters like certificate, ciphers, etc. so they get picked up without + requiring a reload of the entire chan_sip module. This does not affect open + connections in any way, but new connections will use the new TLS parameters. + The changes also apply to HTTP and Manager. + + ASTERISK-26604 #close + + Change-Id: I169e86cefc6dcd627c915134015a6a1ab1aadbe6 +2016-11-11 00:29 +0000 [86d824b7ff] Timo Teräs + + * addons/chan_mobile: do not use strerror_r + + The two reasons why it might be used are that some systems do not + implement strerror in thread safe manner, and that strerror_r returns + the error code in the string in case there's no error message. + + However, all of asterisk elsewhere uses strerror() and assumes it + to be thread safe. And in chan_mobile the errno is also explicitly + printed so neither of the above reasons are valid. + + The reasoning to remove usage is that there are actually two versions + of strerror_r: XSI and GNU. They are incompatible in their return + value, and there's no easy way to figure out which one is being + used. glibc gives you the GNU version if _GNU_SOURCE is defined, + but the same feature test macro is needed for other symbols. On + all other systems you assumedly get XSI symbol, and compilation warnings + as well as non-working error printing. + + Thus the easiest solution is to just remove strerror_r and use + strerror as rest of the code. Alternative is to introduce ast_strerror + in separate translation unit so it can request the XSI symbol in + glibc case, and replace all usage of strerror. + + Change-Id: I84d35225b5642d85d48bc35fdf399afbae28a91d + +2016-11-21 09:40 +0000 [425da14927] George Joseph + + * build: Backport addition of librt check to configure.ac + + A while back, a master-only change was made to check for librt which + should probably have been cherry-picked to 13 at that time. Sometime + between then and now, part of that change did make it into 13 but it + was incomplete and non-functional. This patch backports the rest + of the librt check and allows the link of libasteriskpj to use the + results. + + Change-Id: I1424008fd8c90f389dda53162ec4a340b253a3c1 + +2016-11-16 12:05 +0000 [2a40c3a867] George Joseph + + * pjproject_bundled: Improve reliability of pjproject download + + The download process now has a timeout which will cause wget to retry + if it stops retrieving data for 5 seconds and fetch and curl to timeout + if the whole retrieval take smore than 30 seconds. + + If the tarball retrieval works, the MD5SUM file is retrieved from + the downloads site and the md5 checksum is verified. + + If either the tarball retrieval or MD5SUM retrieval fails, or the + checksums don't match, the entire process is retried once. If it + fails again, any incomplete tarball is deleted. + + .DELETE_ON_ERROR: was also added to the Makefile. Not only does + this delete the tarball on failure, it till also delete corrupted + library files from the pjproject source directory should they + fail to build correctly. + + Tested all the way back to FreeBSD 9, CentOS 6, Debian 6 and + Ubuntu 14. + + Change-Id: Iea7d33b96a31622ab1b6e54baebaf271959514e1 + +2016-11-11 07:13 +0000 [12c4e664bc] Mikheili Dautashvili + + * main/app.c: Transmit Silence on ControlPlayback pause + + ASTERISK-26562 #close + + Change-Id: Ie6cb0ffc2b8c775639ce7784fe96f4ea00cfa2f8 + +2016-11-15 15:01 +0000 [cf6d13180e] Alexei Gradinari + + * chan_pjsip: fix switching sending codec when asymmetric_rtp_codec=no + + The sending codec is switched to the receiving codec and then + is switched back to the best native codec on EVERY receiving RTP packets. + This is because after call of ast_channel_set_rawwriteformat there is call + of ast_set_write_format which calls set_format which sets rawwriteformat + to the best native format. + + This patch adds a new function ast_set_write_format_path which set + specific write path on channel and uses this function to switch + the sending codec. + + ASTERISK-26603 #close + + Change-Id: I5b7d098f8b254ce8f45546e6c36e5d324737f71d + +2016-11-10 13:34 +0000 [ee73af1d88] George Joseph + + * Update for 13.12.2 + +2016-11-04 10:57 +0000 [a3614d75f6] Kevin Harwell + + * Revert "chan_sip: Fix lastrtprx always updated" + + This reverts commit 93332cb1d0eea18021ea6538237297e627d6e2fc. + + Unfortunately, the aforementioned commit caused a regression (incoming calls + would eventually disconnect). Thus it is being removed. + + ASTERISK-26523 #close + ASTERISK-25270 + + Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d + +2016-10-27 13:48 +0000 [7d7b52c434] Mark Michelson + + * Update for 13.12.1 + +2016-10-26 07:51 +0000 [9c761b8f45] Joshua Colp + + * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS. + + When executing the MailboxExists dialplan application and + MAILBOX_EXISTS dialplan function the passed in temporary voice + mailbox was not cleared, causing it to try to free garbage. + + ASTERISK-26503 #close + + Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3 + +2016-10-25 14:13 +0000 [226a7e36c5] Mark Michelson + + * Update for 13.12.0 + +2016-10-17 14:08 +0000 [df75b647da] Mark Michelson + + * Update for 13.12.0-rc1 + +2017-12-13 14:34 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert9 Released. + +2017-11-30 10:12 +0000 [3eea735a39] 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-05 18:04 +0000 [7c0bc72972] 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-01 19:42 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert8 Released. + +2017-11-30 14:38 +0000 [efeb9da0e7] 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 + +2017-11-10 07:06 +0000 [191190a982] 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-08 16:59 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert7 Released. + +2017-10-19 13:53 +0000 [44f3d85cde] 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-10-19 13:35 +0000 [1b31e3c3bd] 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 [178b372019] 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-09-19 16:09 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert6 Released. + +2017-08-25 17:05 +0000 [88c8e8a11c] Richard Mudgett + + * AST-2017-008: Improve RTP and RTCP packet processing. + + Validate RTCP packets before processing them. + + * Validate that the received packet is of a minimum length and apply the + RFC3550 RTCP packet validation checks. + + * Fixed potentially reading garbage beyond the received RTCP record data. + + * Fixed rtp->themssrc only being set once when the remote could change + the SSRC. We would effectively stop handling the RTCP statistic records. + + * Fixed rtp->themssrc to not treat a zero value as special by adding + rtp->themssrc_valid to indicate if rtp->themssrc is available. + + ASTERISK-27274 + + Make strict RTP learning more flexible. + + Direct media can cause strict RTP to attempt to learn a remote address + again before it has had a chance to learn the remote address the first + time. Because of the rapid relearn requests, strict RTP could latch onto + the first remote address and fail to latch onto the direct media remote + address. As a result, you have one way audio until the call is placed on + and off hold. + + The new algorithm learns remote addresses for a set time (1.5 seconds) + before locking the remote address. In addition, we must see a configured + number of remote packets from the same address in a row before switching. + + * Fixed strict RTP learning from always accepting the first new address + packet as the new stream. + + * Fixed strict RTP to initialize the expected sequence number with the + last received sequence number instead of the last transmitted sequence + number. + + * Fixed the predicted next sequence number calculation in + rtp_learning_rtp_seq_update() to handle overflow. + + ASTERISK-27252 + + Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c + +2017-09-01 05:17 +0000 [67b1b028a1] George Joseph + + * stasis/control: Fix possible deadlock with swap channel + + If an error occurs during a bridge impart it's possible that + the "bridge_after" callback might try to run before + control_swap_channel_in_bridge has been signalled to continue. + Since control_swap_channel_in_bridge is holding the control lock + and the callback needs it, a deadlock will occur. + + * control_swap_channel_in_bridge now only holds the control + lock while it's actually modifying the control structure and + releases it while the bridge impart is running. + * bridge_after_cb is now tolerant of impart failures. + + Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3 + +2017-08-31 15:48 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert5 Released. + +2017-07-01 19:24 +0000 [7ca7306012] Corey Farrell + + * AST-2017-006: Fix app_minivm application MinivmNotify command injection + + An admin can configure app_minivm with an externnotify program to be run + when a voicemail is received. The app_minivm application MinivmNotify + uses ast_safe_system() for this purpose which is vulnerable to command + injection since the Caller-ID name and number values given to externnotify + can come from an external untrusted source. + + * Add ast_safe_execvp() function. This gives modules the ability to run + external commands with greater safety compared to ast_safe_system(). + Specifically when some parameters are filled by untrusted sources the new + function does not allow malicious input to break argument encoding. This + may be of particular concern where CALLERID(name) or CALLERID(num) may be + used as a parameter to a script run by ast_safe_system() which could + potentially allow arbitrary command execution. + + * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp() + instead of ast_safe_system() to avoid command injection. + + * Document code injection potential from untrusted data sources for other + shell commands that are under user control. + + ASTERISK-27103 + + Change-Id: I7552472247a84cde24e1358aaf64af160107aef1 + +2017-05-22 10:36 +0000 [1724a8c98f] Joshua Colp + + * res_rtp_asterisk: Only learn a new source in learn state. + + This change moves the logic which learns a new source address + for RTP so it only occurs in the learning state. The learning + state is entered on initial allocation of RTP or if we are + told that the remote address for the media has changed. While + in the learning state if we continue to receive media from + the original source we restart the learning process. It is + only once we receive a sufficient number of RTP packets from + the new source that we will switch to it. Once this is done + the closed state is entered where all packets that do not + originate from the expected source are dropped. + + The learning process has also been improved to take into + account the time between received packets so a flood of them + while in the learning state does not cause media to be switched. + + Finally RTCP now drops packets which are not for the learned + SSRC if strict RTP is enabled. + + ASTERISK-27013 + + Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c + +2017-07-11 07:26 +0000 [b189f8c5cf] George Joseph + + * res_musiconhold: Add kill_escalation_delay, kill_method to class + + 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. + + Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b + +2017-06-29 18:27 +0000 [aa10dd31d0] Richard Mudgett + + * pjsip_distributor.c: Fix deadlock with TCP type transports. + + When a SIP message comes in on a transport, pjproject obtains the lock on + the transport and pulls the data out of the socket. Unlike UDP, the TCP + transport does not allow concurrent access. Without concurrency the + transport lock is not released when the transport's message complete + callback is called. The processing continues and eventually Asterisk + starts processing the SIP message. The first thing Asterisk tries to do + is determine the associated dialog of the message to determine the + associated serializer. To get the associated serializer safely requires + us to get the dialog lock. + + To send a request or response message for a dialog, pjproject obtains the + dialog lock and then obtains the transport lock. Deadlock can result + because of the opposite order the locks are obtained. + + * Fix the deadlock by obtaining the serializer associated with the dialog + another way that doesn't involve obtaining the dialog lock. In this case, + we use an ao2 container to hold the associated endpoint and serializer. + The new locks are held a brief time and won't overlap other existing lock + times. + + ASTERISK-27090 #close + + Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd + +2017-06-29 14:50 +0000 [ef4a035371] George Joseph + + * chan_pjsip: Fix ability to send UPDATE on COLP + + When connected_line_method is "invite", we're supposed to determine + if the client can support UPDATE and if it can, send UPDATE instead + of INVITE to avoid the SDP renegotiation. Not only was pjproject + not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing + that invite_tsx wasn't NULL which isn't always the case. + + * Updated chan_pjsip/update_connected_line_information to drop the + requirement that invite_tsx isn't NULL. + * Submitted patch to pjproject sip_inv.c that sets the + PJSIP_INV_SUPPORT_UPDATE flag correctly. + * Updated pjsip.conf.sample to clarify what happens when "invite" + is specified. + + ASTERISK-27095 + + Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560 + +2017-06-20 15:41 +0000 [89aabfe10b] Kevin Harwell + + * core_local: local channel data not being properly unref'ed and unlocked + + In an earlier version of Asterisk a local channel [un]lock all functions were + added in order to keep a crash from occurring when a channel hung up too early + during an attended transfer. Unfortunately, when a transfer failure occurs and + depending on the timing, the local channels sometime do not get properly + unlocked and deref'ed after being locked and ref'ed. This happens because the + underlying local channel structure gets NULLed out before unlocking. + + This patch reworks those [un]lock functions and makes sure the values that get + locked and ref'ed later get unlocked and deref'ed. + + ASTERISK-27074 #close + + Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09 + +2017-06-20 16:01 +0000 [9dcac3b7e3] Kevin Harwell + + * bridge: stuck channel(s) after failed attended transfer + + If an attended transfer failed it was possible for some of the channels + involved to get "stuck" because Asterisk was not hanging up the transfer target. + + This patch ensures Asterisk hangs up the transfer target when an attended + transfer failure occurs. + + ASTERISK-27075 #close + + Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9 + +2017-06-13 14:17 +0000 [adfdfdee61] Kevin Harwell + + * res_pjsip_refer/session: Calls dropped during transfer + + When doing an attended transfer it's possible for the transferer, after + receiving an accepted response from Asterisk, to send a BYE to Asterisk, + which can then be processed before Asterisk has time to start and/or + complete the transfer process. This of course causes the transfer to not + complete successfully, thus dropping the call. + + This patch makes it so any BYEs received from the transferer, after the REFER, + that initiate a session end are deferred until the transfer is complete. This + allows the channel that would have otherwise been hung up by Asterisk to + remain available throughout the transfer process. + + ASTERISK-27053 #close + + Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a + +2017-05-19 20:45 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert4 Released. + +2017-04-13 11:14 +0000 [7e8b57db67] gtjoseph + + * AST-2017-004: chan_skinny: Add EOF check in skinny_session + + The while(1) loop in skinny_session wasn't checking for EOF so + a packet that was longer than a header but still truncated + would spin the while loop infinitely. Not only does this + permanently tie up a thread and drive a core to 100% utilization, + the call of ast_log() in such a tight loop eats all available + process memory. + + Added poll with timeout to top of read loop + + ASTERISK-26940 #close + Reported-by: Sandro Gauci + + Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898 + +2017-04-13 17:17 +0000 [d0e628e792] Mark Michelson + + * AST-2017-003: Handle zero-length body parts correctly. + + ASTERISK-26939 #close + + Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd + +2017-04-13 17:16 +0000 [14e57ba5b5] Mark Michelson + + * AST-2017-002: Ensure transaction key buffer is large enough. + + ASTERISK-26938 #close + + Change-Id: I266490792fd8896a23be7cb92f316b7e69356413 + +2017-04-04 12:37 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert3 Released. + +2017-03-27 09:03 +0000 [d91f264721] Corey Farrell + + * CDR: Protect from data overflow in ast_cdr_setuserfield. + + ast_cdr_setuserfield wrote to a fixed length field using strcpy. This could + result in a buffer overrun when called from chan_sip or func_cdr. This patch + adds a maximum bytes written to the field by using ast_copy_string instead. + + ASTERISK-26897 #close + patches: + 0001-CDR-Protect-from-data-overflow-in-ast_cdr_setuserfie.patch submitted + by Corey Farrell (license #5909) + + Change-Id: Ib23ca77e9b9e2803a450e1206af45df2d2fdf65c + +2017-03-14 09:27 +0000 [563b639e5a] Robert Mordec + + * app_queue: Member stuck as pending after forwarding previous call from queue + + Queue member will get stuck in pending_members if queue calls a device + that is different from the one observed for state changes. + + This patch removes members from pending_members as a result of channel stasis + events such as blind or attended transfers and hangup. + + ASTERISK-26862 #close + + Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727 + +2017-03-07 18:43 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert2 Released. + +2016-11-15 15:01 +0000 [44cac45610] Alexei Gradinari + + * chan_pjsip: fix switching sending codec when asymmetric_rtp_codec=no + + The sending codec is switched to the receiving codec and then + is switched back to the best native codec on EVERY receiving RTP packets. + This is because after call of ast_channel_set_rawwriteformat there is call + of ast_set_write_format which calls set_format which sets rawwriteformat + to the best native format. + + This patch adds a new function ast_set_write_format_path which set + specific write path on channel and uses this function to switch + the sending codec. + + ASTERISK-26603 #close + + Change-Id: I5b7d098f8b254ce8f45546e6c36e5d324737f71d + (cherry picked from commit cf6d13180effc92a2483dccc68f2f188689a40fa) + +2017-02-13 17:11 +0000 [0d7f99a087] Richard Mudgett + + * pjproject: Fixes to resolve DNS SRV crashes. + + * Re #1945 (misc): Don't trigger SRV complete callback when there is a + parse error. + + * srv_resolver.c: Don't try to send query if already considered resolved. + + ** In resolve_hostnames() don't try to resolve a query that is already + considered resolved. + + ** In resolve_hostnames() fix DNS typo in comments. + + ** In build_server_entries() move a common expression assigning to cnt + earlier. + + * sip_transport.c: Fix tdata object name to actually contain the pointer. + + It helps if the logs referencing a tdata object buffer actually have a + name that includes the correct pointer as part of the name. Also since + the tdata has its own pool it helps if any logs referencing the pool have + the same name as the tdata object. This change brings tdata logging in + line with how tsx objects are named. + + ASTERISK-26669 #close + ASTERISK-26738 #close + + Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af + +2017-02-20 13:38 +0000 [35881858db] Richard Mudgett + + * pjproject: Increase SENDER_WIDTH column size for 64-bit system logs. + + ASTERISK-26669 + ASTERISK-26738 + + Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0 + +2017-02-06 14:26 +0000 [0d4412f2b3] Richard Mudgett + + * pjsip_distributor.c: Update some debug messages to get transaction name. + + * Removed overloaded unmatched response ignore. We obviously sent the + request so we shouldn't ignore it because it isn't new work. + + ASTERISK-26669 + ASTERISK-26738 + + Change-Id: I55fb5cadc83a8e6699b347c6dc7fa32c5a617d37 + +2017-02-04 16:00 +0000 [4af241ab60] Richard Mudgett + + * res_pjsip: Record the serializer earlier on the tdata. + + When PJPROJECT needs to do a DNS resolution and there is not a cached + entry available, the SIP request message goes out on the PJSIP monitor + thread instead of the original serializer thread. Thus when the response + comes back it does not get processed by the original sending serializer. + + This patch records the serializer on tdata before passing a request + message to PJPROJECT where it can in Asterisk code. There are several + places in PJPROJECT for outbound registration and publishing support that + would need to record the serializer. Unfortunately, without replacing the + PJPROJECT DNS resolver as was done in v14 we cannot fix those without + modifying PJPROJECT. + + Even if we backported the DNS resolver from v14, the outbound registration + refresh timer does not go out on a serializer thread but the PJSIP monitor + thread. Fortunately, Asterisk's outbound publish support doesn't use the + auto refresh timer that would also not go out under the serializer thread. + + This patch is v13 only. + + ASTERISK-26669 + ASTERISK-26738 + + Change-Id: I9997b9ed6dbcebd2c37d6a67dc6dcee9c78914a4 + +2017-02-13 19:25 +0000 Asterisk Development Team + + * asterisk certified/13.13-cert1 Released. + +2017-02-08 12:58 +0000 [0ef6b6960d] gtjoseph + + * Update for certified/13.13-cert1-rc4 + +2017-02-08 11:50 +0000 [7603c4f32b] Mark Michelson + + * Revert "Update qualifies when AOR configuration changes." + + This reverts commit 6492e91392b8fd394193e411c6eb64b45486093f. + + The change in question was intended to prevent the need to reload in + order to update qualifies on contacts when an AOR changes. However, this + ended up causing a deadlock instead. + + Change-Id: I1a835c90a5bb65b6dc3a1e94cddc12a4afc3d71e + +2017-02-03 13:58 +0000 [47febcb927] Mark Michelson + + * Update for certified/13.13-cert1-rc3 + +2017-01-31 18:28 +0000 [5c90c1e9f5] Richard Mudgett + + * channel.c: Fix unbalanced read queue deadlocking local channels. + + Using the timerfd timing module can cause channel freezing, lingering, or + deadlock issues. The problem is because this is the only timing module + that uses an associated alert-pipe. When the alert-pipe becomes + unbalanced with respect to the number of frames in the read queue bad + things can happen. If the alert-pipe has fewer alerts queued than the + read queue then nothing might wake up the thread to handle received frames + from the channel driver. For local channels this is the only way to wake + up the thread to handle received frames. Being unbalanced in the other + direction is less of an issue as it will cause unnecessary reads into the + channel driver. + + ASTERISK-26716 is an example of this deadlock which was indirectly fixed + by the change that found the need for this patch. + + * In channel.c:__ast_queue_frame(): Adding frame lists to the read queue + did not add the same number of alerts to the alert-pipe. Correspondingly, + when there is an exceptionally long queue event, any removed frames did + not also remove the corresponding number of alerts from the alert-pipe. + + ASTERISK-26632 #close + + Change-Id: Ia98137c5bf6e9d6d202ce0eb36441851875863f6 + +2017-01-31 16:38 +0000 [5c2b7e34ff] Richard Mudgett + + * res_agi: Prevent an AGI from eating frames it should not. (Re-do) + + A dialplan intercept routine is equivalent to an interrupt routine. As + such, the routine must be done quickly and you do not have access to the + media stream. These restrictions are necessary because the media stream + is the responsibility of some other code and interfering with or delaying + that processing is bad. A possible future dialplan processing + architecture change may allow the interception routine to run in a + different thread from the main thread handling the media and remove the + execution time restriction. + + * Made res_agi.c:run_agi() running an AGI in an interception routine run + in DeadAGI mode. No touchy channel frames. + + ASTERISK-25951 + + ASTERISK-26343 + + ASTERISK-26716 + + Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43 + +2017-01-31 16:32 +0000 [7d291e9ef7] Richard Mudgett + + * Frame deferral: Revert API refactoring. + + There are several issues with deferring frames that are caused by the + refactoring. + + 1) The code deferring frames mishandles adding a deferred frame to the + deferred queue. As a result the deferred queue can only be one frame + long. + + 2) Deferrable frames can come directly from the channel driver as well as + the read queue. These frames need to be added to the deferred queue. + + 3) Whoever is deferring frames is really only doing the __ast_read() to + collect deferred frames and doesn't care about the returned frames except + to detect a hangup event. When frame deferral is completed we must make + the normal frame processing see the hangup as a frame anyway. As such, + there is no need to have varying hangup frame deferral methods. We also + need to be aware of the AST_SOFTHANGUP_ASYNCGOTO hangup that isn't real. + That fake hangup is to cause the PBX thread to break out of loops to go + execute a new dialplan location. + + 4) To properly deal with deferrable frames from the channel driver as + pointed out by (2) above, means that it is possible to process a dialplan + interception routine while frames are deferred because of the + AST_CONTROL_READ_ACTION control frame. Deferring frames is not + implemented as a re-entrant operation so you could have the unsupported + case of two sections of code thinking they have control of the media + stream. + + A worse problem is because of the bad implementation of the AMI PlayDTMF + action. It can cause two threads to be deferring frames on the same + channel at the same time. (ASTERISK_25940) + + * Rather than fix all these problems simply revert the API refactoring as + there is going to be only autoservice and safe_sleep deferring frames + anyway. + + ASTERISK-26343 + + ASTERISK-26716 #close + + Change-Id: I45069c779aa3a35b6c863f65245a6df2c7865496 + +2017-01-10 17:37 +0000 [640d3b21d1] Richard Mudgett + + * astobj2.c: Add excessive ref count trap. + + Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a + +2017-01-31 11:17 +0000 [107c8a7e19] Joshua Colp + + * res_pjsip: Handle invocation of callback on outgoing request when error occurs. + + There are some error cases in PJSIP when sending a request that will + result in the callback for the request being invoked. The code did not + handle this case and assumed on every error case that the callback was not + invoked. + + The code has been changed to check whether the callback has been invoked + and if so to absorb the error and treat it as a success. + + ASTERISK-26679 + ASTERISK-26699 + + Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91 + +2017-02-01 13:54 +0000 [3eb5f42090] Mark Michelson + + * Update qualifies when AOR configuration changes. + + Prior to this change, qualifies would only update in the following + cases: + * A reload of res_pjsip.so was issued. + * A dynamic contact was re-registered after its AOR's qualify_frequency + had been changed + This does not work well if you are using realtime for your AORs. You can + update your database to have a new qualify_frequency, but the permanent + contacts on that AOR will not have their qualifies updated. And the + dynamic contacts on that AOR will not have their qualifies updated until + the next registration, which could be a long time. + + This change seeks to fix this problem by making it so that whenever AOR + configuration is applied, the contacts pertaining to that AOR have their + qualifies updated. + + Additions from this patch: + * AOR sorcery objects now have an apply handler that calls into a newly + added function in the OPTIONS code. This causes all contacts + associated with that AOR to re-schedule qualifies. + * When it is time to qualify a contact, the OPTIONS code checks to see + if the AOR can still be retrieved. If not, then qualification is + canceled on the contact. + + Alterations from this patch: + * The registrar code no longer updates contact's qualify_frequence and + qualify_timeout. There is no point to this since those values already + get updated when the AOR changes. + * Reloading res_pjsip.so no longer calls the OPTIONS initialization + function. Reloading res_pjsip.so results in re-loading AORs, which + results in re-scheduling qualifies. + + Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121 + +2017-01-31 12:46 +0000 [0611290911] gtjoseph + + * debug_utilities: Install ast_logescalator to /var/lib/asterisk/scripts + + Forgot to install it with the original patch + + Change-Id: I8bdb540a6694971ae5fe21f48d532332c6482e4c + +2017-01-25 06:50 +0000 [805928c98b] gtjoseph + + * debug_utilities: Add ast_logescalator + + The escalator works by creating a set of startup commands in cli.conf + that set up logger channels and issue the debug commands for the + subsystems specified. If asterisk is running when it is executed, + the same commands will be issued to the running instance. The original + cli.conf is saved before any changes are made and can be restored by + executing '$prog --reset'. + + The log output will be stored in... + $astlogdir/message.$uniqueid + $astlogdir/debug.$uniqueid + $astlogdir/dtmf.$uniqueid + $astlogdir/fax.$uniqueid + $astlogdir/security.$uniqueid + $astlogdir/pjsip_history.$uniqueid + $astlogdir/sip_history.$uniqueid + + Some minor tweaks were made to chan_sip, and res_pjsip_history + so their history output could be send to a log channel as packets + are captured. + + A minor tweak was also made to manager so events are output to verbose + when "manager set debug on" is issued. + + Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543 + +2017-01-25 15:26 +0000 [1997157e7e] Mark Michelson + + * Add reload options to CLI/AMI stale object commands. + + Marking an object as stale in a memory cache is supposed to prime the + cache so that the next time the item is retrieved, the stale item is + deleted from the cache and a background task is run to re-populate the + cache with a fresh version of the object. + + The problem is, there are some object types out there for which there is + no natural reason that they would be retrieved from the backend with any + regularity. Outbound PJSIP registrations are a good example of this. At + startup, they are read, and an object-specific state is created that + refers to the initially-retrieved object for all time. + + Adding the "reload" option to the CLI/AMI commands gives the cache the + opportunity to manually re-retrieve the object from the backend, both + storing the new object in the cache and applying the new object's + configuration to the module that uses that object. + + Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8 + +2016-12-09 12:23 +0000 [92bdcfd57e] Martin Tomec + + * app_queue: Ensure member is removed from pending when hanging up. + + In some cases member is added to pending_members, and the channel + is hung up before any extension state change. So the member would + stay in pending_members forever. So when we call do_hang, we + should also remove member from pending. + + ASTERISK-26621 #close + + Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54 + (cherry picked from commit d13be4eff699449172efbd9fed0ee97f6a790b6a) + +2017-01-20 21:13 +0000 [9a4434eb74] Richard Mudgett + + * PJPROJECT logging: Fix detection of max supported log level. + + The mechanism used for detecting the maximum log level compiled into the + linked pjproject did not work. The API call simply stores the requested + level into an integer and does no range checking. Asterisk was assuming + that there was range checking and limited the new value to the allowable + range. To get the actual maximum log level compiled into the linked + pjproject we need to get and save off the initial set log level from + pjproject. This is the maximum log level supported. + + * Get and save off the initial log level setting before altering it to the + desired level on startup. This has to be done by a macro rather than + calling a core function to avoid incorrectly linking pjproject. + + * Split the initial log level warning messages to warn if the linked + pjproject cannot support the requested startup level and if it is too low + to get the pjproject buildopts for "pjproject show buildopts". + + * Adjust the CLI "pjproject set log level" to check the saved max log + level and to generate normal output messages instead of a warning message. + + ASTERISK-26743 #close + + Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4 + +2017-01-19 09:05 +0000 [6b0d734312] gtjoseph + + * ari: Implement 'debug all' and request/response logging + + 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. To accomplish this, a new global_debug global + variable was added to res/stasis/app.c and new APIs were added to + set and query the value. + + 'ari set debug' now displays requests and responses as well as events. + This required refactoring the existing debug code. + + * The implementation for 'ari set debug' was moved from stasis/cli.{c,h} + to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted. + * In order to print the body of incoming requests even if a request + failed, the consumption of the body was moved from the ari stubs + to ast_ari_callback in res_ari.c and the moustache templates were + then regenerated. The body is now passed to ast_ari_invoke and then + on to the handlers. This results in code savings since that template + was inserted multiple times into all the stubs. + + An additional change was made to the ao2_str_container implementation + to add partial key searching and a sort function. The existing cli + code assumed it was already there when it wasn't so the tab completion + was never working. + + Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf + +2017-01-23 09:10 +0000 [28733bb0ab] gtjoseph + + * pjproject_bundled: Fix setting max log level + + An earlier attempt to prevent pjsua from spitting out an extra 6795 + lines of debug output every time the testsuite called it was also + turning off the ability for asterisk to output debug info when it + needed to. This patch reverts the earlier fix and instead adds + a pjproject patch that sets the startup log level to 1 for pjsua + pjsystest and the pjsua python binding. This is an asterisk-only + patch that does not affect pjproject functionality and will not be + submitted upstream. + + Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8 + +2017-01-13 11:03 +0000 [0d2f17b22c] gtjoseph + + * debug_utilities: Create ast_loggrabber + + ast_loggrabber gathers log files from customizable search patterns, + optionally converts POSIX timestamps to a readable format and + tarballs the results. + + Also a few tweaks were made to ast_coredumper. + + Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495 + (cherry picked from commit 5fa1c56d7e76999aa14f133a33f6b168e7c3b99c) + +2017-01-19 13:18 +0000 [92876c1c2a] Mark Michelson + + * Update for certified/13.13-cert1-rc2 + +2017-01-08 10:29 +0000 [52bee5df9e] gtjoseph + + * pjproject_bundled: Fix compilation with MALLOC_DEBUG + + When MALLOC_DEBUG was specified, make was failing. Immediately + remaking would work. The issues was in the ordering of the make + dependencies. + + Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd + (cherry picked from commit f8cd73ec3c159f2e6c464952c92d8fdb69394371) + +2017-01-03 15:14 +0000 [08857b6e0e] gtjoseph + + * pjproject_bundled: Compile pjsua with max log level = 2 + + A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6. + This allowed us to control the log level better from inside Asterisk. + An unfortunate side effect of this was that the pjsua binary and + python bindings were also compiled with log level set to 6 so whenever + a testsuite test that uses pjsua runs, it spits out 6795 lines of + debug in an instant even before the test starts. I believe this + overruns the Jenkins capture buffer and prevents the test from + properly terminating. In turn, this results in the testsuite just + hanging until the job is killed. It's more frequent on the higher + end agents because they can spit out the messages faster. + + Unfortunately, the messages are all spit out before we have control + of the python pj.Lib instance where we can set logging levels so the + only alternative was to actually compile pjsua and _pjsua.so with an + overridden PJ_LOG_MAX_LEVEL. Although defining a lower max level was + done in the Makefile, the define in config_site.h had to be wrapped + with "#ifndef" so the change would take effect. + + Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff + (cherry picked from commit d7e5a747c312de18647213359103ce6022776864) + +2016-12-18 15:23 +0000 [7aacc0fc7f] gtjoseph + + * pjproject_bundled: Make build single threaded + + There were just too many issues in various environments with + multi threaded building of pjproject. It doesn't really speed + things up anyway since asterisk is already being compiled in + parallel. + + Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1 + (cherry picked from commit 815f7551550908c83220196ba08742af0c745772) + +2016-11-23 18:27 +0000 [3a8a42b404] Richard Mudgett + + * PJPROJECT logging: Made easier to get available logging levels. + + Use of the new logging is as simple as issuing the new CLI command or + setting the new pjproject.conf option. + + Other options that can affect the logging are how you have the pjproject + log levels mapped to Asterisk log types in pjproject.conf and if you have + configured Asterisk to log the DEBUG type messages. Altering the + pjproject.conf level mapping shouldn't be necessary for most installations + as the default mapping is sensible. Configuring Asterisk to log the DEBUG + message type is standard practice for collecting debug information. + + * Added CLI "pjproject set log level" command to dynamically adjust the + maximum pjproject log message level. + + * Added CLI "pjproject show log level" command to see the currently set + maximum pjproject log message level. + + * Added pjproject.conf startup section "log_level" option to set the + initial maximum pjproject log message level so all messages could be + captured from initialization. + + * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into + bundled pjproject. Pjproject will use the currently set run time log + level to determine if a log message is generated just like Asterisk + verbose and debug logging levels. + + * In log_forwarder(), made always log enabled and mapped pjproject log + messages. DEBUG mapped log messages are no longer gated by the current + Asterisk debug logging level. + + * Removed RAII_VAR() from res_pjproject.c:get_log_level(). + + ASTERISK-26630 #close + + Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389 + +2017-01-10 18:10 +0000 [8e5e3c2b0c] gtjoseph + + * debug_utilities: Create the ast_coredumper utility + + This utility allows easy manipulation of asterisk coredumps. + + * Configurable search paths and patterns for existing coredumps + * Can generate a consistent coredump from the running instance + * Can dump the lock_infos table from a coredump + * Dumps backtraces to separate files... + - thread apply 1 bt full -> .thread1.txt + - thread apply all bt -> .brief.txt + - thread apply all bt full -> .full.txt + - lock_infos table -> .locks.txt + * Can tarball corefiles and optionally delete them after processing + * Can tarball results files and optionally delete them after processing + * Converts ':' in coredump and results file names '-' to facilitate + uploading. Jira for instance, won't accept file names with colons + in them. + + Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1]. + + [1] For *BSDs, the "devel/gdb" package might have to be installed to + get a recent gdb. The utility will check all instances of gdb + it finds in $PATH and if one isn't found that can run python, it + prints a friendly error. + + Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd + (cherry picked from commit 47474cfd54a9185c1433464ccfd6301427a03957) + +2016-12-22 16:00 +0000 [cedf8a21a1] Joshua Colp + + * chan_pjsip: Use session for retrieving CHANNEL() information. + + The CHANNEL() dialplan function implementation for PJSIP allows + querying of PJSIP specific information. This used the channel + passed in to get the PJSIP session and associated information. + It is possible for this channel to be masqueraded and end + up as a different channel type by the time the information + request is actually acted upon. + + This change retrieves the PJSIP session safely and accesses + data from it (including channel). This provides a guarantee + that the session and channel will not be altered when the + request is being acted upon. + + ASTERISK-26673 + + Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6 + +2016-12-23 12:10 +0000 [92235dba88] Richard Mudgett + + * bridge_native_rtp.c: Fix native rtp bridge data race. + + native_rtp_bridge_compatible() didn't lock the bridge channels before + checking the channels for native bridging ability. As a result, one of + the channel's native format capabilities structure got replaced out from + under the native bridge check. Use of a stale pointer to freed memory + causes bad things to happen. + + MALLOC_DEBUG, DO_CRASH, and the + tests/channels/pjsip/transfers/blind_transfer/caller_direct_media + testsuite test caught this. + + * Add missing channel locking in native_rtp_bridge_compatible(). + + Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53 + +2016-12-21 16:28 +0000 [d8747659f0] Richard Mudgett + + * res_rtp_asterisk.c: Fix uninitialized memory crash. + + ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to + ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' + parameter may not get initialized. Thus when the code tries to save the + 'us' parameter to the local address we could try to copy a ridiculous + sized memory buffer and segfault. + + * Made pass an initialized 'us' parameter to ast_ouraddrfor(). + + * Optimized out the 'us' struct variable. + + ASTERISK-26672 #close + + Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc + +2016-12-21 17:54 +0000 [a9400da2d3] Richard Mudgett + + * chan_rtp.c: Fix uninitialized memory crash. + + unicast_rtp_request() could pass an uninitialized 'us' parameter to + ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' + parameter may not get initialized. Thus when the code tries to save the + 'us' parameter to the local address we could try to copy a ridiculous + sized memory buffer and segfault. + + * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort + the UnicastRTP channel request if it fails. + + ASTERISK-26672 + + Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0 + +2016-12-21 17:55 +0000 [a2c695cd18] Richard Mudgett + + * res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip(). + + We access uninitialized memory when the 'ourip' parameter does not + have an initial guess to our IP address. + + ASTERISK-26672 + + Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15 + +2016-12-21 16:25 +0000 [a3502c1885] Richard Mudgett + + * acl.c: Improve ast_ouraddrfor() diagnostic messages. + + * Made not generate strings unless they will actually be used. + + ASTERISK-26672 + + Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3 + +2016-12-14 14:21 +0000 [a3da3bb406] Richard Mudgett + + * chan_dahdi.c: Fix bounds check regression. + + Caused by ASTERISK-25494 + + Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb + +2016-12-13 14:34 +0000 [1bb47bc3b0] Richard Mudgett + + * res_pjsip: Add/update ERROR msg if invalid URI. + + ASTERISK-24499 + + Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c + +2016-12-12 18:38 +0000 [ee9c8d0c97] Richard Mudgett + + * MESSAGE: Flush Message/ast_msg_queue channel alert pipe. + + ASTERISK-25083 + + Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2 + +2016-12-13 14:06 +0000 [a209faa94f] gtjoseph + + * res_sorcery_memory_cache: Change an error to a debug message + + When a sorcery user calls ast_sorcery_delete on an object that + may have already expired from the cache, res_sorcery_memory_cache + spits out an ERROR. Since this can happen frequently and validly when + an inbound registration expires after the cache entry expired, the + errors are unnecessary and misleading. Changed to a debug/1. + + Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7 + +2016-11-30 09:31 +0000 [2021b5380d] Walter Doekes + + * chan_sip: Do not allow non-SP/HTAB between header key and colon. + + RFC says SIP headers look like: + + HCOLON = *( SP / HTAB ) ":" SWS + SWS = [LWS] ; sep whitespace + LWS = [*WSP CRLF] 1*WSP ; linear whitespace + WSP = SP / HTAB ; from rfc2234 + + chan_sip implemented this: + + HCOLON = *( LOWCTL / SP ) ":" SWS + LOWCTL = %x00-1F ; CTL without DEL + + This discrepancy meant that SIP proxies in front of Asterisk with + chan_sip could pass on unknown headers with \x00-\x1F in them, which + would be treated by Asterisk as a different (known) header. For + example, the "To\x01:" header would gladly be forwarded by some proxies + as irrelevant, but chan_sip would treat it as the relevant "To:" header. + + Those relying on a SIP proxy to scrub certain headers could mistakenly + get unexpected and unvalidated data fed to Asterisk. + + This change fixes so chan_sip only considers SP/HTAB as valid tokens + before the colon, making it agree on the headers with other speakers of + SIP. + + ASTERISK-26433 #close + AST-2016-009 + + Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b + +2016-11-14 18:18 +0000 [d27eae001d] Joshua Colp + + * res_format_attr_opus: Fix crash when fmtp contains spaces. + + When an opus offer or answer was received that contained an + fmtp line with spaces between the attributes the module would + fail to properly parse it and crash due to recursion. + + This change makes the module handle the space properly and + also removes the recursion requirement. + + ASTERISK-26579 + + Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3 + +2016-12-06 14:54 +0000 [f243f7fb4b] gtjoseph + + * res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command + + The PJSIPShowRegistrationsInbound AMI command was just dumping out + all AORs which was pretty useless and resource heavy since it had + to get all endpoints, then all aors for each endpoint, then all + contacts for each aor. + + PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail + events which meets the intended purpose of the other command and has + significantly less overhead. Also, some additional fields that were + added to Contact since the original creation of the ContactStatusDetail + event have been added to the end of the event. + + For compatibility purposes, PJSIPShowRegistrationsInbound is left + intact. + + ASTERISK-26644 #close + + Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a + +2016-12-06 16:45 +0000 [c7c2db5a29] Richard Mudgett + + * Bundled pjproject: Fix finding SIP transactions. + + Occasionally SIP message transactions are not found when they should be. + In the particular case an incoming INVITE transaction is CANCELed but the + INVITE transaction cannot be found so a 481 response is returned for the + CANCEL. The problematic calls have a '_' character in the Via branch + parameter. + + The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code. + The problem with the "own tolower" code is that it does not calculate the + same hash value as when the pj_tolower() function is used. The "own + tolower" code will erroneously modify the ASCII characters '@', '[', '\\', + ']', '^', and '_'. Calls to pj_hash_calc_tolower() can use the + PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled. Calls to + pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call + find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm. As a + result you may not be able to find a hash tabled entry because the + calculated hash values would differ. + + * Simply disable PJ_HASH_USE_OWN_TOLOWER. + + ASTERISK-26490 #close + + Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253 + +2016-12-06 12:06 +0000 [221e838b26] gtjoseph + + * pjproject_bundled: Fix missing inclusion of symbols + + Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to + the CFLAGS. Not sure how they went missing. + + Also fixed an uninstall problem where we weren't removing the + symlink from libasteriskpj.so.2 to libasteriskpj.so. While I was + there, I fixed it for libasteriskssl as well. + + Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556 + +2016-11-30 10:48 +0000 [492b37429c] Mark Michelson + + * Frame deferral: Re-queue deferred frames one-at-a-time. + + The recent change that made frame deferral into an API had a behavior + change to it. When frame deferral was completed, we would take all of + the deferred frames and queue them all onto the channel in one call to + ast_queue_frame_head(). Before frame deferral was API-ized, places that + performed manual frame deferral would actually take each deferred frame + and queue them onto the channel. + + This change in behavior caused the confbridge_recording test to start + failing consistently. Without going too crazily deep into the details, + a channel was getting "stuck" in an ast_safe_sleep(). An AMI redirect + was attempting to break it out of the sleep, but because there were more + frames in the channel read queue than expected, the channel ended up + being unable to break from its sleep loop. + + By restoring the behavior of individual frame queuing after deferral, + the test starts passing again. + + Note, this points to a potential underlying issue pointing to an + "unbalance" that can occur when queuing multiple frames at once, + and so a follow-up issue is being created to investigate that + possibility. + + Change-Id: Ied5dacacda06d343dea751ed5814a03364fe5a7d + +2016-11-28 11:03 +0000 [d4d1909077] gtjoseph + + * build_tools: Fix download_externals to handle certified branches + + download_externals wasn't handling the "certified/13.x" version + correctly. + + Change-Id: I124d195bb117ca36fd7bf1150c630f3b474a9d9a + +2016-11-23 15:58 +0000 [33a0d64eab] Kevin Harwell + + * Update for certified/13.13-cert1-rc1 + +2016-11-23 15:20 +0000 [907160ee21] Kevin Harwell + + * app_talkdectect: Now core supported, enable for cert + + Change-Id: Ic0b2cacb21a6e11a25ebbff7e508e106ea156f6c + +2016-11-23 15:01 +0000 [0cd0495732] Kevin Harwell + + * Disable extended support modules + + Change-Id: Ib6b4f9451b5b68b738d8ab07a27de1c87c28f819 + +2016-11-23 14:57 +0000 [854196eea9] Kevin Harwell + + * .version: Update for certified/13.13 + + Change-Id: Ia1a0f035359d88b8885c7aca22f0d70b73aeb05d + +2016-11-23 09:26 +0000 [fdde690e0f] Kevin Harwell + + * Update for 13.13.0 + +2016-11-22 12:02 +0000 [f93e55d124] Kevin Harwell + + * Update for 13.13.0-rc2 + +2016-11-21 09:40 +0000 [e246b36a3c] gtjoseph + + * build: Backport addition of librt check to configure.ac + + A while back, a master-only change was made to check for librt which + should probably have been cherry-picked to 13 at that time. Sometime + between then and now, part of that change did make it into 13 but it + was incomplete and non-functional. This patch backports the rest + of the librt check and allows the link of libasteriskpj to use the + results. + + Change-Id: I1424008fd8c90f389dda53162ec4a340b253a3c1 + +2016-11-22 11:20 +0000 [855f05e525] Kevin Harwell + + * Update for 13.13.0 + +2016-11-18 12:59 +0000 [751d43e8e4] Joshua Colp + + * Update for 13.13.0-rc1 + +2016-11-18 09:45 +0000 [cb624b10ae] Mark Michelson + + * Bump ARI version to 1.10.0 + + The video-related bridge changes mean that the version needs to be + bumped. + + Change-Id: I41c4495068562bef03aa76728f188b8ac4bd393d + +2016-11-17 10:50 +0000 [bde3d022a3] Mark Michelson + + * manager: update minor version + + Based on bridge video AMI event changes, bump the minor version of AMI. + + Change-Id: I02586bd6cafc0baa33ea98c2f75356c0f5e03435 + +2016-11-16 20:24 +0000 [b213045fe4] gtjoseph + + * build: Various OpenBSD issues + + OpenBSD's 'find' doesn't take the -delete argument so you have to pipe + through 'xargs rm -rf'. + + 'echo -e' doesn't like \t starting a line. It just prints 't' which + causes the libasteriskpj.exports file to be garbage. They were just + cosmetic so they were removed. + + librt doesn't exist so the link of libasteriskpj.so fails. It's not + actually needed for linux anyway so -lrt was removed from the link. + + res_rtp_asterisk was failing to load because of an undefined + DTLS_method. '|| defined(LIBRESSL_VERSION_NUMBER)' was added to the #if + so DTLSv1_method is used instead. + + ASTERISK-26608 + + Change-Id: I926ec95b0b69633231e3ad1d6e803b977272c49c + +2016-11-14 18:45 +0000 [404596b790] gtjoseph + + * channel: Fix issues in hangup scenarios caused by frame deferral + + ASTERISK-26343 + + Change-Id: I06dbf7366e26028251964143454a77d017bb61c8 + +2016-11-16 15:42 +0000 [2c031b67d3] Mark Michelson + + * res_format_attr_opus: Fix fmtp generation. + + res_format_attr_opus assumed that the string being passed into it was + empty. It tried to determine if the only thing it had written was + + a=fmtp: + + And if it had, it would reset the string. Its calculation was off when + working with chan_sip, though. chan_sip passes the entire built SDP + rather than an empty string. This resulted in always putting an empty + fmtp line in the SDP. + + ASTERISK-26520 #close + Reported by scgm11 + + Change-Id: Ib2e8712d26a47067e5f36d5973577added01dbb5 + +2016-11-15 16:23 +0000 [ed0f1afc8c] Richard Mudgett + + * codec_opus: Fix warning when Opus negotiated but codec_opus not loaded. + + When Opus is negotiated but not loaded, the log is spammed with messages + because the system does not know how to calculate the number of samples in + a frame. + + * Suppress the warning by supplying a function that assumes 20ms of + samples in the frame. For pass through support it doesn't really seem to + matter what number of samples is returned anyway. + + ASTERISK-26605 #close + + Change-Id: Icf2273692f040dc2c45b01e72a790d11092f9e0f + +2016-11-14 14:36 +0000 [e632222bc4] Richard Mudgett + + * res_pjsip_outbound_authenticator_digest.c: Fix memory pool leak. + + Responding to authentication challenges leaks PJSIP memory pools. + + The leak was introduced with a pjproject 2.5.5 API change. + https://trac.pjsip.org/repos/ticket/1929 changed the API usage of + pjsip_auth_clt_init() to require the new API pjsip_auth_clt_deinit() to + clean up cached authentication allocations that get allocated with + pjsip_auth_clt_reinit_req(). + + ASTERISK-26516 #close + + Change-Id: I4473141b8c3961d0dc91c382beb3876b3efb45c8 + +2016-11-15 12:01 +0000 [c92dcc76da] gtjoseph + + * file.c/__ast_file_read_dirs: Fix issues on filesystems without d_type + + One of the code paths in __ast_file_read_dirs will only get executed if + the OS doesn't support dirent->d_type OR if the filesystem the + particular file is on doesn't support it. So, while standard Linux + systems support the field, some filesystems like XFS do not. In this + case, we need to call stat() to determine whether the directory entry + is a file or directory so we append the filename to the supplied + directory path and call stat. We forgot to truncate path back to just + the directory afterwards though so we were passing a complete file name + to the callback in the dir_name parameter instead of just the directory + name. + + The logic has been re-written to only create a full_path if we need to + call stat() or if we need to descend into another directory. + + Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba + +2015-05-14 17:12 +0000 [7b96e8cc3d] Maciej Szmigiero + + * Add X.509 subject alternative name support to TLS certificate + verification. + + This way one X.509 certificate can be used for hosts that + can be reached under multiple DNS names or for multiple hosts. + + Signed-off-by: Maciej Szmigiero + + ASTERISK-25063 #close + + Change-Id: I13302c80490a0b44c43f1b45376c9bd7b15a538f + +2016-11-14 15:57 +0000 [0790aa528a] Matt Jordan + + * pjproject: Use a much higher limit for PJ_ICE_MAX_CHECKS + + The PJ_ICE_MAX_CHECKS constant is used by pjproject to determine how + many pairs of local/remote candidates will be made. If for some reason + we reach this upper bound, ICE will generally fail and no media will + flow between the browser and Asterisk. + + This patch makes PJ_ICE_MAX_CHECKS set to the total possible number of + pairs of candidates we'd theoretically allow, which is + PJ_ICE_MAX_CAND^2. Prior to this patch, we simply multiplied + PJ_ICE_MAX_CAND by two; on systems with multiple interfaces (I blame + Docker), this is far too low to allow WebRTC calls to succeed. + + Setting this to be PJ_ICE_MAX_CAND^2 allowed WebRTC calls to succeed + even when the system Asterisk was running on had quite a few virtual + interfaces. + + Change-Id: Icd4f17de0ac9d3a83dddfc8bf1cb7616bc107d55 + +2016-11-14 15:32 +0000 [993a6f96c7] Matt Jordan + + * apps/app_echo: Only relay a single video source change frame + + In 9785e8d0, app_echo was updated to relay video source updates to the + channel for the purposes of displaying video in WebRTC tests. + Unfortunately, this can cause a Kafkaesque nightmare if two or more + Local channels are in a bridge together where their ends are in + app_echo. When this situation occurs, a video update sent into app_echo + will cause the video update to be relayed to the other Local channels, + causing another round of video updates, etc. In not much time at all, + the channel length queues will be overwhelmed, channel alert pipes will + fail, and all hell will break loose as Asterisk merrily continues to + throw more video update requests onto the channels. + + This patch updates app_echo to *only* relay a single video update. Once + a video update has been made, all further video updates are dropped. + This meets the intended purpose of the original patch: if we get a video + update and we're in app_echo, go ahead and ask the sender to update + themselves. However, once we've got that video stream sync'd up, don't + keep spamming the world. + + Change-Id: I9210780b08d4c17ddb38599d1c64453adfc34f74 + +2016-11-08 10:11 +0000 [d23b4af477] Matt Jordan + + * res/ari/resource_bridges: Add the ability to manipulate the video source + + In multi-party bridges, Asterisk currently supports two video modes: + * Follow the talker, in which the speaker with the most energy is shown + to all participants but the speaker, and the speaker sees the + previous video source + * Explicitly set video sources, in which all participants see a locked + video source + + Prior to this patch, ARI had no ability to manipulate the video source. + This isn't important for two-party bridges, in which Asterisk merely + relays the video between the participants. However, in a multi-party + bridge, it can be advantageous to allow an external application to + manipulate the video source. + + This patch provides two new routes to accomplish this: + (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId} + Sets a video source to an explicit channel + (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource + Removes any explicit video source, and sets the video mode to talk + detection + + ASTERISK-26595 #close + + Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621 + +2016-11-14 14:22 +0000 [404a62eeee] gtjoseph + + * Revert "Revert "channel: Use frame deferral API for safe sleep."" + + This reverts commit 58c88cfbaa80cb43419cde9186d643d1c5d24baf. + + Change-Id: I72692e2b2e83ef6da9390075ff20b138b2c374b6 + +2016-11-14 14:22 +0000 [09d8febc91] gtjoseph + + * Revert "Revert "autoservice: Use frame deferral API"" + + This reverts commit 1df434e2b4bd7cc34b9b4addf405a3caa7ac16b8. + + Change-Id: Id2b8a8bccbb4bbdd82b792275d4cd6f32563e401 + +2016-11-14 14:21 +0000 [ffad2b44df] gtjoseph + + * Revert "Revert "AGI: Only defer frames when in an interception routine."" + + This reverts commit 6be5d8de0da7e804544507f70382425af9a07b3f. + + Change-Id: I4b548137f52ae0686d8f09e21496b778d1c6a797 + +2016-11-14 14:21 +0000 [2fefb6187f] gtjoseph + + * Revert "Revert "Add API for channel frame deferral."" + + This reverts commit 6b5a7ced136b7178ae0b2ba39221eba1cd2e37c9. + + Change-Id: I61d1dbb2e69e1977f684b7dfc8e98211024e1cd1 + +2016-11-14 12:16 +0000 [5e0c224043] gtjoseph + + * cli: Fix ast_el_read_char to work with libedit >= 3.1 + + Libedit 3.1 is not build with unicode on as a default and so the + prototype for the el_gets callback changed from expecting a char buffer + to accepting a wchar buffer. If ast_el_read_char isn't changed, + the cli reads garbage from teh terminal. + + Added a configure test for (*el_rfunc_t)(EditLine *, wchar_t *) and + updated ast_el_read_char to use the HAVE_ define to detemrine whether + to use char or wchar. + + ASTERISK-26592 #close + + Change-Id: I9099b46f68e06d0202ff80e53022a2b68b08871a + +2016-11-11 02:41 +0000 [3faca1d4ff] Igor Goncharovskiy + + * Fix closing rtp ports after call finished in chan_unistim. + + Fix ASTERISK-26565 by adding ast_rtp_instance_stop before + rtp instance destroy for chan_unistim. Also several fixes + for displayed text translation. + + Change-Id: If42a03eea09bd1633471406bdc829cf98bf6affc + +2016-09-23 17:54 +0000 [412d43fa21] Richard Mudgett + + * res_pjsip.c: Rework endpt_send_request() req_wrapper code. + + * Don't hold the req_wrapper lock too long in endpt_send_request(). We + could block the PJSIP monitor thread if the timeout timer expires. + sip_get_tpselector_from_endpoint() does a sorcery access that could take + awhile accessing a database. pjsip_endpt_send_request() might take awhile + if selecting a transport. + + * Shorten the time that the req_wrapper lock is held in the callback + functions. + + * Simplify endpt_send_request() req_wrapper->timeout code. + + * Removed some redundant req_wrapper->timeout_timer->id assignments. + + Change-Id: I3195e3a8e0207bb8e7f49060ad2742cf21a6e4c9 + +2016-09-21 15:10 +0000 [2e7fc56d3c] Richard Mudgett + + * res_pjsip: Fix tdata leaks in off nominal paths. + + Change-Id: Ie83e06e88c2d60157775263b07e40b61718ac97b + +2016-10-24 12:41 +0000 [da68b185b3] Richard Mudgett + + * res_pjsip_registrar_expire.c: Remove extra linefeed in debug message. + + Change-Id: I1f9adb911f23376503396ec8867e8005b755eb94 + +2016-11-10 10:57 +0000 [b70eb07c53] Joshua Colp + + * res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp. + + When optimistic SRTP was on it was possible for us to still + set up a call without an audio stream if an offer was received + with required SRTP. + + This change makes it so this scenario will now fail with a 488 + response. + + ASTERISK-26575 + + Change-Id: I7d14187037681f48879bd20319ac79d0877318f3 + +2016-11-10 08:33 +0000 [71dc333565] Joshua Colp + + * app_queue: Add mention of 'ABANDON' variable to CHANGES. + + ASTERISK-26558 + + Change-Id: I1127010181e79c8ac291f72f036cb8e430dc7f7e + +2016-11-10 07:41 +0000 [6b5a7ced13] gtjoseph + + * Revert "Add API for channel frame deferral." + + This reverts commit 9231a56cf3d6f5eca1bf2d37d827453400690773. + Multiple testsuite failures were detected after the fact. + + Change-Id: I3bac8d7c3ddb69a4ddf6c5d6de0ffa5ff7ff3af7 + +2016-11-10 07:41 +0000 [6be5d8de0d] gtjoseph + + * Revert "AGI: Only defer frames when in an interception routine." + + This reverts commit 5c10091f3d1430c6fc04015226f8c3e3aa9d8282. + Multiple testsuite failures were detected after the fact. + + Change-Id: I397a841acc17ae230c512449cd6bed89d2ef3b73 + +2016-11-10 07:41 +0000 [1df434e2b4] gtjoseph + + * Revert "autoservice: Use frame deferral API" + + This reverts commit 2e3a3545754749de21873bfdc6d1a40ec7d8893f. + Multiple testsuite failures were detected after the fact. + + Change-Id: Ia45fa4633fae74dca345b24bb6722737c63035de + +2016-11-10 07:40 +0000 [58c88cfbaa] gtjoseph + + * Revert "channel: Use frame deferral API for safe sleep." + + This reverts commit 44f7e252397fd87420b3374df26941d7436401b3. + Multiple testsuite failures were detected after the fact. + + Change-Id: I56299087da22128a95f0c8f3955f740890d7ca65 + +2016-11-09 18:18 +0000 [a562fbe618] gtjoseph + + * build: Fix default values for some SANITIZER options + + 2 of the sanitizers didn't have default values so in systems that + don't support sanitizers menuselect would spit out warnings. They + were harmless but confusing. They've now been set to "0". + + Change-Id: I08dc495e3b83f1feac3160b421f538c375fc5d58 + +2016-11-06 06:04 +0000 [7fd5031c1c] Sebastian Gutierrez + + * app_queue: new variable set when abandoned + + sets the variable ABANDONED to TRUE if the call was not answered. + + ASTERISK-26558 + + Change-Id: I4729af9bff4eba436d8a776afd3374065d0036d3 + +2016-11-08 10:48 +0000 [e043d1a55c] Mark Michelson + + * res_pjsip_session: Do not call session supplements when it's too late. + + res_pjsip_sesssion was hooking into transaction and invite state + changes. One of the reasons for doing so was due to the + PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the + message sending process, and so we should call session supplements to + alter the outgoing message. + + In reality, this event was meant to indicate that the message either + a) had already been sent, or + b) required a DNS lookup and would be sent when the DNS query + completed. + + In case (a), this meant we were altering an already-sent + request/response for no reason. In case (b), this potentially meant we + could be trying to alter a request/response at the same time that the + DNS resolution completed. In this case, it meant we might be stomping on + memory being used by the thread actually sending the message. This + caused potential crashes and memory corruption. + + This patch removes the calls to session supplements from the case where + the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to + alter the message at this point is too late, and it can cause nothing + but harm to try to do it. Because there were no longer any calls to the + handle_outgoing() function, it has been removed. + + Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92 + +2016-11-03 16:46 +0000 [44f7e25239] Mark Michelson + + * channel: Use frame deferral API for safe sleep. + + This is another case where manual frame deferral can be replaced with + centralized routines instead. + + Change-Id: I42cdf205f8f29a7977e599751a57efbaac07c30e + +2016-11-03 16:46 +0000 [2e3a354575] Mark Michelson + + * autoservice: Use frame deferral API + + Rather than use manual frame deferral, just let the channel API do it + for us. + + ASTERISK-26343 + + Change-Id: I688386f36e765dbc07be863943a43f26bd5eac49 + +2016-11-03 16:42 +0000 [5c10091f3d] Mark Michelson + + * AGI: Only defer frames when in an interception routine. + + AGI recently was modified to defer important frames. This was because + when AGI was used in a connected line interception routine, the + resulting connected line frame would end up getting discarded by the + AGI. + + However, this caused bad behavior in other cases. Specifically, during a + transfer, if someone attempted to manually set the Caller ID on a + channel in an AGI, the deferred connected line frame would end up + overwriting what had been manually set in the AGI. + + Since the initial issue was specific to interception routines, this + change removes the manual frame deferral from AGI and instead uses the + new frame deferral API in interception routines. + + ASTERISK-26343 #close + Reported by Morton Tryfoss + + Change-Id: Iab7d39436d0ee99bfe32ad55ef91e9bd88db4208 + +2016-11-03 16:36 +0000 [9231a56cf3] Mark Michelson + + * Add API for channel frame deferral. + + There are several places in Asterisk that have duplicated logic + for deferring important frames until later. + + This commit adds a couple of API calls to facilitate this automatically. + + ast_channel_start_defer_frames(): Future reads of deferrable frames on + this channel will be deferred until later. + + ast_channel_stop_defer_frames(): Any frames that have been deferred get + requeued onto the channel. + + ASTERISK-26343 + + Change-Id: I3e1b87bc6796f222442fa6f7d1b6a4706fb33641 + +2016-11-03 07:42 +0000 [a9ac1f5de4] Alexander Anikin + + * chan_ooh323: Fixes to work right with Cisco devices + + Changed output packets queue processing algo to one read-one write + instead of all read-all send + + Remove h.245 tunneling parameter from ReleaseComplete packet + + ASTERISK-24400 #close + Reported by: Dmitry Melekhov + Tested by: Dmitry Melekhov + + Change-Id: I0b31933b062a21011dbac9a82b8bcfe345f406f6 + +2016-11-03 13:10 +0000 [0ee249075a] Alexander Anikin + + * chan_ooh323: reset rrq count on gk registration + + reset registration attempts count on success registration on gatekeeper + + Change-Id: I5f47351852e0ca76c9ac78421659600e0f106336 + +2016-11-06 03:46 +0000 [59c23e1768] Michael Kuron + + * automon: restore mixing of the both channels after recording stops + + This is a regression over Asterisk 11, introduced by + 2dc8a060064f359a17f5ebcd515d85fe5203c019. Previously, recordings started via + the automon DTMF code would automatically be mixed together using sox because + app_monitor would be called with the m option. This commit restores this + behavior. + + Change-Id: Ibaf58684285c3f1b6ca3714524e6d638ae3b3759 + +2016-11-04 15:42 +0000 [e79acaeb75] Matt Jordan + + * res_http_websocket: Increase the buffer size for non-LOW_MEMORY systems + + Not surprisingly, using Respoke (and possibly other systems) it is + possible to blow past the 16k limit for a WebSocket packet size. This + patch bumps it up to 32k, which, at least for Respoke, is sufficient. + For now. + + Because 32k is laughable on a LOW_MEMORY system (as is 16k, for that + matter), this patch adds a LOW_MEMORY directive that sets the buffer to + 8k for systems who have asked for their reduced memory availability to + be considered. + + Change-Id: Id235902537091b58608196844dc4b045e383cd2e + +2016-11-04 15:40 +0000 [7a83196985] Matt Jordan + + * res_stasis: Set a video source mode on Stasis created bridges + + When a bridge is created via ARI (through res_stasis), no video source + mode is set by default. As a result, any endpoint sending video media + won't ever see any video reflected back to it. + + This patch defaults a bridge to a 'follow the talker' video mode. + Further work can be done to add routes that allow for the video mode to + be controlled through the /bridges resource. + + Change-Id: I7e9d530a5d7a97a4524a9ee4e468e1a6b3443866 + +2016-11-04 15:37 +0000 [e7dc536b7a] Matt Jordan + + * main/bridge_channel: Fix channel reference leak on video source + + When a channel is made the video source, the bridge holds a reference to + it. Whenever the video source changes, that reference is released. + However, a ref leak does occur if the channel leaves the bridge (such as + being hung up) while it is the video source, as the bridge never + releases the ref in such a case. + + This patch adds a line to the bridge_channel_internal_join routine such + that, when a channel finishes its time in the bridge, it notifies the + bridge via ast_bridge_remove_video_src that if it is a video source its + reference should be released. + + ASTERISK-26555 #close + + Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a + +2016-11-04 15:36 +0000 [7c824b955d] Matt Jordan + + * main/bridge: Add some verbose logging for video source changes + + It's actually quite useful to see the source of a video stream change. + This doesn't happen terribly often, even with talk detection - but when + it does, it's nice to know which channel is now providing your video + stream. + + As a verbose 5 level message, it shouldn't be terribly spammy or costly + to have, and is 'lower level' then most other verbose messages that the + bridge system emits. + + ASTERISK-26555 + + Change-Id: Ia1c20ecafa9670171fd38bddcf3beccae47fb15c + +2016-11-04 15:33 +0000 [fd6af2dee8] Matt Jordan + + * bridges/bridge_softmix: Remove SSRC changes on join/leave; update video source + + WebRTC clients really, really want to know the SSRC of the media they're + getting. Changing the SSRC is generally not a good thing. + + bridge_softmix, starting in Asterisk 12, started changing the SSRC of + parties as they joined or left the bridge. With most phones, this isn't + a problem: phones just play back the stream they're getting. With WebRTC + clients, however, the SSRC is tied to a media stream that may be + negotiated. When a new SSRC just shows up, the media can be dropped. + + As it turns out, the SSRC change shouldn't even be necessary. From the + perspective of the client, it's still talking to Asterisk with the same + media stream: why indicate that the far party has suddenly changed to a + different source of media? + + This patch opts to just remove the SSRC changes. With this patch, video + clients that join/leave a softmix bridge actually get the video stream + instead of freaking out. + + ASTERISK-26555 + + Change-Id: I27fec098b32e7c8718b4b65f3fd5fa73527968bf + +2016-10-28 15:11 +0000 [bd4d7d8ad0] Kevin Harwell + + * stasis_recording/stored: remove calls to deprecated readdir_r function. + + The readdir_r function has been deprecated and should no longer be used. This + patch removes the readdir_r dependency (replaced it with readdir) and also moves + the directory search code to a more centralized spot (file.c) + + Also removed a strict dependency on the dirent structure's d_type field as it + is not portable. The code now checks to see if the value is available. If so, + it tries to use it, but defaults back to using the stats function if necessary. + + Lastly, for most implementations of readdir it *should* be thread-safe to make + concurrent calls to it as long as different directory streams are specified. + glibc falls into this category. However, since it is possible that there exist + some implementations that are not safe, locking has been added for those other + than glibc. + + ASTERISK-26412 + ASTERISK-26509 #close + + Change-Id: Id8f54689b1e2873e82a09d0d0d2faf41964e80ba + +2016-11-04 10:57 +0000 [cb30963d22] Kevin Harwell + + * Revert "chan_sip: Fix lastrtprx always updated" + + This reverts commit 93332cb1d0eea18021ea6538237297e627d6e2fc. + + Unfortunately, the aforementioned commit caused a regression (incoming calls + would eventually disconnect). Thus it is being removed. + + ASTERISK-26523 #close + ASTERISK-25270 + + Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d + +2016-11-02 10:52 +0000 [3a1f9c5dab] Joshua Colp + + * res_stasis: Don't unsubscribe from a NULL bridge. + + A NULL bridge has special meaning in res_stasis for + unsubscribing. It means that a subscription to ALL + bridges should be removed. This should not be done + as part of the normal subscription management in + the res_stasis channel loop. + + ASTERISK-26468 + + Change-Id: I6d5bea8246dd13a22ef86b736aefbf2a39c15af0 + +2016-11-03 13:45 +0000 [eceab15f33] Alexander Anikin + + * chan_ooh323: Fix infinite loop on read second part of H.225 packet + + Fix logic on read second part of H.225 packet. There was infinite loop on + wrong connections due to read before poll. + + Change-Id: I42b4bf75c46e4a5c5df5c5ca1f0bd74b8944e7ff + +2016-11-03 11:55 +0000 [a9992da4aa] gtjoseph + + * pjproject_bundled: Fix issue with libasteriskpj needing libresample + + libresample is only needed by pjproject if we're building pjsua, which + we only do if TEST_FRAMEWORK is selected. It's required by pjsua to + process audio which is needed by some testsuite tests. Unfortunately, + pjproject relies on a newer version of libresample than the version + that ships by most distros so we need to compile the version that's + bundled with pjproject. Since we only need it for pjsua, we DON'T want + it's symbols exposed when we actually build asterisk. + + There was a problem however... TEST_FRAMEWORK is only known AFTER we've + already run ./configure on both asterisk and pjproject but pjproject's + ./configure needs to test it to know whether to set up to build + libresample or not. The previous way of figuring this out was to + always tell ./configure "yes" but not actually build the library. This + caused an issue where building libasteriskpj was being told to include + libresample but it wasn't actually there. + + The solution is to still do a default pjproject configure during an + asterisk ./configure but if makeopts or menuselect.makeopts changes + subsequently, we now reconfigure pjproject, taking into account the + current state of TEST_FRAMEWORK. Previously, if makeopts or + menuselect.makeopts changed, only a recompile of pjproject was done. + + Change-Id: I9b5d84c61384a3ae07fe30e85c49698378cc4685 + +2016-11-01 19:48 +0000 [714412f6c4] Sebastian Gutierrez + + * chan_sip: add missing account code + + Added missing account to AMI event of sip show peers + + ASTERISK-26176 #close + + Change-Id: Ieb6c2c80a838a1b59c82103eba4c63ba238dc482 + +2016-09-13 04:08 +0000 [0cf1778eed] Alexander Traud + + * rtp_engine: Allow more than 32 dynamic payload types. + + The dynamic range (96-127) allows 32 RTP Payload Types. RFC 3551 section 3 + allows to reassign other ranges. Consequently, when the dynamic range is + exhausted, you can go for "rtp_pt_dynamic = 35" (or 0) in asterisk.conf. This + enables the range 35-63 (or 0-63) giving room for another 29 (or 64) payload + types. + + ASTERISK-26311 #close + + Change-Id: I7bc96ab764bc30098a178b841cbf7146f9d64964 + (cherry picked from commit 9ac53877f688c06acaa7c377f15da8770e4ee88b) + +2016-11-02 09:15 +0000 [d971647949] Joshua Colp + + * app_dial: Fix incorrect device state when channel is picked up. + + Given the scenario where multiple channels are dialed using Dial() + but the caller is picked up using PickupChan() all outgoing channels + except the channel specified to PickupChan() would be marked + as ringing until the call had been hung up. + + When using the PickupChan application the channel executing the + application is swapped into place of another channel. As part + of this process the channel is answered. The Dial application + has explicit logic which checks if the channel is answered, + cancels all other outgoing channels, and bridges. This logic is + different than the normal logic that is executed when an outgoing + channel is answered. This different logic failed to publish dial + events stating that the other outgoing channels had been canceled. + As a result references to the outgoing channels were held onto by + the dial masquerade process until the call had been ended and + the channels had gone away. This would result in the channels + appearing in the "core show channels" list despite not being present + anymore and would also result in incorrect device state. + + This change makes it so that this logic also publishes + dial events stating that the other outgoing channels have been + canceled. + + ASTERISK-26549 + + Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f + +2016-11-01 13:13 +0000 [afecb2cfc0] Richard Mudgett + + * bundled pjproject: Fix DNS write to freed memory. + + PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS + patch. + + The patch below fixes a write to freed memory under cartain DNS lookup + conditions. + + 0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch + + ASTERISK-26516 + Reported by: Richard Mudgett + + Change-Id: Ifdfae9ecf1e41b53080f33aab44ce1a220f349c5 + +2016-11-01 06:56 +0000 [5f188bb7a8] Joshua Colp + + * res_pjsip_sdp_rtp: Limit number of formats to defined maximum. + + The res_pjsip_sdp_rtp module did not restrict the number of + formats added to a media stream in the SDP to the defined + limit. If allow=all was used with additional loaded codecs this + could result in the next media stream being overwritten some. + + This change restricts the module to limit it to the defined + maximum and also increases the maximum in our bundled pjproject. + + ASTERISK-26541 #close + + Change-Id: I0dc5f59d3891246cafa2f3df5ec406f088559ee8 + +2016-11-01 04:18 +0000 [94c9496ed5] Tzafrir Cohen + + * netsock.c: fix includes for HURD + + ASTERISK-25070 + + Change-Id: I43bf94d2d36d3d8a8d0df40cd6c027d65a462814 + +2016-11-01 04:00 +0000 [c1c9487375] Tzafrir Cohen + + * define PATH_MAX for HURD + + PATH_MAX is not guaranteed to be defined. In parctice, all but the HURD + define it to a constant. It is indeed not safe to assume there won't be + longer paths and Asterisk generally does err safely on such cases. + + So even for HURD we'll just pretend PATH_MAX is 4096. + + ASTERISK-25070 #close + + Change-Id: I53d10ba18c34c132bcb640a5fd8e0da1d9b22db3 + +2016-10-31 17:35 +0000 [50fa868ab8] Kevin Harwell + + * codecs.conf.sample: Add sample and option descriptions for codec_opus + + codecs.conf.sample was missing codec opus's configuration options, descriptions, + and examples. This patch adds the configuration options and examples to + codecs.conf.sample that can be used with codec_opus. + + ASTERISK-26538 #close + + Change-Id: I1d89bb5e01d3e3b5bd78951b8dd0ff077a83dc8b + +2016-11-01 08:32 +0000 [b3f10b7b94] Grachev Sergey + + * chan_sip: Incorrect display option Outbound reg. retry 403 + + If in sip.conf (general section) set option register_retry_403=no, + the command "sip show settings" return value: + Outbound reg. retry 403:0 + If in sip.conf (general section) set option register_retry_403=yes, + the command "sip show settings" return value: + Outbound reg. retry 403:-1 + + * In static char "sip show settings" for "Outbound.reg. retry 403" + option use AST_CLI_YESNO + + ASTERISK-26476 #close + + Change-Id: I3c14272f05f1067bd2aeaa8b3ef9cf8fcb12dcf9 + +2016-10-20 07:27 +0000 [29692d4aa4] Matt Jordan + + * res/stasis: Add CLI commands for displaying/debugging ARI apps + + This patch adds three new CLI commands: + - ari show apps: list the registered ARI applications + - ari show app: show detailed information about an ARI application + - ari set debug: dump events being sent to an ARI application + + Note that while these CLI commands live in the res_stasis module, we use + the 'ari' family for these commands. This was done as most users of + Asterisk aren't aware of the semantic differences between ARI and + res_stasis, and some 'ari' CLI commands already exist. + + ASTERISK-26488 #close + + Change-Id: I51ad6ff0cabee0d69db06858c13f18b1c513c9f5 + +2016-10-31 16:12 +0000 [a36a7d0cf4] gtjoseph + + * pjproject_bundled: Fix compile of pjsua so it handles audio + + In order for pjsua and its python binding to actually negotiate + audio for the testsuite tests, it needs g711 and resample. The + pj* libraries themselves do not. Unfortunately, pjproject relies + on a brand new libresample that most distros don't ship so we need + to use the libresample already bundled with pjproject. Only the pjsua + executable and the _pjsua.so python library are linked with it so it + shouldn't interfere with asterisk itself. + + Also it was pointed out that apply_patches couldn't handle multiple + patches that depended on each other during the dry-run, so the + dry-run was removed. + + Change-Id: I24f397462b486dcdde0dcafe40e6c55a6593f098 + +2016-10-31 13:46 +0000 [42bd70b29f] Etienne Lessard + + * manager: Add documentation for NewConnectedLine event. + + The NewConnectedLine event has been added by commit fe7671f, but the + documentation was missing. + + ASTERISK-26537 #close + + Change-Id: I7fc331f18caa28492da9303e576f70884ca8c9e6 + +2016-10-30 13:33 +0000 [30b1bc77d2] Corey Farrell + + * vector: Prevent NULL argument to memcpy. + + Headers declare that memcpy does not accept NULL argument for the first + two parameters. Add a conditional block to prevent memcpy and ast_free + from running on vectors with NULL element array. + + ASTERISK-26526 #close + + Change-Id: I988a476bb5fcfcbd3f6d6c6b3e7769e4f9629b71 + +2016-10-29 10:31 +0000 [b96f18560b] Corey Farrell + + * astobj2: Declare private variable data_size for AO2_DEBUG only. + + Every ao2 object contains storage for a private variable data_size, + though the value is never read if AO2_DEBUG is disabled. This change + makes the variable conditional, reducing memory usage. + + ASTERISK-26524 #close + + Change-Id: If859929e507676ebc58b0f84247a4231e11da07f + +2016-10-28 16:59 +0000 [6b1c55dc9b] gtjoseph + + * pjproject_bundled: Fix issue where "/version.mak" wasn't found + + main/Makefile includes third-party/pjproject/build.mak but + doesn't set PJDIR beforehand so "include $(PJDIR)/version.mak" + evaluates to "/version.mak". Fix is to set PJDIR in main/Makefile + before the include. + + Change-Id: I0f7c67d60209049056fe9c4b041bf0463aa95604 + +2016-10-28 14:55 +0000 [d7f457e4c1] Richard Mudgett + + * bundled pjproject: Crashes while resolving DNS names. + + PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS + patch. + + The patches below fix the DNS lookup race condition crash caused by + attempting to send the same message twice for the single DNS lookup. + + 0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch + 0006-r5473-svn-backport-Fix-pending-query.patch + + The patch below removes a cached DNS response from the hash table when + another thread is referencing the old entry. The table still contained + the entry when it was destroyed which can result in inexplicable crashes. + + 0006-r5475-svn-backport-Remove-DNS-cache-entry.patch + + ASTERISK-26344 #close + Reported by: Ian Gilmour + + ASTERISK-26387 #close + Reported by: Harley Peters + + Change-Id: I17fde80359e66f65a91341ceca58d914d0f61cc4 + +2016-10-28 09:50 +0000 [87903a6848] Rusty Newton + + * SAC documentation: don't specify transports for endpoints and registrations + + Removing explicit transport definition for endpoints and registrations. It + isn't necessary and isn't generally advised. + + ASTERISK-26514 #close + + Change-Id: Ifdec5e631962438a4683600968dfa4bfd15909fb + +2016-10-27 21:49 +0000 [f373de3020] Corey Farrell + + * Fix shutdown crash caused by modules being left open. + + It is only safe to run ast_register_cleanup callbacks when all modules + have been unloaded. Previously these callbacks were run during graceful + shutdown, making it possible to crash during shutdown. + + ASTERISK-26513 #close + + Change-Id: Ibfa635bb688d1227ec54aa211d90d6bd45052e21 + +2016-10-26 18:48 +0000 [61a5c3460e] gtjoseph + + * pjproject_bundled: Remove usage of tar's --strip-components option + + Older versions of tar don't support the --strip-components option so + instead of doing 'tar --strip-components=1 -C source', we now just + untar to the tarball's root directory (pjproject-) and + rename that directory to 'source'. + + Also fixed an issue where the pjproject source directory is a hard + coded absolute pathname. + + ASTERISK-26510 #close + ASTERISK-22480 #close + + Change-Id: I9ec92952507a91ff4e4d01e0149e09fd8e8f32b0 + +2016-10-27 08:07 +0000 [675c71ae8c] Joshua Colp + + * res_pjsip_caller_id: Fix crash on session timers UPDATE on inbound calls. + + The res_pjsip_caller_id module wrongly assumed that a + saved From header would always exist on sessions. This + is true until an inbound call is received and a session + timer causes an UPDATE to be sent. In this case there will + be no saved From header and a crash will occur. This change + makes it fall back to the From header of the outgoing request + if no saved From header is present. + + ASTERISK-26307 #close + + Change-Id: Iccc3bc8d243b5ede9b81abf960292930c908d4fa + +2016-10-26 07:51 +0000 [14496ce1e5] Joshua Colp + + * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS. + + When executing the MailboxExists dialplan application and + MAILBOX_EXISTS dialplan function the passed in temporary voice + mailbox was not cleared, causing it to try to free garbage. + + ASTERISK-26503 #close + + Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3 + +2016-10-23 07:38 +0000 [e0bc17edff] Joshua Colp + + * pjsip: Fix a few media bugs with reinvites and asymmetric payloads. + + When channel format changes occurred as a result of an RTP + re-negotiation the bridge was not informed this had happened. + As a result the bridge technology was not re-evaluated and the + channel may have been in a bridge technology that was incompatible + with its formats. The bridge is now unbridged and the technology + re-evaluated when this occurs. + + The chan_pjsip module also allowed asymmetric codecs for sending + and receiving. This did not work with all devices and caused one + way audio problems. The default has been changed to NOT do this + but to match the sending codec to the receiving codec. For users + who want asymmetric codecs an option has been added, asymmetric_rtp_codec, + which will return chan_pjsip to the previous behavior. + + The codecs returned by the chan_pjsip module when queried by + the bridge_native_rtp module were also not reflective of the + actual negotiated codecs. The nativeformats are now returned as + they reflect the actual negotiated codecs. + + ASTERISK-26423 #close + + Change-Id: I6ec88c6e3912f52c334f1a26983ccb8f267020dc + +2016-10-26 06:32 +0000 [f534f67f52] Joshua Colp + + * res_pjsip_sdp_rtp: Fix address family of explicit media_address. + + When an explicit media_address is provided the address family + in the SDP needs to be set to reflect it. + + ASTERISK-26309 + + Change-Id: Ib9350cc91c120eb2f96f0623d3907d12af67eb79 + +2016-10-25 11:20 +0000 [3a2092b722] gtjoseph + + * test_astobj2_thrash: Fix multithreaded issues + + The test uses 4 threads to grow, count, lookup and shrink 15K objects + in a container. If there's only 1 execution engine available, the test + will complete in <50ms. If each threads gets its own execution engine, + the test may timeout after 60 seconds because the count thread does a + locked ao2_callback on the whole container in a tight loop with only + a sched_yield to give up time. The lock contention makes the test + execution times wildly variable and mostly timeout. 2 execution + engines are OK, 3 results in about 33% failure rate and >=4 causes + a 80% failure rate. + + To fix, the sched_yield was changed to a usleep(500). + + Also, the number of buckets specified for the container was an even + number so that was changed to the next prime number greater than + (MAX_HASH_ENTRIES / 100). That's 151 currently. + + Change-Id: I50cd2344161ea61bfe4b96d2a29a6ccf88385c77 + +2016-10-24 14:13 +0000 [640203802e] Pascal Cadotte Michaud + + * typo: s/paranthesis/parenthesis/ in a comment + + Change-Id: I7c1f4eb051177ee22cbe97e063d4a3effe29be30 + +2016-10-24 10:55 +0000 [9b3557e054] gtjoseph + + * pjproject_bundled: Fixed various build issues + + * CFLAGS is now properly set when using older gcc. + * All third-party pjproject targets have been removed. This fixes + an issue with older libsrtp in some distros. + * Manually removing the source directory now causes a rebuild. + * EXTERNALS_CACHE_DIR is now properly checked. + * Whitespace fixes. + + Change-Id: I98fec6847efc5602a9f41cb95096fd660a49fa60 + +2016-09-19 06:13 +0000 [bb982480d8] Joshua Colp + + * pjsip: Support dual stack automatically. + + This change adds support for dual stack automatically. No + configuration is required and the IP address and version + in the SIP messages and SDP will be automatically changed + based on the transport over which the message is being + sent. RTP usage has also been changed to listen on both + IPv4 and IPv6 simultaneously to allow media to flow, and + to allow ICE support on both simultaneously. This also + allows failover between IPv6 and IPv4 to work as expected. + + ASTERISK-26309 #close + + Change-Id: I235a421d8f9a326606d861b449fa6fe3a030572d + +2016-10-17 14:18 +0000 [eff97808fb] Mark Michelson + + * ARI: Detect duplicate channel IDs + + ARI and AMI allow for an explicit channel ID to be specified + when originating channels. Unfortunately, there is nothing in + place to prevent someone from using the same ID for multiple + channels. Further complicating things, adding ID validation to channel + allocation makes it impossible for ARI to discern why channel allocation + failed, resulting in a vague error code being returned. + + The fix for this is to institute a new method for channel errors to be + discerned. The method mirrors errno, in that when an error occurs, the + caller can consult the channel errno value to determine what the error + was. This initial iteration of the feature only introduces "unknown" and + "channel ID exists" errors. However, it's possible to add more errors as + needed. + + ARI uses this feature to determine why channel allocation failed and can + return a 409 error during origination to show that a channel with the + given ID already exists. + + ASTERISK-26421 + + Change-Id: Ibba7ae68842dab6df0c2e9c45559208bc89d3d06 + +2016-10-19 17:53 +0000 [c2036c827c] snuffy + + * Fix issue with CLI not returning to prompt after running "features show" + + ASTERISK-26444 #close + + Change-Id: I91d645b7e6e5dba35f8c410df2be77a8c0e3acb8 + +2016-10-04 18:24 +0000 [3c62b60e56] Michael Walton + + * res_rtp_asterisk: Add ice_blacklist option + + Introduces ice_blacklist configuration in rtp.conf. Subnets listed in the + form ice_blacklist = , e.g. ice_blacklist = + 192.168.1.0/255.255.255.0, are excluded from ICE host, srflx and relay + discovery. This is useful for optimizing the ICE process where a system + has multiple host address ranges and/or physical interfaces and certain + of them are not expected to be used for RTP. Multiple ice_blacklist + configuration lines may be used. If left unconfigured, all discovered + host addresses are used, as per previous behavior. + + Documention in rtp.conf.sample. + + ASTERISK-26418 #close + + Change-Id: Ibee88f80d7693874fda1cceaef94a03bd86012c9 + +2016-10-18 16:30 +0000 [012fda29d2] Mark Michelson + + * CDR: Alter destruction pattern for CDR chains. + + CDRs form chains. When the root of the chain is destroyed, it then + unreferences the next CDR in the chain. That CDR is destroyed, and it + then unreferences the next CDR in the chain. This repeats until the end + of the chain is reached. While this typically does not cause any sort of + problems, it is possible in strange scenarios for the CDR chain to grow + way longer than expected. In such a scenario, the destruction pattern + can result in a stack overflow. + + This patch fixes the problem by switching from a recursive pattern to an + iterative pattern for destruction. When the root CDR is destroyed, it is + responsible for iterating over the rest of the CDRs and unreferencing + each one. Other CDRs in the chain, since they are not the root, will + simply destroy themselves and be done. This causes the stack depth not + to increase. + + ASTERISK-26421 #close + Reported by Andrew Nagy + + Change-Id: I3ca90c2b8051f3b7ead2e0e43f60d2c18fb204b8 + +2016-10-18 09:04 +0000 [6d462b9eaf] Alexei Gradinari + + * chan_pjsip: segfault on already disconnected session + + On heavy loaded system the TCP/TLS incoming calls could be + disconnected by pjproject while these calls are being + processed by asterisk. + + This patch uses functions pjsip_inv_add_ref/pjsip_inv_dec_ref + to inform pjproject that an INVITE session is in use. + + ASTERISK-26482 #close + + Change-Id: Ia2e3e2f75358cdb530252a9ce158af3d5d9fdf33 + +2016-10-18 03:01 +0000 [662b560c35] Alexander Traud + + * cli: Auto-complete File not Module for core set debug. + + Since Asterisk 1.8, the command "core set debug" on the command-line interface + asks not for a file (.c) but a module name. This change shows modules (.so) on + the auto-completion via a tabulator or the question mark. Now, when you + partially type a module name, TAB or ?, you get the correct candidiates. + + ASTERISK-26480 + + Change-Id: I1213f1dd409bd4ff8de08ad80cb0c73cafb1bae0 + +2016-09-11 10:13 +0000 [6f5880913f] Tzafrir Cohen + + * menuselect: invalid test for GTK2 + + configuire.ac was only checking for the existence of pkg-config + and not the gtk2 package itself. Now it calls AST_PKG_CONFIG_CHECK + for gtk+-2.0. + + ASTERISK-26356 #close + + Change-Id: I8079d515d6ea99f9ab320a7eaa71c2aaa101ccd5 + +2016-10-17 11:39 +0000 [546ec4b038] gtjoseph + + * pjproject_bundled: Add patch to address SSL crash + + Addresses crashes when an attempt is made to operate on an SSL socket + after the socket has been closed. + + ASTERISK-26477 #close + + Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002 + +2016-10-13 02:06 +0000 [644fad7477] Moises Silva + + * chan_rtp: Set a sane default rtp engine for unicast. + + ASTERISK-26439 + + Change-Id: I7f5ee2eeba8906e9ecb3293dbe3a747770bb5011 + +2016-10-15 20:05 +0000 [42cfdcd1b7] Matt Jordan + + * res/ari: Add the Asterisk EID field to outgoing events + + This patch adds the Asterisk EID field to all outgoing ARI events. + Because this field should be added to all events as they are + transmitted, it is appended to the JSON message just prior to it being + handed off to the application message handler. This makes it somewhat + resilient to both new events being added to ARI, as well as other + potential event transport mechanisms. + + ASTERISK-26470 #close + + Change-Id: Ieff0ecc24464e83f3f44e9c3e7bd9a5d70b87a1d + +2016-10-16 17:25 +0000 [74d9385273] gtjoseph + + * utils.c: Fix ast_set_default_eid for multiple platforms + + ast_set_default_eid was searching for ethX, emX, enoX, ensX and even + pciD#U interface names. While this was a good attempt, it wasn't + inclusive enough to capture interfaces like enp6s0 or ens6d1, etc. + + Rather than relying on interface names, we now simply find the first + interface returned by the OS that has a hardware address and that + address isn't all 0x00 or all 0xff. The code IS different for BSD, + Solaris and Linux based on what method is available for enumerating + interfaces. + + Tested on: + FreeBSD9 + CentOS6 + Ubuntu14 + Fedora24 + + I was unable to test on Solaris at this time but the code for Solaris + is used elsewhere at Digium. + + Change-Id: Iaa6db87ca78a9a375e47d70e043ae08c1448cb72 + +2016-10-15 04:58 +0000 [f1fd873df0] Michael Kuron + + * chan_sip: Only send video on outgoing channel if incoming channel supports it + + Previously, the settings videosupport=always and videosupport=yes behaved + identically and unconditionally caused a video offer to be sent in the SDP on + an outgoing call. This was a regression introduced with commit + 5a1d90e1fbfc4b48927aad55311f3b38efbf1f54 in Asterisk 1.6.1. + + This commit restores correct behavior: videosupport=always causes a video offer + to be sent unconditionally, while videosupport=yes will only offer video on an + outbound channel if the incoming channel it is bridged to also supports video. + That way, the device receiving the outgoing call can display the correct user + interface elements for audio or video and will not unnecessarily show a blank + video window on an audio-only call. + + ASTERISK-17470 #close + + Change-Id: I782f4409d436114dbc97061c3570c0cd24f7c3ae + +2016-10-13 14:09 +0000 [0306869399] Leandro Dardini + + * app_queue: Added initialization for "context" parameter + + When using Asterisk Realtime Architecture, empty fields are skipped and the + default values are used. If the "context" parameter in queue was set and then + cleared from the database, the old value remains in memory and it continues + to be used. This change initialize the "context" parameter with an empty value, + allowing clearing the parameter. + + ASTERISK-26462 #close + + Change-Id: I64be73d5044ce38dd02408bd0e53de965ef65905 + +2016-10-14 00:18 +0000 [ce4cfd2eca] Corey Farrell + + * Fix issues with bundled pjproject cached download. + + Previously when testing I had a preexisting makeopts in ASTTOPDIR. The + ordering of configure.ac causes --with-externals-cache to be processed + after third-party configure. In cases where the Asterisk clone is + cleaned it would cause pjproject to be downloaded to /tmp. This + moves processing of the externals cache and sounds cache to happen + before third-party configure. + + This also addresses a possible issue with the third-party Makefile. If + TMPDIR is set by the environment it would override the path given to + --with-externals-cache. + + ASTERISK-26416 + + Change-Id: Ifab7f35bfcd5a31a31a3a4353cc26a68c8c6592d + +2016-10-12 16:24 +0000 [3c54328c57] Richard Mudgett + + * Audit ast_json_pack() calls for needed UTF-8 checks. + + Added needed UTF-8 checks before constructing json objects in various + files for strings obtained outside the system. In this case string values + from a channel driver's peer and not from the user setting channel + variables. + + * aoc.c: Fixed type mismatch in s_to_json() for time and granularity json + object construction. + + ASTERISK-26466 + Reported by: Richard Mudgett + + Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096 + +2016-10-12 16:20 +0000 [7f8f125738] Richard Mudgett + + * json: Check party id name, number, subaddresses for UTF-8. + + * Updated unit test as ast_json_name_number() is now NULL tolerant. + + ASTERISK-26466 #close + Reported by: Richard Mudgett + + Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6 + +2016-10-11 18:14 +0000 [9621c9bcbc] Richard Mudgett + + * json: Add UTF-8 check call. + + Since the json library does not make the check function public we + recreate/copy the function in our interface module. + + ASTERISK-26466 + Reported by: Richard Mudgett + + Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99 + +2016-10-12 17:42 +0000 [e4bb9f9a37] Richard Mudgett + + * aoc.c: Whitespace cleanup + + * In s_to_json() removed unnecessary ast_json_ref() to ast_json_null() + when creating the type json object. The ref is a noop. + + Change-Id: I2be8b836876fc2e34a27c161f8b1c53b58a3889a + +2016-10-12 17:27 +0000 [bcac905bd3] Richard Mudgett + + * app_queue.c: Fix clearing of pause reason string. + + The pause reason is not always cleared when it should be cleared. + + * Made set_queue_member_pause() always clear pause reason if not pausing + with a reason string. + + Change-Id: I993dad19626ec017478a230e980989438b778c53 + +2016-10-12 16:22 +0000 [ee4ae2b648] Richard Mudgett + + * app_minivm.c: Fix malformed ast_json_pack() call. + + Change-Id: I082b239022fac462666e52a14a44304748908dc0 + +2016-10-12 16:30 +0000 [90ae4e4337] gtjoseph + + * res_config_mysql: Fix several issues related to recent table changes + + Unlike any of the other database drivers, res_config_mysql checks that + the table definition matches the requirements for every insert and + update statement. Since all requirements are forced to 'char', any + column that isn't a char, like ps_contacts' expiration_time, + qualify_timeout, etc., will throw a warning. It's kinda harmless but + very misleading. Since no other driver does those checks on insert + or update, they've been removed from res_config_mysql. Also, all + the logic that actually attempted to ALTER the table to fix the issue + has been removed. With the move to alembic, the auto-alter + functionality is not only unnecessary, it's also dangerous. + + The other issue is that res_config_mysql calls the mysql_insert_id + function inside store_mysql. Presumably the intention was to return + the number of rows inserted DESPITE A NOTE IN THE CODE THAT THE VALUE + IS NON_PORTABLE AND MAY CHANGE. That value is then returned to + config realtime as the number of rows inserted. Guess what? The value + changed. It now only returns the number of rows inserted if there's an + auto increment column on the table, which ps_contacts doesn't have. + Otherwise it returns 0. So now, the insert worked but we tell config + realtime and sorcery that no rows were inserted. That call to + mysql_insert_id was removed and we now always return 1 if the insert + succeeded. We're only inserting 1 row at a time anyway. If the insert + fails, we still return -1. + + ASTERISK-26362 #close + Reported-by: Carlos Chavez + + Change-Id: I83ce633efdb477b03c8399946994ee16fefceaf4 + +2016-09-29 13:08 +0000 [86c15db6a1] Torrey Searle + + * res_fax: Fix a tight race condition causing fax to crash in audio fallback + + When T.38 gets rejected and G711 failback occurs there is a period of + time where neither AST_FAX_TECH_T38 nor AST_FAX_TECH_AUDIO is set, + leading to a crash. + + Change-Id: Icc3f457b2292d48a9d7843dac0028347420cc982 + +2016-09-30 16:29 +0000 [29b7a5b00f] Rodrigo Ramírez Norambuena + + * Add text of cdr directory into README.md for ast-db-manage + + Change-Id: I68321c4bea50730c39fdb486e5f23aeadd1ad636 + +2016-10-06 09:58 +0000 [f919edc4e2] gtjoseph + + * app_dial: Add the "Q" option to set the cause on unanswered channels + + The "Q" option will set the cause on the unanswered channels when + another channel answers. It overrides the default of + ANSWERED_ELSEWHERE. + + NOTE: chan_sip does not support setting the cause on a CANCEL to + anything other than ANSWERED_ELSEWHERE. + + ASTERISK-26446 #close + + Change-Id: I71742e0919aaa16784c30a2b2e73fbeed7672e47 + +2016-10-11 06:55 +0000 [a859bcb49c] Alexander Traud + + * chan_sip: Support nat=auto_comedia or nat=force_rport,auto_comedia. + + In the SIP channel driver chan_sip, auto_comedia was expected to be used in + tandem with auto_force_rport. Or stated differently: Only when auto_force_rport + was chosen (the default), auto_comedia worked. This change allows auto_comedia + to be set independently of the state of (auto_)force_rport. For example, + nat=force_rport,auto_comedia is useful for IPv4/IPv6 Dual Stack deployments + when IPv6 clients are behind a Firewall. + + ASTERISK-26457 #close + + Change-Id: Ib29d66c6dbb61648e371e01fc36c6978ddae5bc2 + +2016-10-10 16:59 +0000 [a884b26392] Badalyan Vyacheslav + + * vector: After remove element recheck index + + Small fix. It is necessary to double-check + the index that we just removed because there + is a new element. + + ASTERISK-26453 #close + + Change-Id: Ib947fa94dc91dcd9341f357f1084782c64434eb7 + +2016-09-29 12:52 +0000 [349c34f72a] Torrey Searle + + * res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridge + + If a bridge switched to P2P when a DTMF was in progress it + was possible for the DTMF to continue being sent indefinitely. + + Change-Id: I7e2a3efe0d59d4b214ed50cd0b5d0317e2d92e29 + +2016-10-10 10:59 +0000 [9da3489d24] Badalyan Vyacheslav + + * res_pjsip_config_wizard: Memory leak in module_unload + + Fixed a memory leak. It removes only the first element. + Added a useful feature in vector.h to remove all items + under the CMP through a callback function / macro. + + ASTERISK-26453 #close + + Change-Id: I84508353463456d2495678f125738e20052da950 + +2016-10-09 21:53 +0000 [fa2885b3ff] Badalyan Vyacheslav + + * cel_odbc: Fix memory leak on module unload + + Change-Id: Ic7a1236eba2408090fdabb5f717b5fa455ead715 + +2016-10-03 11:30 +0000 [e6b0053d75] gtjoseph + + * bundled_pjproject: Add tests for programs used by the Makefile, et al. + + Added tests for bzip2, tar, patch, sed and nm to configure.ac. + + Set DOWNLOAD_TO_STDOUT to a working command line regardless of + whether the download program is wget, curl or fetch. + + Added a 'configure.m4' file to the third-party directory which takes + care of calling any third-party project setup. Had to move some + pjproject_bundled stuff up in configure.ac so it was called before + the third-party configure macro. + + The pjproject tarball is now downloaded to the externals_cache_dir if + it was specified on the ./configure command line + + Removed regeneration of the pjproject aconfigure file. It was only + needed for an old patch that no longer applies. + + Converted the tests for symbols to explicit tests since we know that + they're now available in the bundled version. Saves a little time + during configure. + + ASTERISK-26416 #close + Reported-by: Corey Farrell + + Change-Id: Id1d94251c0155f8dd41b7de7067f35cfbaafbb9b + +2016-10-05 14:53 +0000 [0dc0356e39] gtjoseph + + * pjproject_bundled: Add MALLOC_DEBUG capability + + pjproject_bundled will now use the asterisk memory debugging APIs + if MALLOC_DEBUG is turned on in menuselect. + + Because this required stubs for the executable programs and the python + bindings, some Makefile reorganization was needed to properly handle + the dependencies. As a result, the makefile now individually makes + each of the pjproject libraries separately instead of making them all + in 1 shot. The only visible change is that there are separate status + lines printed for each library instead oif 1 for all libs. Also, the + making of the pjproject dependency files was eliminated. They're not + needed for building unless you're actively modifying pjproject source + files and it makes the build process faster. Finally, any issues with + parallel builds should be resolved again making the build faster. + + Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0 + +2016-10-07 17:32 +0000 [dd873bcada] Corey Farrell + + * astobj2: Add backtrace to log_bad_ao2. + + * Compile __ast_assert_failed unconditionally. + * Use __ast_assert_failed to log messages from log_bad_ao2 + * Remove calls to ast_assert(0) that happen after log_bad_ao2 was run. + + Change-Id: I48f1af44b2718ad74a421ff75cb6397b924a9751 + +2016-10-04 16:59 +0000 [86550f9c17] gtjoseph + + * alembic: Allow cdr, config and voicemail to exist in the same schema + + cdr, config and voicemail are all separate alembic trees. Because + alembic's default is to use a table named 'alembic_version' to store + the current tree revision, the 3 trees can't exist in the same schema + without stepping on each other. + + Now each tree uses 'alembic_version_' as the version table. + Each tree's env.py script now first checks for 'alembic_version'. If + it finds it AND its revision is in the tree's history, the script + renames it to 'alembic_version_'. Regardless, the script + then continues with the migration using 'alembic_version_' + and creates that table if it's not found. The result is that if an + existing 'alembic_version' table was found but it didn't belong to this + tree, it's left alone and 'alembic_version_' is used or + created. + + WARNING: If multiple trees are using the same schema, they MUST NOT + CRU or D any objects with names that might exist in the other trees. + An example would be 'yesno_values' type. If two trees perform + operations on it, one tree could pull it out from under the other. + Thankfully we currently don't share any names among cdr, config and + voicemail. + + NOTE: Since the env.py scripts in each tree were identical, a common + env.py has been placed in the ast-db-manage directory and a symlink + to it has been placed in each tree directory. + + ASTERISK-24311 #close + Reported-by: Dafi Ni + + Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898 + +2016-10-05 04:25 +0000 [f166681c12] Alexander Traud + + * chan_sip: Honor support of Symmetric Response (rport) for SIP requests. + + In the SIP channel driver chan_sip, the default is "auto_force_rport". When no + NAT was detected, for example in case of IPv6, Asterisk uses the IP address + from the headers within the SIP-REGISTER for subsequent SIP signaling. When + the remote party specifies support for Symmetric Response (RFC 3581) via the + parameter "rport", Asterisk should not extract the port from the SIP headers + but reuse the port of the transport. This did not happen because of a typo. + + ASTERISK-26438 #close + + Change-Id: If6e7891848aaf96666dee5305695f7c6667cd5a6 + +2016-10-04 20:46 +0000 [430f6e5388] Michael Walton + + * audiohooks: Remove redundant codec translations when using audiohooks + + The main frame read and write handlers in main/channel.c don't use the + optimum placement in the processing flow for calling audiohooks + callbacks, as far as codec translation is concerned. This change places + the audiohooks callback code: + * After the channel read translation if the frame is not linear before + the translation, thereby increasing the chance that the frame is linear + as required by audiohooks + * Before the channel write translation if the frame is linear at this + point + This prevents the audiohooks code from instantiating additional + translation paths to/from linear where a linear frame format is already + available, saving valuable CPU cycles + + ASTERISK-26419 + + Change-Id: I6edd5771f0740e758e7eb42558b953f046c01f8f + +2016-09-29 14:02 +0000 [2449d2877c] Kevin Harwell + + * Remove "format_ogg_opus: New format" + + This reverts commit 40aa28131bc30b4516da2b20eb1a1e043920169c. + + ASTERISK-26426 #close + + Change-Id: I81e55c3c512f1dd6f49896f0c6b97a07d74fd8f5 + +2016-09-27 16:10 +0000 [f0a2e628d6] gtjoseph + + * download_externals: Fix issue with re-install + + Needed to ignore an xmlstarlet return code for optional element. + + Change-Id: I6a96f709b4b38c9a3f3dda4e8b07903787e16873 + Reported-by: Dan Jenkins + +2016-09-22 09:49 +0000 [5258c067ae] gtjoseph + + * codec_opus: Add download ability to menuselect + + Updated codecs/codecs.xml to add codec_opus to the external + download list. + + ASTERISK-26409 + + Change-Id: Ia07b36539f30e852125fb2b94147dc9774df31a4 + +2016-07-23 14:50 +0000 [a5af8709c8] gtjoseph + + * codec_opus: Replace res_format_attr_opus with the one from codec_opus + + Preparation + + ASTERISK-26409 + + Change-Id: I9f20e7cce00c32464d9a180e81283d49d199d0a3 + (cherry picked from commit 59f7662a93bf9c07204fb50e1020a0f5bfbbd5c9) + +2016-07-23 15:56 +0000 [44c0c51cf1] gtjoseph + + * format_ogg_opus: New format + + Add Ogg/Opus playback support. + + This uses libopusfile in order to be able to read .opus files and play + them back. + + Writing/recording support is not present at this time. + + ASTERISK-26409 + + Change-Id: I8815d23345108d8ca7c0bd640f6a1ce6b4f56955 + +2016-09-24 19:05 +0000 [0ab443007b] gtjoseph + + * build_tools: Add ability to download variants to download_externals + + Some external packages have multiple variants that apply to different + builds of asterisk. The DPMA for instance has a "bundled" variant that + needs to be downloaded if asterisk was configured with + --with-pjproject-bundled. + + There are 2 ways to specify variants: + + If you need the user to make the decision about which variant to + download, simply create multiple menuselect "member" entries like so... + + + external + xmlstarlet + bash + no + + + + external + xmlstarlet + bash + no + + + Note that the second entry has "-" appended to the name. + You can then use the existing menuselect facilities to restrict which + members to enable or disable. Youy probably don't want the user to + enable multiple at the same time. + + If you want to hide the details of the variants, the better way to + do it is to create 1 member with "variant" elements. + + + external + xmlstarlet + bash + no + + + + + + + + + + The condition must be a bash expression suitable for use with an "if" + statement. Any environment variable can be used plus those available + in makeopts. + + In this case, if asterisk was configured with --with-pjproject-bundled + the bundled variant will be automatically downloaded. Otherwise the + normal version will be downloaded. + + Change-Id: I4de23e06d4492b0a65e105c8369966547d0faa3e + +2016-09-22 01:40 +0000 [a0a17a8c6f] Aaron An + + * channels/chan_pjsip: fix HANGUPCAUSE function bug. + + HANGUPCAUSE not return 'SIP 200 Ok' when dialed channel answered. + This patch change the call order of ast_queue_control_data + and ast_queue_control in chan_pjsip_incoming_response. + + ASTERISK-26396 #close + Reported by: AaronAn + Tested by: AaronAn + + Change-Id: Ide2d31723d8d425961e985de7de625694580be61 + +2016-09-23 09:54 +0000 [0502675e5c] Alessandro Crespi + + * chan_sip: Resolve externhost not to IPv6; instead go for IPv4. + + For the channel driver chan_sip, you specify externhost=example.com in sip.conf + when your Asterisk is behind a NAT and your IP address is assigned dynamically. + Or stated differently: You do not have a static IP address to use "externaddr" + directly. This NAT support is quite handy but just about IPv4. Previously, + Asterisk resolved "externhost" to any IP version. When the first DNS answer + resolved to an IPv6, Asterisk sent an IPv6 in SIP/SDP for origin (o=) and + connection (c=). This happened in outgoing SIP-REGISTER and while answering + SIP-INVITE. If the remote peer is IPv4-only, it might not handle o=/c= with an + IPv6. This change makes sure, no IPv6 is resolved anymore for "externhost". + + ASTERISK-18232 #close + Reported by: Jacek Kowalski + Tested by: Alexander Traud + patches: + changes.patch submitted by Alessandro Crespi + + Change-Id: If68eedbeff65bd1c1d8a9ed921c02ba464b32dac + +2016-09-20 09:42 +0000 [0056bcaebd] gtjoseph + + * chan_sip: Address runaway when realtime peers subscribe to mailboxes + + Users upgrading from asterisk 13.5 to a later version and who use + realtime with peers that have mailboxes were experiencing runaway + situations that manifested as a continuous stream of taskprocessor + congestion errors, memory leaks and an unresponsive chan_sip. + + A related issue was that setting rtcachefriends=no NEVER worked in + asterisk 13 (since the move to stasis). In 13.5 and earlier, when a + peer tried to register, all of the stasis threads would block and + chan_sip would again become unresponsive. After 13.5, the runaway + would happen. + + There were a number of causes... + * mwi_event_cb was (indirectly) calling build_peer even though calls to + mwi_event_cb are often caused by build_peer. + * In an effort to prevent chan_sip from being unloaded while messages + were still in flight, destroy_mailboxes was calling + stasis_unsubscribe_and_join but in some cases waited forever for the + final message. + * add_peer_mailboxes wasn't properly marking the existing mailboxes + on a peer as "keep" so build_peer would always delete them all. + * add_peer_mwi_subs was unsubscribing existing mailbox subscriptions + then just creating them again. + + All of this was causing a flood of subscribes and unsubscribes on + multiple threads all for the same peer and mailbox. + + Fixes... + * add_peer_mailboxes now marks mailboxes correctly and build_peer only + deletes the ones that really are no longer needed by the peer. + * add_peer_mwi_subs now only adds subscriptions marked as "new" instead + of unsubscribing and resubscribing everything. It also adds the peer + object's address to the mailbox instead of its name to the subscription + userdata so mwi_event_cb doesn't have to call build_peer. + + With these changes, with rtcachefriends=yes (the most common setting), + there are no leaks, locks, loops or crashes at shutdown. + + rtcachefriends=no still causes leaks but at least it doesn't lock, loop + or crash. Since making rtcachefriends=no work wasnt in scope for this + issue, further work will have to be deferred to a separate patch. + + Side fixes... + * The ast_lock_track structure had a member named "thread" which gdb + doesn't like since it conflicts with it's "thread" command. That + member was renamed to "thread_id". + + ASTERISK-25468 #close + + Change-Id: I07519ef7f092629e1e844f855abd279d6475cdd0 + +2016-09-21 15:03 +0000 [323aff3a09] Joshua Colp + + * core: Ensure presencestate subtype and message are NULL. + + When retrieving presence state information there is no + guarantee that the subtype and message passed in are + set to NULL. This change ensures they are. + + ASTERISK-26397 #close + + Change-Id: I61f8187972d5d8bbd7d6b7f4daa4f4f7e8237b23 + +2016-09-21 10:48 +0000 [10c180760c] Joshua Colp + + * res_odbc: Make pooling option deprecation notice more useful. + + This changes the notice for the deprecation of the old + pooling options to point to the new option for doing + pooling. This gives a clearer direction as to what to + look into. + + ASTERISK-26389 #close + + Change-Id: I2ca9cdfdcd75aec170a7db9d5ff69a4cd25b7c10 + +2016-09-12 07:37 +0000 [42cc267016] Tzafrir Cohen + + * cdr_mysql: fix UTC support + + * Make 'cdrzone=UTC' work properly. + * Fix the documentation of cdr_mysql.conf: it's cdrzone and not timezone + + ASTERISK-26359 #close + + Change-Id: I2a6f67b71bbbe77cac31a34d0bbfb1d67c933778 + +2016-09-21 08:46 +0000 [f16ab19292] Joshua Colp + + * odbc: Remove options that are no longer applicable. + + The pooling, shared_connection, limit, and idlecheck options + are no longer used in res_odbc. + + ASTERISK-26389 + + Change-Id: I2fde7b467d01f9d1c82cc0a339bb4f7e1dd6bbe6 + +2016-09-20 15:17 +0000 [c9ce299b64] Corey Farrell + + * core: Fix LOW_MEMORY missing symbol ast_pbx_uuid_get. + + Move the function outside the conditional block that excludes + LOW_MEMORY. + + ASTERISK-26273 #close + + Change-Id: Ic290fa128222c410c3531107e30efacabc8493b4 + +2016-09-20 10:05 +0000 [610eb4c189] Corey Farrell + + * logger: Fix default console settings. + + When logger.conf is missing or invalid we should be printing notices, + warnings and errors to the console. The logmask was incorrectly + calculated. + + Change-Id: Ibaa9465a8682854bc1a5e9ba07079bea1bfb6bb3 + +2016-06-27 14:26 +0000 [36092ee3a0] Tzafrir Cohen + + * sd_notify (systemd status notifications) support + + sd_notify() is used to notify systemd of changes to the status of the + process. This allows the systemd daemon to know when the process + finished loading (and thus only start another program after Asterisk has + finished loading). + + To use this, use a systemd unit with 'Type=notify' for Asterisk. + + This commit also adds the function ast_sd_notify(), a wrapper around + sd_notify that does nothing if not built with systemd support. + + Also adds support for libsystemd detection in the configure script. + + Change-Id: Ied6a59dafd5ef331c5c7ae8f3ccd2dfc94be7811 + (cherry picked from commit 07b95f7c65b7c083724f1af2b26f93cc22cad58c) + +2016-09-19 14:21 +0000 [9372d32100] Walter Doekes + + * asterisk.c: Non-root users also get the astcanary after core restart. + + Without this change, a 'core restart' would kill the astcanary forever + if you're not running as root. Both with and without this patch, the + scheduling priority was still SCHED_RR after restart. + + Additionally, the astcanary is now spawned if you start with high + priority and Asterisk doesn't get a chance to lower it. For example + through: `chrt -r 10 sudo -u asterisk asterisk -c` + + Also reap killed astcanary processes on core restart. + + ASTERISK-26352 #close + + Change-Id: Iacb49f26491a0717084ad46ed96b0bea5f627a55 + +2016-09-19 09:40 +0000 [e96448e991] Walter Doekes + + * asterisk.c: When astcanary dies on linux, reset priority on all threads. + + Previously only the canary checking thread itself had its priority set + to SCHED_OTHER. Now all threads are traversed and adjusted. + + ASTERISK-19867 #close + Reported by: Xavier Hienne + + Change-Id: Ie0dd02a3ec42f66a78303e9c1aac28f7ed9aae39 + +2016-09-09 06:35 +0000 [01884a7af6] Timo Teräs + + * Fix showing of swap details when sysinfo() is available + + If sysinfo() is available, but not sysctl() or swapctl() the + printing code for swap buffer sizes is incorrectly omitted. + The above condition happens with musl c-library. + + Fix #if rule to consider defined(HAVE_SYSINFO). And also + remove the redundant || defined(HAVE_SYSCTL) which was + incorrectly there to start with. Now swap information is + displayed only if an actual libc function to get it is + available. + + This also fixes warnings previously seen with musl libc: + + [CC] asterisk.c -> asterisk.o + asterisk.c: In function 'handle_show_sysinfo': + asterisk.c:773:6: warning: variable 'totalswap' set but not used + [-Wunused-but-set-variable] + int totalswap = 0; + ^~~~~~~~~ + asterisk.c:770:11: warning: variable 'freeswap' set but not used + [-Wunused-but-set-variable] + uint64_t freeswap = 0; + ^~~~~~~~ + + Change-Id: I1fb21dad8f27e416c60f138c6f2bff03fb626eca + +2016-09-12 18:00 +0000 [cdbad152c7] Richard Mudgett + + * res_config_odbc.c: Fix buffer size limitation creating invalid SQL. + + Creating ODBC SQL queries resulted in queries too large to fit into the + supplied buffer. The resulting truncated buffer contained an invalid SQL + query. + + * Made SQL query generation code use a thread storage buffer that can + increase in size as needed. + + * Fixed bad multi-line warning messages. + + ASTERISK-26263 #close + Reported by: Jeppe Ryskov Larsen + + Change-Id: I23f3cdd43c2dac80bed3ded4dd77d18cb17f21ae + +2016-09-14 08:42 +0000 [449719be00] Joshua Colp + + * res_pjsip_multihomed: Change Contact port to listening port. + + The res_pjsip_multihomed module determines what interface and transport + a request is going out on and updates the SIP message accordingly with + the address information. This currently incorrectly updates the Contact + header for connectionful protocols to the ephemeral connection port, + instead of the bound address for the listening socket which can actually + accept the connection back. If the remote side attempts to connect back on + the epehemeral port it will fail. + + This change makes it so the port is updated to the bound port on + connectionful protocols and is maintained on UDP (as there can be + multiple of those). + + ASTERISK-26374 #close + + Change-Id: I50f8dab65b9f75117d73ba5f6bbcf6c9871854ab + +2016-09-07 14:48 +0000 [4d64b176eb] gtjoseph + + * pjproject_bundled: Prevent SERVFAIL from marking name server bad + + A name server that returns "Server Failure" is indicating only that + the server couldn't process that particular request. We should NOT + assume that the name server is incapable of serving other requests. + + Here's the scenario we've been encountering... + + * 2 local name servers configured in resolv.conf. + * An OPTIONS request causes a request for A and AAAA records to go out + to both nameservers. + * The A responses both come back successfully resolved. + * Because of an issue at some upstream nameserver, the AAAA responses + for that particular query come back as "SERVFAIL" from both local + name servers. + * Both local servers are marked as bad and no further queries can be + sent until the 60 second ttl expires. Only previously cached results + can be used. + * In this case, 60 seconds is just enough time for another OPTIONS + request to go out to the same host so the cycle repeats. + + We could set the bad ttl really low but that also affects REFUSED and + NOTAUTH which probably DO signal a real server issue. Besides, even + a really low bad ttl would be an issue on a pbx. + + Although we use our own resolver in 14 and master and don't have this + issue there, Teluu has merged this patch upstream so it's appropriate + to cherry-pick to 14 and master to keep pjproject consistent. + + + Change-Id: Ie03ba902288e274aff23f9b9bb2786e1e8be09e0 + +2016-09-14 07:59 +0000 [1cac856e17] Joshua Colp + + * rtp: Preserve timestamps on video frames. + + Currently when receiving video over RTP we store only + a calculated samples on the frame. When starting the video + it can take some time for this calculation to actually yield + a value as it requires constant changing timestamps. As well + if a video frame passes over multiple RTP packets this calculation + will fail as the timestamp is the same as the previous RTP + packet and the number of samples calculated will be 0. + + This change preserves the timestamp on the frame and allows + it to pass through the core. When sending the video this timestamp + is used instead of a new one being calculated. + + ASTERISK-26367 #close + + Change-Id: Iba8179fb5c14c9443aee4baf670d2185da3ecfbd + +2016-09-14 09:51 +0000 [9df4056d70] Joshua Colp + + * res_pjsip_transport_management: Convert time in log message to seconds. + + ASTERISK-26375 #close + + Change-Id: I46496af5cae41413e76d44d2068a7431279f09dc + +2016-09-13 05:34 +0000 [98e42cc662] Steve Davies + + * chan_sip: Fix session timeout on retransmit of non-UDP packets + + Change-Id I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 Enable Session-Timers for + SIP over TCP (and TLS) also disables SIP retransmits in chan_sip for non-UDP + connections, allowing the TCP layer to handle the retransmits. Unfortunately, + this caused sessions to be terminated with a retransmit timeout becasue it + stopped at the point of the first retrans call. + + This patch waits for the 64*T1 timer to expire instead. + + ASTERISK-19968 + + Change-Id: I844f26801aada10bc94e9bebe6e151f0a8443204 + +2016-09-12 12:25 +0000 [0388882cdb] Richard Mudgett + + * app_queue: Fix CLI "queue show" and AMI Queues action output truncation. + + The output of CLI "queue show" and AMI Queues action is truncated and + "failed to extend from 240 to 327" messages are generated if the queue + member and interface names are lengthy. + + * Increase the string buffer size from 240 to 512 in order to accommodate + for more information fields added to the output since v1.8. + + ASTERISK-26360 #close + Reported by: Richard Mudgett + + Change-Id: Id99c03cf5362453b80491a4b3b0434cb67aa966d + +2016-09-12 03:28 +0000 [da8ba990d1] Walter Doekes + + * chan_sip: Allow target refresh (Contact update) on re-INVITE. + + Previously, the Contact was stored only on initial INVITE and on any + 18X and 200. That meant that after re-INVITEs from *us* the Contact + could get updated, but after re-INVITEs from the *peer*, it did not. + + This changeset fixes this inconsistency, properly allowing target + refreshes through re-INVITES (RFC3261, 12.2). + + If your strictrtp setting allows it, this change allows you to switch + the source IP of a connected/calling device mid-call with a simple + re-INVITE from the new IP. + + ASTERISK-26358 #close + + Change-Id: Ibb8512054ab27c8c3d2514022568fde943bf2435 + +2016-08-31 15:22 +0000 [e9ddab4685] Richard Mudgett + + * sip_to_pjsip.py: Map legacy_useroption_parsing. + + Map the sip.conf general section legacy_useroption_parsing to the + new pjsip.conf global ignore_uri_user_options. + + ASTERISK-26316 + Reported by: Kevin Harwell + + Change-Id: I78108a31995db19d41f4e1a07b3324692c5363fc + +2016-08-29 18:08 +0000 [30af92e78d] Richard Mudgett + + * res_pjsip: Add ignore_uri_user_options option. + + This implements the chan_sip legacy_useroption_parsing option but with a + better name. + + * Made the caller-id number and redirecting number strings obtained from + incoming SIP URI user fields always truncated at the first semicolon. + People don't care about anything after the semicolon showing up on their + displays even though the RFC allows the semicolon. + + ASTERISK-26316 #close + Reported by: Kevin Harwell + + Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62 + +2016-09-09 06:26 +0000 [7ed5dc2c58] Walter Doekes + + * contrib: Let safe_asterisk script continue without /dev/tty9. + + If you use the safe_asterisk script, it uses hardcoded defaults before + running configurable values from /etc/asterisk/startup.d. The hardcoded + default has TTY=9. Some containerized environments don't have such a + TTY, and safe_asterisk would stop. + + The custom configuration from /etc/asterisk/startup.d/* isn't read until + after it stopped, so changing TTY in a custom config did not help. + + This changeset changes safe_asterisk to continue if the TTY setting was + untouched and /dev/tty9 and /dev/vc/9 aren't found. + + Change-Id: I2c7cdba549b77f418a0af4cb1227e8e6fe4148fc + +2016-09-09 05:39 +0000 [7580a736bb] Joshua Colp + + * res_pjsip: Only invoke unidentified endpoint logic when unidentified. + + The code was incorrectly invoking the unidentified logic when + an endpoint had actually been identified, causing log messages + to be output. + + ASTERISK-26349 #close + + Change-Id: Id8104fc9e3d138d5e8b6f6977ecc08765fd17d4f + +2016-08-23 06:35 +0000 [efcfc4c1ee] Corey Farrell (license 5909) + + * chan_sip: Don't allocate new RTP instances on top of old ones. + + In some scenarios dialog_initialize_rtp can be called multiple times on + the same dialog. This can cause RTP instances to be leaked along with + multiple file descriptors for each instance. + + This change makes it so the existing RTP instances are destroyed and + not overwritten, stopping the memory leak. + + ASTERISK-26272 #close + patches: + ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909) + + Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73 + +2016-08-16 15:34 +0000 [f1ffc22933] Mark Michelson + + * res_pjsip: Do not crash on ACKs from unknown endpoints. + + The endpoint identification PJSIP module is intended to identify which + endpoint an incoming request is from. If an endpoint is not identified, + then an artificial endpoint is used in its place when proceeding. + + The problem is that the ACK request type is an exception to the rule. + The artificial endpoint is not used when processing an ACK. This results + in the possibility of having a NULL endpoint being used further on. + + The reason ACK is an exception is an attempt not to spam security logs + with unidentified requests. Presumably, you've already logged the + unidentified request on the preceeding INVITE. + + Up until Asterisk 13.10, retrieving a NULL endpoint in this fashion + didn't cause an issue. A new change in 13.10 added endpoint ACL checking + shortly after endpoint identification. Because we are accessing a NULL + endpoint, this ACL check resulted in a crash. + + The fix here is to be sure to retrieve the artificial endpoint for all + request types. ACKs still do not generate unidentified request security + events. + + ASTERISK-26264 #close + Reported by nappsoft + + AST-2016-006 + + Change-Id: Ie0c795ae2d72273decb972dd74b6a1489fb6b703 + +2016-09-06 11:46 +0000 [23d6ec7417] Richard Mudgett + + * res_pjsip_messaging.c: Misc cleanups and fixes. + + * Eliminated RAII_VAR in get_outbound_endpoint(). + + * Simplify update_to() coding. However, this function can only be a NoOp + because the To string can only be a URI and not a name-address formatted + string. + + * Simplify update_from() coding. Also fixed a code path modifying the + from string when the caller could still want to use the original string. + + * Fixed msg_data_create() incompletely removing the "pjsip:" to then add + back the "sip:" string if needed. The code didn't handle the "pjsip:sip:" + case because it left the colon after pjsip in the string. + + Change-Id: I68a09a665f6d4daa9eaa59069045ab69122e28db + +2016-09-07 16:00 +0000 [5f19657710] Joshua Colp + + * res_pjsip: Allow global headers to be overridden. + + Currently when you add global headers from the dialplan both + the header in the dialplan and the globally configured header + are added to the resulting SIP INVITE. This change makes it + so the headers in the dialplan take precedence and are the + only ones added. + + Change-Id: I36f864298f38db3632ad503edc11267cb8ffb3ad + +2016-08-11 12:10 +0000 [206d4f57dc] Tzafrir Cohen + + * followme: initialize all config items on reload + + Some configuration directives were not initialized on reload, and hence + were not reset to default if they were removed from followme.conf. + + ASTERISK-26288 #close + + Change-Id: Ief829e16374ad1e0ecfd63e6ee4923b5a1d1c150 + +2016-08-01 20:55 +0000 [117a7741c8] gtjoseph + + * build: Add download capability for external packages + + The DPMA and g729a, silk, siren7 and siren14 codecs hosted at + http://downloads.digium.com/pub/telephony/ are now listed in the + "External" sections of the "Resource Modules" and "Codec Translators" + pages in menuselect. Any that are selected will automatically be + downloaded and installed when "make install" is run. Their LICENSE and + README (if avaialble) files will be installed to + ASTVARLIBDIR/documentation/thirdparty/. + + Example use with codecs: + + The codecs/codecs.xml file is a menuselect style xml file that lists + the codecs to be included. Their support levels are 'external', which + triggers the download and install, and defaultenabled is no. Also + because codec_g729a is actually in a directory named codec_g729 on the + download server, the newly added 'member_data' element is used to + override the default of the directory name being the package name. You + can use the 'directory_name' attribute to keep default base URL + (http://downloads.digium.com/pub/telephony/) but use the new directory, + or you use the 'remote_url' attribute to specify a full URL to the + download directory. In this case, you must still follow the same + subdirectory naming conventions as that used for the packages located + at 'http://downloads.digium.com/pub/telephony'. + + A new configure option '--with-externals-cache' was added and like + '--with-sounds-cache' it allows the installer to cache tarballs so + they're not downloaded every time. + + To assist with the download and install process, each external package + now has a manifest.xml file that, among other things, contains a package + version and checksums for each file in the tarball. The manifest is + saved to both the cache directory and ASTMODDIR and together with the + manifest.xml on the downloads site, tells the install scripts whether + a download and/or update is needed. + + bash and xmlstarlet are required for downloader operation. If they're + not installed, the external items in menuselect will be unavailable. + + Change-Id: Id3dcf1289ffd3cb0bbd7dfab3cafbb87be60323a + +2016-09-06 02:41 +0000 [d04ae7d1d8] Walter Doekes + + * chan_sip: Don't refuse calls with "optional crypto"; fall back to RTP. + + Certain SNOM phones send so-called "optional crypto" in their SDP body. + Regular SRTP setup looks like this: + + m=audio 64620 RTP/SAVP 8 0 9 99 3 18 4 101 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... + + SNOM-style "optional crypto" looks like this: + + m=audio 61438 RTP/AVP 8 0 9 99 3 18 4 101 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:... + + A crypto line is supplied, but the m-line does not have SAVP. + + When res_srtp.so is *not* loaded, then chan_sip.so treats the optional + crypto as regular RTP, but when res_srtp.so *is* loaded, it refuses the + incoming call with the following message: + + WARNING: process_sdp: Failed to receive SDP offer/answer with + required SRTP crypto attributes for audio + + For platforms that want to start providing SRTP this presents a + compatibility problem. + + This changeset lets chan_sip handle the SDP as if no crypto-line was + supplied: i.e. accept the call as regular RTP, just like it did before + res_srtp was loaded. + + Now you'll get this informative warning instead: + + WARNING: Ignoring crypto attribute in SDP because RTP transport is + insecure + + ASTERISK-23989 #close + Reported by: Olle Johansson + + Change-Id: I91a15ae05a0296e398d6b65f53bb11afde1d80e2 + +2016-09-03 16:04 +0000 [df3d0188e4] Matt Jordan + + * apps/app_dial: Fix crash on non-connect call paths for Privacy/Screening option + + In any scenario in which the callee is not connected to the caller, the + current code in app_dial will crash due to raising a Dial End Stasis + Message after the callee channel has been hung up. This patch corrects + the error by simply moving the explicit hangup of the callee (peer) + channel until after the dial end message. + + ASTERISK-25691 #close + + Change-Id: I816a414014424d0d8c80e2a3cbef13ef8c63798d + +2016-09-03 16:02 +0000 [a64063cc97] Matt Jordan + + * apps/app_dial: Set the DIALSTATUS to NOANSWER on privacy option 5 + + If the callee selects option '5' using the Dial application's privacy + (P) option, the DIALSTATUS is erroneously set to ANSWER. This option + reflects the callee sending the caller to VoiceMail one time; the call + is definitely *not* ANSWERed in such a scenario. With this patch, the + DIALSTATUS is instead set to NOANSWER, which is the same DIALSTATUS that + is set when the 'send to VoiceMail every time' option is set. + + ASTERISK-25691 + + Change-Id: Iaf0c9f0fa00545e7366443875e2bb7d9a89a1358 + +2016-08-30 16:40 +0000 [03fc438f6e] Richard Mudgett + + * res_pjsip_registrar.c: Reduce stack usage in find_aor_name(). + + Change-Id: I8aebad1fdcf303bd115b59a4b57fbbd5b2267f09 + +2016-08-29 18:06 +0000 [b5e753227d] Richard Mudgett + + * pjsip_configuration.c: Ignore repeated identify by methods. + + Change-Id: Ied0c06043d1dfef8fdc9c9a808cf89b118119838 + +2016-08-30 17:26 +0000 [9b7501b6ad] Richard Mudgett + + * config_global.c: Comments and a default expression adjustment. + + Change-Id: Ia6a58f8c73a30da6874b3f94364dce162d6f1ad3 + +2016-08-31 15:14 +0000 [3314e1cec2] Richard Mudgett + + * sip_to_pjsip.py: Map canreinvite as directmedia alias. + + Change-Id: I48b8e150f96a3d2a24d8fc25fbe4f5aff9f4a6b2 + +2016-08-31 15:37 +0000 [6372f40ba0] Richard Mudgett + + * sip_to_pjsip.py: Fix typo converting outboundproxy registration. + + Change-Id: I6f30e5f9fcf8469ba0079fbf884047d54c2c0b15 + +2016-08-31 15:13 +0000 [11eb1afd2d] Richard Mudgett + + * sip_to_pjsip.py: Fix comment typo and tabs. + + Change-Id: If35174614545727817d329c60ba4456c028941b5 + +2016-08-31 15:56 +0000 [0f9b144c1a] Richard Mudgett + + * Sample configs: Eliminate false multiline comment block starts. + + Change-Id: Ie627def9604ae30abd80754f9e6f09874825aec6 + +2016-09-02 11:36 +0000 [8d1c535bd6] Richard Mudgett + + * format_cap.c: Fix CLI "core show channeltype Surrogate" crash. + + * Make ast_format_cap_get_names() NULL tolerant. + + ASTERISK-26331 #close + Reported by: CGI.NET + + Change-Id: Id67e93936dc8ec2a33a9d33655843d43b59285a3 + +2016-08-18 14:45 +0000 [9bca895469] Alexei Gradinari + + * res_pjsip_session: segfault on already disconnected session + + On heavy loaded system the TCP/TLS incoming calls could be + disconnected by pjproject while these calls are being + processed by asterisk which could use the session's memory pools. + If the session in the disconnected state then the session memory + pools were already freed, so we get segfault. + + This patch adds a lifetime control on an INVITE session to pjproject. + The lifetime of the session is manipulated by calling + pjsip_inv_add_ref/pjsip_inv_dec_ref. + This patch uses these functions to inform pjproject that the + session is in use. + + This patch adds check if the session state is not disconnected + and also checks if the memory pool is not NULL. + + This patch also places tasks 'session_end' and 'session_end_completion' + into session's serializer to avoid race condition. + + ASTERISK-26291 #close + + Change-Id: I4d28b1fb3b91f0492a911d110049d670fdc3c8d7 + +2016-08-10 15:14 +0000 [63feffa126] Mark Michelson + + * ConfBridge: Make some announcements asynchronous. + + Confbridge announcements tend to block a channel while they are being + played. In some circumstances, this is warranted since you want that + particular channel not to hear the announcement (Example: "John Doe has + entered the conference"). For others it makes less sense. + + This change first introduces methods for playing sounds asynchronously + into the conference. This is very similar to how synchronous sounds are + played, except the channel initiating the playback does not wait for the + sound to complete before moving on. + + Asynchronous announcements are used for two circumstances: + * Sounds played for a user after they have left the bridge + * Sounds that play first to a single user and then the rest of the + conference (if the channel and conference use the same language) + + ASTERISK-26289 #close + Reported by Mark Michelson + + Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a + +2016-08-31 12:23 +0000 [a002a4d2db] Michael Kuron + + * app_mp3: Use correct buffer size and the same sample rate as the channel + + Previously, the buffer used for MP3 streamed from HTTP servers had a size of + 1 MB. For 8 kHz mono audio at 16 bit resolution, such a buffer covers about 1 + minute. Only when the buffer is full does audio start to play. + For MP3 files streamed from a server, that is usually not a big deal as long as + the connection to the server is fast enough to supply that much data within a + second or two. For MP3 live streams however, it takes 1 minute to download 1 + minute of audio, so without this change, app_mp3 wasn't really usable for MP3 + live streams. + This commit changes the buffer size so that it covers 6 seconds of an MP3 file + streamed from a server and 0.5 seconds of an MP3 live stream. The latter is + identified by the use of a .m3u file extension. + + app_mp3 so far only supported 8 kHz audio. + Now it always runs at the sample rate of the channel. + + ASTERISK-26085 #close + + Change-Id: Id1ee274733cd804a0edecf7450329b72f1235af0 + +2016-08-26 10:39 +0000 [308a65fe6c] Alexei Gradinari + + * res_pjsip: qualify/unqualify added/deleted realtime endpoints + + If the PJSIP endpoint's AOR with the permanent contact + was deleted from the realtime storage the res_pjsip module + continues trying to qualify this contact. + The error 'Unable to find an endpoint to qualify contact' + appeares every 'qualify_frequency' seconds. + This patch deletes this contact in this case. + + The PJSIP endpoint's AOR with the permanent contact + is never qualified if it is added to realtime storage + after asterisk started. + This patch adds qualifying for the AOR's permanent contacts + on the first handling of this AOR. + + ASTERISK-26319 #close + + Change-Id: Ib93dded9121edb113076903d1aa95402f799f8fe + +2016-08-17 02:51 +0000 [2fa168348e] chris de rock + + * app_macro: Consider '~~s~~' as a macro start extension. + + As described in issue ASTERISK-26282 the AEL parser creates macros with + extension '~~s~~'. app_macro searches only for extension 's' so the + created extension cannot be found. with this patch app_macro searches for + both extensions and performs the right extension. + + ASTERISK-26282 #close + + Change-Id: I939aa2a694148cc1054dd75ec0c47c47f47c90fb + +2016-08-29 07:10 +0000 [27951792c4] Etienne Lessard + + * pbx.c: Prevent infinite recursion in manager_show_dialplan_helper. + + Previously, if context A was including context B and context B was including + context A, i.e. if there was a circular dependency between contexts, then + calling manager_show_dialplan_helper could lead to an infinite recursion, + resulting in a crash. + + This commit applies the same solution as the one implemented in the + show_dialplan_helper function. The manager_show_dialplan_helper and + show_dialplan_helper functions contain lots of code in common, but the former + was missing the "infinite recursion avoidance" code. + + ASTERISK-26226 #close + + Change-Id: I1aea85133c21787226f4f8442253a93000aa0897 + +2016-08-26 14:34 +0000 [fb82fdb013] gtjoseph + + * pjproject_bundled: Disable srtp use by pjmedia + + The reason for the disable is that while Asterisk works fine with older + libsrtp versions, newer versions of pjproject won't compile with them. + Debian 6 for instance, has libsrtp 1.4.4 which is older than what + pjproject is expecting. + + We don't use most of pjmedia but we DO use it for SDP negotiation. + Luckily disabling srtp in pjmedia doesn't interfere with it's ability + to negitiate a secure channel. The proper crypto attributes are + negotiated in both directions. + + ASTERISK-26279 #close + + Change-Id: Id25a92cdf3df97a26c53cffae65b6b82de33c8e2 + +2016-08-26 08:41 +0000 [847bd47ff0] Alexander Traud + + * channel: No hung-up on failing security requirements. + + In your Diaplan, if you specify + same => n,Set(CHANNEL(secure_bridge_media)=1) + same => n,Set(CHANNEL(secure_bridge_signaling)=1) + only the SIP channel driver chan_sip supports this. All other channels drivers + like res_pjsip fail. In case of failure, the original sRTP source code released + the whole channel, even if not hung-up, yet. This change does not release the + channel but instead hangs-up the channel. + + ASTERISK-26306 + + Change-Id: I0489f0cb660fab6673b0db8af027d116e70a66db + +2016-08-20 09:04 +0000 [b59d3b48d0] Alexander Traud + + * sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations. + + When using the migration script sip_to_pjsip.py, and your sip.conf is + configured with bindaddr=::, two transports are written to pjsip.conf, one for + 0.0.0.0 (IPv4) and one for [::] (IPv6). That way, PJProject listens on the IPv4 + and IPv6 wildcards; a IPv4/IPv6 Dual Stack configuration on a single interface + like in chan_sip. + + Furthermore, the script internal functions "build_host" and "split_hostport" + did not parse Literal IPv6 addresses as expected (like [::1]:5060). This change + makes sure, even such addresses are parsed correctly. + + ASTERISK-26309 + + Change-Id: Ia4799a0f80fc30c0550fc373efc207c3330aeb48 + +2016-08-25 07:06 +0000 [f69f5cd3c4] Joshua Colp + + * app_queue: Ensure member is removed from pending when hanging up. + + When dialing channels it is possible that they may not ever + leave the not in use state (Local channels in particular) by + the time we cancel them. If this occurs but we know they were + dialed we explicitly remove them from the pending members + container so that subsequent call attempts occur. + + ASTERISK-26299 #close + + Change-Id: I6ad0d17c36480c92cebf840626228ce3f7e4bd65 + +2016-08-04 20:11 +0000 [5cd583d7a2] Richard Mudgett + + * res_pjsip: Cache global config options. + + We may check a global config option hundreds of times a second or more. + Asking sorcery for the global configuration from the config files backend + involves several allocations and container traversals. Using realtime + without a memory cache is a lot worse because you have to lookup in the + realtime database each time to reconstitute the sorcery object. With a + memory cache for realtime, there is about the same amount of overhead as + for config files. Either way, it is still fairly expensive to access the + sorcery object that much. + + * Cache the global config options so we can access them faster. You must + now always perform a res_pjsip reload to change the global options. + + Change-Id: Ice16c7a4cbca4614da344aaea21a072b86263ef7 + +2016-08-23 11:02 +0000 [8b4b2500ee] Richard Mudgett + + * res_fax: Fix deadlock in ast_channel_get_t38_state(). + + ast_channel_get_t38_state() calls ast_channel_queryoption() with + AST_OPTION_T38_STATE. If the passed in channel is a local channel then a + deadlock can happen if a channel lock is held when called. + + * Made ast_channel_get_t38_state() callers not hold a channel lock before + calling. + + * Update ast_channel_get_t38_state() doxygen to note that no channel locks + can be held when calling the function. + + ASTERISK-26203 #close + Reported by: Etienne Lessard + + ASTERISK-24822 #close + Reported by: David Brillert + + ASTERISK-22732 #close + Reported by: Richard Mudgett + + Change-Id: I49fd76fa9af628b4198009b5c0b82c8b03681214 + +2016-08-23 10:39 +0000 [e8d4f40022] Richard Mudgett + + * res_fax: Fix deadlock setting FAXMODE channel variable. + + ASTERISK-25980 added the FAXMODE channel variable to res_fax.c. + Unfortunately, it also introduced a deadlock potential because + set_channel_variables() which sets FAXMODE can be called during a + masquerade. The ast_channel_get_t38_state() which gets the value used to + set FAXMODE cannot be called with the channel locked. As a result, local + channels can deadlock because of how they must acquire the locks necessary + to operate. + + The intent of FAXMODE is for dialplan to know how a fax was transferred + after the fax completes. However, the previous patch sets FAXMODE to the + channel's current T.38 state AFTER the fax has completed and where T.38 + may have already disconnected. + + * Set FAXMODE based upon T.38 negotiations exchanged either with the fax + applications or the fax framehooks. + + ASTERISK-26203 + Reported by: Etienne Lessard + + ASTERISK-24822 + Reported by: David Brillert + + ASTERISK-22732 + Reported by: Richard Mudgett + + Change-Id: Id525747254b64c1efe8b1b5973d52ff9719c2ae1 + +2016-08-22 12:31 +0000 [35cf6c7702] Richard Mudgett + + * res_fax.c: Fix deadlock in fax_gateway_indicate_t38(). + + fax_gateway_indicate_t38() calls ast_indicate_data() which cannot be + called with any channel locks already held. A deadlock can happen if the + function is operating on a local channel. + + * Made fax_gateway_indicate_t38() unlock the channel before calling + ast_indicate_data() since fax_gateway_indicate_t38() is always called with + the channel locked. + + * Made fax_gateway_indicate_t38() return void since nothing cared about + its return value. + + ASTERISK-26203 + Reported by: Etienne Lessard + + ASTERISK-24822 + Reported by: David Brillert + + ASTERISK-22732 + Reported by: Richard Mudgett + + Change-Id: I701ff2d26c5fc23e0d5a48a3fd98759a9fd09407 + +2016-08-23 11:16 +0000 [50b2aa506f] Richard Mudgett + + * res_fax.c: Add chan locked precondition comments. + + Change-Id: Ic10ae434536bbf7fb7055d6ab36cc50b8748a4e7 + +2016-08-23 10:42 +0000 [038cbc0215] Richard Mudgett + + * ast_framehook_detach() must be called with the channel locked. + + The framehook container could become corrupted if the channel lock is not + held before calling. + + Change-Id: If0a1c7ba0484ed3a191106a7516526b905952584 + +2016-08-22 15:01 +0000 [88e9d05ef7] Richard Mudgett + + * ast_framehook_attach() must be called with the channel locked. + + The framehook container could become corrupted if the channel lock is not + held before calling. + + Change-Id: I1a6b957a1f7b899eb29a186915f8cccab886a438 + +2016-08-24 14:42 +0000 [c9e83f6d0b] gtjoseph + + * res_rtp_multicast: Fix SEGV in ast_multicast_rtp_create_options + + ast_multicast_rtp_create_options now checks for NULL or empty options + + Change-Id: Ib845eae46a67a9787e89a87ebd1027344e5e0362 + +2016-08-19 18:19 +0000 [cb8fd610e2] Corey Farrell + + * Fix checks for allocation debugging. + + MALLOC_DEBUG should not be used to check if debugging is actually + enabled, __AST_DEBUG_MALLOC should be used instead. MALLOC_DEBUG only + indicates that debugging is requested, __AST_DEBUG_MALLOC indicates it + is active. + + Change-Id: I3ce9cdb6ec91b74ee1302941328462231be1ea53 + +2016-08-10 15:14 +0000 [b8b5d52b5e] Mark Michelson + + * ConfBridge: Rework announcer channel methodology + + NOTE: This patch was submitted earlier and reverted because of a failing + test. The test has been patched so that it adjusts for the changes here, + so this is being resubmitted for review. + + One feature that confbridge has is the ability to play sounds to all + participants in the conference. Prior to this commit, the algorithm for + this was as follows: + + * Grab the playback lock + * Push the conference announcer channel into the bridge + * Play back the sound + * Pull the conference announcer channel from the bridge + * Release the playback lock + + The issue here is that the act of adding the playback channel to the + bridge and removing it for each announcement is expensive. Amongst the + expenses: + + * The announcer channel is imparted into the bridge, meaning a new + thread is spun up for each playback. + * When the announcer is added or removed from the bridge, it results + in the BRIDGEPEER channel variable being set on all channels in the + bridge. This requires keeping the bridge locked and locking each + individual channel in order to set it. + * There's also just the general overhead of adding the channel and + removing it from the bridge. The bridge potentially has to reconfigure + every single time + + With this commit, the paradigm for playing back announcements has + shifted. + + * The announcer channel is now added to the bridge when the conference + is allocated, and it is hung up when the conference is destroyed. + * A taskprocessor is used to queue playbacks onto the announcer channel. + This keeps the behavior from before where playbacks do not overlap. + * The announcer channel is no longer placed into the bridge as + departable. Since we are not constantly removing the channel from + the bridge, it is safe to add the channel using an independent thread + and simply hang the channel up when it is time for the conference to + be destroyed. + + The use of the taskprocessor for playbacks opens up the interesting + possibility of having asynchronous announcements played. In this commit, + however, the behavior is still exactly the same as it previously was. + + ASTERISK-26289 + Reported by Mark Michelson + + Change-Id: Ica9fa4907c2f3728cdd1cf0bc564ef4eb40754a0 + +2016-08-23 05:54 +0000 [d5d7cbfcfb] Joshua Colp + + * Revert "ConfBridge: Rework announcer channel methodology" + + This reverts commit 0cdeb2bfb0f4203384c08858951af3c77be8b9b3. + + Change-Id: I18ba73b6d4dc0b994f4ffb01ae0b6cfad36ac636 + +2016-08-22 17:08 +0000 [c16ef02318] Mark Michelson + + * res_pjsip: Default endpoints to the "offline" status. + + A recent change attempted to optimize startup by not updating contact + status. Instead, code responsible for qualifying contacts updates the + status as it becomes known. The code even accounts for contacts/AORs + that are not set to be qualified. + + The problem, though, is when there are no contacts associated with an + endpoint. A common case is when an endpoint is set to register its + contacts but has not done so yet. In this case, prior to registration, + the endpoint's device state will appear to be "not in use" and hints + associated with that device will appear to be "idle". In actuality, the + device state and hint should both appear as "unavailable". The reason + for the failure is that the optimization change made all persistent + endpoint states set to "unknown". + + The fix here is to change the hard-coded "unknown" to be "offline" + instead. The default state will be offline until the qualifying code + determines that the contact is actually online. This way, if there are + no contacts at all, then the state stays as offline, and device state + and hints appear correctly. + + ASTERISK-26269 #close + Reported by nappsoft + + Change-Id: Ie99b84169393983453076f5e9c0d35ff313a456a + +2016-08-20 14:51 +0000 [e54dcf4fd5] David M. Lee + + * res_odbc_transaction: add dep on generic_odbc + + When res_odbc_transaction depended on res_odbc, it got the generic_odbc + headers and libs implicitly. Now that it no longer depends on res_odbc, + its dependency on generic_odbc must be explicit. + + Change-Id: I9db88f7af7388437f49903d3008ba8d4890d5911 + +2016-08-20 11:18 +0000 [be38c95def] Alexander Traud + + * pjproject_bundled: Allow IPv4/IPv6 (Dual Stack) configurations. + + PJProject supports a lot of platforms even Windows, some with different defaults + when it comes to IPv6. In many Linux platforms like Ubuntu 16.04 LTS, + "/proc/sys/net/ipv6/bindv6only" is set to 0 (false). Different than in Windows. + + Because of this, if configured with just an IPv6 address/transport, PJProject + listens to both IPv4 and IPv6. However, this is not supported by the PJProject + team. As consequence, you end-up with IPv4-mapped IPv6 addresses in SDP, + incompatible with IPv4-only clients. Technically, you end-up with an IPv6-only + server which accepts incoming connections on IPv4. + + If you try to configure two transports, one with IPv4 and one with IPv6 on the + same interface, as expected by the PJProject team, the IPv4 transport is not + able to bind because the IPv6 transport listens to both already. + + One solution would be to change "/proc/sys/net/ipv6/bindv6only" system-wide. + Then, you are able to configure two transports, one for each IP version on the + same interface. That way, you get a server which works with IPv4 clients and + IPv6 clients at the same time over the same interface. + + Here, this change sets this parameter directly within PJProject to match the + expectations of the PJProject team in any case. This allows IPv4/IPv6 Dual Stack + servers out of the box like in chan_sip. This change was accepted by the + PJProject team as and is expected + to arrive in the next version, PJProject 2.6.0. Until then, this change is + incorporated in the bundled PJProject of Asterisk. + + ASTERISK-26309 + + Change-Id: I3335d8718f79f4b2feae91b5b005a3ce684a63ae + +2016-08-10 15:14 +0000 [0cdeb2bfb0] Mark Michelson + + * ConfBridge: Rework announcer channel methodology + + One feature that confbridge has is the ability to play sounds to all + participants in the conference. Prior to this commit, the algorithm for + this was as follows: + + * Grab the playback lock + * Push the conference announcer channel into the bridge + * Play back the sound + * Pull the conference announcer channel from the bridge + * Release the playback lock + + The issue here is that the act of adding the playback channel to the + bridge and removing it for each announcement is expensive. Amongst the + expenses: + + * The announcer channel is imparted into the bridge, meaning a new + thread is spun up for each playback. + * When the announcer is added or removed from the bridge, it results + in the BRIDGEPEER channel variable being set on all channels in the + bridge. This requires keeping the bridge locked and locking each + individual channel in order to set it. + * There's also just the general overhead of adding the channel and + removing it from the bridge. The bridge potentially has to reconfigure + every single time + + With this commit, the paradigm for playing back announcements has + shifted. + + * The announcer channel is now added to the bridge when the conference + is allocated, and it is hung up when the conference is destroyed. + * A taskprocessor is used to queue playbacks onto the announcer channel. + This keeps the behavior from before where playbacks do not overlap. + * The announcer channel is no longer placed into the bridge as + departable. Since we are not constantly removing the channel from + the bridge, it is safe to add the channel using an independent thread + and simply hang the channel up when it is time for the conference to + be destroyed. + + The use of the taskprocessor for playbacks opens up the interesting + possibility of having asynchronous announcements played. In this commit, + however, the behavior is still exactly the same as it previously was. + + ASTERISK-26289 + Reported by Mark Michelson + + Change-Id: Ic5cd2c4b98a1eaa1715eb7a5b35d62f1a76d78a5 + +2016-08-19 10:21 +0000 [b494b9f88c] Alexei Gradinari + + * compilation failed with -Werror=maybe-uninitialized + + The compilation failed for devmode + --enable DONT_OPTIMIZE + --enable BETTER_BACKTRACES + --enable DO_CRASH + --enable TEST_FRAMEWORK + + res_pjsip/pjsip_configuration.c: In function dtls_handler: + res_pjsip/pjsip_configuration.c:974:20: error: + back may be used uninitialized in this function [-Werror=maybe-uninitialized] + int size = strlen(front); + ^ + cc1: all warnings being treated as errors + + Change-Id: I7f082ead0312792a577ec7c73015ba64dabca580 + +2016-08-19 03:59 +0000 [a628009eb9] Alexander Traud + + * sip_to_pjsip: Add cert_file. + + When using the migration script sip_to_pjsip.py, cert_file was not migrated to + pjsip.conf. A previous change regarding this contained a copy/paste error. + + ASTERISK-22374 + + Change-Id: I0fa72e9412117d53b4284fc6b83fa5b2b95ba03b + +2016-08-18 09:21 +0000 [b1fe070d0b] Alexander Traud + + * sip.conf: tlsclientmethod is using sslv23 as default. + + When 'tlsclientmethod' is not specified in sip.conf, chan_sip uses the OpenSSL + SSLv23_method. This was documented incorrectly in the file sip.conf.sample. + + SSLv23_method got its name in the 90s. Today, with OpenSSL 1.0.2, this method + enables (just) the secure TLSv1.0 and TLSv1.2. Or stated differently, that + function should have been called 'secure_method' or 'automatic_method' back in + the 90s. + + Consequently please, specify 'tlsclientmethod=tlsv1' in your sip.conf only if + you face a server which has problems like not falling back to TLSv1.0 + automatically. + + ASTERISK-24425 + + Change-Id: I502ce6146b4504cadfd3973af8d6ec3994f54fa3 + +2016-08-18 17:16 +0000 [ff2378c735] Kevin Harwell + + * rest-api: Swagger scripts were not replacing format variable in file brief + + Given resource paths did not have 'json' substituted in for the '{format}'. For + some auto generated documentation/comment strings it resulted in something like + the following: + + "... REST handler for /api-docs/sounds.{format}" + + This patch makes sure the resource api's path is properly substituted. + + ASTERISK-25472 #close + + Change-Id: Ie3e950a35db4043e284019d6c9061f3b03922e23 + +2016-08-16 15:57 +0000 [43f400ef95] Jason Parker (license 4993) + + * res_format_attr_g729: Add annexb=no format parameter to SDPs + + Historically, Asterisk has always specified annexb=no for the g729 format. + However, when using res_pjsip no format attribute was specified. This patch + makes it so the SDP now contains a format attribute line with annexb=no. + + Note, that this means only g729a is negotiated. Even for pass through support. + According to rfc7261 the type of annex used (a or b) is dependent upon the + answerer. However, Asterisk being a back to back user agent makes this tricky + to support at this time, thus we only allow annex 'a' for now. + + ASTERISK-26228 #close + patches: + res_format_attr_g729.c submitted by Jason Parker (license 4993) + + Change-Id: I76bc20cc0a01af01536e9915afef319c269c22d0 + +2016-08-18 15:15 +0000 [4c1ae07d51] gtjoseph + + * res_odbc: Correct the dependency relationship with res_odbc_transaction + + The MODULEINFO dependencies between these 2 modules was reversed. + res_odbc should depend on res_odbc_transaction, not the other way + around. + + ASTERISK-25984 #close + + Change-Id: Ifcfbb49c0b51cf6640a5446d47cd6c48caf1331f + +2016-08-18 12:04 +0000 [cab6975b02] Kevin Harwell + + * sip_to_pjsip: Set correct tls transport method + + A recent update had a copy/paste error where the unused variable 'val' was + being passed to the set_value function instead of the 'method' value itself. + + This patch passes in the right variable. + + ASTERISK-22374 + + Change-Id: I895b7b3779ce4442bc58b8ec40d59dd29bb43f06 + +2016-08-18 08:19 +0000 [2381ddde63] Alexander Traud + + * sip_to_pjsip: Map the TLS method correctly. + + When using the migration script sip_to_pjsip.py and tlsclientmethod is not set + in sip.conf, the default value of chan_sip (sslv23) is copied to pjsip.conf, to + overwrite the default of the PJProject (tlsv1). This makes sure, res_pjsip is + offering/using not just TLSv1.0 but TLSv1.2 as well. + + ASTERISK-22374 + + Change-Id: Ie530a3dae9926ae14f3920a21be1e2edb15bda4f + +2016-08-18 08:17 +0000 [6500f5e138] Alexander Traud + + * sip_to_pjsip: Add compactheaders, timerb, timert1, and useragent. + + When using the migration script sip_to_pjsip.py, no section of type=system or + type=general were created. Therefore the keys compactheaders, timerb, timert1, + and useragent were not migrated to pjsip.conf. + + ASTERISK-22374 + + Change-Id: I318a453843227ea36bf130d392d4abd7bd26b5a1 + +2016-08-18 08:16 +0000 [21e9c69e56] Alexander Traud + + * sip_to_pjsip: Map (session-)timers correctly. + + When using the migration script sip_to_pjsip.py, session-timers=accept and + session-timers=refuse were mapped to wrong values. + + ASTERISK-22374 + + Change-Id: Ie4e90d5f6a29aff07837b7fe5bc8aea5fb6fc092 + +2016-08-18 08:15 +0000 [c9a97398f7] Alexander Traud + + * sip_to_pjsip: Write username even without authname. + + When using the migration script sip_to_pjsip.py, now the (mandatory) username is + written to pjsip.conf, even if there was no (optional) authname in the register + string in sip.conf. + + ASTERISK-22374 + + Change-Id: Ie53e1997104cd2674821688b8a8247249f5e156f + +2016-08-18 08:14 +0000 [60275359bc] Alexander Traud + + * sip_to_pjsip: Parse register even with transport. + + When using the migration script sip_to_pjsip.py and the register string + started with a transport in sip.conf - like tls://... - register was not parsed + correctly and therefore not migrated correctly to pjsip.conf. + + ASTERISK-22374 + + Change-Id: I44c12104eea2bd8558ada6d25d77edfecd92edd2 + +2016-08-18 08:13 +0000 [0d479232eb] Alexander Traud + + * sip_to_pjsip: Write local_net, contact_acl, contact_deny, and contact_permit. + + When using the migration script sip_to_pjsip.py, those keys got missing. These + keys might appear several times and the function "merge_value" tried to collect + those. However, because these keys have different names in sip.conf and + pjsip.conf, "merge_value" was not able to find the new key name in sip.conf. + This change lets "merge_value" search with the old key name in sip.conf and + write with the new key name in pjsip.conf. + + ASTERISK-22374 + + Change-Id: Ie53c5278ae6f1cb8fa7e96c5289877d46981d9d2 + +2016-08-18 08:11 +0000 [cbc1b2d020] Alexander Traud + + * sip_to_pjsip: Map externhost/ip to Transports. + + When using the migration script sip_to_pjsip.py, the externhost or externip of + sip.conf were erroneously written to Endpoints instead to Transports. + + ASTERISK-22374 + + Change-Id: I2c5873386cfc388899fa9cf2368639dd12f1b8e4 + +2016-08-18 08:04 +0000 [5f33e99534] Alexander Traud + + * sip_to_pjsip: Add defaultexpiry, maxexpiry, and minexpiry. + + When using the migration script sip_to_pjsip.py, defaultexpiry, maxexpiry, and + minexpiry were not migrated to pjsip.conf. + + ASTERISK-22374 + + Change-Id: I007fbf543dcadc96fc3ed71c54da502bcb209b7b + +2016-08-18 08:03 +0000 [231ea0350d] Alexander Traud + + * sip_to_pjsip: Write media_encryption. + + When using the migration script sip_to_pjsip.py, encryption=yes got missing and + media_encryption=sdes was not written to pjsip.conf, because of a typo. + + ASTERISK-22374 + + Change-Id: I0fc3e55dc512a57603ae0fef41baacccf2a35c05 + +2016-08-18 08:02 +0000 [23eb065121] Alexander Traud + + * sip_to_pjsip: Write cos and tos. + + When using the migration script sip_to_pjsip.py, both tos_sip and cos_sip got + missed, because of a typo. Therefore, cos and tos were not written to + pjsip.conf. Furthermore, that revealed a misuse of an internal function, caused + by a copy-and-paste error. + + ASTERISK-22374 + + Change-Id: Id245ebadf70ab9776eb280c026288540af3af5c2 + +2016-08-18 07:55 +0000 [0b675a208b] Alexander Traud + + * sip_to_pjsip: Add cert_file and ca_list_path. + + When using the migration script sip_to_pjsip.py, cert_file and ca_list_path were + not migrated to pjsip.conf. + + ASTERISK-22374 + + Change-Id: I4612877d190b7f86a48698cefbf5c4db6c265825 + +2016-08-17 14:13 +0000 [1cd12d73a6] Richard Mudgett + + * res_pjsip_session.c: Fix unbound srv failover tests. + + Commit 1b666549f33d69dc080b212bf92126f3bc3a18b2 broke the srv failover + functionality if a TCP connection gets disconnected. Under these + conditions, session_inv_on_state_changed() gets a + PJSIP_EVENT_TRANSPORT_ERROR and restarts the INVITE transaction on a new + transport. Unfortunately, session_inv_on_tsx_state_changed() also gets + the same PJSIP_EVENT_TRANSPORT_ERROR event and unconditionally terminates + the session. + + * Made session_inv_on_tsx_state_changed() complete terminating the session + on PJSIP_EVENT_TRANSPORT_ERROR only if the session state is still + PJSIP_INV_STATE_DISCONNECTED. + + ASTERISK-26305 #close + Reported by: Richard Mudgett + + Change-Id: If736e766b5c55b970fa38ca6c8a885caf27b897d + +2016-08-16 15:36 +0000 [329507fe20] gtjoseph + + * res_pjsip: Add contact_user to endpoint + + contact_user, when specified on an endpoint, will override the user + portion of the Contact header on outgoing requests. + + Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4 + +2016-08-17 08:10 +0000 [6f448f32fe] Torrey Searle + + * res_ari: Add http prefix to generated docs + + updated the uri handler to include the url prefix of the http server + this enables res_ari to add it to the uris when generating docs + + Change-Id: I279335a2625261a8492206c37219698f42591c2e + +2016-08-17 06:12 +0000 [56e0aed177] Alexander Traud + + * BuildSystem: Detect ca_list_path capabilities in external PJProject. + + Since Asterisk 13.8, pj_ssl_cert_load_from_files2 got detected only in the + bundled PJProject but not in an external PJProject. Therefore, ca_list_path + could not be used in pjsip.conf. With this change, pj_ssl_cert_load_from_files2 + is detected again to enable ca_list_path again. + + ASTERISK-26303 #close + + Change-Id: I4a4a0cdc5cdff33730911fb4cfc0498c069043d0 + +2016-08-16 12:24 +0000 [2edcfcf1eb] gtjoseph + + * ari: Add documentation that path parameters are case-sensitive + + Added to api.wiki.mustache so that the generated object pages + have the notation in the table header as well as under each method + that has path parameters. + + ASTERISK-25492 #close + + Change-Id: I36c46c6dc0c9ac350470394a999a1b19ef3fcdaf + +2016-08-15 15:29 +0000 [f4e28b3a09] Corey Farrell + + * Refactor usage pattern of xmldoc info tag. + + This updates func_channel.c and main/message.c to use a generic xpointer + include instead of including info from each channel driver. Now the + name attribute of info is CHANNEL or CHANNEL_EXAMPLES to be included in + documentation for func_channel. Setting the name attribute of info to + MessageToInfo or MessageFromInfo causes it to be included in the + MessageSend application and AMI action. + + Change-Id: I89fd8276a3250824241a618009714267d3a8d1ea + +2016-08-04 20:00 +0000 [a8d9a53bae] Richard Mudgett + + * res_sorcery_config.c: Cleanup ao2 container usage idioms. + + Change-Id: Iad24b335fb121a2bc7f1d048ab7420569edcba5a + +2016-08-04 15:57 +0000 [74a91b9ee5] Richard Mudgett + + * sorcery.c: Minor optimizations. + + * Remove some unused parameters from internal functions: + sorcery_wizard_create() + sorcery_wizard_update() + sorcery_wizard_delete() + + * Created the struct sorcery_observer_invocation ao2 object without a lock + since it is not needed in sorcery_observer_invocation_alloc(). + + * Cleanup generic ao2 container sorcery object id hash, sort, and cmp + functions. + + Change-Id: Iff71d75f52bc1b8cee955456838c149faaa4f92e + +2016-08-01 11:04 +0000 [29beb2890c] Richard Mudgett + + * sorcery.c: Tweak some container declaration formatting. + + * Tweak sorcery_object_type_alloc() formatting. + * Tweak ast_sorcery_init() formatting. + + Change-Id: Ib02430023f15268cd7a2ea53f2c331213e4d3944 + +2016-08-11 23:30 +0000 [9b822293bd] Corey Farrell + + * pbx.c: Additional fixes to ast_context_remove_extension_callerid2. + + Do not check registrar of the first extension head. We should only check + the registrar when we match the priority. + + Additionally fix a couple calls to strcmp which used the input callerid + instead of the clean version ex.cidmatch. + + ASTERISK-26233 + + Change-Id: I17ea6881a18f40840ae9c1f5394aab1fbb3769f1 + +2016-08-10 14:41 +0000 [403c794684] Alexei Gradinari + + * core: Entity ID is not set or invalid + + The Exchanging Device and Mailbox States could not working + if the Entity ID (EID) is not set manually and can't be obtained + from ethernet interface. + + This patch replaces debug message to warning + and addes missing description about option 'entityid' to + asterisk.conf.sample. + + With this patch the asterisk also: + (1) decline loading the modules which won't work without EID: + res_corosync and res_pjsip_publish_asterisk. + (2) warn if EID is empty on loading next modules: + pbx_dundi, res_xmpp + + Starting with v197 systemd/udev will automatically assign "predictable" + names for all local Ethernet interfaces. + This patch also addes some new ethernet prefixes "eno" and "ens". + + ASTERISK-26164 #close + + Change-Id: I72d712f1ad5b6f64571bb179c5cb12461e7c58c6 + +2016-06-15 17:10 +0000 [93332cb1d0] Evgeniy Tsybra + + * chan_sip: Fix lastrtprx always updated + + Packets are read regulary, when there is no data in buffer fr->frametype + is AST_FRAME_NULL. There was no check of frametype and lastrtprx always + updated and, therefore, rtptimeout did not work at all. + + ASTERISK-25270 #close + + Change-Id: If3b5ca0dbb822582a86eb7d01dcae4e83448c41d + +2016-08-15 07:17 +0000 [2735ec899a] Joshua Colp + + * manager: Clarify that dialplan manipulation actions are under system class. + + ASTERISK-26246 #close + + Change-Id: Id673b9786389f9d2a87f638ce1a25161f5f31657 + +2016-08-13 22:02 +0000 [f59bd47ed3] Matt Jordan + + * app_dial: Improve documentation + + * Add some helpful and other embedded paragraph tags + + * Document some of the lesser known channel variables set by Dial + + * Add examples for some common Dial uses, along with some more + challenging but useful options + + Change-Id: Ib2fb9301e8e044d14fbb2815ec64161f19bbfbc1 + +2016-08-13 20:16 +0000 [4facaac408] Matt Jordan + + * manager: Add tags to relate interrelated events/actions together + + Change-Id: Idbac539205aa732bf786c4f765577d8e9ff28ba4 + +2016-08-13 20:15 +0000 [232d4fe24f] Matt Jordan + + * manager: Add tags to relate Bridge related events,actions, and apps + + Change-Id: I67e6b79fa3102e494b5fe6cc7510472249080e85 + +2016-08-13 20:14 +0000 [63c0b2f7c9] Matt Jordan + + * manager: Add tags to relate AoC events and actions + + Change-Id: Iea89a36222712148c1775c05ed0ad1049d67a70e + +2016-08-13 20:13 +0000 [0422667d6c] Matt Jordan + + * manager: Add tags to relate UserEvent actions/apps/events + + Change-Id: I80f8a981f62f50e74609c69c49edcaca6c95efa4 + +2016-08-12 15:53 +0000 [f9e734974b] Matt Jordan + + * res_agi: Improve documentation + + * Groups of AGI commands that have similar functionality now reference + each other, and all reference the AGI application for ease of wiki + reference. + + * The documentation for the AGI application has been improved, in + particular noting the various AGI types and how they are invoked. + + * A warning message has been added to DeadAGI, noting that it is + deprecated. + + Change-Id: I479ccdee8a7393f01b18692c3d4ab7e6bdd1875d + +2016-08-12 13:53 +0000 [781bb410d0] Matt Jordan + + * manager: Add links between related events + + This patch adds some see-also references between related AMI events. It + focuses primarily on those events that are guaranteed to come in pairs, + such as DTMFBegin/DTMFEnd, as well as those that occur during the life + cycle of an Asterisk channel, such as Newchannel/Hangup. + + Change-Id: Iaab600477052018d0f8c03d0c624c0856e9ff1f3 + +2016-08-12 11:15 +0000 [cfd6852d39] Matt Jordan + + * func_channel: Reorganize documentation + + * Following the example of the PJSIP channel driver, the channel + technology specific documentation has been moved to the respective + channel drivers that provide that functionality. This has the benefit + of locating the documentation of items with those modules that provide + it. + + * Examples of using the CHANNEL function for both standard items as well + as for PJSIP have been added. + + * The 'max_forwards' standard item has been documented. + + Change-Id: Ifaa79a232c8ac99cf8da6ef6cc7815d398b1b79b + +2016-08-11 22:11 +0000 [cb043249b6] Corey Farrell + + * Run mandatory cleanup when startup fails. + + Errors during startup result in an exit. These error branches should be + calling ast_run_atexit(0) to ensure mandatory cleanup is run. + + ASTERISK-26267 #close + + Change-Id: If226f2326ae2df7add20040696132214cf2bb680 + +2016-08-11 11:24 +0000 [4d5e96ab53] gtjoseph + + * res_pjsip_caller_id: Copy header name to short header name + + When compact_headers was set, we were sending a zero-length header name + for PAI and RPID because we always forced the short header name length + to 0. We did this because we cloned the header from "From" and wanted + to clear "f" from the sname. By cloning however, we bypass pjproject's + automatic logic that sets sname to name if there's no compact form of + the header, which there isn't for PAI and RPID. So now we force sname + to be the same as name right after we set name. + + res_pjsip_diversion needed the same treatment for the Diversion header. + + ASTERISK-26241 #close + + Change-Id: I633ec139630cd83809aae00336cee4a10077e467 + +2016-08-11 12:18 +0000 [143df33110] gtjoseph + + * res_pjsip: Fail global load if debug or default_from_user are empty + + If debug was specified in the global configuration but left blank, + the logger would treat it as a wildcard and log all hosts. If + default_from_user was empty, a crash would result. + + The global apply handler now checks for empty strings. + + ASTERISK-26239 #close + ASTERISK-26238 #close + + Change-Id: Ie75727f5cd5808845d92cc81f5713842fb203336 + +2016-08-01 15:07 +0000 [1fc5c90014] Richard Mudgett + + * res_pjsip res_pjsip_mwi: Misc fixes and cleanups. + + * Eliminated RAII_VAR() usage in + ast_sip_persistent_endpoint_update_state(). + + * Added a missing allocation failure check to + persistent_endpoint_find_or_create(). + + * Made persistent_endpoint_find_or_create() create the new object without + a lock as it isn't needed. + + * Cleaned up some ao2 container allocation idioms. + + * Reordered res_pjsip_mwi.c load_module() and unload_module() + + Change-Id: If8ce88fbd82a0c72a37a2388f74f77237a6a36a8 + +2016-08-04 18:03 +0000 [73052e5732] Richard Mudgett + + * location.c: Misc fixes and cleanups. + + * Eliminated most RAII_VAR() usage. + + * Added several missing allocation failure checks. + + * Made ast_sip_for_each_contact() allocate the wrapper ao2 object without + a lock as it is not needed. + + Change-Id: Ie20913365156c95dd79e5d471cfd25e99ae880bc + +2016-08-02 13:53 +0000 [9d4bd3d763] Richard Mudgett + + * taskprocessor.c: Tweak high water checks. + + * The high water check in ast_taskprocessor_alert_set_levels() would + trigger immediately if the new high water level is zero and the queue was + empty. + + * The high water check in taskprocessor_push() was off by one. + + Change-Id: I687729fb4efa6a0ba38ec9c1c133c4d407bc3d5d + +2016-08-03 16:24 +0000 [e1248c3075] Richard Mudgett + + * res_pjsip: Make aor named lock a mutex. + + The named aor lock was always being locked for writes so a rwlock adds no + benefit and may be slower because rwlocks are biased toward read locking. + + Change-Id: I8c5c2c780eb30ce5441832257beeb3506fd12b28 + +2016-07-29 17:41 +0000 [6e40334d89] Richard Mudgett + + * pjsip_distributor.c: Add missing allocation failure check. + + Change-Id: I932ab2cea845e534d9ff318035b6de39972d3b28 + +2016-08-11 11:13 +0000 [a3c5488ff4] Matt Jordan + + * app_queue: Prevent crash when a call is forwarded to an invalid location + + When a call forward attempt is made from a Queue member, the current + code will hang up the forwarding channel in an off-nominal condition + prior to raising the Stasis events informing the rest of Asterisk that + the call was forwarded. This will result in a slew of dreaded FRACKs, + most likely leading to a crash. + + This patch modifies the code such that we don't hang up the forwarding + channel even in an off-nominal condition until we've safely raised the + Stasis messages. + + ASTERISK-25797 #close + + Change-Id: Ife5abed351691fd79105321636eaa8ea8dcdba38 + +2016-08-11 10:50 +0000 [5913929d31] Kevin Harwell + + * alembic: add auth_username to endpoint's identify_by enum + + A new identify_by option was added recently, auth_username. However, this + setting was not added as an allowable choice in the database enumeration + value. + + This patch updates the current enumeration, adding in the new setting. + + ASTERISK-26268 #close + + Change-Id: Ib4788e8485e4cd40172ec0abbf5810a147ab8bf8 + +2016-08-06 10:57 +0000 [1589452fdc] Alexei Gradinari + + * pjsip: Fix deadlock with suspend taskprocessor on masquerade + + If both channels which should be masqueraded + are in the same serializer: + 1st channel will be locked waiting condition 'complete' + 2nd channel will be locked waiting condition 'suspended' + + On heavy load system a chance that both channels will be in + the same serializer 'pjsip/distibutor' is very high. + + To reproduce compile res_pjsip/pjsip_distributor.c with + DISTRIBUTOR_POOL_SIZE=1 + + Steps to reproduce: + 1. Party A calls Party B (bridged call 'AB') + 2. Party B places Party A on hold + 3. Party B calls Voicemail app (non-bridged call 'BV') + 4. Party B attended transfers Party A to voicemail using REFER. + 5. When asterisk masquerades calls 'AB' and 'BV', + a deadlock is happened. + + This patch adds a suspension indicator to the taskprocessor. + When a session suspends/unsuspends the serializer + it sets the indicator to the appropriate state. + The session checks the suspension indicator before + suspend the serializer. + + ASTERISK-26145 #close + + Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b + +2016-08-09 12:07 +0000 [f6ec94cca6] Kevin Harwell + + * alembic/sqlalchemy: auto increment only allowed on a single column + + The extensions table defined two columns (id and priority) as primary key + autoincrement columns. However only one is allowed when defining the primary + key. + + This patch removes the autoincrement attribute from the priority column since + it does not need to be as such and really should not have been on there in the + first place. + + This patch also removes 'context', 'exten', and 'priority' from the primary key + index and creates a new combined unique contraint index on them. + + ASTERISK-26183 #close + + Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b + +2016-08-07 09:58 +0000 [5f815f9dba] Matt Jordan + + * channels/chan_pjsip: Add PJSIP_SEND_SESSION_REFRESH + + This patch adds a new PJSIP specific dialplan function, + PJSIP_SEND_SESSION_REFRESH. When invoked on a PJSIP channel, the media + session will be refreshed via either an UPDATE or re-INVITE request. + When used in conjunction with the PJSIP_MEDIA_OFFER dialplan function, + the formats in use on a PJSIP channel can be re-negotiated and changed + dynamically after call setup. + + ASTERISK-26277 #close + + Change-Id: Ib98fe09ba889aafe26d58d32f0fd1323f8fd9b1b + +2016-08-09 16:19 +0000 [a119bab6a6] Mark Michelson + + * res_rtp_asterisk: Cache local RTCP address. + + When an RTCP packet is sent or received, res_rtp_asterisk generates a + Stasis event that contains the RTCP report as well as the local and + remote addresses that the report pertains to. + + The addresses are determined using ast_find_ourip(). For the local + address, this will typically result in a lookup of the hostname of the + server, and then a DNS lookup of that hostname. If you do not have the + host in /etc/hosts, then this results in a full DNS lookup, which can + potentially block for some time. + + This is especially problematic when performing RTCP reads, since those + are done on the same thread responsible for reading and writing media. + + This patch addresses the issue by performing a lookup of the local + address when RTCP is allocated. We then use this cached local address + for the Stasis events when necessary. + + ASTERISK-26280 #close + Reported by Mark Michelson + + Change-Id: I3dd61882c2e57036f09f0c390cf38f7c87e9b556 + +2016-08-08 12:53 +0000 [a06a1af0eb] Alexei Gradinari + + * res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack + + The PJSIP taskprocessors could be overflowed on startup + if there are many (thousands) realtime endpoints + configured with unsolicited mwi. + The PJSIP stack could be totally unresponsive for a few minutes + after boot completed. + + This patch creates a separate PJSIP serializers pool for mwi + and makes unsolicited mwi use serializers from this pool. + This patch also adds 2 new global options to tune taskprocessor + alert levels: 'mwi_tps_queue_high' and 'mwi_tps_queue_low'. + + This patch also adds new global option 'mwi_disable_initial_unsolicited' + to disable sending unsolicited mwi to all endpoints on startup. + If disabled then unsolicited mwi will start processing + on next endpoint's contact update. + + ASTERISK-26230 #close + + Change-Id: I4c8ecb82c249eb887930980a800c9f87f28f861a + +2016-08-04 10:16 +0000 [485fd27f7c] Joshua Colp + + * res_pjsip_outbound_publish: Use a serializer shutdown group for unload. + + This change replaces the custom unload process for the outbound + publish module with the common serializer shutdown group. + + ASTERISK-25217 #close + + Change-Id: I280a0384d860c486202d87d2d674394cca77ffb6 + +2016-08-03 15:39 +0000 [805f105f88] Corey Farrell + + * Add missing checks during startup. + + This ensures startup is canceled due to allocation failures from the + following initializations. + * channel.c: ast_channels_init + * config_options.c: aco_init + + ASTERISK-26265 #close + + Change-Id: I911ed08fa2a3be35de55903e0225957bcdbe9611 + +2016-07-22 16:37 +0000 [ea71bd6e3e] Alexei Gradinari + + * app_voicemail: Add taskprocessor alert level options. + + On heavy loaded system with IMAP or DB storage, + 'app_voicemail' taskprocessor queue could reach 500 scheduled tasks. + It could happen when the IMAP or DB server dies or is unreachable. + It could happen on startup when there are many (thousands) + realtime endpoints configured with unsolicited mwi. + If the taskprocessor queue reaches the high water level + then the alert is triggered and pjsip stops processing new requests + until the queue reaches the low water level to clear the alert. + + This patch adds 2 new 'general' configuration options + to tune taskprocessor alert levels: + 'tps_queue_high' - Taskprocessor high water alert trigger level. + 'tps_queue_low' - Taskprocessor low water clear alert level + + ASTERISK-26229 #close + + Change-Id: I766294fbffedf64053c0d9ac0bedd3109f043ee8 + +2016-08-03 09:47 +0000 [9dc8cfabd5] Joshua Colp + + * astconfigparser: Really handle case where line is simply a comment. + + The regular expression would match causing the code that handled + the line if it was merely a comment to never get executed. + + Change-Id: I3e4022481037ebcba9905587fe8c764b4ce21819 + +2016-07-23 08:51 +0000 [ad3e65433c] gtjoseph + + * asterisk.c: Add auto generation and persistence of UUID + + Upcoming features will require the generation and persistence + of a UUID. + + Change-Id: I3ec0062427e133217db6ef496a4216f427c3b92d + +2016-08-02 12:55 +0000 [efc4034d72] Kevin Harwell + + * rest-api: Code out of sync with the model + + Change-Id: Idccaa26fd4a423d47d013ee592b8fa6a0349c006 + +2016-07-29 13:13 +0000 [f6821fbaec] Mark Michelson + + * Remove SILK payload mappings from Asterisk core. + + SILK is a bit of a hog when it comes to using up our limited number of + dynamic payload types in the RTP engine. By freeing up four slots, it + allows for other codecs to potentially take the place. + + Now, codec_silk.so will dynamically use the payload slots in the RTP + engine when it loads. + + A better fix would be make RTP dynamic payload types actually + dynamic. However, at this stage of Asterisk 14 development, this is a + risky move that would be imprudent. + + Change-Id: I5774e09408f9a203db189529eabdc0d3f4c1e612 + (cherry picked from commit d50895c7b04036aeaad58990089399e46db4c817) + +2016-08-01 11:08 +0000 [102d28c11a] Joshua Colp + + * sorcery: Use more compatible regex for local expressions. + + This changes the use of an empty regex for both res_sorcery_config + and res_sorcery_memory to "." instead. This is a more compatible + regular expression which also works on FreeBSD. + + ASTERISK-26206 #close + + Change-Id: Ia9166dd176f1597555ba22b6931180d0626c1388 + +2016-08-02 03:08 +0000 [b78d10a2df] Alexander Traud + + * res_pjsip: SIP/SDP origin (o=) contained square brackets on IP6 transports. + + ASTERISK-26256 #close + + Change-Id: I3fd68df561f81fdb8c6c497d465b50c12422f058 + +2016-08-01 16:13 +0000 [1f95c011c7] gtjoseph + + * menuselect: Add an opaque "member_data" string to the acceptable xml + + Change-Id: Id5ac43b95c8d7395f3be37f983632169db3d1afe + +2016-07-27 09:56 +0000 [df42f64d62] David M. Lee + + * Replace strdupa with more portable ast_strdupa + + The strdupa function is a GNU extension, and not widely portable. We + have an ast_strdupa function used within Asterisk which is preferred. + I pulled the definition up from menuselect.c into the menuselect.h + header file so it can be shared across menuselect. + + Change-Id: I9593c97f78386b47dc1e83201e80cb2f62b36c2e + +2016-07-24 18:27 +0000 [56a07fbab9] gtjoseph + + * menuselect: Various menuselect enhancements + + * Add 'external' as a support level. + * Add ability for module directories to add entries to the menu + by adding members to the /.xml file. + * Expand the description field to 3 lines in the ncurses implementation. + * Allow the description field to wrap in the newt implementation. + * Add description field to the gtk implementation. + + Change-Id: I7f9600a1984a42ce0696db574c1051bc9ad7c808 + (cherry picked from commit 90f445729d5d86050d9d379485ff0a99f4a006c1) + +2016-07-29 04:48 +0000 [7f9369c1b6] Joshua Colp + + * astconfigparser: Handle case where line is simply a comment. + + Change-Id: I2dea5815363f4d787d709228a04f33baee383ef5 + +2016-07-28 14:10 +0000 [57e9c66819] Corey Farrell + + * pbx.c: Fix handling of '-' in extension name and callerid + + This adds a two strings to ast_exten. name to go with exten and + cidmatch_display to go with cidmatch. The new fields contain input used + to add the extension in the first place. The existing fields now + contain stripped input that excludes insignificant spaces and dashes. + These stripped fields should always be used for comparisons. The + unstripped fields should normally be used for display, but displaying + stripped values will not cause runtime errors. + + Note the actual string is only stored twice if it contains dashes. If + no dashes are found then both 'char *' fields point to the same memory. + So this change has a minimum effect on memory usage. + + The existing functions ast_get_extension_name and + ast_get_extension_cidmatch return unstripped values as they did before + this change. Other similar bugs likely still exist where unstripped + extensions are saved outside pbx.c then passed back in. + + ASTERISK-26233 #close + + Change-Id: I6cd61ce57acc1570ca6cc14960c4c3b0a9eb837f + +2016-07-27 17:17 +0000 [873fc0fda5] Richard Mudgett + + * pbx.c: Allow dangerous functions when adding a hint to dialplan. + + We can allow dangerous functions when adding a hint since altering + dialplan is itself a privileged activity. Otherwise, we could never + execute dangerous functions. + + ASTERISK-25996 #close + Reported by: Andrew Nagy + + Change-Id: I4929ff100ad1200a0198262d069a34f2296e77ba + +2016-07-21 10:36 +0000 [f00525a6f6] Alexei Gradinari + + * pjproject: fixed a few bugs + + This patch fixes the issue in pjsip_tx_data_dec_ref() + when tx_data_destroy can be called more than once, + and checks if invalid value (e.g. NULL) is passed to. + + This patch updates array limit checks and docs + in pjsip_evsub_register_pkg() and pjsip_endpt_add_capability(). + + Change-Id: I4c7a132b9664afaecbd6bf5ea4c951e43e273e40 + +2016-07-17 18:28 +0000 [972cee2e4c] gtjoseph + + * pjproject_bundled: Update for pjproject 2.5.5 + + Add more --disable-* switches to Makefile.rules including + --disable-opus which was causing bundled pjproject to fail with + "undefined reference" errors in libasteriskpj. + + Changed PJ_ENABLE_EXTRA_CHECK to 1. + + Removed 2 obsolete patches and added a new one. + The new one was merged by Teluu on 6/27/2016. + + ASTERISK-26148 #close + + Change-Id: Ib8af6c6a9d31f7238ce65b336134c2efdc855063 + +2016-07-27 10:33 +0000 [8902a51d59] David M. Lee + + * Portably sscanf tv_usec + + In a timeval, tv_usec is defined as a suseconds_t, which could be + different underlying types on different platforms. Instead of trying to + scanf directly into the timeval, scanf into a long int, then copy that + into the timeval. + + Change-Id: I29f22d049d3f7746b6c0cc23fbf4293bdaa5eb95 + +2016-07-27 12:36 +0000 [852e763571] Kevin Harwell + + * rtp_engine: Failed assertion and wrong name given for codec + + Fixed an assert check that would trigger when the passed in value was negative. + The negative value was being cast to an unsigned value. This resulted in the + check failing. + + Also fixed another problem when loading formats in the engine. When setting the + mime type the format's name was being passed in instead of the codec's name. + + Change-Id: I1a201cd419ba4d8e9a40d337e36b6fbe1737192c + +2016-07-21 22:44 +0000 [e8c34680ca] Richard Mudgett + + * dsp.c: Add fax and DTMF detection unit tests. + + * Add fax amplitude and frequency sweep tests. + * Add DTMF amplitude and twist unit tests. + + Change-Id: I8d77c9a1eec89e440d715f998c928687e870c3f7 + +2016-07-21 11:56 +0000 [c1f240b818] Richard Mudgett + + * dsp.c: Added descriptive comments to Goertzel calculations. + + * Added doxygen to describe some struct members and what is going on in + the code. + + Change-Id: I2ec706a33b52aee42b16dcc356c2bd916a45190d + +2016-07-13 13:48 +0000 [003a52fd62] Richard Mudgett + + * dsp.c: Fix incorrect format reference typo. + + Change-Id: Ia131da3ec29acf385cb43a586a29ecc975eb3896 + +2016-07-25 21:18 +0000 [4c0a0cbe02] Richard Mudgett + + * dsp.c: Correct DTMF twist dsp.conf documentation. + + Change-Id: Idf97e3a72f1edc5fca58f2fa7b20785922be0cae + +2016-07-22 04:43 +0000 [87433c2566] Joshua Colp + + * astconfigparser.py: Update with realtime fixes. + + When configuring SIP URIs in the pjsip.conf file it is + necessary to escape the semicolon so the parser does not + treat it as a comment. This change allows this to work in + the astconfigparser implementation. + + A secondary bug where some data was lost if a configuration + option included a "=" in its value was also fixed. + + A bug where sections would be considered equal despite + being different has also been fixed. + + Change-Id: If229f656ef22050b50e7b34e90c4bffe796431f8 + +2016-07-21 22:28 +0000 [159e437e5a] Richard Mudgett + + * dsp.c: Fix erroneous fax tone detection. + + The Goertzel calculations get less accurate the lower the signal level + being worked with becomes because there is less resolution remaining. + If it is too low we can erroneously detect a tone where none really + exists. The searched for fax frequencies not only need to be so much + stronger than the background noise they must also be a minimum strength. + + * Add needed minimum threshold test to tone_detect(). + + * Set TONE_THRESHOLD to allow low volume frequency spread detection. + + ASTERISK-26237 #close + Reported by: Richard Mudgett + + Change-Id: I84dbba7f7628fa13720add6a88eae3b129e066fc + +2016-07-22 14:44 +0000 [eda95236d1] Mark Michelson + + * Fix sqlalchemy error regarding identifier length. + + sqlalchemy was complaining: + + sqlalchemy.exc.IdentifierError: Identifier + 'ps_contacts_qualifyfreq_exptime' exceeds maximum length of 30 + characters + + This fixes the problem by changing the index name to be + "ps_contacts_qualifyfreq_exp" instead. + + ASTERISK-26227 #close + Reported by Mark Michelson + + Change-Id: I0ed784f87504be2a59ee8d3242ef6f625d5ed1a9 + +2016-07-22 05:46 +0000 [66c9dfb272] Alexander Traud + + * chan_sip: Enable Session-Timers for SIP over TCP (and TLS). + + Asterisk defaults to timers=accept/refresher=uas. In that scenario, only in that + scenario, Sessions-Timers (RFC 4028) had no effect via TCP. This change enables + Session-Timers for SIP over TCP (and for SIP over TLS). + + 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 dropped calls. Consequently even with this change, + you might be better-off going for session-timers=refuse in your sip.conf. + + ASTERISK-19968 #close + + Change-Id: I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 + +2016-07-15 16:16 +0000 [33716106e0] Richard Mudgett + + * res_pjsip: Whitespace and comment cleanup. + + Change-Id: I11139a4a95df34e223ba622aa6227e33ab8f6c38 + +2016-07-21 09:05 +0000 [52ab0bf258] gtjoseph + + * chan_sip: Prevent deadlock when issuing "sip show channels" + + sip_show_channels locks the dialogs container first then locks each + sip_pvt so it can spit out the details. The rest of sip dialog + processing locks the sip_pvt first then locks the dialogs container + if it needs to. Both lock in the order they need but deadlocks can + result. To fix, sip_show_channels and sip_show_channelstats have + been converted to use an iterator rather than ao2_callback. This way + the container is locked only while getting the next entry and is + unlocked when the callback is called. + + ASTERISK-23013 #close + + Change-Id: Id9980419909e811f89484950ed46ef117b9eb990 + +2016-07-19 15:22 +0000 [5997ec7c9e] Alexei Gradinari + + * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice. + + This patch removed call of pjsip_tx_data_dec_ref in send_notify + if send_request failed. + The pjsip_dlg_send_request deletes the message on error by itself. + + It seems this patch fixes next issues: + ASTERISK-26199 + ASTERISK-26166 + ASTERISK-26174 + + Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a + +2016-07-18 22:46 +0000 [7fdf7c3d4c] Corey Farrell + + * Add conditional support for noreturn functions. + + This adds support for tagging functions with the noreturn attribute. + If DO_CRASH is enabled then ast_do_crash never returns. If AST_DEVMODE + and DO_CRASH are enabled then failed assertions never return. This can + resolve a large number of false positives with static analyzers. + + ASTERISK-26220 #close + + Change-Id: Icfb61e5fe54574eced4c3e88b317244f467ec753 + +2016-07-19 13:18 +0000 [dcb8aa8c1c] Richard Mudgett + + * chan_dahdi.c: Fix deadlock potential in fax redirection. + + The dahdi_handle_dtmf() and my_handle_dtmf() have the potential to + deadlock if an incoming fax happens during the Playback or similar + application. + + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. + + ASTERISK-26216 #close + Reported by: Richard Mudgett + + Change-Id: I9144b84ade5f96690996624ec8a2d40c56af40aa + +2016-07-13 18:49 +0000 [fa91cf3eec] Richard Mudgett + + * chan_sip.c: Fix deadlock potential in fax redirection. + + The sip_read() has the potential to deadlock if an incoming fax happens + during the Playback or similar application. + + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. + + * Made always eat the fax detection frame whether there is a fax extension + or not. + + ASTERISK-26216 + Reported by: Richard Mudgett + + Change-Id: I6d3f5cccd4b77c3aa6ffc1a54c0f6bde61c9278e + +2016-07-13 18:48 +0000 [2e1bdc3775] Richard Mudgett + + * chan_pjsip.c: Fix deadlock potential in fax redirection. + + The chan_pjsip_cng_tone_detected() has the potential to deadlock if an + incoming fax happens during the Playback or similar application. + + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. + + * Made always eat the fax detection frame whether there is a fax extension + or not. + + ASTERISK-26216 + Reported by: Richard Mudgett + + Change-Id: I32aecbb4818af646dc5a619f0dc040e9b1f222e5 + +2016-07-12 17:33 +0000 [628e8c91d5] Richard Mudgett + + * res_fax.c: Fix deadlock potential in FAXOPT(faxdetect) framehook. + + The fax_detect_framehook() has the potential to deadlock if an incoming + fax happens during the Playback or similar application. + + * Fixed the potential deadlock by not calling ast_async_goto() with the + channel lock held. + + * Made always eat the fax detection frame whether there is a fax extension + or not. + + * Made only detach the framehook if we detected a fax and not on other + possible frames. + + ASTERISK-26216 + Reported by: Richard Mudgett + + Change-Id: I99da35c26d1cd802626ffb4c1b4eb5b015581b6d + +2016-07-12 17:24 +0000 [676aeede36] Richard Mudgett + + * res_fax: Fix FAXOPT(faxdetect) timeout option. + + The fax detection timeout option did not work because basically the wrong + variable was checked in fax_detect_framehook(). As a result, the timer + would timeout immediately and disable fax detection. + + * Fixed ignoring negative timeout values. We'd complain and then go right + on using the negative value. + + * Fixed destroy_faxdetect() in the off-nominal case of an incomplete + object creation. + + * Added more range checking to FAXOPT(gateway) timeout parameter. + + ASTERISK-26214 #close + Reported by: Richard Mudgett + + Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976 + +2016-07-18 16:16 +0000 [652130feb2] Richard Mudgett + + * chan_dahdi: Add faxdetect_timeout option. + + The new option allows the channel driver's faxdetect option to timeout on + a call after the specified number of seconds into a call. The new feature + is disabled if the timeout is set to zero. The option is disabled by + default. + + * Don't clear dsp_features after passing them to the dsp code in + my_pri_ss7_open_media(). We should still remember them especially for the + new faxdetect_timeout option. + + ASTERISK-26214 + Reported by: Richard Mudgett + + Change-Id: Ieffd3fe788788d56282844774365546dce8ac810 + +2016-07-15 20:44 +0000 [851b1c3a17] Richard Mudgett + + * res_pjsip: Add fax_detect_timeout endpoint option. + + The new endpoint option allows the PJSIP channel driver's fax_detect + endpoint option to timeout on a call after the specified number of + seconds into a call. The new feature is disabled if the timeout is set + to zero. The option is disabled by default. + + ASTERISK-26214 + Reported by: Richard Mudgett + + Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d + +2016-07-19 04:48 +0000 [021d4892cd] Alexander Traud + + * Makefile: Retain XML Declaration and DTD in docs. + + Since Asterisk 12, the documentation got an XML Stylesheet. Because of a typo, + the XML Declaration and DTD were overwritten by this. + + ASTERISK-26212 #close + + Change-Id: If5ee4625068042e98ab3fcb22a25e2f15d0c68bd + +2016-07-18 18:39 +0000 [c8e41d14a1] Corey Farrell + + * Unit tests: Use AST_TEST_DEFINE in conditional code only. + + If AST_TEST_DEFINE is not conditional to TEST_FRAMEWORK it produces dead + code. This places all existing unit tests into a conditional block if + they weren't already. + + ASTERISK-26211 #close + + Change-Id: I8ef83ee11cbc991b07b7a37ecb41433e8c734686 + +2016-07-18 05:13 +0000 [e404f51b42] Alexander Traud + + * res_rtp_asterisk: Count a roll-over of the sequence number even on lost packets. + + With this change, the initial RTP sequence number is randomly chosen not between + 0 and 65535 (0xffff) but 0 and 32767 (0x7fff). This assures, the roll-over + counter (ROC) synchronization is not lost for sRTP, when the very first RTP + packets get lost; see http://srtp.sourceforge.net/faq.html#Q6 + + ASTERISK-26207 #close + + Change-Id: I9a527e3aa3ce8f3becc5131d7ba32b57b5845464 + +2016-07-18 04:14 +0000 [5f24874ebb] Alexander Traud + + * Makefile: Suppress echoing of target 'config' again. + + ASTERISK-26038 #close + + Change-Id: I5746cf639f3fdc6332e8a97cf01f979e30bf403f + +2016-07-14 03:25 +0000 [76d4983c15] Corey Farrell + + * features.c: Remove unneeded adsi.h include. + + adsi.h is no longer used by features.c since parking was moved to a + module. + + Change-Id: I2248b8a455225a17cb6ddaafd6c20c511a1eaf59 + +2016-07-14 18:06 +0000 [cb58f853e1] Alexei Gradinari + + * res_pjsip_mwi: remove unneeded check on endpoint's contacts. + + The function create_mwi_subscriptions_for_endpoint checks + if there is active contacts by retrieving aors and contacts. + + This function is used to create all unsolicited mwi subscriptions + on startup and is used when contact added. + + In both cases it's not necessary to check if there are contacts. + The contacts are needed when asterisk sends mwi. + + ASTERISK-26200 #close + + Change-Id: I98e43bdc97f3c0829951cd9bf5f3c6348c6ac1fa + +2016-06-30 15:58 +0000 [28501051b4] Mark Michelson + + * Update support for SILK format. + + This commit adds scaffolding in order to support the SILK audio format + on calls. Roughly, this is what is added: + + * Cached silk formats. One for each possible sample rate. + * ast_codec structures for each possible sample rate. + * RTP payload mappings for "SILK". + + In addition, this change overhauls the res_format_attr_silk file in the + following ways: + + * The "samplerate" attribute is scrapped. That's native to the format. + * There are far more checks to ensure that attributes have been + allocated before attempting to reference them. + * We do not SDP fmtp lines for attributes set to 0. + + These changes make way to be able to install a codec_silk module and + have it actually work. It also should allow for passthrough silk calls + in Asterisk. + + Change-Id: Ieeb39c95a9fecc9246bcfd3c45a6c9b51c59380e + +2016-07-14 07:45 +0000 [43b5f8d57b] Richard Miller (license 5685) + + * app_queue: Only remove queue member from pending when state changes. + + It is possible for a not in use state change to occur multiple + times causing a queue member to be removed from the pending call + container prematurely. + + The first not in use state change will remove the queue member + from the container. At this moment the member may be called and + placed in the pending container. After this another not in use + state change can be received which will remove it from the + container. Despite being called at this point the code will + incorrectly see that there are no pending calls to it. + + This change only removes it from the pending container if the + state has actually changed. + + ASTERISK-26133 #close + patches: + app_queue.diff submitted by Richard Miller (license 5685) + + Change-Id: Ie5a7f17a44f98e9159e9b85009ce3f8393aa78c0 + +2016-07-14 02:40 +0000 [a17b071e36] Corey Farrell + + * pbx: Fix leak of timezone for time based includes. + + Create include_free to run ast_destroy_timing and ast_free, use that in + all places that freed an ast_include structure. This fixes a couple of + paths that previously did not run ast_destroy_timing. + + ASTERISK-26196 #close + + Change-Id: I1671bd111bef0dc113e8bf8f77f89fcfc395d838 + +2016-07-13 17:45 +0000 [8cef8f35e7] Kevin Harwell + + * translate: explicit format destination not properly set + + If the destination format's name differed from the codec name then the + translator's explict_dst field would be improperly set. In some circumstances + it would end up setting it to a newly created format that has the same name + as the codec when it actually needed to be the given destination codec. + + This could cause the translation path to use the wrong format. For instance, + if an endpoint had specified 'myulaw' as a format the translator could end up + using a 'ulaw' format (with whatever/default settings) instead. If the format + attribute settings differed between the two then there may unexpected results + during processing. + + This patch removes the name check when building the translation path. This + should make it always set the translator's explicit_dst to the given destination + format as long as the sample rate and types match. + + Change-Id: Iaf8a03831d68e657d89569d54b505074efbefab5 + +2016-07-08 11:46 +0000 [afbd10b0c5] Richard Mudgett + + * stasis_endpoint.c: Fix contactstatus_to_json(). + + The roundtrip_usec json member is optional. If it isn't present then + don't put it into the converted json structure where ast_json_pack() + will choke on it. + + Change-Id: I39bb2f86154ef54591270c58bfda8635070f9ea0 + +2016-07-13 13:45 +0000 [2be13d62fd] Corey Farrell + + * chan_sip: Fix reference leak in mwi_event_cb + + Cleanup the peer reference when stasis_subscription_final_message is + true. Also free peer_name even if peer exists, after reload a new + peer_name will be allocated. + + ASTERISK-26193 #close + + Change-Id: If7ecd52facdc5c227f701c760841e3f6ca53cc69 + +2016-06-22 07:13 +0000 [332beb27d8] Eugene Voityuk ,Alexander Traud + + * res_rtp_asterisk: Enable Forward Secrecy (PFS) for DTLS. + + Since July 2014, TLS based protocols (SIP over TLS, Secure WebSockets, HTTPS) + support PFS thanks to ASTERISK-23905. In July 2015, the same feature was added + for DTLS. The source code from main/tcptls.c should have been re-used to ease + security audits. Therefore, this change rolls back the change from July 2015 and + re-uses the code from July 2014. This has the additional benefits to work under + CentOS 7 and enabling not just ECDHE but DHE based cipher suites as well. + + ASTERISK-25659 #close + Reported by: StefanEng86, urbaniak, pay123 + Tested by: sarumjanuch, traud + patches: + res_rtp_asterisk.patch submitted by sarumjanuch + dtls_centos_step_1.patch submitted by traud + dtls_centos_step_2.patch submitted by traud + + Change-Id: I537cadf4421f092a613146b230f2c0ee1be28d5c + +2016-07-13 11:30 +0000 [672a64bda3] Corey Farrell + + * threadpool: Fix leak in ast_threadpool_serializer_group error path. + + ast_threadpool_serializer_group leaks a reference to ser when listener + is allocated but tps is not. Although listener takes the reference to + ser cleanup functions are not run without tps. + + ASTERISK-26191 #close + + Change-Id: Ie3ccf69a3f1e676c2ef62a77067c0cb57dc9a585 + +2016-07-11 10:22 +0000 [fea201f7e6] Richard Mudgett + + * pjsip_options.c: Fix container operation. + + aor_observer_deleted() needs to operate on all contacts found for the + deleted AOR instead of only the first one found. This is really only a + problem if there is more than one contact for the AOR. + + Change-Id: Id24ac0d5e8c931330231fb45dd2a331a84339dc1 + +2016-07-11 10:21 +0000 [02877b4b4f] Richard Mudgett + + * pjsip_configuration.c: Misc cleanups. + + * Fix some whitespace in various routines. + + * Rename i to iter in persistent_endpoint_update_state(). + + * Fix off-nominal copy/paste message wording in + persistent_endpoint_contact_deleted_observer() + + Change-Id: Id8e34f5d09e7eebac3af22501c44c1110a3e29d8 + +2016-07-13 08:57 +0000 [148cd1b319] Alexander Traud + + * BuildSystem: Avoid obsolete warning with pthread.m4 on autoconf. + + Updated the macro-set autoconf/ax_pthread.m4 to its latest upstream version. + + ASTERISK-26046 #close + + Change-Id: I11abc11d17acd2b6a8a5a5be8ae8e0949dab9cc7 + +2016-07-11 10:25 +0000 [97b4c7a5b4] Richard Mudgett + + * res_pjsip: Fix statsd regression. + + The ASTERISK-25904 change-id I8fad8aae9305481469c38d2146e1ba3a56d3108f + patch introduced several regressions when the newly created "Updated" + state goes out for each endpoint registration refresh. + + 1) It restarted any OPTIONS RTT ping cycle. + + 2) It would interfere with a currently active ping and throw off that + ping's resulting RTT calculation. + + 3) It cleared the RTT time each time the endpoint was refreshed. + + 4) The cleared RTT time was sent out as a statsd update each time. + + 5) It created two AMI events for each update. + + * Revert the original patch and reimplement it. Now the current contact + status state is re-sent instead of the state being momentarily toggled + every time the endpoint refreshes its registration. The statsd events are + not created for the re-sent refresh because they are sent after every + OPTIONS ping. + + ASTERISK-26160 #close + Reported by: Matt Jordan + + Change-Id: Ie072be790fbb2a8f5c1c874266e4143fa31f66d1 + +2016-07-12 03:50 +0000 [3be6fa1e4b] Alexander Traud + + * BuildSystem: Allow own CFLAGS on ./configure. + + Before this change, make failed with the error + Unknown value '' found in build_tools/menuselect-deps for NATIVE_ARCH + when CFLAGS were supplied to the configure script. This was introduced with + which disabled BUILD_NATIVE when + CFLAGS were supplied. Those who need different -march= values, please, go for + ./configure + make menuselect.makeopts or make menuselect + ./menuselect/menuselect --disable BUILD_NATIVE + + ASTERISK-25289 #close + + Change-Id: Ic6365d5a97bb9b3556858f06432a8d1cfa83eebc + +2016-07-11 13:42 +0000 [5ee205d8bb] Richard Mudgett + + * ast_expr2: Fix off-nominal memory leak. + + Thanks to ibercom for pointing out a memory leak that was missed + in the earlier patch for the issue. + + ASTERISK-26119 + Reported by: Alexei Gradinari + + Change-Id: I9a151f5c4725d97fb82a9e938bc73dc659532b71 + +2016-07-11 10:17 +0000 [f5e9872016] Alexander Traud + + * install_prereq: Checkout of libSRTP 1.5.x. + + Since 5th November 2014, the master branch of libSRTP changed the prefix of + several member names and is not compatible with the source code in Asterisk + anymore. Therefore instead, this change checks out the latest version of the + libSRTP 1.5.x branch. Furthermore now, libSRTP is compiled with OpenSSL as + backend. This makes AES-GCM and AES-IN possible. + + ASTERISK-22131 #close + + Change-Id: I2e396cdc01da0ff610686e398ed210ca7408f7d6 + +2016-07-10 19:08 +0000 [17efed6cf7] Joshua Colp + + * func_odbc: Fix connection deadlock. + + The func_odbc module was modified to ensure that the + previous behavior of using a single database connection + was maintained. This was done by getting a single database + connection and holding on to it. With the new multiple + connection support in res_odbc this will actually starve + every other thread from getting access to the database as + it also maintains the previous behavior of having only + a single database connection. + + This change disables the func_odbc specific behavior if + the res_odbc module is running with only a single database + connection active. The connection is only kept for the + duration of the request. + + ASTERISK-26177 #close + + Change-Id: I9bdbd8a300fb3233877735ad3fd07bce38115b7f + +2016-07-09 13:32 +0000 [06ba533bc7] Corey Farrell + + * chan_sip: Fix reference leaks in error paths. + + * get_sip_pvt_from_replaces leaks sip_pvt_ptr on any error. + * build_peer leaks peer on failure to allocate the endpoint. + + This patch fixes get_sip_pvt by using an RAII_VAR, build_peer is fixed + with an unref in the appropriate place. + + ASTERISK-26184 #close + + Change-Id: I728b424648ad041409f7d90880f4c28b3ce2ca12 + +2016-07-07 12:41 +0000 [9d4e664f62] Corey Farrell + + * REF_DEBUG: Prevent logging of container node objects. + + Using AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE can result in an unref being + recorded to the refs log for the node being replaced. This prevents + logging of those unrefs since they would produce errors in + refcounter.py. + + ASTERISK-26181 #close + + Change-Id: Ie4fded84e8a1a58b3a59ce59dfd7eb0da3ddc5d4 + +2016-07-07 10:55 +0000 [e26bd15e7a] Scott Griepentrog + + * PJSIP: provide valid tcp nodelay option for reuse + + When using TCP transport with chan_pjsip, the TCP_NODELAY + option value was allocated on the stack, then passed as a + pointer to the tcp transport configuration structure, and + later re-used on subsequently created sockets when it was + no longer valid. This patch changes the allocation to be + a static. + + ASTERISK-26180 #close + Reported by: Scott Griepentrog + + Change-Id: I3251164c7f710dbdab031282f00e30a9770626a0 + +2016-07-07 10:38 +0000 [77b0145a25] Joshua Colp + + * chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled. + + Some T.38 implementations may send another re-invite after the initial + one which adds additional negotiation details (such as the max bitrate). + Currently this will fail when passthrough is being done in chan_sip as we + do nothing if T.38 is already active. + + Other handlers of T.38 inside of Asterisk (such as res_fax) handle this + scenario so this change adds support for it to chan_sip and res_pjsip_t38. + If a request to negotiate is received while T.38 is already enabled a + new re-INVITE is sent and negotiation is done again. + + ASTERISK-26179 #close + + Change-Id: I0298494d3da6df3219bbfa4be9aa04015043145c + +2016-07-04 16:38 +0000 [b4a9fa2c9e] Alexei Gradinari + + * res_sorcery_realtime: fix bug when successful UPDATE is treated as failed + + If the SQL UPDATE statement changes nothing then SQLRowCount returns 0. + This value should be treated as success. + But the function sorcery_realtime_update treats it as failed. + + This bug was found using stress tests on PJSIP. + If there are 2 consecutive SIP REGISTER requests with the same contact data + during 1 second then res_pjsip_registrar adds contact location on 1st request + and tries to update contact location on 2nd. + The update fails and res_pjsip_registrar even removes correct contact location. + + The test "object_update_uncreated" was removed from test_sorcery_realtime.c + because it's now a valid situation. + + This patch also adds missing debug of extra SQL parameter. + + ASTERISK-26172 #close + + Change-Id: I05a7f3051455336c9dda29efc229decf86071303 + +2016-06-24 19:55 +0000 [1dfd3fc995] Matt Jordan + + * res/res_pjsip_session: Check for presence of an active negotiator + + It is possible in a hypothetical situation for a session refresh to be + invoked on a PJSIP when the negotiatior on the INVITE session has not + yet been established. While this shouldn't occur with existing uses of + ast_sip_session_refresh, the crashes that occur due to improperly + calling PJSIP functions that expect a non-NULL negotiatior are + avoidable. PJSIP will create the negotiator in pjsip_inv_reinvite; this + means that simply checking for the presence of the negotiator before + passing it to other PJSIP functions that use it is allowable. As such, + this patch adds checks for the presence of the negotiator before calling + PJSIP functions that assume it is non-NULL. + + Change-Id: I1028323e7e01b0a531865e5412a71b6f6ec4276d + +2015-10-19 18:55 +0000 [9dd0aeeb44] Matt Jordan + + * res/res_pjsip_pubsub: Add additional debug statements + + When something very sad and wrong occurs, it's challenging sometimes to + figure out why. This patch adds some additional debug statements on + off-nominal paths to try and make debugging easier. + + Change-Id: I7bffb73cc733b6f80193a23340881db4a102b640 + +2015-10-19 18:55 +0000 [1ec4f8dd00] Matt Jordan + + * res/res_corosync: Raise a Stasis message on node join/leave events + + When res_corosync detects that a node leaves or joins, it currently is + informed of this via Corosync callbacks. However, there are a few + limitations with the information presented: + (1) While we have information that Corosync is aware of - such as the + Corosync nodeid - that information is really only useful inside of + Corosync or res_corosync. There's no way to translate a Corosync + nodeid to some other internally useful unique identifier for the + Asterisk instance that just joined or left the cluster. + (2) While res_corosync is notified of the instance joining or leaving + the cluster, it has no mechanism to inform the Asterisk core or + other modules of this event. This limits the usefulness of res_corosync + as a heartbeat mechanism for other modules. + + This patch addresses both issues. + + First, it adds the notion of a cluster discovery message both within the + Stasis message bus, as well as the binary event messages that + res_corosync uses to transmit data back and forth within the cluster. + When Asterisk joins the cluster, it sends a discovery message to the other + nodes in the cluster, which correlates the Corosync nodeid along with + the Asterisk EID. res_corosync now maintains a hash of Corosync nodeids + to Asterisk EIDs, such that it can map changes in cluster state with the + Asterisk instance that has that nodeid. Likewise, when an Asterisk + instance receives a discovery message from a node in the cluster, it now + sends its own discovery message back to the originating node with the + local Asterisk EID. This lets Asterisk instances within the cluster + build a complete picture of the other Asterisk instances within the + cluster. + + Second, it publishes the discovery messages onto the Stasis message bus. + Said messages are published whenever a node joins or leaves the cluster. + Interested modules can subscribe for the ast_cluster_discovery_type() + message under the ast_system_topic() and be notified when changes in + cluster state occur. + + Change-Id: I9015f418d6ae7f47e4994e04e18948df4d49b465 + +2016-07-04 13:54 +0000 [2c16a81dd5] Alexei Gradinari + + * res_pjsip: 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. + + ASTERISK-25471 #close + + Change-Id: I3fb7a15f5bc154079bd348c08b7ad1cdd2d5e514 + +2016-07-04 05:58 +0000 [a1bd57884d] Alexander Traud + + * BuildSystem: Avoid obsolete warning with libcurl.m4 on autoconf. + + Updated the macro-set autoconf/libcurl.m4 to its latest upstream version. This + avoids a warning about an obsolete macro on AC_HELP_STRING, because Asterisk is + using AS_HELP_STRING everywhere else already. + + ASTERISK-26046 + + Change-Id: I8299faf504ceaeee3e39930c59293809e116c631 + +2016-06-30 15:17 +0000 [640fbbbe28] Richard Mudgett + + * features: Fix channel datastore access. + + Found as a result of the testsuite tests/callparking test crashing. + + Several calls to ast_get_chan_featuremap_config() and + ast_get_chan_features_xfer_config() did not lock the channel before + calling so the channel's datastore list was accessed without the lock's + protection. Apparently another thread deleted a datastore on the + channel's list while the crashing thread was walking the list. Crash at + 0xdeaddead due to MALLOC_DEBUG's memory filler value as a result. + + * Add missing channel locks to calls that were not already protected + as the doxygen for those calls indicates. + + Change-Id: Id273b3d305cc616406c353cbc841b2b7655efaa1 + +2016-06-22 17:26 +0000 [359134c8d3] Richard Mudgett + + * res_pjsip_session.c: Don't send extra BYE if SDP invalid. + + When an answer SDP is invalid we were disconnecting the outgoing call and + sending two BYE requests. The first BYE was sent by PJPROJECT because of + the invalid SDP answer. The second BYE was sent by Asterisk because it + thought the canceled call was the result of the RFC5407 section 3.1.2 race + condition. + + * Made not send the BYE on a canceled session if the SDP negotiation is + incomplete because PJPROJECT has already sent a BYE for the failed + negotiation. + + ASTERISK-25772 #close + Reported by: Dmitriy Serov + + Change-Id: I44ad0bd0605e8eeb7035c890d6f97a1331f1a836 + +2016-06-27 17:19 +0000 [5fabcf2ca1] Richard Mudgett + + * res_pjsip_session.c: End call on initial invalid SDP negotiation. + + When an incoming call defers SDP negotiation and then sends us an invalid + SDP in the ACK, we need to send a BYE to disconnect the call. In this + case SDP negotiation has failed and we don't have valid media streams + negotiated. + + ASTERISK-25772 + + Change-Id: Ia358516b0fc1e6c4c139b78246f10b9da7a2dfb8 + +2016-06-23 15:13 +0000 [38a4e983dc] Richard Mudgett + + * res_pjsip.c: Register PJMEDIA error code decoder. + + Registering the PJMEDIA error codes allows errors found when parsing an + incoming SDP to be easier to figure out. + + "Missing SDP rtpmap for dynamic payload type (PJMEDIA_SDP_EMISSINGRTPMAP)" + is much easier to understand than "Unknown error 220030". + + ASTERISK-25772 + + Change-Id: I44b2dcea656fedd7593171be9e845880a2c70ca0 + +2016-06-27 16:56 +0000 [1952434df5] Richard Mudgett + + * res_pjsip_session.c: Remove unused parameter from handle_incoming(). + + Change-Id: Iedd182d189ec947c42edc2c66c4bda3c22060daa + +2016-06-22 18:02 +0000 [28928ba5c4] Richard Mudgett + + * res_pjsip: Add missing NULL checks when using pjsip_inv_end_session(). + + pjsip_inv_end_session() is documented as being able to return the + passed in tdata parameter set to NULL on success. + + Change-Id: I09d53725c49b7183c41bfa1be3ff225f3a8d3047 + +2016-06-30 08:25 +0000 [43a78100c0] gtjoseph + + * configure: Fix HAVE_PJSIP_EVSUB_GRP_LOCK not set with external pjproject + + There was a typo in configure.ac preventing HAVE_PJSIP_EVSUB_GRP_LOCK + from getting set when using an external pjproject. + + ASTERISK-26099 #close + Reported-by: Ross Beer + + Change-Id: I709af70428e125fb5ccd44b171d25dd29141f0ae + +2016-06-29 15:31 +0000 [99eff80e76] Matt Jordan + + * hep.conf.sample: Default 'enabled' to 'no' + + Following the principle of least surprise, we should not be sending + massive numbers of PJSIP and RTCP HEP packets out into the ether to some + only-slightly-random IP address. Having 'enabled' set to 'no' in the + sample configuration file should prevent this from happening for those + who run 'make samples'. + + ASTERISK-26159 #close + + Change-Id: I1753a64ca83a3442a6ebdc31061f8185c062d9b1 + +2016-06-29 15:09 +0000 [78960975f2] Matt Jordan + + * pjproject/patches/config_site: Increase the max number of ICE candidates + + When negotiating ICE candidates with WebRTC capable endpoints, many + networks will result in a browser offering ICE candidates that exceeds + the default number of max candidates, 16. This patch bumps the max + candidates to 32, with the max checks at twice the number of candidates. + In practice, this has shown to be sufficient for browser/WebRTC + negotiation. + + Change-Id: Ifd8da8b315f5ae14814d4ce20e10d2e6355020e5 + +2016-06-28 09:00 +0000 [d07c8a0504] gtjoseph + + * codecs: Fix ABI incompatibility created by adding format_name to ast_codec + + Adding format_name even to the end of ast_codec caused issued with + binary codec modules because the pointer would be garbage in asterisk + when they registered. So, the ast_codec structure was reverted and an + internal_ast_codec structure was created just for use in codec.c. A new + internal-only API was also added (__ast_codec_register_with_format) so + that codec_builtin could register codecs with the format_name in a + separate parameter rather than in the ast_codec structure. + + ASTERISK-26144 #close + Reported-by: Alexei Gradinari + + Change-Id: I6df1b08f6a6ae089db23adfe1ebc8636330265ba + +2016-06-28 08:22 +0000 [f3d236ca7f] gtjoseph + + * BuildSystem: Fix a few issues hightlighted by gcc 6.x + + gcc 6.1.1 caught a few more issues. + Made sure the unit tests still pass for the func_env and stdtime + issues. + + ASTERISK-26157 #close + + Change-Id: I6664d8f34a45bc1481d2a854481c7878b0c1cf8e + +2016-06-28 10:33 +0000 [9d5b0934d9] Matt Jordan + + * configs/basic-pbx/modules.conf: Remove 'bad' modules + + This patch removes the following modules: + - pbx_functions: It never existed. + - res_pjsip_log_forwarder: It no longer exists. + - res_hep_pjsip: The base HEP module wasn't loaded, and most basic PBXs + aren't going to be installing HOMER + - res_pjsip_phoneprov_provider: The basic res_phoneprov module isn't + loaded, and we aren't configured to make use of the + module + + Change-Id: Id91f68cae7c9c8c3d370029fe1268cb51e4ff5a5 + +2016-06-22 11:19 +0000 [1dfc286418] Joshua Colp + + * siren: Add format attribute modules for Siren7 and Siren14. + + This change removes hardcoded SDP parsing and generation for + Siren7 and Siren14 from chan_sip and moves it to format attribute + modules so it can also be used by chan_pjsip. + + With this the fmtp lines for both are added with the bitrate + information. + + ASTERISK-26021 + + Change-Id: Ibb004eda37a14c0a35ef0613f6237977fc800037 + +2016-06-23 04:33 +0000 [5f0a098243] Alexander Traud + + * BuildSystem: Avoid obsolete warning with AC_TYPE_SIGNAL on autoconf. + + Removed the obsolete macro AC_TYPE_SIGNAL because Asterisk does not use K&R C + but requires ANSI C anyway. + + ASTERISK-26046 + + Change-Id: I914c014385e1862102d90fe7650621def78db02e + +2016-06-22 15:04 +0000 [3d904659ec] Corey Farrell + + * res_fax: Fix reference leak in fax_v21_session_new. + + fax_v21_session_new created a session details object but only released + the allocation reference during error conditions. fax_session_new adds + it's own reference to details if needed so the caller is always + responsible for cleaning it's own reference. + + ASTERISK-26141 #close + + Change-Id: Ie7fc52a83b6596ce9ce2d5a2bd9f3e204f48fc88 + +2016-06-22 13:41 +0000 [48db4c2159] gtjoseph + + * res_rtp_asterisk: Fix a self-comparison identified by gcc 6 + + gcc 6 caught a previously unidentified self-comparison in + ice_candidate_cmp. Fixed it and re-ordered the predicates for better + short-circuiting. + + ASTERISK-26140 #close + + Change-Id: I3da713c568e24064430257b3502fbdafd35af7a7 + +2016-06-22 10:37 +0000 [bc69b03316] gtjoseph + + * chan_unistim: Fix memcpy in get_to_address + + A code block only enabled when HAVE_PKTINFO is not defined (FreeBSD) + was using a pointer to a pointer as the destination of a memcpy and a + '&' instead of '*' in the sizeof. + + ASTERISK-26138 #close + + Change-Id: Id4927ff256c0e470bdf7bcfc025146a2f656e708 + +2016-06-20 13:18 +0000 [1b79e2deff] Mark Michelson + + * Fix Alembic upgrades. + + A non-existent constraint was being referenced in the upgrade script. + This patch corrects the problem by removing the reference. + + This patch fixes another realtime problem as well. Our Alembic scripts + store booleans as yes or no values. However, Sorcery tries to insert + "true" or "false" instead. This patch updates Sorcery to use "yes" and + "no" + + ASTERISK-26128 #close + + Change-Id: I366dbbf91418a9cb160b3ca74b0e59b5ac284bec + +2016-06-22 10:55 +0000 [e30602587c] Alexander Traud + + * BuildSystem: Avoid obsolete warning with AC_FUNC_SETVBUF_REVERSED on autoconf. + + Removed the obsolete macro AC_FUNC_SETVBUF_REVERSED because Asterisk does not + support the platform SVR2 from the year 1987 anymore. + + ASTERISK-26046 + + Change-Id: I28161b037feb2d29ab46ed20e785928460226c22 + +2016-06-22 10:51 +0000 [77da168e58] gtjoseph + + * test_res_pjsip_scheduler: Add 'depends' on pjproject in MODULEINFO + + Since the file was missing the depends on pjproject, it wasn't + picking up the pjproject related include path. If there was no + system installed pjproject and pjproject-bundled was used, a compile + would fail because pjsip.h wasn't found. + + ASTERISK-26139 #close + + Change-Id: I2ee64a999051452bc198c4e2c168c70769cd3757 + +2016-06-02 17:26 +0000 [b3c787d1dd] Alexei Gradinari + + * res_pjsip: improve realtime performance #2 + + The patch removes updating all Endpoints' status on startup. + Instead, only non-qualified aors with static contact + and non-qualified non-expired contacts are retrieved from the realtime to + update the endpoint status to ONLINE. + The endpoint name was added to the contact object to simply find the endpoint + that created this contact. + + The status of endpoints with qualified aors will be updated by 'qualify' + functions. + + ASTERISK-26061 #close + + Change-Id: Id324c1776fa55d3741e0c5457ecac0304cb1a0df + +2016-06-21 06:52 +0000 [dfcd466bf0] Torrey Searle + + * res_rtp_asterisk: fix memory leak in dtls + + ensure that cert bios get freed after creating the fingerprint + + ASTERISK-26129 #close + + Change-Id: I44d23aea07dce80176ca1ff877c5ace9452ef451 + +2016-06-21 17:42 +0000 [c982da0641] Richard Mudgett + + * res_pjproject.c: Replace inlined DEBUG_ATLEAST() with macro. + + Change-Id: I8799fb0a347ad76e747dafd0eacf1ea1086b9a8c + +2016-06-12 11:19 +0000 [6a568bcc66] gtjoseph + + * res_pjsip_pubsub: Address SEGV when attempting to terminate a subscription + + Occasionally under load we'll attempt to send a final NOTIFY on a + subscription that's already been terminated and a SEGV will occur + down in pjproject's evsub_destroy function. This is a result of a + race condition between all the paths that can generate a notify + and/or destroy the underlying pjproject evsub object: + + * The client can send a SUBSCRIBE with Expires: 0. + * The client can send a SUBSCRIBE/refresh. + * The subscription timer can expire. + * An extension state can change. + * An MWI event can be generated. + * The pjproject transaction timer (timer_b) can expire. + + Normally when our pubsub_on_evsub_state is called with a terminate, + we push a task to the serializer and return at which point the dialog + is unlocked. This is usually not a problem because the task runs + immediately and locks the dialog again. When the system is heavily + loaded though, there may be a delay between the unlock and relock + during which another event may occur such as the subscription timer + or timer_b expiring, an extension state change, etc. These may also + cause a terminate to be processed and if so, we could cause pjproject + to try to destroy the evsub structure twice. There's no way for us to + tell that the evsub was already destroyed and the evsub's group lock + can't tolerate this and SEGVs. + + The remedy is twofold. + + * A patch has been submitted to Teluu and added to the bundled + pjproject which adds add/decrement operations on evsub's group lock. + + * In res_pjsip_pubsub: + * configure.ac and pjproject-bundled's configure.m4 were updated + to check for the new evsub group lock APIs. + * We now add a reference to the evsub group lock when we create + the subscription and remove the reference when we clean up the + subscription. This prevents evsub from being destroyed before + we're done with it. + * A state has been added to the subscription tree structure so + termination progress can be tracked through the asyncronous tasks. + * The pubsub_on_evsub_state callback has been split so it's not doing + double duty. It now only handles the final cleanup of the + subscription tree. pubsub_on_rx_refresh now handles both client + refreshes and client terminates. It was always being called for + both anyway. + * The serialized_on_server_timeout task was removed since + serialized_pubsub_on_rx_refresh was almost identical. + * Missing state checks and ao2_cleanups were added. + * Some debug levels were adjusted to make seeing only off-nominal + things at level 1 and nominal or progress things at level 2+. + + ASTERISK-26099 #close + Reported-by: Ross Beer. + + Change-Id: I779d11802cf672a51392e62a74a1216596075ba1 + +2016-06-21 07:05 +0000 [ef97911a1c] Alexander Traud + + * res_rtp_asterisk: Use latest DTLS version available by underlying platform. + + Do not use DTLSv1_method() but DTLS_method() when available in OpenSSL of the + underlying platform. This change enables DTLS 1.2 since OpenSSL 1.0.2, for + WebRTC (DTLS-SRTP via SIP-over-WebSockets). This change enables AEAD-based + cipher-suites. + + ASTERISK-26130 #close + + Change-Id: I41f24448d6d2953e8bdb97c9f4a6bc8a8f055fd0 + +2016-06-21 10:53 +0000 [69d58a1e37] Scott Griepentrog + + * PJSIP: provide transport type with received messages + + The receipt of a SIP MESSAGE may occur over any transport including TCP + and TLS. When the message is received, the original URI is added to the + message in the field PJSIP_RECVADDR, but this is insufficient to ensure + a reply message can reach the originating endpoint. This patch adds the + PJSIP_TRANSPORT field populated with the transport type. + + ASTERISK-26132 #close + + Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e + +2016-06-21 08:01 +0000 [cbfa9f771e] Alexander Traud + + * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf. + + Some configure scripts used both AC_HELP_STRING and its replacement + AS_HELP_STRING. For consistency and to avoid obsolete warnings, those were + changed to AS_HELP_STRING. + + ASTERISK-26046 + + Change-Id: I8aad4fd2bdee40aa2a31ce3339a1eb33ff4f5b0f + +2016-06-20 10:29 +0000 [ba0d9e7f7a] Joshua Colp + + * res_pjsip_session: Handle race condition at shutdown with timer. + + When shutting down res_pjsip_session will get unloaded before res_pjsip. + The act of unloading unregisters all the PJSIP services and sets + their module IDs to -1. In some cases it is possible for a timer to + occur after this happens which calls into res_pjsip_session. The + res_pjsip_session module can then try to get the session from the + INVITE session using the module ID. Since the module ID is now -1 + this fails. + + This change stores a copy of the module ID and uses it for the timer + callback scenario. If the module ID is -1 the callback immediately + returns but if the module ID is valid then it continues as normal. + + This works as the original ID of the module is guaranteed to still + be valid when used with the INVITE session. + + ASTERISK-26127 #close + + Change-Id: I88df72525c4e9ef9f19c13aedddd3ac4a335c573 + +2016-06-20 12:13 +0000 [c1512f4108] Richard Mudgett + + * app_voicemail.c: Fix IMAP compile error. + + Fix compile error introduced by the patch for + ASTERISK-26045 + + Change-Id: I5b02876266f2824f4cec2b54d6ff4db5de5778d3 + +2016-06-16 15:56 +0000 [5134a8043a] Alexei Gradinari + + * fix: memory leaks, resource leaks, out of bounds and bugs + + ASTERISK-26119 #close + + Change-Id: Iecbf7d0f360a021147344c4e83ab242fd1e7512c + +2016-06-13 17:40 +0000 [cfebe3b94a] Mark Michelson + + * ARI: Ensure announcer channels are destroyed. + + Announcer channels were not being destroyed because the + stasis_app_control structure that referenced them was not being + destroyed. The control structure was not being destroyed because it was + not being unlinked from its container. It was not being unlinked from + its container because the after bridge callback for the announcer + channel was not being run. The after bridge callback was not being run + because the after bridge datastore was not being removed from the + channel on destruction. The channel was not being destroyed because the + hangup that used to destroy the channel was now only reducing the + reference count to one. The reference count of the channel was only + being reduced to one because the stasis_app_control structure was + holding the final reference... + + The control structure used to not keep a reference to the channel, so + that loop described above did not happen. + + The solution is to manually remove the control structure from its + container when the playback on a bridge is complete. + + ASTERISK-26083 #close + Reported by Joshua Colp + + Change-Id: I0ddc0f64484ea0016245800b409b567dfe85cfb4 + +2016-06-20 08:05 +0000 [76516bd79d] Alexander Traud + + * http: leverage 'bindaddr' for TLS in http.conf + + The internal HTTP/WebSocket server supports both TCP and TLS, which can be + activated separately via the file http.conf. The source code intends to re-use + the TCP parameter 'bindaddr' for TLS, even if 'tlsbindaddr' is not specified + explicitly. This did not work because of a typo. This change resolves this typo. + + ASTERISK-26126 #close + + Change-Id: I5efb0409ae12044dfb3495b6b97b6d40a8c9c51f + +2016-05-31 09:10 +0000 [89cc86fc38] Vasil Kolev + + * chan_sip: bigger buffers for headers, better failure mode + + Currently chan_sip can give weird messages if the contacts don't + fit in the From: or To: headers. This fix changes the from,to and + invite variables to use ast_str, allocates and deallocates them and + resizes them if needed. + + ASTERISK-26069 #close + + Change-Id: I1b68fcbddca6f6cc7d7a92fe1cb0d5430282b2b3 + +2016-05-18 17:37 +0000 [d53a36ff33] Richard Mudgett + + * res_pjsip_transport_management.c: Misc cleanups to survive shutdown. + + * In unload_module(), reordered destroying things to minimize the window + that the global transports container could be used by other threads on + shutdown. When shutting down you need to stop things in the opposite + order of creation. + + * Put the global transports container into an AO2_GLOBAL_OBJ_STATIC to + eliminate the crash potential by other threads using the container on + shutdown. + + * Made struct monitored_transport.sip_received not use + ast_atomic_fetchadd_int() since it is used as a boolean value that is only + set TRUE. It was previously incremented for every received SIP message + and could theoretically overflow. + + * In monitored_transport_state_callback(), allocated the monitored + transport object without a lock since the lock was unused. + + * In keepalive_global_loaded(), removed releasing the transports container + if the keepalive_thread could not be started. I set it up to be tried + again if the user reloads the configuration. + + Change-Id: I8d12d16ef564290fa6d25a32334bb5ce8fdf87ff + +2016-01-05 19:08 +0000 [03953d8034] Richard Mudgett + + * res_pjsip.c: Add check that timer actually got scheduled. + + Change-Id: Iabaa2e5dccf0762c258101ea0eb1487cf6959ad1 + +2016-06-13 13:33 +0000 [32ab98116e] Richard Mudgett + + * res_rtp_multicast.c: Fix warning message typo. + + Change-Id: Ic9928208b9957e09866abe3d9649030942ec52b3 + +2016-02-11 18:15 +0000 [0429c53368] Richard Mudgett + + * res_pjsip_session.c: Reorganize ast_sip_session_terminate(). + + Change-Id: I68a2128bcba4830985d2d441e70dfd1ac5bd712b + +2016-06-10 12:35 +0000 [5823f279f3] Richard Mudgett + + * chan_rtp: Backport changes from master. + + * Deprecate chan_multicast_rtp. + + Change-Id: Ib5a45e58c75ee8abd0b4f9575379b5321feb853e + +2016-06-10 16:13 +0000 [dde58df318] Richard Mudgett + + * chan_rtp.c: Copy file from chan_multicast_rtp.c + + Change-Id: I1119b53f2152ab1cbec74b5be7ea44844dbda8ef + +2016-06-08 06:15 +0000 [ca38a3cbb4] Alexander Traud + + * core: Not the configured but granted number of possible file descriptors. + + With CLI "core show settings", simply the parameter maxfiles of the file + asterisk.conf was shown. If that parameter was not set, nothing was displayed + although the environment might have set a default number itself. Or if maxfiles + were not granted (completely), still maxfiles was shown. Now, the maximum number + of possible file descriptors in the environment is shown. + + ASTERISK-26097 + + Change-Id: I2df5c58863b5007b34b77adbe28b885dfcdf7e0b + +2016-06-07 18:45 +0000 [caf6cccc5c] Joshua Colp + + * cel: Ensure only one dial status per channel exists. + + CEL wrongly assumed that a channel would only have a single dial + event on it. This is incorrect. Particularly in a queue each + call attempt to a member will result in a dial event, adding + a new dial status in CEL without removing the old one. This + would cause the container to grow with only one dial status + being removed when the channel went away. The other dial status + entries would remain leaking memory. + + This change fixes the memory leak by ensuring that only one dial + status will only ever exist for each channel. + + The behavior during the scenario where multiple events are received + has also been improved. For failure cases the first failure will + be the dial status. If an answer dial status is received, though, + it will take priority and the dial status for the channel will be + answer. + + Memory usage has also been decreased by storing the minimal + amount of information and the code has been cleaned up slightly. + + ASTERISK-25262 #close + + Change-Id: I5944eb923db17b6a0faa7317ff6abc9307c009fe + +2016-06-09 10:37 +0000 [715ef071a1] Mark Michelson + + * chan_pjsip: Lock channel when checking for RTP changes. + + bridge_native_rtp can call into an RTP-capable channel driver in order + for the driver to update information about who the channel is + communicating with. For SIP channel drivers, this means deactivating + RTCP and sending a reinvite so that the endpoints can communicate + directly. + + bridge_native_rtp does the right thing and has the channel locked when + calling into the channel driver. chan_pjsip can't alter session + properties in this thread, though. chan_pjsip queues a task on the + session serializer in order to update properties there. + + The problem is that this queued task was not locking the channel. This + meant that the queued task could attempt to deactivate RTCP at the same + time that the channel thread was attempting to process an incoming RTCP + packet. This could lead to a crash. + + This patch fixes the issue by locking the channel in the queued task + when altering RTP properties. + + ASTERISK-26092 #close + Reported by Niklas Larsson + + Change-Id: I3464e226a3c41f6b915f97891e07fa1599e2a159 + +2016-06-09 09:20 +0000 [a99ddc6a0d] gtjoseph + + * build: Fix ast_sockaddr initialization to be more portable + + A change to glibc 2.22 changed the order of the sockadddr_storage + members which caused the places where we do an initialization of + ast_sockaddr with '{ { 0, 0, } }' to fail compilation. Those + initializers (which we shouldn't have been using anyway) have been + replaced with memsets. + + Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4 + +2016-06-08 12:26 +0000 [eabb398d71] Matt Jordan + + * res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loaded + + A crash can occur in res_hep_pjsip or res_hep_rtcp if res_hep has not + loaded and does not have a configuration file. Previously when this + occurred, checks were put in to see if the configuration was loaded + successfully. While this is a good idea - and has been added to the + offending function in res_hep - the reality is res_hep_pjsip and + res_hep_rtcp have no business running if res_hep isn't also running. + + As such, this patch also adds a function to res_hep that returns whether + or not it successfully loaded. Oddly enough, ast_module_check returns + "everything is peachy" even if a module declined its load - so it cannot + be solely relied on. res_hep_pjsip and res_hep_rtcp now also check this + function to see if they should continue to load; if it fails, they + decline their load as well. + + ASTERISK-26096 #close + + Change-Id: I007e535fcc2e51c2ca48534f48c5fc2ac38935ea + +2016-06-08 05:58 +0000 [0d84421f93] Alexander Traud + + * astfd: Not maximum size of a single file but maximum file descriptors. + + With menuselect "DEBUG_FD_LEAKS" and CLI "core show fd", the maximum size of a + single file was shown. Now, the maximum number of possible file descriptors is + shown. + + ASTERISK-26097 + + Change-Id: Icf98d145774b38cac144ca76d19eaef42ce659a3 + +2016-06-02 14:53 +0000 [9c5a0b814b] Timo Teräs + + * Fix #include poll.h and sys/cdefs.h + + POSIX defines poll.h, sys/poll.h should not be used at is c-library + internal header which may or may not exist. Notable in musl it + generates warning of being incorrect. And add explict include of + sys/cdefs.h where needed. + + Change-Id: I142930df53fe7585a06b854b6faddc5301e024be + +2016-06-03 22:44 +0000 [9c35f34301] Richard Mudgett + + * res_pjsip_registrar.c: Eliminate rx REGISTER request race condition. + + This patch fixes a race condition processing received REGISTER requests + and their retransmissions caused by REGISTER requests being processed by + two threads. The "sip_transaction Unable to register REGISTER transaction + (key exists)" message is a notable symptom of this issue. + + This issue was more likely to happen before the pjsip/distributor + serializers were created. Instead of steps one and two below placing the + REGISTER messages into the same pjsip/distributor they were placed in + random pjsip/default serializers. + + 1) REGISTER requests come in and get placed on the pjsip/distributor + serializer. + + 2) Before the first request is processed a retransmission comes in and is + placed on the same pjsip/distributor serializer. + + 3) The first request goes up the pjsip stack and is then shunted off to + the pjsip/aor/ serializer. + + 4) Before the first request is completed processing in the pjsip/aor/ + serializer, the second request goes up the pjsip stack and is also shunted + off to the pjsip/aor/ serializer. + + 5) The first request completes processing and sends out its response. + + 6) The second request completes processing and tries to send out its + response but pjlib complains that the REGISTER transaction key already + exists. + + 7) Sadness ensues. + + * The race is eliminated by removing the pjsip/aor/ serializer and + continuing the processing in the pjsip/distributor serializer. Now any + retransmissions queued in the pjsip/distributor serializer will be + processed after the first message is completely processed. + + ASTERISK-26088 #close + Reported by: Richard Mudgett + + Change-Id: I842d714346088bf717ea27437f1dd85bff0bab5a + +2016-06-03 11:35 +0000 [557333ea4c] Richard Mudgett + + * stasis: Add setting subscription congestion levels. + + Stasis subscriptions and message routers create taskprocessors to process + the event messages. API calls are needed to be able to set the congestion + levels of these taskprocessors for selected subscriptions and message + routers. + + * Updated CDR, CEL, and manager's stasis subscription congestion levels + based upon stress testing. Increased the congestion levels to reduce the + potential for bursty call setup/teardown activity from triggering the + taskprocessor overload alert. CDRs in particular need an extra high + congestion level because they can take awhile to process the stasis + messages. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: Id0a716394b4eee746dd158acc63d703902450244 + +2016-06-02 18:19 +0000 [110d772467] Richard Mudgett + + * sorcery: Add setting object type congestion levels. + + Sorcery creates taskprocessors for object types to process object observer + callbacks. An API call is needed to be able to set the congestion levels + of these taskprocessors for selected object types. + + * Updated PJSIP's contact and contact_status sorcery object type observer + default congestion levels based upon stress testing. Increased the + congestion levels to reduce the potential for bursty register/unregister + and subscribe/unsubscribe activity from triggering the taskprocessor + overload alert. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6 + +2016-06-02 16:08 +0000 [610eee2a36] Richard Mudgett + + * taskprocessors: Implement high/low water mark alerts. + + When taskprocessors get backed up, there is a good chance that we are + being overloaded and need to defer adding new work to the system. + + * Implemented a high/low water alert mechanism for modules to check if the + system is being overloaded and take appropriate action. When a + taskprocessor is created it has default congestion levels set. A + taskprocessor can later have those congestion levels altered for specific + needs if stress testing shows that the taskprocessor is a symptom of + overloading or needs to handle bursty activity without triggering an + overload alert. + + * Add CLI "core show taskprocessor" low/high water columns. + + * Fixed __allocate_taskprocessor() to not use RAII_VAR(). RAII_VAR() was + never a good thing to use when creating a taskprocessor because of the + nature of how its references needed to be cleaned up on a partial + creation. + + * Made res_pjsip's distributor check if the taskprocessor overload alert + is active before placing a message representing brand new work onto a + distributor serializer. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I182f1be603529cd665958661c4c05ff9901825fa + +2016-05-27 17:31 +0000 [26e3492246] Richard Mudgett + + * res_pjsip_session: Use distributor serializer for incoming calls. + + We must continue using the serializer that the original INVITE came in on + for the dialog. There may be retransmissions already enqueued in the + original serializer that can result in reentrancy and message sequencing + problems. + + Outgoing call legs create the pjsip/outsess/ serializers for + their dialogs. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I24d7948749c582b8045d5389ba3f6588508adbbc + +2016-05-27 16:28 +0000 [ceb1007ed7] Richard Mudgett + + * res_pjsip_pubsub.c: Recreate subscriptions using distributor serializer. + + * Resolves potential reentrancy problems if system restarted in the middle + of subscription message transactions. + + * Fixes memory leak recreating persistent subscriptions when the + subscription resource tree could not be created. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I71e34d7ae8ed35a694f1030e820e2548c48697be + +2016-05-27 12:50 +0000 [27bafc3a8b] Richard Mudgett + + * res_pjsip_pubsub.c: Use distributor serializer for incoming subscriptions. + + We must continue using the serializer that the original SUBSCRIBE came in + on for the dialog. There may be retransmissions already enqueued in the + original serializer that can result in reentrancy and message sequencing + problems. The "sip_transaction Unable to register SUBSCRIBE transaction + (key exists)" message is a notable symptom of this issue. + + Outgoing subscriptions still create the pjsip/pubsub/ + serializers for their dialogs. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I18b00bb74a56747b2c8c29543a82440b110bf0b0 + +2016-05-26 17:35 +0000 [16b08444da] Richard Mudgett + + * pjsip_distributor.c: Consistently pick a serializer for messages. + + Incoming messages that are not part of a dialog or a recognized response + to one of our requests need to be sent to a consistent serializer. Under + load we may be queueing retransmissions before we can process the original + message. We don't need to throw these messages onto random serializers + and cause reentrancy and message sequencing problems. + + * Created a pool of pjsip/distributor serializers that get picked by + hashing the call-id and remote tag strings of the received messages. + + * Made ast_sip_destroy_distributor() destroy items in the reverse order of + creation. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I2ce769389fc060d9f379977f559026fbcb632407 + +2016-06-02 12:51 +0000 [993b769524] Richard Mudgett + + * pjsip_distributor.c: Ignore messages until fully booted. + + We should not be processing any incoming messages until we are fully + booted. We may not have dialplan or other needed configuration loaded + yet. + + ASTERISK-26089 #close + Reported by: Scott Griepentrog + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264 + +2016-06-02 12:04 +0000 [321a9b128f] Joshua Colp + + * res_odbc: Implement a connection pool. + + Testing has shown that our usage of UnixODBC is problematic + due to bugs within UnixODBC itself as well as the heavy weight + cost of connecting and disconnecting database connections, even + when pooling is enabled. + + For users of UnixODBC 2.3.1 and earlier crashes would occur due + to insufficient protection of the disconnect operation. This was + fixed in UnixODBC 2.3.2 and above. + + For users of UnixODBC 2.3.3 and higher a slow-down would occur + under heavy database use due to repeated connection establishment. + A regression is present where on each connection the database + configuration is cached again, with the cache growing out of + control. + + The connection pool implementation present in this change helps + to mitigate these issues by reducing how much we connect and + disconnect database connections. We also solve the issue of + crashes under UnixODBC 2.3.1 by defaulting the maximum number of + connections to 1, returning us to the previous working behavior. + For users who may have a fixed version the maximum concurrent + connection limit can be increased helping with performance. + + The connection pool works by keeping a list of active connections. + If the connection limit has not been reached a new connection is + established. If the connection limit has been reached then the + request waits until a connection becomes available before + continuing. + + ASTERISK-26074 #close + ASTERISK-26054 #close + + Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff + +2016-06-07 05:45 +0000 [c6ee4a0f44] Alexander Traud + + * res_srtp: Instead of libSRTP use OpenSSL as random source. + + Since libSRTP 1.5, its Random Number Generator (RNG) is not maintained anymore. + Therefore, the symbol RAND_bytes is used instead of crypto_get_random. + + ASTERISK-24436 #close + + Change-Id: Iea0bae4d4e3c9aa0926ea442b6484b5159789d96 + +2016-06-07 02:16 +0000 [d38b8e6399] Alexander Traud + + * BuildSystem: Avoid 'ar cru' and use 'ar cr' instead. + + In several internal library projects, the files are archived with the help of + 'ar cr'. Only the projects editline and the Objective Open H.323 stack + implementation in C (ooh323c) use 'ar cru' instead. Recently, some platforms + changed the default parameters of AR which creates "/usr/bin/ar: `u' modifier + ignored since `D' is the default (see `U')". For consistency and to avoid this + message all projects use 'ar cr' now. + + ASTERISK-26091 #close + + Change-Id: I710a9b1c01c1b5a1931a646098c044c8161ead40 + +2016-05-27 14:49 +0000 [c27c232057] gtjoseph + + * ari/resource_channels: Add 'formats' to channel create/originate + + If you create a local channel and don't specify an originator channel + to take capabilities from, we automatically add all audio formats to + the new channel's capabilities. When we try to make the channel + compatible with another, the "best format" functions pick the best + format available, which in this case will be slin192. While this is + great for preserving quality, it's the worst for performance and + overkill for the vast majority of applications. + + In the absense of any other information, adding all formats is the + correct thing to do and it's not always possible to supply an + originator so a new parameter 'formats' has been added to the channel + create/originate functions. It's just a comma separated list of formats + to make availalble for the channel. Example: "ulaw,slin,slin16". + 'formats' and 'originator' are mutually exclusive. + + To facilitate determination of format names, the format name has been + added to "core show codecs". + + ASTERISK-26070 #close + + Change-Id: I091b23ecd41c1b4128d85028209772ee139f604b + +2016-06-02 04:59 +0000 [cda3385409] Joshua Colp + + * alembic: Fix migration. + + The 81b01a191a46_pjsip_add_contact_reg_server.py script was attempting + to use UniqueConstraint and failing. It was not imported and after + importing it also continued to fail. + + I've changed the script to use the explicit name of the constraint + instead. + + Change-Id: I2438b0be90b7ce583b47dd27983c0c1a02cea5b9 + +2016-06-01 13:57 +0000 [e2132dd358] Richard Mudgett + + * logging,cdr,cel: Fix stringfield memory leak. + + The stringfields refactor to allow adding stringfields to the end of a + structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some + incomplete cleanup code by some stringfield users. + + The most noticeable leaker is the logging system where there is a leak for + every log message generated. + + ASTERISK-26078 #close + Reported by: Etienne Lessard + Patches: + jira_asterisk_26078_v13.patch (license #5621) patch uploaded + by Richard Mudgett + + Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782 + +2016-05-25 10:34 +0000 [2de58c6d01] Alexei Gradinari + + * core/dial: New channel variable FORWARDERNAME + + Added a new channel variable FORWARDERNAME which indicates which + channel was responsible for a forwarding requests received on dial attempt. + + Fixed a bug in the app_queue: FORWARD_CONTEXT is not used. + + ASTERISK-26059 #close + + Change-Id: I34e93e8c1b5e17776a77b319703c48c8ca48e7b2 + +2016-05-31 13:02 +0000 [b2ce0e354b] Richard Mudgett + + * pjsip_distributor.c: Use correct rdata info access method (Part 2). + + The pjproject doxygen for rdata->msg_info.info says to call + pjsip_rx_data_get_info() instead of accessing the struct member directly. + You need to call the function mostly because the function will generate + the struct member value if it is not already setup. + + Change-Id: I4d519385a577f3e9d9193a88125e493cf17fa799 + +2016-05-30 19:27 +0000 [fe305ccf01] gtjoseph + + * res_pjsip_mwi_body_generator: Re-order the body items + + Re-ordered the body items so Message-Account is second. + + Messages-Waiting: no + Message-Account: sip:1571@:5060 + Voice-Message: 0/0 (0/0) + + ASTERISK-26065 #close + Reported-by: Ross Beer + + Change-Id: If5d35a64656eac98c2dd5e490cc0b2807bed80c3 + +2016-05-30 10:58 +0000 [e8abfdcdc5] gtjoseph + + * pjproject_bundled: Move to pjproject 2.5 + + Although all the patches we had against 2.4.5 were applied by Teluu, + a new bug was introduced preventing re-use of tcp and tls transports + This patch removes all the previous patches against 2.4.5, updates + the version to 2.5, and adds a new patch to correct the transport + re-use problem. + + Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068 + +2016-05-27 12:25 +0000 [37d039fdf3] Rusty Newton + + * res_pjsip: Add clarifying documentation to PJSIP_HEADER help text + + Added notes about when you can read or write headers. Specifically + about being able to read on the inbound channel and write on an + outbound channel. + + ASTERISK-26063 #close + Reported by: Private Name + Tested by: Rusty Newton + + Change-Id: Ibeb64af17d1f6451028b3c29855a3f151a01d8c5 + +2016-05-25 18:30 +0000 [03d5b3ce5c] Richard Mudgett + + * pjsip_distributor.c: Use correct rdata info access method. + + The pjproject doxygen for rdata->msg_info.info says to call + pjsip_rx_data_get_info() instead of accessing the struct member directly. + You need to call the function mostly because the function will generate + the struct member value if it is not already setup. + + Change-Id: Iafe8b01242b7deb0ebfdc36685e21374a43936d2 + +2016-05-20 13:56 +0000 [859bbec09b] Alexei Gradinari + + * app_voicemail: fix bugs, imap mm_status log change to debug + + Fixed some bugs: + - create dirpath when save downloading message from IMAP storage. + - create IMAP folder if not exists when saving to IMAP storage + - check if file successfully opened before write to it + - some IMAP checks + - remove non-standard flag 'Unseen' + etc + + Change to debug IMAP mm_status log instead of verbose. + + Remove unused X-Asterisk-VM-Caller-channel message header + for security reason. The clients should not know name of peer/endpoint. + + ASTERISK-26045 #close + + Change-Id: I7f83d88b69b36934e2539c114b9fb612deed971b + +2016-05-19 14:56 +0000 [230686f4ec] Alexei Gradinari + + * res_pjsip: add "via_addr", "via_port", "call_id" to contact + + 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 "via_addr", "via_port", "call_id" to contact. + Added new fields ViaAddress, CallID to AMI event ContactStatus. + + ASTERISK-26011 + + Change-Id: I36bcc0bf422b3e0623680152d80486aeafe4c576 + +2016-05-24 16:56 +0000 [04c12561a7] Alexei Gradinari + + * res_pjsip: chatty verbose messages + + There are a lot of verbose messages about Endpoint and Contact status + changes if there are many dynamic endpoints. + The patch sets verbose level 2 for Endpoint status changes + and verbose level 3 for Contact status changes. + + ASTERISK-26055 #close + + Change-Id: Ie64e261ddbbc41bfff0f0190241152cc123fe6d7 + +2016-02-12 09:59 +0000 [a42bea3314] Corey Farrell + + * threadpool: Fix potential data race. + + worker_start checked for ZOMBIE status without holding a lock. All + other read/write of worker status are performed with a lock, so this + check should do the same. + + ASTERISK-25777 #close + + Change-Id: I5e33685a5c26fdb300851989a3b82be8c4e03781 + +2016-05-18 10:58 +0000 [a32616d60c] Tzafrir Cohen + + * Makefile: remove OSARCH check for init install + + There are more specific checks for the platform. + + Specifically this allows installing OS/X init scripts. + + ASTERISK-26038 #close + + Change-Id: If08933621145b10362a0cfe73c079301d9c13f50 + Signed-off-by: Tzafrir Cohen + +2016-05-21 05:42 +0000 [9ddaab789e] Jesper (License 5518) + + * func_curl: Don't trim response text on non-ASCII characters + + The characters 0x80-0xFF were trimmed as well as 0x00-0x20 because of + a signed comparison. + + ASTERISK-25669 #close + Reported by: Jesper + patches: + strings.curl.trim.patch submitted by Jesper (License 5518) + + Change-Id: Ia51e169f24e3252a7ebbaab3728630138ec6f60a + +2016-05-20 16:59 +0000 [9453d1187a] Richard Mudgett + + * parking.h: Update ast_parking_park_call() doxygen to reality. + + ASTERISK-26029 + + Change-Id: I2db14d102a48d3224010e6d1c69e856373cc1260 + +2016-05-10 14:30 +0000 [cd89501d48] Alexei Gradinari + + * func_odbc: single database connection should be optional + + func_odbc was changed in Asterisk 13.9.0 + to make func_odbc use a single database connection per DSN + because of reported bug ASTERISK-25938 + with MySQL/MariaDB LAST_INSERT_ID(). + + This is drawback in performance when func_odbc is used + very often in dialplan. + + Single database connection should be optional. + + ASTERISK-26010 + + Change-Id: I57d990616c957dabf7597dea5d5c3148f459dfb6 + +2016-05-20 09:39 +0000 [c0b190dd9a] Mark Michelson + + * res_pjsip: Match dialogs on responses better. + + When receiving an incoming response to a dialog-starting INVITE, we were + not matching the response to the INVITE dialog. Since we had not + recorded the to-tag to the dialog structure, the PJSIP-provided method + to find the dialog did not match. + + Most of the time, this was not a problem, because there is a fall-back + that makes the response get routed to the same serializer that the + request was sent on. However, in cases where an asynchronous DNS lookup + occurs in the PJSIP core, the thread that sends the INVITE is not + actually a threadpool serializer thread. This means we are unable to + record a serializer to handle the incoming response. + + Now, imagine what happens when an INVITE is sent on a non-serialized + thread, and an error response (such as a 486) arrives. The 486 ends up + getting put on some random threadpool thread. Eventually, a hangup task + gets queued on the INVITE dialog serializer. Since the 486 is being + handled on a different thread, the hangup task can execute at the same + time that the 486 is being handled. The hangup task assumes that it is + the sole owner of the INVITE session and channel, so it ends up + potentially freeing the channel and NULLing the session's channel + pointer. The thread handling the 486 can crash as a result. + + This change has the incoming response match the INVITE transaction, and + then get the dialog from that transaction. It's the same method we had + been using for matching incoming CANCEL requests. By doing this, we get + the INVITE dialog and can ensure that the 486 response ends up being + handled by the same thread as the hangup, ensuring that the hangup runs + after the 486 has been completely handled. + + ASTERISK-25941 #close + Reported by Javier Riveros + + Change-Id: I0d4cc5d07e2a8d03e9db704d34bdef2ba60794a0 + +2016-05-19 11:41 +0000 [ddcf983e39] Joshua Colp + + * res_sorcery_astdb: Filter fields to only the registered ones. + + This change introduces the same filtering that is done in res_sorcery_realtime + to the res_sorcery_astdb module. This allows persisted sorcery objects + that may contain unknown fields to still be read in from the AstDB + and used. This is particularly useful when switching between different + versions of Asterisk that may have introduced additional fields. + + ASTERISK-26014 #close + + Change-Id: Ib655130485a3ccfd635b7ed5546010ca14690fb2 + +2016-05-09 21:40 +0000 [39fedfa423] snuffy + + * res_pjsip_empty_info: Respond to empty SIP INFO packets + + Some SBCs require responses to empty SIP INFO packets + after establishing call via INVITE, if not responded to + they may drop your call after unspecified timeout of X minutes. + + They are identified by having no Content-Type, check for this + and respond with 200 - OK message. + + ASTERISK-24986 #close + Reported-by: Ilya Trikoz, Federico Santulli + + Change-Id: Ib27e4f07151e5aef28fa587e4ead36c5b87c43e0 + +2016-05-18 07:54 +0000 [935e0496c4] gtjoseph + + * udptl: Don't eat sequence numbers until OK is received + + Scenario: + Local fax -> Asterisk w/ firewall -> Provider -> Remote fax + + * Local fax starts rtp call to remote fax + * Remote fax starts t38 call back to local fax. + * Local fax sends t38 no-signal to Asterisk before sending an OK. + * udptl processes the frame and increments the expected sequence number. + * chan_sip drops the frame because the call isn't up so nothing goes out + the external interface to open the port for incoming packets. + * Local fax sends OK and Asterisk sends OK to the remote fax. + * Remote fax sends t38 packets which are dropped by the firewall. + * Local fax re-sends t38 no-signal with the same sequence number. + * udptl drops the frame because it thinks it's a dup. + * Still no outgoing packets to open the firewall. + * t38 negotiation fails. + + The patch drops frames t38 received before udptl sequence processing + when the call hasn't been answered yet. The second no-signal frame + is then seen as new and is relayed out the external interface which + opens the port and allows negotiation to continue. + + ASTERISK-26034 #close + + Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9 + +2016-05-17 11:14 +0000 [77e8ec162b] gtjoseph + + * chan_sip: Prevent extra Session-Expires headers from being added + + When chan_sip does a re-INVITE to refresh a session and authentication + is required, the INVITE with the Authorization header containes a + second Session-Expires header without the ";refersher=" parameter. + This is causing some proxies to return a 400. Also, when Asterisk is + the uas and the refresher, it is including the Session-Expires and + Min-SE headers in OPTIONS messages which is not allowed per RFC4028. + + This patch (based on the reporter's) Checks to see if a Session-Expires + header is already in the message before adding another one. It also + checks that the method is INVITE or UPDATE. + + ASTERISK-26030 #close + + Change-Id: I58a7b07bab5a3177748d8a7034fb8ad8e11ce1d9 + +2016-05-16 15:29 +0000 [3f6ef63099] gtjoseph + + * res_pjsip_outbound_registration: Clean up state when registration is deleted + + Nothing was cleaning up the registration state object when ast_sorcery_delete + was called on a registration. So, the registration was deleted from sorcery + but the state object went right on refreshing the registration (or failing + to refresh the registration) with the peer. + + * Added a 'deleted' observer on registration that removes the state object. + + ASTERISK-25964 #close + Reported-by Matt Jordan + + Change-Id: I2db792145cdb1f72ebbf57dd9099596dbbf12c23 + +2016-05-15 19:05 +0000 [b6f9392a12] gtjoseph + + * res_pjsip: Set TCP_NODELAY on TCP transports + + Although it's perfectly legal to place multiple SIP messages in the same packet, + it can cause problems because the Linux default is to enable Path MTU Discovery + which sets the Don't Fragment bit on the packets. If adding a second message to + the packet causes the MTU to be exceeded, and the destination isn't equipped to + send a FRAGMENTATION NEEDED response to a large packet, the packet will just be + dropped. + + We can't specifically tell the stack to send only 1 message per packet, but we + can turn on TCP_NODELAY when we create the transport. This will at least tell + the stack to send packets as soon as possible. + + ASTERISK-26005 #close + Reported-by: Ross Beer + + Change-Id: I820f23227183f2416ca5e393bec510e8fe1c8fbd + +2016-05-14 21:48 +0000 [361a16f316] Matt Jordan + + * configs/samples/pjsip.conf.sample: Fix typo + + A ':' is not a valid token for starting a comment. + + Change-Id: I123592d93a83d1bdde3e352822881eb9da85e5ad + +2016-05-12 07:08 +0000 [f91a7dc993] Matt Jordan + + * res/res_hep_pjsip: Fix reported local IP address when bound to 'any' + + When bound to an 'any' address, e.g., 0.0.0.0, PJSIP reports as its + local address the 'any' address, as opposed to the IP address we + actually received the packet on. This can cause some confusion in Homer, + as it will dutifully report what we send it. + + This patch uses the PJSIP inspection routines to determine which IP + address we probably received the packet on based on the remote party's + IP address. In the event that this fails, it falls back to the IP + address natively reported by the transport. + + Change-Id: I076f835d2aef489e1ee1d01595b211eb2ce62da3 + +2016-05-14 12:29 +0000 [9de5cd209e] Sean Bright + + * res_ari: Correct Location headers returned by some ARI resources + + The Location headers returned by: + + * /bridges/{bridgeId}/play + * /bridges/{bridgeId}/record + * /channels/{channelId}/play + * /channels/{channelId}/record + + Did not have the '/ari' prefix, and in the case of the 'play' resources, were + using 'playback' instead of 'playbacks.' + + Change-Id: I957c58a3a1471bf477dae7c67faa1b74fcd9241c + +2016-05-13 11:38 +0000 [524a302974] Alexei Gradinari + + * res_pjsip: Endpoint IP Access Controls + + With the old SIP module we can use IP access controls per peer. + PJSIP module missing this feature. + + This patch added next 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 + + This patch also better logging failed request: + add custom message instead of "No matching endpoint found" + add SIP method to logging + + ASTERISK-25900 + + Change-Id: I456dea3909d929d413864fb347d28578415ebf02 + +2016-05-11 20:17 +0000 [89ae4466ea] Matt Jordan + + * res_hep: Provide an option to pick the UUID type + + At one point in time, it seemed like a good idea to use the Asterisk + channel name as the HEP correlation UUID. In particular, it felt like + this would be a useful identifier to tie PJSIP messages and RTCP + messages together, along with whatever other data we may eventually send + to Homer. This also had the benefit of keeping the correlation UUID + channel technology agnostic. + + In practice, it isn't as useful as hoped, for two reasons: + 1) The first INVITE request received doesn't have a channel. As a + result, there is always an 'odd message out', leading it to be + potentially uncorrelated in Homer. + 2) Other systems sending capture packets (Kamailio) use the SIP Call-ID. + This causes RTCP information to be uncorrelated to the SIP message + traffic seen by those capture nodes. + + In order to support both (in case someone is trying to use res_hep_rtcp + with a non-PJSIP channel), this patch adds a new option, uuid_type, with + two valid values - 'call-id' and 'channel'. The uuid_type option is used + by a module to determine the preferred UUID type. When available, that + source of a correlation UUID is used; when not, the more readily available + source is used. + + For res_hep_pjsip: + - uuid_type = call-id: the module uses the SIP Call-ID header value + - uuid_type = channel: the module uses the channel name if available, + falling back to SIP Call-ID if not + For res_hep_rtcp: + - uuid_type = call-id: the module uses the SIP Call-ID header if the + channel type is PJSIP and we have a channel, + falling back to the Stasis event provided + channel name if not + - uuid_type = channel: the module uses the channel name + + ASTERISK-25352 #close + + Change-Id: Ide67e59a52d9c806e3cc0a797ea1a4b88a00122c + +2016-05-10 02:56 +0000 [a73d79c22f] Tzafrir Cohen + + * basic-cfg: asterisk.conf: remove [directories] + + A minimal configuration does not need to explicitly spell out the + directories. The built-in defaults will do just fine. In many cases + they are wrong. + + Change-Id: Id1a671e5c5e9923765a4156b57f9f7e263fdd26c + Signed-off-by: Tzafrir Cohen + +2016-05-10 03:06 +0000 [1c56de9453] Tzafrir Cohen + + * basic-cfg: asterisk.conf: defaults of options + + Note the default of remmed-out options. To clarify that those values are + not the defaults. + + Change-Id: I849c29b7a710f0abc37355fcb5bfee335ae30738 + Signed-off-by: Tzafrir Cohen + +2016-05-10 03:08 +0000 [d7af591c59] Tzafrir Cohen + + * basic-cfg: asterisk.conf: debug level 5 spams + + Don't suggest users to use debug level 5, which spews (usually + non-useful) debug information. Reduce the suggestion to (an + arbitrarily-selected) level 2. + + Change-Id: Ib53195f78945970956ff59ef13fa89b90e0fcd60 + Signed-off-by: Tzafrir Cohen + +2016-05-10 03:10 +0000 [9b7db18fc1] Tzafrir Cohen + + * basic-cfg: asterisk.conf: don't set languages + + * No need to set language in a miniml configuration. 'en' will do just + fine. + * It would be useful to have an example of setting it to a different + language. + * Setting the documentation language explicitly is likewise not + required. Setting it to a different value is not common. At least + until there is a set of translated documentation. + + Change-Id: I94d91ea34e129925f25af81ef8dc0906fb568cb7 + Signed-off-by: Tzafrir Cohen + +2016-05-10 08:17 +0000 [eec539a46e] Tzafrir Cohen + + * followme: delete the right recorded name file + + FollowMe with the option a records the name of the caller and plays it + to the callee. However it has failed to clean up that recorded file + as it tried to delete the file name without the '.sln' extension. + + ASTERISK-26008 #close + + Change-Id: I79d7b1be7d5cde57bf076d9389e2a8a4422776ec + Signed-off-by: Tzafrir Cohen + +2016-05-12 14:36 +0000 [02d30e171e] Mark Michelson + + * Use doubles instead of floats for conversions when comparing strings. + + In 13.9.0, there was an issue where PJSIP contacts added to an AOR would + be deleted at seemingly random times. + + One reason this was happening was because of an operation to retrieve + the contacts whose expiration time was less than or equal to the current + time. When retrieving existing contacts, the contact's expiration time + and the current time were converted from a string to a float, and those + two floats were compared. + + On some systems, including mine, this conversion was horribly off. For + instance, I could regularly see the string "1463079214" get converted + into 1463079168.000000. When switching from using a float to using a + double, the conversion was as expected. + + Why was the conversion to float off? My best guess is that the + conversion to float was attempting to store the entire value in the 23 + bit significand of the IEEE-754 floating point number. In particular, if + you take only the 23 most significant bits of 1463079214, you get the + messed up 1463079168 that we were seeing in the conversion. It likely + was possible to get a more precise value by composing the number using + an exponent, but the conversion did not work that way. With a double, + you have a 52 bit significand, allowing the entire value to fit there, + and thereby allowing an accurate conversion. + + ASTERISK-26007 #close + Reported by Greg Siemon + + Change-Id: I83ca7944aae8b7cd994b254c78ec02411d321070 + +2016-05-12 09:13 +0000 [e2df15bae9] gtjoseph + + * pjsip_distributor: Add missing newline to NOTICE + + There was a newline missing from the end of the "no matching endpoint" notice. + + Change-Id: Idc11fe5bc0354072291663dbffe648c471e39181 + +2016-05-10 10:19 +0000 [a94a12bbf7] Sebastian Damm + + * res_pjsip_outbound_registration: generate correct Contact URI for TLS + + There are two types of SIP URIs indicating a secure transport: + * sips:user@example.org + * sip:user@example.org;transport=tls + + When using a sips URI, Asterisk checks incoming INVITEs and answers from + the other side for sips URIs, and rejects the packet if there are only + sip URIs. So Asterisk should only generate a sips Contact URI if the + other side supports it. + + This patch makes Asterisk generate either a sip or sips Contact URI + depending on the format of the server URI. + + If you want a sip URI, use: + server_uri=sip:example.org\;transport=tls + + If you want a sips URI, use: + server_uri=sips:example.org + + ASTERISK-25990 #close + Reported-by: Sebastian Damm + + Change-Id: I5ae57d6531ce940b5fc64d5cd2673e60db0f9ba2 + +2016-05-05 16:41 +0000 [36d66a23e0] Alexei Gradinari + + * logger: Add PID to syslog messages. + + During refactoring of this support the addition of + the PID to messages was removed. This change adds it + back in. + + ASTERISK-25538 #close + + Change-Id: Ie2d43b0652e59b7ac319a7dba94501540d70ba36 + +2016-05-11 14:07 +0000 [37214b0bdf] Matt Jordan + + * configure: Fix errors with AST_UNDEFINED_SANITIZER/AST_LEAK_SANITIZER + + When running on a system that does not support or use AST_UNDEFINED_SANITIZER + or AST_LEAK_SANITIZER, the configure script would incorrectly set those + constants to a blank value, e.g., 'AST_UNDEFINED_SANITIZER='. This would + cause menuselect to error out, complaining that a blank value is not a + valid option. This patch corrects the issue by setting the value to 0 if + the options that those constants enable/disable is not found. + + Change-Id: Ib39814aaf940f308d500c1e026edb3d70de47fba + +2016-05-03 15:43 +0000 [49b25a0956] Kevin Harwell + + * res_pjsip_outbound_publish: state potential dropped on reloads/realtime fetches + + When reloading, or fetching realtime data, if the "apply" failed for any + numerous reasons the current state object would not be maintained. This + potentially resulted in publishes being stopped for some states/clients when + they should not have been. + + This patch makes it so the current state object is kept upon any type of reload/ + fetch failures. + + Change-Id: Iab6020c116d628ed2ae81183e987e2eaa3c90b30 + +2016-05-03 15:31 +0000 [1b5c91b7be] Kevin Harwell + + * res_pjsip_outbound_publish: Potential crash due to off nominal path + + It was possible for the explicit publish destroy function to be called without + the pjsip client ever being initialized. This fix checks to make sure there is + a client to destroy before attempting. + + Change-Id: I8eea1bfa3bd472149bfc255310be2a6248688f5c + +2016-05-03 15:35 +0000 [10de553c9d] Kevin Harwell + + * res_pjsip_outbound_publishing: After unloading the library won't load again + + The same thing was happening in res_pjsip_publish_asterisk. When the library + was unloaded it did not unregister the object type from sorcery. Subsequent + loads resulted in a failed load due to the sorcery type already existing. + + Change-Id: Ifdc25e94e4cd40bc5a19eb4d0a00b86c2e9fedc9 + +2016-05-03 14:59 +0000 [1a833b9739] Kevin Harwell + + * res_pjsip_outbound_publish: Ref leak in off nominal callback paths + + There were a few spots where the client object's reference was being leaked in + sip_outbound_publish_callback. This patch cleans up those leaks. + + Change-Id: I485d0bc9335090f373026f77c548042e258461df + +2016-05-03 15:39 +0000 [4752ef02e0] Kevin Harwell + + * res_pjsip_outbound_publish: Won't unload if condition wait times out + + When res_pjsip_outbound_publish unloads it has to wait for all current + publishing objects to get done. However if the wait condition times out + then it does not fail the unload. This sometimes results in an infinite + loop check while unloading. This patch now fails the unload operation if + the condition times out. + + Change-Id: Id57b8cbed9d61222690fcba1e4f18e259df4c7ec + +2016-05-05 11:37 +0000 [4d063814ba] Kevin Harwell + + * res_pjsip_authenticator_digest: Don't use source port in nonce verification + + From the issue reporter: + "res_pjsip_outbound_authenticator_digest builds a nonce that is a hash of + the timestamp, the source address, the source port, a server UUID that is + calculated at startup, and the authentication realm. + + Rather than caching nonces that we create, we instead attempt to re-calculate + the nonce when receiving an incoming request with authentication. We then + compare the re-calculated nonce to the incoming nonce, and if they don't match, + then authentication has failed early. + + The problem is that it is possible, especially when using TCP, to receive two + requests from the same endpoint but have differing source ports for those + requests. Asterisk itself commonly will use different source ports for + outbound TCP requests." + + This patch removes the source port dependency when building the nonce. + + ASTERISK-25978 #close + + Change-Id: I871b5f4adce102df1c4988066283095ec509dffe + +2016-05-07 14:39 +0000 [fb6227a372] gtjoseph + + * config_transport: Tell pjproject to allow all SSL/TLS protocols + + The default tls settings for pjproject only allow TLS 1, TLS 1.1 and TLS 1.2. + SSL is not allowed. So, even if you specify "sslv3" for a transport method, + it's silently ignored and one of the TLS protocols is used. This was a new + behavior of pjsip_tls_setting_default() in 2.4 (when tls.proto was added) that + we never caught. + + Now we need to set tls.proto = 0 after we call pjsip_tls_setting_default(). + This tells pjproject to set the socket protocol to match the method. + + ASTERISK-26004 #close + + Change-Id: Icfb55c1ebe921298dedb4b1a1d3bdc3ca41dd078 + +2016-05-04 02:40 +0000 [2db17a793c] Jaco Kroon + + * app_confbridge: Add a regcontext option for confbridge bridge profiles. + + This patch allows for having app_confbridge register the name of the + conference as an extension into a specific context, similar to + regcontext for chan_sip. This variant is not quite as involved as the + one in chan_sip and doesn't allow for multiple contexts or custom + extensions, you can only specify the context and the conference name + will always be used as the extension to register. + + ASTERISK-25989 #close + + Change-Id: Icacf94d9f2b5dfd31ef36f6cb702392619a7902f + +2016-05-08 20:19 +0000 [2a7130b8b0] gtjoseph + + * pjproject_bundled: Check for python-dev and TEST_FRAMEWORK + + The pjsua and pjsystest apps are now built only if TEST_FRAMEWORK is set. + The python bindings are now built only if TEST_FRAMEWORK is set and a + python development package is installed. + + libresample was also disabled. + + ASTERISK-25993 #close + Reported-by: Joshua Colp + + Change-Id: If4e91c503a02f113d5b71bc8b972081fa3ff6f03 + +2016-05-04 15:16 +0000 [72eb7c8301] Alexei Gradinari + + * res_pjsip: module load priority + + The res_pjsip_authenticator_digest, res_pjsip_endpoint_identifier_* + and res_pjsip_registrar modules should load ASAP + to avoid "No matching endpoint found" for legitimate endpoint. + + ASTERISK-25994 + + Change-Id: Iac95d95ad031e0be104189d29e923a2ad7c24a1b + +2016-05-04 03:17 +0000 [dd00c71aae] Chris Trobridge + + * config_options.c: Expand #ifdef to contain whole if statement. + + ASTERISK-25956 #close + + Change-Id: If6961ec54be276d5ab4f012ee7e7b420cb45de38 + +2016-05-05 15:16 +0000 [e6eb17efd9] Alexei Gradinari + + * stasis_endpoints: Add new Status and Headers to ContactStatus + + ASTERISK-25903 added a new headers to AMI Event ContactStatusDetail. + ASTERISK-25904 added a new Status to AMI Event ContactStatusDetail. + These additions should be also in stasis_endpoints + to include in command "manager show event ContactStatus" + + Change-Id: I7610ad02a998e1f26c20caa27aa50279d0164f6a + +2016-05-05 05:07 +0000 [fa11f4c920] Joshua Colp + + * file: Ensure nativeformats remains valid for lifetime of use. + + It is possible for the nativeformats of a channel to change + throughout its lifetime. As a result a user of it needs to either + ensure the channel is locked when accessing the formats or keep + a reference to the nativeformats themselves. + + This change fixes the file playback support so it keeps a + reference to the nativeformats when accessing things. + + ASTERISK-25998 #close + + Change-Id: Ie45b65475e1481ddf05b874ee48f63e39fff8915 + +2016-04-15 09:32 +0000 [9c2032240e] Alexei Gradinari + + * res_pjsip: improve realtime performance + + This patch modified pjsip_options to retrieve only + permament contacts for aor if the qualify_frequency is > 0 + and persisted contacts if the qualify_frequency is > 0. + + This patch also fixed a bug in res_sorcery_astdb. + res_sorcery_astdb doesn't save object data retrived from astdb. + + ASTERISK-25826 + + Change-Id: I1831fa46c4578eae5a3e574ee3362fddf08a1f05 + +2016-05-04 16:11 +0000 [fe38d21c2a] Alexei Gradinari + + * pjsip: Added "reg_server" to contacts (fixed alembic) + + ASTERISK-25931 + + Change-Id: Icc4321a88f5c93ff809da3f372eebbf69c6a8549 + +2016-04-07 16:33 +0000 [7a14e669f0] Alexei Gradinari + + * res_pjsip/AMI: add contact.updated event + + With the old SIP module AMI sends PeerStatus event on every + successfully REGISTER requests, ie, on start registration, + update registration and stop registration. + + With PJSIP AMI sends ContactStatus only when status is changed. + Regarding registration: + on start registration - Created + on stop registration - Removed + but on update registration nothing + + This patch added contact.updated event. + + ASTERISK-25904 + + Change-Id: I8fad8aae9305481469c38d2146e1ba3a56d3108f + +2016-05-02 16:08 +0000 [06d4ac0355] Alexei Gradinari + + * res_fax: add FAXMODE variable + + The app_fax set FAXMODE variable, but res_fax missing this feature. + This patch add FAXMODE variable which is set to either "audio" or "T38". + + ASTERISK-25980 + + Change-Id: Ie3dcbfb72cc681e9e267a60202f7fb8723a51b6b + +2016-05-02 16:52 +0000 [2d17fe06c5] Alexei Gradinari + + * res_fax/t38_gateway: Peer V.21 session is created on wrong channel + + The channel and peer V.21 sessions are created on the same channel now. + The peer V.21 session should be created only on peer channel + when one of channel can handle T.38. + + Also this patch enable debug for T.38 gateway session + if global fax debug enabled. + + ASTERISK-25982 + + Change-Id: I78387156ea521a77eb0faf170179ddd37a50430e + +2016-05-01 02:21 +0000 [a2f19d82a8] Diederik de Groot + + * configs/basic-pbx/asterisk.conf: contains incorrect path separator + + Note: When packagers use these files (as an example) the paths are never + really used when they are split using '='. + + Note: Thirdparty applications will also have trouble parsing the file when + expecting '=>'. + + Change-Id: I0ada647f588e81f023fb1333ca15a1a333fd6004 + +2016-04-30 17:52 +0000 [f39089f17c] gtjoseph + + * pjproject_bundled: Various fixes discovered during testing of OSes + + For all OSes: + * Disabled third-party codecs in pjproject and added + '--disable-speex-codec --disable-speex-aec --disable-gsm-codec' to the + configure options since we don't use the pjsip codec capability. + + FreeBSD: + * Added FreeBSD support to install_prereq. + * Changed pjproject/configure.m4 to use $GNU_MAKE instead of hardcoding "make". + * Added __progname and environ to asterisk.exports.in. + * Reverted the use of ldconfig to create shared library symlinks to ln. + * Only enable epoll in pjproject if `uname -s` is Linux. + * Added a patch to pjproject to take the name of the 'make' command from + an environment variable if supplied. This is needed for the python bindings. + (merged by Teluu into pjproject trunk 5/3/2016) + FreeBSD support isn't complete. Still some general issues regarding + make/gmake having nothing to do with pjproject. With some handholding it DOES + build successfully. + + CentOS: + Added 'patch' and 'bzip2' to install_prereq PACKAGES_RH. + CentOS 6/7 32/64 build and run the pjsip testsuite successfully. + + Ubuntu: + No changes required. + Ubuntu 15/16 32/64 build and run the pjsip testsuite successfully. + + Debian: + No changes required. + Debian 6/7/8 32/64 build and run the pjsip testsuite successfully. + + There will utimately be a follow-up patch to create an install_prereq for + the testsuite as I've discovered a few missing requirements. + + ASTERISK-25968 #close + + Change-Id: I5756a07facfc63798115a5e73a8709382fe9259c + +2016-03-17 14:29 +0000 [8028fc7585] Andrew Nagy + + * app_voicemail: always copy dynamic struct to avoid race condition + + Voicemail email addresses can be corrupt or voicemail + emails can end up being sent to the wrong email address if asterisk is + reading voicemail.conf during a reload and processing an email at the + same time. This patch always copies the struct that would otherwise only + be copied once. + + ASTERISK-24463 #close + Reported by: John Campbell + Tested by: Etienne Lessard + Tested by: Andrew Nagy + Change-Id: I3a0643813116da84e2617291903d0d489b7425fb + +2016-04-15 14:26 +0000 [3cb8934de0] Alexei Gradinari + + * pjsip: 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. + + ASTERISK-25931 + + Change-Id: Ia8f6bd2267809c78753b52bcf21835b9b59f4cb8 + +2016-04-28 11:35 +0000 [7992923c70] Richard Mudgett + + * res_pjsip: Start body generator users after suppliers. + + Change-Id: I8f0b57841feaab56c8a4e821b5ccb4e05e5fbadb + +2016-04-28 16:06 +0000 [5dc0e082b2] Richard Mudgett + + * res_pjsip_pubsub.c: Add useful information to some messages. + + Change-Id: Ia0b2e15773894c599e5c5748bbc70e99f434192a + +2016-04-26 15:58 +0000 [f9e416f053] Richard Mudgett + + * res_pjsip_pubsub.c: Fix body generator registration race. + + Change-Id: Id8752073ef06472a2fd96080f4009fac42843e67 + +2016-04-26 15:13 +0000 [b1b2019046] Richard Mudgett + + * res_pjsip_pubsub.h: Fix doxygen association. + + Change-Id: I110d3e3572598289fcd4215d966cf0c858f98632 + +2016-04-25 16:00 +0000 [b7f07fdff5] Richard Mudgett + + * res_pjsip_outbound_publish.c: Remove redundant flag check. + + Change-Id: I0da80a3c3e0eae0c52ff27e7412ba027d6f52353 + +2016-04-28 16:54 +0000 [719ece5659] gtjoseph + + * pjproject_bundled: Disable PJSIP_UNESCAPE_IN_PLACE + + When pjsip_parse_uri is called with PJSIP_UNESCAPE_IN_PLACE enabled, + the input uri string will become corrupted if it contains escape sequences. + It's not possible to automatically strdup or strdupa the input string because + the output uri pj_str_t's will have pointers to chunks of the input string. + Getting around this would require more memory management code and wouldn't + be worth the savings of doing the unescape in place. + + ASTERISK-25970 #close + Reported-by: Dmitriy Serov + + Change-Id: I28dc0e599b5108f7959b9c46dc8278371b372f88 + +2016-03-07 18:34 +0000 [38bed4515d] gtjoseph + + * res_pjsip: Add ability to identify by Authorization username + + A feature of chan_sip that service providers relied upon was the ability to + identify by the Authorization username. This is most often used when customers + have a PBX that needs to register rather than identify by IP address. From my + own experiance, this is pretty common with small businesses who otherwise + don't need a static IP. + + In this scenario, a register from the customer's PBX may succeed because From + will usually contain the PBXs account id but an INVITE will contain the caller + id. With nothing recognizable in From, the service provider's Asterisk can + never match to an endpoint and the INVITE just stays unauthorized. + + The fixes: + + A new value "auth_username" has been added to endpoint/identify_by that + will use the username and digest fields in the Authorization header + instead of username and domain in the the From header to match an endpoint, + or the To header to match an aor. This code as added to + res_pjsip_endpoint_identifier_user rather than creating a new module. + + Although identify_by was always a comma-separated list, there was only + 1 choice so order wasn't preserved. So to keep the order, a vector was added + to the end of ast_sip_endpoint. This is only used by res_pjsip_registrar + to find the aor. The res_pjsip_endpoint_identifier_* modules are called in + globals/endpoint_identifier_order. + + Along the way, the logic in res_pjsip_registrar was corrected to match + most-specific to least-specific as res_pjsip_endpoint_identifier_user does. + + The order is: + + username@domain + username@domain_alias + username + + Auth by username does present 1 problem however, the first INVITE won't have + an Authorization header so the distributor, not finding a match on anything, + sends a securty_alert. It still sends a 401 with a challenge so the next + INVITE will have the Authorization header and presumably succeed. As a result + though, that first security alert is actually a false alarm. + + To address this, a new feature has been added to pjsip_distributor that keeps + track of unidentified requests and only sends the security alert if a + configurable number of unidentified requests come from the same IP in a + configurable amout of time. Those configuration options have been added to + the global config object. This feature is only used when auth_username + is enabled. + + Finally, default_realm was added to the globals object to replace the hard + coded "asterisk" used when an endpoint is not yet identified. + + The testsuite tests all pass but new tests are forthcoming for this new + feature. + + ASTERISK-25835 #close + Reported-by: Ross Beer + + Change-Id: I30ba62d208e6f63439600916fcd1c08a365ed69d + +2016-04-27 13:23 +0000 [677d5b5151] Mark Michelson + + * func_odbc: Check connection status before executing queries. + + A recent change to func_odbc made it so that a single connection was + maintained per DSN. The problem was that the code was optimistic about + the health of the connection after initially opening it and did nothing + to re-connect in case the connection had died. + + This change adds a check before executing a query to ensure that the + connection to the database is still up and running. + + ASTERISK-25963 #close + Reported by Ross Beer + + Change-Id: Id33c86eb04ff48ca088bb2e3086c27b3b683491d + +2016-04-15 11:59 +0000 [df3639700a] Alexei Gradinari + + * res_pjsip: disable multi domain to improve realtime performace + + This patch added new global pjsip option 'disable_multi_domain'. + Disabling Multi Domain can improve Realtime performance by reducing + number of database requests. + + ASTERISK-25930 #close + + Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7 + +2016-04-26 11:13 +0000 [949bf6b282] Joshua Colp + + * chan_sip: Give more time for TCP/TLS threads to stop. + + The unload process currently tells each TCP/TLS to terminate but + does not wait for them to do so. This introduces a race condition + where the container holding the threads may be destroyed before + the threads are able to remove themselves from it. When they + finally do the container is invalid and can't be used causing a + crash. + + A previous change existed which waited a bit to wait for any + stranglers to finish. This change extends this and waits longer. + + ASTERISK-25961 #close + + Change-Id: Idc6262b670ca49ede32061159e323b7b63c6f3c6 + +2016-04-26 05:48 +0000 [6959f5484b] Joshua Colp + + * app_queue: Fix crash when unloading module. + + When unloading the app_queue module the members in each queue are + destroyed and as part of this they are removed from the pending + members container. Unfortunately a crash would occur as the container + was destroyed before the members were removed. + + This change tweaks ordering so the container destruction occurs + after the members are destroyed. + + ASTERISK-16115 + + Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b + +2016-04-24 22:51 +0000 [b38f1146e5] gtjoseph + + * config: Fix ast_config_text_file_save2 writability check for missing files + + A patch I did back in 2014 modified ast_config_text_file_save2 to check the + writability of the main file and include files before truncating and re-writing + them. An unintended side-effect of this was that if a file doesn't exist, + the check fails and the write is aborted. + + This patch causes ast_config_text_file_save2 to check the writability of the + parent directory of missing files instead of checking the file itself. This + allows missing files to be created again. A unit test was also added to + test_config to test saving of config files. + + The regression was discovered when app_voicemail's passwordlocation=spooldir + feature stopped working. + + ASTERISK-25917 #close + Reported-by: Jonathan Rose + + Change-Id: Ic4dbe58c277a47b674679e49daed5fc6de349f80 + +2016-04-21 23:53 +0000 [29bab0d1a4] Kirill Katsnelson + + * chan_sip: Make autocreated peers send PeerStatus events + + Since Stasis has been introduced, an attempt to send AMI messages by an + autocreated peer caused a crash, and all events from autocreated peers were + semi-inadvertently disabled altogether in 0b83761. This change restores the + disabled functionality. + + ASTERISK-25950 + + Change-Id: Iecc350f23db603fadb2f302064643ebe9664e974 + +2016-04-21 14:23 +0000 [c345e530f4] Kevin Harwell + + * app_queue: queue members can receive multiple calls + + It was possible for a queue member that is a member of at least 2 or more + queues to receive mulitiple calls at the same time. This happened because + of a race between when a member was being rung and when the device state + notified the other queue(s) member object of the state change. + + This patch makes it so when a queue member is being rung it gets added to + a global pool of queue members. If that same member is tried again, e.g. + from another queue, and it is found to already exist in the pending member + container then it will not ring that member. + + ASTERISK-16115 #close + + Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48 + +2016-04-25 08:11 +0000 [c0688a6398] Javier Acosta + + * Fix case sensitive actions in AMI QueueSummary and QueueStatus + + ASTERISK-25954 #close + Reported by: Javier Acosta + + Change-Id: I00be83d45cc7e8385de2523012bd196aafeeb256 + +2016-04-22 17:53 +0000 [eb7c581806] gtjoseph + + * res_agi: Prevent run_agi from eating frames it shouldn't + + The run_agi function is eating control frames when it shouldn't be. This is + causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond + transfer. + + Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie + answers. + + Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE + and is left thinking he's connected to Bob. + + In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls + an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on + Charlie's channel. + + The fix was to accumulate deferrable frames in the "forever" loop instead of + dropping them, and re-queue them just before running the actual agi command + or exiting. + + ASTERISK-25951 #close + + Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645 + +2016-04-22 15:25 +0000 [ebf0724a83] Richard Mudgett + + * test_message.c: Wait longer in case dialplan also processes the test message. + + Bumped the wait from 1 second to 5 seconds. The test message was hitting my + default call handler and failing the test because it took longer. + + Change-Id: I3a03737f25e92983de00548fcc7bbc50dd7544ba + +2016-04-12 15:29 +0000 [ba63aa7c9e] Richard Mudgett + + * Manager: Short circuit AMI message processing. + + Improve AMI message processing performance if there are no consumers + listening for the messages. We now skip creating the AMI event message + text strings. + + Change-Id: I7b22fc5ec4e500d00635c1a467aa8ea68a1bb2b3 + +2016-04-13 17:54 +0000 [d5ee6acf28] Richard Mudgett + + * manager.c: Eliminate most RAII_VAR usage. + + * Made ast_manager_event_blob_create() not allocate the ao2 event object + with a lock as it is not needed. + + Change-Id: I8e11bfedd22c21316012e0b9dd79f5918f644b7c + +2016-04-13 17:09 +0000 [7303e3dc96] Richard Mudgett + + * manager_channels.c: Fix allocation failure crash. + + An earlier allocation failure failed to create a channel snapshot for the + AMI HangupRequest/SoftHangupRequest event which resulted in a crash in + channel_hangup_request_cb(). Where the stasis message gets generated + cannot tell if the NULL snapshot returned was because of an allocation + failure or the channel was a dummy channel. + + * Made channel_hangup_request_cb() check if the channel blob has a + snapshot and exit if it doesn't. + + * Eliminated the RAII_VAR usage in channel_hangup_request_cb(). + + Change-Id: I0b6a1c4e95cbb7d80b2a7054c6eadecc169dfd24 + +2016-04-13 13:50 +0000 [1e93f3d723] Richard Mudgett + + * Bridge system: Fix memory leaks and double frees on impart failure. + + You cannot reference the passed in features struct after calling + ast_bridge_impart(). Even if the call fails. + + Change-Id: I902b88ba0d5d39520e670fb635078a367268ea21 + +2016-04-13 13:20 +0000 [5e388d4188] Richard Mudgett + + * bridge_softmix.c: Fix crash if channel fails to join mixing tech. + + softmix_bridge_join() failed because of an allocation failure. To address + this, the softmix bridge technology now checks if the channel failed to + join softmix successfully. In addition, the bridge now begins the process + of kicking the channel out of the bridge so we don't have channels + partially in the bridge for very long. + + * Fix the test_channel_feature_hooks.c unit tests. The test channel must + have a valid codec to join the simple_bridge technology. This patch makes + joining a bridge more strict by not allowing partially joined channels to + remain in the bridge. + + Change-Id: I97e2ade6a2bcd1214f24fb839fda948825b61a2b + +2016-04-22 13:49 +0000 [068ae54c76] Mark Michelson + + * func_odbc: Use one connection per DSN. + + res_odbc was changed in Asterisk 13.8.0 to remove connection management, + opting instead to let unixodbc maintain open connections and return + those to Asterisk as requested. + + This was a boon for realtime, since it meant that multiple threads could + potentially run parallel queries since they could each be using their + own database connections. + + However, on the user-facing side, func_odbc, there were some inherent + behaviors being relied on that no longer hold true after the change. + One such reported behavior was that MySQL's LAST_INSERTED_ID() works + per-connection. This means that if Asterisk uses separate connections + for every database operation, whereas before it used one connection for + everything, we have broken expectations and functionality. + + The fix provided in this patch is to make func_odbc use a single + database connection per DSN. This way, user-facing database usage will + have the same behavior as it did pre-13.8.0. However, realtime, which is + the real workhorse of database interaction, will continue to let + unixodbc manage connections. + + ASTERISK-25938 #close + Reported by Edwin Vandamme + + Change-Id: Iac961fe79154c6211569afcdfec843c0c24c46dc + +2016-04-22 13:02 +0000 [6aeefa89bc] Leif Madsen + + * Remove reference to non-existent sip.conf option + + Option was removed in commit 7f883ef495b57ae9182e47213d01d5e8009dbf3f + + ASTERISK-25927 #close + + Change-Id: I92f9b0196d9fc41d1d58354c07340c465ef1fcf8 + +2016-04-21 08:26 +0000 [e750ea9b5b] Diederik de Groot + + * lock.c: Check *lt before dereferencing it + + *lt is NULL if t->tracking == 0 + + ASTERISK-25948 #close + + Change-Id: I4a81af28f9c82a74aa82413d772a7dc8fa6f45ba + +2016-04-15 14:36 +0000 [a036c35903] Richard Mudgett + + * res_stasis: Handle re-enter stasis bridge with swap channel. + + We lose the fact that there is a swap channel if there is one. We + currently wind up rejoining the stasis bridge as a normal join after the + swap channel has already been kicked from the bridge. + + This patch preserves the swap channel so the AMI/ARI events can note that + the channel joining the bridge is swapping with another channel. Another + benefit to swaqpping in one operation is if there are any channels that + get lonely (MOH, bridge playback, and bridge record channels). The lonely + channels won't leave before the joining channel has a chance to come back + in under stasis if the swap channel is the only reason the lonely channels + are staying in the bridge. + + ASTERISK-25947 #close + Reported by: Richard Mudgett + + ASTERISK-24649 + Reported by: John Bigelow + + ASTERISK-24782 + Reported by: John Bigelow + + Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee + +2016-04-19 16:58 +0000 [9942d50aa5] Richard Mudgett + + * bridge: Hold off more than one imparting channel at a time. + + An earlier patch blocked the ast_bridge_impart() call until the channel + either entered the target bridge or it failed. Unfortuantely, if the + target bridge is stasis and the imprted channel is not a stasis channel, + stasis bounces the channel out of the bridge to come back into the bridge + as a proper stasis channel. When the channel is bounced out, that + released the block on ast_bridge_impart() to continue. If the impart was + a result of a transfer, then it became a race to see if the swap channel + would get hung up before the imparted channel could come back into the + stasis bridge. If the imparted channel won then everything is fine. If + the swap channel gets hung up first then the transfer will fail because + the swap channel is leaving the bridge. + + * Allow a chain of ast_bridge_impart()'s to happen before any are + unblocked to prevent the race condition described above. When the channel + finally joins the bridge or completely fails to join the bridge then the + ast_bridge_impart() instances are unblocked. + + ASTERISK-25947 + Reported by: Richard Mudgett + + ASTERISK-24649 + Reported by: John Bigelow + + ASTERISK-24782 + Reported by: John Bigelow + + Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1 + +2016-04-19 17:52 +0000 [516c626a7d] gtjoseph + + * res_pjsip_callerid: Clear out display name if id->name is not valid + + When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning + the From header, then it overwrites the display name and uri from the channel's + connected.id. If the connected.id.name wasn't valid, create_new_id_hdr was + leaving the display name from the From header in the new RPID or PAI header. + On an attended transfer where the originator had a caller id number set but not + a display name, the re-INVITE to the final transferee had the number of the + originator but the display name of the transferer. + + Added a check to clear out the display name in the new header if + connected.id.name was invalid. + + ASTERISK-25942 #close + + Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b + +2016-04-19 13:02 +0000 [ded3794fc6] Joshua Colp + + * app_talkdetect: Make the module core supported. + + This module is used as part of testsuite tests to confirm + stuff works. I'm accordingly marking it as core as it is + required by those tests. + + Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88 + +2016-04-18 12:12 +0000 [efae187217] Mark Michelson + + * PJSIP: Remove PJSIP parsing functions from uri length validation. + + The PJSIP parsing functions provide a nice concise way to check the + length of a hostname in a SIP URI. The problem is that in order to use + those parsing functions, it's required to use them from a thread that + has registered with PJLib. + + On startup, when parsing AOR configuration, the permanent URI handler + may not be run from a PJLib-registered thread. Specifically, this could + happen when Asterisk was started in daemon mode rather than + console-mode. If PJProject were compiled with assertions enabled, then + this would cause Asterisk to crash on startup. + + The solution presented here is to do our own parsing of the contact URI + in order to ensure that the hostname in the URI is not too long. The + parsing does not attempt to perform a full SIP URI parse/validation, + since the hostname in the URI is what is important. + + ASTERISK-25928 #close + Reported by Joshua Colp + + Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60 + +2016-04-18 17:00 +0000 [f436b9ab11] Mark Michelson + + * res_pjsip_registrar: Fix bad memory-ness with user_agent. + + Recent changes to the PJSIP registrar resulted in tests failing due to + missing AOR_CONTACT_ADDED test events. The reason for this was that the + user_agent string had junk values in it, resulting in being unable to + generate the event. + + I'm going to be honest here, I have no idea why this was happening. Here + are the steps needed for the user_agent variable to get messed up: + * REGISTER is received + * First contact in the REGISTER results in a contact being removed + * Second contact in the REGISTER results in a contact being added + * The contact, AOR, expiration, and user agent all have to be passed as + format parameters to the creation of a string. Any subset of those + parameters would not be enough to cause the problem. + + Looking into what was happening, the thing that struck me as odd was + that the user_agent variable was meant to be set to the value of the + User-Agent SIP header in the incoming REGISTER. However, when removing a + contact, the user_agent variable would be set (via ast_strdupa inside a + loop) to the stored contact's user_agent. This means that the + user_agent's value would be incorrect when attempting to process further + contacts in the incoming REGISTER. + + The fix here is to use a different variable for the stored user agent + when removing a contact. Correcting the behavior to be correct also + means the memory usage is less weird, and the issue no longer occurs. + + ASTERISK-25929 #close + Reported by Joshua Colp + + Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08 + +2016-04-18 13:41 +0000 [49bfdc9ac0] Joshua Colp + + * res_pjsip_transport_management: Allow unload to occur. + + At shutdown it is possible for modules to be unloaded that wouldn't + normally be unloaded. This allows the environment to be cleaned up. + + The res_pjsip_transport_management module did not have the unload + logic in it to clean itself up causing the res_pjsip module to not + get unloaded. As a result the res_pjsip monitor thread kept going + processing traffic and timers when it shouldn't. + + Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a + +2016-04-15 11:41 +0000 [f4693d1897] Richard Mudgett + + * bridge_channel.c: Ignore role setup failure in channel push. + + We have to setup the channel roles after the bridge class push is called + because the bridge class push callback may have set roles on the incoming + channel. Since we have already partially pushed the channel into the + bridge and reversing what we have already done could be problematic, the + only thing we can do is press on to complete pushing the channel into the + bridge. + + * Ignore any channel role setup errors after pushing the channel into a + bridge. The channel may behave incorrectly in the bridge but we can no + longer abort the push at this time. + + Change-Id: I08a97082b729052ee65cdca6bb730cf1289ede00 + +2016-04-17 15:37 +0000 [22335fe18a] Jaco Kroon + + * chan_sip: Don't verify table if rtupdate=no + + If rtupdate=no do not verify sipregs/peers table has updatable fields. + + ASTERISK-25934 #close + + Change-Id: Iaa2c53037b93daccc7e7333c40d61861847b856d + +2016-04-18 04:53 +0000 [3b9d8b60b2] ibercom + + * app_queue: Frequent segfaults in function can_ring_entry() + + ASTERISK-25888 #close + + Change-Id: I007a2f2dd99823e04fb5be3ff01f02b0a2956117 + +2016-04-15 16:51 +0000 [724acb6ce7] Richard Mudgett + + * stasis_bridge.c: Update stasis bridge push diagnostic messages. + + Change-Id: I195b14994c9dcccb9452491ca20a885d2a54605a + +2016-04-14 13:49 +0000 [5f78801859] Mark Michelson + + * transport management: Register thread with PJProject. + + The scheduler thread that kills idle TCP connections was not registering + with PJProject properly and causing assertions if PJProject was built in + debug mode. + + This change registers the thread with PJProject the first time that the + scheduler callback executes. + + AST-2016-005 + + Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283 + +2016-03-17 12:28 +0000 [9740277713] gtjoseph + + * res_pjsip: Add serialized scheduler (res_pjsip/pjsip_scheduler.c) + + There are several places that do scheduled tasks or periodic housecleaning, + each with its own implementation: + + * res_pjsip_keepalive has a thread that sends keepalives. + * pjsip_distributor has a thread that cleans up expired unidentified requests. + * res_pjsip_registrar_expire has a thread that cleans up expired contacts. + * res_pjsip_pubsub uses ast_sched directly and then calls ast_sip_push_task. + * res_pjsip_sdp_rtp also uses ast_sched to send keepalives. + + There are also places where we should be doing scheduled work but aren't. + A good example are the places we have sorcery observers to start registration + or qualify. These don't work when changes are made to a backend database + without a pjsip reload. We need to check periodically. + + As a first step to solving these issues, a new ast_sip_sched facility has + been created. + + ast_sip_sched wraps ast_sched but only uses ast_sched as a scheduled queue. + When a task is ready to run, ast_sip_task_pusk is called for it. This ensures + that the task is executed in a PJLIB registered thread and doesn't hold up the + ast_sched thread so it can immediately continue processing the queue. The + serializer used by ast_sip_sched is one of your choosing or a random one from + the res_pjsip pool if you don't choose one. + + Another feature is the ability to automatically clean up the task_data when the + task expires (if ever). If it's an ao2 object, it will be dereferenced, if + it's a malloc'd object it will be freed. This is selectable when the task is + scheduled. Even if you choose to not auto dereference an ao2 task data object, + the scheduler itself maintains a reference to it while the task is under it's + control. This prevents the data from disappearing out from under the task. + + There are two scheduling models. + + AST_SIP_SCHED_TASK_PERIODIC specifies that the invocations of the task occur at + the specific interval. That is, every "interval" milliseconds, regardless of + how long the task takes. If the task takes longer than the interval, it will + be scheduled at the next available multiple of interval. For exmaple: If the + task has an interval of 60 secs and the task takes 70 secs (it better not), + the next invocation will happen at 120 seconds. + + AST_SIP_SCHED_TASK_DELAY specifies that the next invocation of the task should + start "interval" milliseconds after the current invocation has finished. + + Also, the same ast_sched facility for fixed or variable intervals exists. The + task's return code in conjunction with the AST_SIP_SCHED_TASK_FIXED or + AST_SIP_SCHED_TASK_VARIABLE flags controls the next invocation start time. + + One res_pjsip.h housekeeping change was made. The pjsip header files were + added to the top. There have been a few cases lately where I've needed + res_pjsip.h just for ast_sip calls and had compiles fail spectacularly because + I didn't add the pjsip header files to my source even though I never referenced + any pjsip calls. + + Finally, a few new convenience APIs were added to astobj2 to make things a + little easier in the scheduler. ao2_ref_and_lock() calls ao2_ref() and + ao2_lock() in one go. ao2_unlock_and_unref() does the reverse. A few macros + were also copied from res_phoneprov because I got tired of having to duplicate + the same hash, sort and compare functions over and over again. The + AO2_STRING_FIELD_(HASH|SORT|CMP)_FN macros will insert functions suitable for + aor_container_alloc into your source. + + This facility can be used immediately for the situations where we already have + a thread that wakes up periodically or do some scheduled work. For the + registration and qualify issues, additional sorcery and schema changes would + need to be made so that we can easily detect changed objects on a periodic + basis without having to pull the entire database back to check. I'm thinking + of a last-updated timestamp on the rows but more on this later. + + Change-Id: I7af6ad2b2d896ea68e478aa1ae201d6dd016ba1c + +2016-03-08 12:12 +0000 [7fb3724a77] Mark Michelson + + * res_pjsip_transport_management: Kill idle TCP connections. + + "Idle" here means that someone connects to us and does not send a SIP + request. PJProject will not automatically time out such connections, so + it's up to Asterisk to do it instead. + + When we receive an incoming TCP connection, we will start a timer + (equivalent to transaction timer D) waiting to receive an incoming + request. If we do not receive a request in that timeframe, then we will + shut down the TCP connection. + + ASTERISK-25796 #close + Reported by George Joseph + + AST-2016-005 + + Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6 + +2016-03-08 10:52 +0000 [707fd4dcd0] Mark Michelson + + * Rename res_pjsip_keepalive res_pjsip_transport_management + + ASTERISK-25796 + Reported by George Joseph + + AST-2016-005 + + Change-Id: Id322a05f927392293570599730050bc677d99433 + +2016-04-14 07:15 +0000 [0b4bb19e0b] Mark Michelson + + * AST-2016-004: Fix crash on REGISTER with long URI. + + Due to some ignored return values, Asterisk could crash if processing an + incoming REGISTER whose contact URI was above a certain length. + + ASTERISK-25707 #close + Reported by George Joseph + + Patches: + 0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch + + AST-2016-004 + + Change-Id: I0ed3898fe7ab10121b76c8c79046692de3a1be55 + +2016-04-12 13:10 +0000 [f6e080c6a4] Richard Mudgett + + * bridge_softmix.c: Fix crash if could not allocate the dsp. + + Fix off nominal crash where we could not setup the channel to process + frames for the softmix bridge technology because of allocation failure. + + Change-Id: Ic307a8386e46bf551e48fcd1eb97276714d56372 + +2016-04-12 15:41 +0000 [cf15a2f2d3] gtjoseph + + * pjproject: Add patch for removing strip of '[]' from header params + + From the patch submitted to Teluu on 4/12/2016 + <<<<<<<<< + The wholesale stripping of '[]' from header parameters causes issues if + something (like a port) occurs after the final ']'. + + '[2001:a::b]' will correctly parse to '2001:a::b' + '[2001:a::b]:8080' will correctly parse to '2001:a::b' but the scanner is left + with ':8080' and parsing stops with a syntax error. + + I can't even find a case where stripping the '[]' is a good thing anyway. Even + if you continued to parse and resulted in a string that looks like this... + '2001:a::b:8080', it's not valid. + + This came up in Asterisk because Kamailio sends us a Contact with an alias + URI parameter that has an IPv6 address in it like this: + Contact: + which should be legal but causes a syntax error because of the characters + after the final ']'. Even if it didn't, the '[]' should still not be stripped. + + I've run the Asterisk Test Suite for PJSIP (252 tests) many of which are IPv6 + enabled. No issues were caused by removing the code that strips the '[]'. + >>>>>>>>>>> + + ASTERISK-25123 #close + Reported-by: Anthony Messina + + Change-Id: I5cb33f4ebf07ee1f2b26d07caae715e2ec65595a + +2016-04-12 09:10 +0000 [daa086fae4] Joshua Colp + + * app_voicemail: Fix test_voicemail_notify_endl test. + + The test_voicemail_notify_endl test checks the end-of-line + characters of an email message to confirm that they are consistent. + The test wrongfully assumed that reading from the email message + into a buffer will always result in more than 1 character being + read. This is incorrect. If only 1 character was read the test + would go outside of the buffer and access other memory causing + a crash. + + The test now checks to ensure that 2 or more characters are read + in ensuring the test stays within the buffer. + + ASTERISK-25874 #close + + Change-Id: Ic2c89cea6e90f2c0bc2d8138306ebbffd4f8b710 + +2016-04-07 12:02 +0000 [f896136460] Alexei Gradinari + + * app_voicemail/IMAP: function 'save_to_folder' creates wrong folder + + If try to move message to Cust1 (number 5) + the function 'save_to_folder' tries to create Greeting folder instead of Cust1. + + This patch fixed it by setting GREETINGS_FOLDER = -1 + + ASTERISK-24927 #close + + Change-Id: I03d1a761894bcc2d130ec9b003bbcddc28e25c51 + +2016-04-07 16:18 +0000 [70b7673f09] Alexei Gradinari + + * res_pjsip: Add headers to AMI Event ContactStatusDetail + + * Added Useragent and RegExpire headers to AMI Event + ContactStatusDetail with associated documentation. + + ASTERISK-25903 #close + + Change-Id: If3d121e943e588d016ba51d4eb9c6a421a562239 + +2016-04-11 16:20 +0000 [64ecd41c8f] Alexei Gradinari + + * Codecs: strip codec name while parsing allow/disallow options + + Failed registration using PJSIP/Realtime if one of the codec name + in allow/disallow option is wrong or contains space. + + This patch strip codec name. + + ASTERISK-25914 + + Change-Id: Ifdf02de94e5ddbce305640f6f0666084a3b9283d + +2016-04-11 14:26 +0000 [3f6c4667b8] Jaco Kroon + + * core_unreal: Fix hangupcauses not getting set on Local channels + + ASTERISK-25912 #close + + Change-Id: I8e72e6894feaf36c9450f2788d205d07baec23aa + +2016-04-01 13:30 +0000 [fe7e48db03] gtjoseph + + * res_pjsip contact: Lock expiration/addition of contacts + + Contact expiration can occur in several places: res_pjsip_registrar, + res_pjsip_registrar_expire, and automatically when anyone calls + ast_sip_location_retrieve_aor_contact. At the same time, res_pjsip_registrar + may also be attempting to renew or add a contact. Since none of this was locked + it was possible for one thread to be renewing a contact and another thread to + expire it immediately because it was working off of stale data. This was the + casue of intermittent registration/inbound/nominal/multiple_contacts test + failures. + + Now, the new named lock functionality is used to lock the aor during contact + expire and add operations and res_pjsip_registrar_expire now checks the + expiration with the lock held before deleting the contact. + + ASTERISK-25885 #close + Reported-by: Josh Colp + + Change-Id: I83d413c46a47796f3ab052ca3b349f21cca47059 + +2016-04-10 14:16 +0000 [0c414eaf35] gtjoseph + + * pjproject: Add patch to fix Via IPv6 parsing + + There's a bug in pjproject's sip_parser where the ":" wasn't correctly + interpreted. This is causing IPv6 addresses in the "received" parameter of the + Via header to cause a syntax check failure. + + This patch was submitted to Teluu on 4/10/2016. + + ASTERISK-25910 #close + Reported-by: Anthony Messina + + Change-Id: Ic7e4c4aa14ded61860401ec349f5177568c4d922 + +2016-03-31 20:04 +0000 [772ff3048f] gtjoseph + + * lock: Add named lock capability + + Locking some objects like sorcery objects can be tricky because the underlying + ao2 object may not be the same for all callers. For instance, two threads that + call ast_sorcery_retrieve_by_id on the same aor name might actually get 2 + different ao2 objects if the underlying wizard had to rehydrate the aor from a + database. Locking one ao2 object doesn't have any effect on the other even if + those objects had locks in the first place. + + Named locks allow access control by keyspace and key strings. Now an "aor" + named "1000" can be locked and any other thread attempting to lock "aor" "1000" + will wait regardless of whether the underlying ao2 object is the same or not. + Mutex and rwlocks are supported. + + This capability will initially be used to lock an aor when multiple threads may + be attempting to prune expired contacts from it. + + Change-Id: If258c0b7f92b02d07243ce70e535821a1ea7fb45 + +2016-04-05 16:56 +0000 [fd601f26f7] Alexei Gradinari + + * res_pjsip_outbound_publish: Add transport for outbound PUBLISH + + The first available transport of the appropriate type is used now. + This patch adds new config option 'transport' for outbound-publish. + If transport is set then outbound PUBLISH requests will use this transport. + + ASTERISK-25901 #close + + Change-Id: Ib389130489b70e36795b0003fa5fd386e2680151 + +2016-04-07 16:39 +0000 [5f768d2a9c] Alexei Gradinari + + * res_pjsip_dialog_info: Add missing "direction" attribute in NOTIFY event + + BLF pickup isn't working on Cisco SPA and Snom phones + if the direction="recipient" attribute is missing in 'dialog' tag. + + This patch adds direction="recipient" if extension state is + Ringing. + + ASTERISK-24601 #close + + Change-Id: I5b2c097ca29fd59e92ba237ca5d397cb1b0bcd8c + +2016-04-07 10:59 +0000 [82638fb0c7] Richard Mudgett + + * pbx.c: Minor code rearangements. + + * Pull out a loop invariant. + + * Convert an else-if ladder to a switch statement. + + Change-Id: I0a95cfa9474a4600b9865f7b444534d275b37e95 + +2016-04-07 11:37 +0000 [bc320df173] Alexei Gradinari + + * app_voicemail/IMAP: IMAP access FATAL error: Out of memory + + Sometimes uw-imap function 'mail_fetchbody' returns huge len + which then pass to uw-imap function 'rfc822_base64'. + uw-imap tries to allocate huge memory and abort() on fail. + + This patch check the len. + If the len more than max size (128 Mbytes) log error. + This patch also set variables len, newlen to avoid uninizialezed len. + This patch also check pointer returned by rfc822_base64. + + ASTERISK-25899 #close + + Change-Id: I4a0e7d655f11abef6a5224e2169df6d5c1f1caca + +2016-04-07 12:26 +0000 [2ef8a954b3] Richard Mudgett + + * pbx: Update doxygen for extension state watchers. + + Change-Id: Id1403b12136de62a272c01bb355aef65fd2c2d1e + +2016-04-07 11:49 +0000 [d312fdeb1b] gtjoseph + + * alembic: Remove batch operations (and sqlite support) + + Because SQLite doesn't support full ALTER capabilities, alembic scripts + require batch operations. However, that capability wasn't available until + 0.7.0 which some distributions haven't reached yet. Therefore, the batch + operations introduced in commit 86d6e44cc (review 2319) have been reverted + and SQLite is unsupported again, for now anyway. + + Tested the full upgrade and downgrade on MySQL/Mariadb and Postgresql. + + ASTERISK-25890 #close + Reported-by: Harley Peters + + Change-Id: I82eba5456736320256f6775f5b0b40133f4d1c80 + +2016-04-07 11:05 +0000 [901e8d78c4] Joshua Colp + + * res_pjsip_registrar_expire: Fix race condition at shutdown. + + When shutting down, the PJSIP sorcery is destroyed. The registrar + expiration module queries the PJSIP sorcery to determine what + to expire. As there was no synchronization between termination + of the expiration thread and the unloading of the module it was + possible for the thread to try to access the PJSIP sorcery after + it had been destroyed. + + This change ensures that the thread is shut down before allowing + the module to be considered unloaded. + + Change-Id: I69fd239edbaaf160c2d37ae00d3ac06e5596fe8b + +2016-04-06 16:28 +0000 [8207372e66] Joshua Colp + + * res_pjsip: Fix configuration setting of "regcontext". + + Due to a merge problem two options were swapped causing the + regcontext setting to not get set. + + Change-Id: Icb33edc668e7357bacbaec2861a6b5ac64edaff1 + +2016-04-06 08:01 +0000 [0735a4d6d7] Jacek Konieczny + + * frame.c: Copy the whole subclass in ast_frdup(). + + The problem is ast_frdup() does not copy whole frame.subclass for voice, + video and image frames, only the format is copied. For video frames, the + subclass structure contains the .frame_ending flag used to put the RTP + marker where it needs to be. + + ASTERISK-25894 #close + + Change-Id: I812ca90e84ed5d4f473b997d0dd0d3c5a915fe33 + +2016-04-05 14:23 +0000 [c61dca6419] Mark Michelson + + * res_pjsip: Handle deferred SDP hold/unhold properly. + + Some SIP devices indicate hold/unhold using deferred SDP reinvites. In + other words, they provide no SDP in the reinvite. + + A typical transaction that starts hold might look something like this: + + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating sendrecv on streams. + * Device sends ACK with SDP indicating sendonly on streams. + + At this point, PJMedia's SDP negotiator saves Asterisk's local state as + being recvonly. + + Now, when the device attempts to unhold, it again uses a deferred SDP + reinvite, so we end up doing the following: + + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating recvonly on streams + * Device sends ACK with SDP indicating sendonly on streams + + The problem here is that Asterisk offered recvonly, and by RFC 3264's + rules, if an offer is recvonly, the answer has to be sendonly. The + result is that the device is not taken off hold. + + What is supposed to happen is that Asterisk should indicate sendrecv in + the 200 OK that it sends. This way, the device has the freedom to + indicate sendrecv if it wants the stream taken off hold, or it can + continue to respond with sendonly if the purpose of the reinvite was + something else (like a session timer refresher). + + The fix here is to alter the SDP negotiator's state when we receive a + reinvite with no SDP. If the negotiator's state is currently in the + recvonly or inactive state, then we alter our local state to be + sendrecv. This way, we allow the device to indicate the stream state as + desired. + + ASTERISK-25854 #close + Reported by Robert McGilvray + + Change-Id: I7615737276165eef3a593038413d936247dcc6ed + +2016-03-27 23:33 +0000 [50b0922a22] gtjoseph + + * config: Allow filters when appending to a category + + In sorcery based config files where there are multiple categories with the same + name, you can't use the (+) operator to reliably append to a category because + config.c stops looking when it finds the first one with the same name. + + Example: + + [1000] + type = endpoint + + [1000] + type = aor + + [1000](+) + authenticate_qualify = yes + + This config will fail because config.c appends authenticate_qualify to the + first category it finds, the endpoint, and that's not valid for endpoint. + + Solution: + + The capability to find a category that contains a certain variable already + exists so the only real change was to parse anything after the '+' that's not a + comma, as a filter string. + + [1000] + type = endpoint + + [1000] + type = aor + + [1000](+type=aor) + authenticate_qualify = yes + + This now works as expected. + + Although the following example doesn't make any sense for pjsip, you can even + specify multiple filters: + + [1000](+type=aor&qualify_frequency=10) + + ASTERISK-25868 #close + Reported-by: Nick Repin + + Change-Id: I10773da4c79db36fbf1993961992af63d3441580 + +2016-04-05 10:21 +0000 [cb56ef8069] Joshua Colp + + * res_http_websocket: Make core supported. + + Websockets are a core part of ARI support and as such this + module should also be core supported. + + Change-Id: I8f9283c6a167152761b92984779bb39e3db51a9c + +2016-03-25 23:22 +0000 [f6f4cf459f] gtjoseph + + * stringfields: Refactor to allow fields to be added to the end of structures + + String fields are great, except that you can't add new ones without breaking + ABI compatibility because it shifts down everything else in the structure. + The only alternative is to add your own char * field to the end of the + structure and manage the memory yourself which isn't ideal, especially since + you then can't use the OPT_STRINGFIELD_T type. + + Background: + + The reason string fields had to be declared inside the + AST_DECLARE_STRING_FIELDS block was to facilitate iteration over all declared + fields for initialization, compare and copy. Since AST_DECLARE_STRING_FIELDS + declared the pool, then the fields, then the manager, you could use the offsets + of the pool and manager and iterate over the sequential addresses in between to + access the fields. The actual pool, field allocation and field set operations + don't actually care where the field is. It's just iteration over the fields + that was the problem. + + Solution: Extended String Fields + + An extended string field is one that is declared outside the + AST_DECLARE_STRING_FIELDS block but still (anywhere) inside the parent + structure. Other than using AST_STRING_FIELD_EXTENDED instead of + AST_STRING_FIELD, it looks the same as other string fields. It's storage comes + from the pool and it participates in string field compare and copy operations + peformed on the parent structure. It's also a valid target for the + OPT_STRINGFIELD_T aco option type. + + Implementation: + + To keep track of the extended fields and make sure that ABI isn't broken, the + existing embedded_pool pointer in the manager structure was repurposed to be a + pointer to a separate header structure that contains the embedded_pool pointer + plus a vector of fields. The length of the manager structure didn't change and + the embedded_pool pointer isn't used in the macros, only the stringfields C + code. A side benefit of this is that changing the header structure in the + future won't break ABI. + + ast_string_fields_init initializes the normal string fields and appends them to + the vector, and subsequent calls to ast_string_field_init_extended initialize + and append the extended fields. Cleanup, ast_string_fields_cmp, and + ast_string_fields_copy can now work on the vector instead of sequentially + traversing the addresses between the pool and manager. + + The total size of a structure using string fields didn't change, whether using + extended fields or not, nor have the offsets of any structure members, either + inside the original block or outside. Adding an extended field to the end of a + structure is the same as adding a char *. + + Details: + + The stringfield C code was pulled out from utils.c and into stringfields.c. + It just made sense. + + Additional work was done in ast_string_field_init and + ast_calloc_with_stringfields to handle the allocation of the new header + structure and the vector, and the associated cleanup. In the process some + additional NULL pointer checking was added. + + A lot of work was done in stringfields.h since the logic for compare and copy + is there. Documentation was added as well as somne additional NULL checking. + + The ability to call ast_calloc_with_stringfields with a number of structures + greater than 1 never really worked. Well, the calloc worked but there was no + way to access the additional structures or clean them up. It was agreed that + there was no use case for requesting more than 1 structure so an ast_assert + was added to prevent it and the iteration code removed. + + Testing: + + The stringfield unit tests were updated to test both normal and extended + fields. Tests for ast_string_field_ptr_set_by_fields and + ast_calloc_with_stringfields were also added. + + As an ABI test, 13 was compiled from git and the res_pjsip_* modules, except + res_pjsip itself, saved off. The patch was then added and a full compile and + install was performed. Then the older res_pjsip_* moduled were copied over the + installed versions so res_pjsip was new and the rest were old. No issues. + + contact->aor, which is a char * at the end of contact, was then changed to an + extended string field and a recompile and reinstall was performed, again + leaving stock versions of the the res_pjsip_* modules. Again, no issues with + the res_pjsip_* modules using the old stringfield implementation and with + contact->aor as a char *, and res_pjsip itself using the new stringfield + implementation and contact->aor being an extended string field. + + Finally, several existing string fields were converted to extended string + fields to test OPT_STRINGFIELD_T. Again, no issues. + + Change-Id: I235db338c5b178f5a13b7946afbaa5d4a0f91d61 + +2016-04-04 18:02 +0000 [fe448ac8a7] gtjoseph + + * res_pjsip_mwi: Fix segv caused by 16c7d8e74a9af13f98c3c22aa9c43ce39965f6b7 + + I forgot the new voicemail_extension wasn't a stringfield and didn't check + for NULL where I should have. + + Change-Id: I029482d5c2ab72474838750461bd46b0809c90fb + +2016-04-03 11:47 +0000 [9d4318f798] gtjoseph + + * install_prereq: Fix check_installed_debs remove subversion + + check_installed_debs wasn't handling virtual packages like libsrtp-dev and + libresample-dev and on multiarch systems it was accidentally filtering out all + packages if any :i386 packages were found instead of just filtering out the + :i386 packages themselves. + + Change-Id: Ifd68da0d1ee30cc84df14de3f9b9079d7c3cecda + +2016-04-01 13:09 +0000 [566601837e] gtjoseph + + * utils.c: Fix typo in handle_show_locks + + ast_cli_allow_on_shutdown(e) should have been ast_cli_allow_at_shutdown(e). + + Change-Id: I4f092495c0b2bfd85c2651e0b5877bf4d05d9faf + +2016-03-30 18:34 +0000 [964f54bd5d] gtjoseph + + * pjproject_bundled: Fix use of LDCONFIG for shared library link creation + + LDCONFIG apparently isn't set to something sane on all systems so the creation + of the shared library links fails. Instead of just testing for non-blank, + main/Makefile now checks that LDCONFIG is actually executable and reverts to + LN if it isn't. + + This applies to both libasteriskpj and libasteriskssl. + + Thanks to 'abelbeck' for pointing out that the issue was LDCONFIG. + + ASTERISK-25873 #close + Reported-by: Hans van Eijsden + + Change-Id: I25b76379bc637726ec044b2c0e709b56b3701729 + +2016-03-30 13:31 +0000 [5f73c2ef0a] Richard Mudgett + + * res_stasis.c: Protect channel datastore list from stasis end. + + Change-Id: Ifadc469590bd4d5368e19d3763db3bd1f80fdb95 + +2016-03-29 18:06 +0000 [74d63f56ee] Richard Mudgett + + * res_ari: Cannot get control also means channel is unavailable. + + The only caller of ari_bridges_play_found() has this note: + + If ari_bridges_play_found fails because the channel is unavailable for + playback, The channel will be removed from the playback list soon. We can + keep trying to get channels from the list until we either get one that + will work or else there isn't a channel for this bridge anymore, in which + case we'll revert to ari_bridges_play_new. + + Change-Id: Ib068141b367ccaa17be0dab4181c98e26c5127d6 + +2016-03-29 14:29 +0000 [cf49b44090] Richard Mudgett + + * res_stasis_recording.c: Cleanup stasis_app_recording_find_by_name(). + + Change-Id: Ic7d93c402c498677a122505558859c853d4e5ac7 + +2016-03-28 14:23 +0000 [7f53f1d89e] Richard Mudgett + + * core_unreal.c: Add clarification comment about channel ref. + + Change-Id: I0be0627260cd8d6b6c3cc345949dcfdf32eff1f3 + +2016-03-29 13:47 +0000 [ecf4102d02] Richard Mudgett + + * res_stasis: Add control ref to playback and recording structs. + + The stasis_app_playback and stasis_app_recording structs need to have a + struct stasis_app_control ref. Other threads can get a reference to the + playback and recording structs from their respective global container. + These other threads can then use the control pointer they contain after + the control struct has gone. + + * Add control ref to stasis_app_playback and stasis_app_recording structs. + + With the refs added, the control command queue can now have a circular + control reference which will cause the control struct to never get + released if the control's command queue is not flushed when the channel + leaves the Stasis application. Also the command queue needs better + protection from adding commands if the control->is_done flag is set. + + * Flush the control command queue on exit. + + ASTERISK-25882 #close + + Change-Id: I3cf1fb59cbe6f50f20d9e35a2c07ac07d7f4320d + +2016-03-28 18:10 +0000 [a179aba65e] Richard Mudgett + + * res_stasis: Fix crash on a hanging up channel. + + * Give the struct stasis_app_control ao2 object a ref to the channel held + in the object. Now the channel will still be around if a thread needs to + post a stasis message instead of crash because the topic was destroyed. + + * Moved stopping any lingering silence generator out of the struct + stasis_app_control destructor and made it a part of exiting the Stasis + application. Who knows which thread the destructor will be called under + so it cannot affect the channel's silence generator. Not only was the + channel unprotected when the silence generator was stopped, stasis may no + longer even control the channel. + + ASTERISK-25882 + + Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4 + +2016-03-30 12:38 +0000 [16c7d8e74a] gtjoseph + + * res_pjsip_mwi: Allow subscribe to vm access extension as an alias + + Background: + + If your extension is 1000 and the voicemail access extension is 1571 and you + dial 1571, usually a dialplan rule calls voicemailmain with your extension and + you are placed directly in your mailbox. Therefore most admins program the + voicemail (or other speed dial) button on their phones to the access extension. + Some phones (Snom at least) use whatever is programmed there to also subscribe + for MWI and so can't dial one number and subscribe to another. This works fine + in chan_sip because chan_sip completely ignores the user portion of the + SUBSCRIBE message request URI. If it can match the peer, is subscribes to the + peer's mailbox. The user could be set to anything or nothing and you'd still + get subscribed to your mailbox. + + Issue: + + chan_pjsip actually uses the user portion of the URI to find an aor and its + mailboxes. Therefore a subscribe to 1571 results in a 404. Sure, you can + create an aor for 1571 but you certainly can't add your entire voicemail + system's mailboxes to it and everyone would get notified of every MWI. + + Solution: + + When an MWI subscribe comes in and an aor can't be found that matches the + resource directly, check the resource against the endpoint's aors. If an aor + is found that has a voicemail_extension that matches the resource, use it. + + ASTERISK-25865 + Reported-by: Ross Beer + + Change-Id: I770ea185f751f1ada888fafb4b452115f1c06e9e + +2016-03-24 22:55 +0000 [d8f0bc3572] gtjoseph + + * res_pjsip_mwi: Add voicemail extension and mwi_subscribe_replaces_unsolicited + + res_pjsip_mwi was missing the chan_sip "vmexten" functionality which adds + the Message-Account header to the MWI NOTIFY. Also, specifying mailboxes + on endpoints for unsolicited mwi and on aors for subscriptions required + that the admin know in advance which the client wanted. If you specified + mailboxes on the endpoint, subscriptions were rejected even if you also + specified mailboxes on the aor. + + Voicemail extension: + * Added a global default_voicemail_extension which defaults to "". + * Added voicemail_extension to both endpoint and aor. + * Added ast_sip_subscription_get_dialog for support. + * Added ast_sip_subscription_get_sip_uri for support. + + When an unsolicited NOTIFY is constructed, the From header is parsed, the + voicemail extension from the endpoint is substituted for the user, and the + result placed in the Message-Account field in the body. + + When a subscribed NOTIFY is constructed, the subscription dialog local uri + is parsed, the voicemail_extension from the aor (looked up from the + subscription resource name) is substituted for the user, and the result + placed in the Message-Account field in the body. + + If no voicemail extension was defined, the Message-Account field is not added + to the NOTIFY body. + + mwi_subscribe_replaces_unsolicited: + * Added mwi_subscribe_replaces_unsolicited to endpoint. + + The previous behavior was to reject a subscribe if a previous internal + subscription for unsolicited MWI was found for the mailbox. That remains the + default. However, if there are mailboxes also set on the aor and the client + subscribes and mwi_subscribe_replaces_unsolicited is set, the existing internal + subscription is removed and replaced with the external subscription. This + allows an admin to configure mailboxes on both the endpoint and aor and allows + the client to select which to use. + + ASTERISK-25865 #close + Reported-by: Ross Beer + + Change-Id: Ic15a9415091760539c7134a5ba3dc4a6a1217cea + +2016-03-30 09:46 +0000 [8dc8d6ceb8] gtjoseph + + * res_rtp_asterisk: Fix placement of txcount increment + + Commit 1bce690ccb36a4744a327c07af23a9a3a0fa20cd was incrementing txcount + for rtcp packets as well as rtp packets and that was causing sender reports + to be generated instead of receiver reports in cases where no rtp was actually + being sent. + + Moved the txcount increment from __rtp_sento, which handles both rtp and rtcp, + to rtp_sento which only handles rtp packets. + + Discovered by the hep/rtcp-receiver test. + + Change-Id: Ie442e4bb947a68847a676497021ba10ffaf376d5 + +2016-03-26 22:33 +0000 [c7eb18d865] gtjoseph + + * chan_pjsip: Add 'pjsip show channelstats' + + Added the ability to show channel statistics to chan_pjsip (cli_functions.c) + + Moved the existing 'pjsip show channel(s)' functionality from + pjsip_configuration to cli_functions.c. The stats needed chan_pjsip's + private header so it made sense to move the existing channel commands as well. + + Now using stasis_cache_dump to get the channel snapshots rather than retrieving + all endpoints, then getting each one's channel snapshots. Much more efficient. + + Change-Id: I03b114522126d27434030b285bf6d531ddd79869 + +2016-03-10 19:52 +0000 [1583559a06] gtjoseph + + * res_pjsip/pjsip_options: Fix From generation on outgoing OPTIONS + + No one seemed to notice but every time an OPTIONS goes out, it goes + out with a From of "asterisk" (or whatever the default from_user is set to), + even if you specify an endpoint. + + The issue had several causes... + qualify_contact is only called with an endpoint if called from the CLI. + If the endpoint is NULL, qualify_contact only looks up the endpoint if + authenticate_qualify=yes. Even then, it never passes it on to + ast_sip_create_request where the From header is set. Therefore From + is always "asterisk" (or whatever the default from_user is set to). + Even if ast_sip_create_request were to get an endpoint, it only sets + the From if endpoint->from_user is set. + + The fix is 4 parts... + + First, create_out_of_dialog_request was modified to use the endpoint id + if endpoint was specified and from_user is not set. + + Second, qualify_contact was modified to always look up an endpoint if + one wasn't specified regardless of authenticate_qualify. It then passes + the endpoint on to create_out_of_dialog_request. + + Third (and most importantly), find_an_endpoint was modified to find + an endpoint by using an "aors LIKE %contact->aor%" predicate with + ast_sorcery_retrieve_by_fields. As such, this patch will only work + if the sorcery realtime optimizations patch goes in. Otherwise we'd + be pulling the entire endpoints database every time we send an OPTIONS. + Since we already know the contact's aor, the on_endpoint callback was also + modified to just check if the contact->aor is an exact match to one of + the endpoint's. + + Finally, since we now have an endpoint for every OPTIONS request, + res_pjsip/endpt_send_request (which handles out-of-dialog reqests) was + updated to get the transport from the endpoint and set it on tdata. + Now the correct transport is used. + + Change-Id: I2207e12bb435e373bd1e03ad091d82e5aba011af +2016-03-25 10:59 +0000 [0cfab30b28] Jacek Konieczny + + * res_rtp_asterisk: Use separate SRTP session for RTCP with DTLS + + Asterisk uses separate UDP ports for RTP and RTCP traffic and RFC 5764 + explicitly states: + + There MUST be a separate DTLS-SRTP session for each distinct pair of + source and destination ports used by a media session + + This means RTP keying material cannot be used for DTLS RTCP, which was + the reason why RTCP encryption would fail. + + ASTERISK-25642 + + Change-Id: I7e8779d8b63e371088081bb113131361b2847e3a + +2016-03-25 10:42 +0000 [6a9c18fb59] Jacek Konieczny + + * app_echo: forward and generate VIDUPDATE frames + + When using app_echo via WebRTC with VP8 video the video would appear + only after a few minutes, because there would be nothing to request + a full reference frame. + + This fixes the problem in both ways: + - echos any VIDUPDATE frames received on the channel + - sends one such frame when first video frame is to be forwarded + + This makes the echo work with Firefox and Chrome WebRTC implementation. + + ASTERISK-25867 #close + + Change-Id: I73bda87bf7532ee8bfb28d917045a21034908c1e + +2016-03-27 12:53 +0000 [1bce690ccb] gtjoseph + + * res_rtp_asterisk: Fix packet stats on bridged connection + + rxcount, txcount, rxoctetcount and txoctetcount weren't being calculated + for bridged streams because the calulations were being done after the + bridged short-circuit. Actually, rxoctetcount wasn't ever being calculated. + + Moved the calculations so they occur for all valid received packets and + all transmitted packets. Also added rxoctetcount and txoctetcount to + ast_rtp_instance_stat. + + Change-Id: I08fb06011a82d38c3b4068867a615068fbe59cbb + +2016-03-25 23:19 +0000 [50f90d4099] Philip Correia + + * res_parking: Fix blind transfer dynamic lots creation. + + Blind transfers to a recognized parking extension need to use the parker's + channel variable values to create the dynamic parking lot. This is + because there is always only one parker while the parkee may actually be a + multi-party bridge. A multi-party bridge can never supply the needed + channel variables to create the dynamic parking lot. In the multi-party + bridge blind transfer scenario, the parker's CHANNEL(parkinglot) value and + channel variables are inherited by the local channel used to park the + bridge. + + * In park_common_setup(), make use the parker instead of the parkee to + supply the dynamic parking lot channel variable values. In all but one + case, the parkee is the same as the parker. However, in the recognized + parking extension blind transfer scenario for a two party bridge they are + different channels. For consistency, we need to use the parker channel. + + * In park_local_transfer(), pass the CHANNEL(parkinglot) value to the + local channel when blind transferring a multi-party bridge to a recognized + parking extension. + + * When a local channel starts a call, the Local;2 side needs to inherit + the CHANNEL(parkinglot) value from Local;1. + + The DTMF one-touch parking case wasn't even trying to create dynamic + parking lots before it aborted the attempt. + + * In parking_park_call(), add missing code to create a dynamic parking + lot. + + A DTMF bridge hook is documented as returning -1 to remove the hook. + Though the hook caller is really coded to accept non-zero. See the + ast_bridge_hook_callback typedef. + + * In feature_park_call(), don't remove the DTMF one-touch parking hook + because of an error. + + ASTERISK-24605 #close + Reported by: Philip Correia + Patches: + call_park.patch (license #6672) patch uploaded by Philip Correia + + Change-Id: I221d3a8fcc181877a1158d17004474d35d8016c9 + +2016-03-08 15:55 +0000 [5aa5c49413] gtjoseph + + * sorcery/res_pjsip: Refactor for realtime performance + + There were a number of places in the res_pjsip stack that were getting + all endpoints or all aors, and then filtering them locally. + + A good example is pjsip_options which, on startup, retrieves all + endpoints, then the aors for those endpoints, then tests the aors to see + if the qualify_frequency is > 0. One issue was that it never did + anything with the endpoints other than retrieve the aors so we probably + could have skipped a step and just retrieved all aors. But nevermind. + + This worked reasonably well with local config files but with a realtime + backend and thousands of objects, this was a nightmare. The issue + really boiled down to the fact that while realtime supports predicates + that are passed to the database engine, the non-realtime sorcery + backends didn't. + + They do now. + + The realtime engines have a scheme for doing simple comparisons. They + take in an ast_variable (or list) for matching, and the name of each + variable can contain an operator. For instance, a name of + "qualify_frequency >" and a value of "0" would create a SQL predicate + that looks like "where qualify_frequency > '0'". If there's no operator + after the name, the engines add an '=' so a simple name of + "qualify_frequency" and a value of "10" would return exact matches. + + The non-realtime backends decide whether to include an object in a + result set by calling ast_sorcery_changeset_create on every object in + the internal container. However, ast_sorcery_changeset_create only does + exact string matches though so a name of "qualify_frequency >" and a + value of "0" returns nothing because the literal "qualify_frequency >" + doesn't match any name in the objset set. + + So, the real task was to create a generic string matcher that can take a + left value, operator and a right value and perform the match. To that + end, strings.c has a new ast_strings_match(left, operator, right) + function. Left and right are the strings to operate on and the operator + can be a string containing any of the following: = (or NULL or ""), !=, + >, >=, <, <=, like or regex. If the operator is like or regex, the + right string should be a %-pattern or a regex expression. If both left + and right can be converted to float, then a numeric comparison is + performed, otherwise a string comparison is performed. + + To use this new function on ast_variables, 2 new functions were added to + config.c. One that compares 2 ast_variables, and one that compares 2 + ast_variable lists. The former is useful when you want to compare 2 + ast_variables that happen to be in a list but don't want to traverse the + list. The latter will traverse the right list and return true if all + the variables in it match the left list. + + Now, the backends' fields_cmp functions call ast_variable_lists_match + instead of ast_sorcery_changeset_create and they can now process the + same syntax as the realtime engines. The realtime backend just passes + the variable list unaltered to the engine. The only gotcha is that + there's no common realtime engine support for regex so that's been noted + in the api docs for ast_sorcery_retrieve_by_fields. + + Only one more change to sorcery was done... A new config flag + "allow_unqualified_fetch" was added to reg_sorcery_realtime. + "no": ignore fetches if no predicate fields were supplied. + "error": same as no but emit an error. (good for testing) + "yes": allow (the default); + "warn": allow but emit a warning. (good for testing) + + Now on to res_pjsip... + + pjsip_options was modified to retrieve aors with qualify_frequency > 0 + rather than all endpoints then all aors. Not only was this a big + improvement in realtime retrieval but even for config files there's an + improvement because we're not going through endpoints anymore. + + res_pjsip_mwi was modified to retieve only endpoints with something in + the mailboxes field instead of all endpoints then testing mailboxes. + + res_pjsip_registrar_expire was completely refactored. It was retrieving + all contacts then setting up scheduler entries to check for expiration. + Now, it's a single thread (like keepalive) that periodically retrieves + only contacts whose expiration time is < now and deletes them. A new + contact_expiration_check_interval was added to global with a default of + 30 seconds. + + Ross Beer reports that with this patch, his Asterisk startup time dropped + from around an hour to under 30 seconds. + + There are still objects that can't be filtered at the database like + identifies, transports, and registrations. These are not going to be + anywhere near as numerous as endpoints, aors, auths, contacts however. + + Back to allow_unqualified_fetch. If this is set to yes and you have a + very large number of objects in the database, the pjsip CLI commands + will attempt to retrive ALL of them if not qualified with a LIKE. + Worse, if you type "pjsip show endpoint " guess what's going to + happen? :) Having a cache helps but all the objects will have to be + retrieved at least once to fill the cache. Setting + allow_unqualified_fetch=no prevents the mass retrieve and should be used + on endpoints, auths, aors, and contacts. It should NOT be used for + identifies, registrations and transports since these MUST be + retrieved in bulk. + + Example sorcery.conf: + + [res_pjsip] + endpoint=config,pjsip.conf,criteria=type=endpoint + endpoint=realtime,ps_endpoints,allow_unqualified_fetch=error + + ASTERISK-25826 #close + Reported-by: Ross Beer + Tested-by: Ross Beer + + Change-Id: Id2691e447db90892890036e663aaf907b2dc1c67 + +2016-03-23 14:24 +0000 [05fc3a96d1] Richard Mudgett + + * res_parking: Cleanup find_channel_parking_lot_name() usage. + + Change-Id: I8f7a8890aef27824301c642d4d15407ac83e6f02 + +2016-03-18 14:01 +0000 [a4189763ab] Richard Mudgett + + * res_parking: Misc fixes. + + res/parking/parking_applications.c: + + * Add malloc fail checks in setup_park_common_datastore(). + + * Fix playing parking failed announcement to only happen on non-blind + transfers in park_app_exec(). It could never go out before because a test + was provedly always false. + + res/parking/parking_bridge.c: + + * Fix NULL tolerance in generate_parked_user() because + bridge_parking_push() can theoretically pass a NULL parker channel if the + parker channel went away for some reason. + + * Clarify some weird code dealing with blind_transfer in + bridge_parking_push(). + + res/parking/parking_bridge_features.c: + + * Made park_local_transfer() set BLINDTRANSFER on the Local;1 channel + which will be bulk copied to the Local;2 channel on the subsequent + ast_call(). The additional advantage is if the parker channel has the + BLINDTRANSFER and ATTENDEDTRANSFER variables set they are now guaranteed + to be overridden. + + res/parking/parking_manager.c: + + * Fix AMI Park action input range checking of the Timeout header in + manager_park(). + + * Reduced locking scope to where needed in manager_park(). + + res/res_parking.c: + + * Fix some off nominal missing unlocks by eliminating the returns. + + Change-Id: Ib64945bc285acb05a306dc12e6f16854898915ca + +2014-12-15 05:23 +0000 [6f95b5eda1] Philip Correia + + * res_parking: Update parking documentation for dynamic parking lots. + + * Remove duplicate res_parking.conf courtesytone config option + documentation. + + ASTERISK-24596 #close + Reported by: Philip Correia + + ASTERISK-24605 + Reported by: Philip Correia + Patches: + call_park_app_doc.patch (license #6672) patch uploaded by Philip Correia + + Change-Id: I90a92a891c6494dc08173e675856afcc4764c5b5 + +2016-03-24 14:08 +0000 [81ce60f6d4] Alexander Traud + + * chan_sip: Do not send all codecs on INVITE. Do not break on Session-Timers. + + Asterisk 13.7.0 included a fix for ASTERISK-24543, not to send all those + codecs, which the caller did not request/support. That fix was not complete + because on the second Session Timer all codecs were sent again. Some VoIP/SIP + clients interpreted that complete codec-list as a change in the SIP session. + Because of that, Asterisk did not send the RTP audio via NAT anymore which + created a non-audio scenario after the second Session Timer fired. + + ASTERISK-24543 #close + + Change-Id: I1881827816ab7fd47eb4287a95961179b34a0b66 + +2016-03-19 07:34 +0000 [c6e4c48e67] Gianluca Merlo + + * config: fix flags in uint option handler + + The configuration unsigned integer option handler sets flags for the + parser as if the option should be a signed integer (PARSE_INT32), + leading to errors on "out of range" values. Fix flags (PARSE_UINT32). + + A fix to res_pjsip is also present which stops invalid flags from + being passed when registering sorcery object fields for qualify + status. + + ASTERISK-25612 #close + + Change-Id: I96b539336275e0e72a8e8033487d2c3344debd3e + +2016-03-10 16:58 +0000 [59c8e189fd] Mark Michelson + + * Restrict CLI/AMI commands on shutdown. + + During stress testing, we have frequently seen crashes occur because a + CLI or AMI command attempts to access information that is in the process + of being destroyed. + + When addressing how to fix this issue, we initially considered fixing + individual crashes we observed. However, the changes required to fix + those problems would introduce considerable overhead to the nominal + case. This is not reasonable in order to prevent a crash from occurring + while Asterisk is already shutting down. + + Instead, this change makes it so AMI and CLI commands cannot be executed + if Asterisk is being shut down. For AMI, this is absolute. For CLI, + though, certain commands can be registered so that they may be run + during Asterisk shutdown. + + ASTERISK-25825 #close + + Change-Id: I8887e215ac352fadf7f4c1e082da9089b1421990 +2016-03-24 07:45 +0000 [ff3eebf454] Walter Doekes + + * musiconhold: Only warn if music class is not found in memory and database. + + The log message when a MusicOnHold music class was not found was changed + from debug level to WARNING level in Asterisk 11.19 and 13.5. For those + using realtime musiconhold, this message is wrong because it warns + before checking the database. + + This changeset delays the warning until after the database has been + checked. + + Reported-by: Conrad de Wet + ASTERISK-25444 #close + + Change-Id: I6cfb2db2f9cfbd2bb3d30566ecae361c4abf6dbf + +2016-03-24 05:38 +0000 [82e55e4883] Walter Doekes + + * core/logging: Fix broken syslog levels on older glibc. + + The fix to ASTERISK-25407 introduced the usage of LOG_MAKEPRI. However + this macro is broken in older glibc (< 2.17); it would left-shift the + facility a second time, causing the resultant priority to become + invalid. + + The syslog manpage mentions nothing about LOG_MAKEPRI and suggests this: + + The priority argument is formed by ORing the facility and the level + values [...]. + + ASTERISK-25510 #close + Reported by: Michael Newton + + Change-Id: Ia89debe7fac5ad090c7ef595c0707f31bb1e3d03 + +2016-03-23 08:59 +0000 [d963a33749] gtjoseph + + * pjproject-bundled: Cleanups for reported issues + + PortAudio should no longer be required + PJSIP_MAX_PKT_LEN is now 6000 + Older autoconf issue fixed. (CentOS 6) + + Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd + +2015-11-20 08:02 +0000 [c5170677e7] Francesco Castellano + + * chan_sip.c: Space after port causes unnecessary resolution attempt + + check_via() already skips leading blanks where the sent-by address (with the + optional port) should be placed. + + Since RFC 3261 allows for blanks between the port ant the Via parameters: + > https://tools.ietf.org/html/rfc3261#section-20.42 + (actually it allows a lot of blanks more ;-)). I just switched from + ast_skip_blanks() to ast_strip() on the local copy of the string. + + ASTERISK-21301 #close + + Change-Id: Ie5b8fe5a07067b7c0dc9bcdd1707e99b23b02b06 + +2016-03-19 17:49 +0000 [51deadee38] gtjoseph + + * progdocs: Exclude ./third-party from documentation generation + + We don't need pjproject's documentation embedded in Asterisk's. + + Change-Id: Iea6f5a621c0f4e3168dda3321eaab258d9f24a17 + +2016-03-18 20:32 +0000 [aa2fcd244e] Gianluca Merlo + + * func_aes: fix misuse of strlen on binary data + + The encryption code for AES_ENCRYPT evaluates the length of the data to + be encoded in base64 using strlen. The data is binary, thus the length + of it can be underestimated at the first NULL character. + Reuse the write pointer offset to evaluate it, instead. + + ASTERISK-25857 #close + + Change-Id: If686b5d570473eb926693c73461177b35b13b186 + +2016-12-08 17:42 +0000 Asterisk Development Team + + * asterisk certified/13.8-cert4 Released. + +2016-12-08 11:40 +0000 [2e0239c28c] Kevin Harwell + + * Update for certified/13.8-cert4 + +2016-11-30 09:31 +0000 [4fece22836] Walter Doekes + + * chan_sip: Do not allow non-SP/HTAB between header key and colon. + + RFC says SIP headers look like: + + HCOLON = *( SP / HTAB ) ":" SWS + SWS = [LWS] ; sep whitespace + LWS = [*WSP CRLF] 1*WSP ; linear whitespace + WSP = SP / HTAB ; from rfc2234 + + chan_sip implemented this: + + HCOLON = *( LOWCTL / SP ) ":" SWS + LOWCTL = %x00-1F ; CTL without DEL + + This discrepancy meant that SIP proxies in front of Asterisk with + chan_sip could pass on unknown headers with \x00-\x1F in them, which + would be treated by Asterisk as a different (known) header. For + example, the "To\x01:" header would gladly be forwarded by some proxies + as irrelevant, but chan_sip would treat it as the relevant "To:" header. + + Those relying on a SIP proxy to scrub certain headers could mistakenly + get unexpected and unvalidated data fed to Asterisk. + + This change fixes so chan_sip only considers SP/HTAB as valid tokens + before the colon, making it agree on the headers with other speakers of + SIP. + + ASTERISK-26433 #close + AST-2016-009 + + Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b + +2016-08-06 10:57 +0000 [016d20ce12] Alexei Gradinari + + * pjsip: Fix deadlock with suspend taskprocessor on masquerade + + If both channels which should be masqueraded + are in the same serializer: + 1st channel will be locked waiting condition 'complete' + 2nd channel will be locked waiting condition 'suspended' + + On heavy load system a chance that both channels will be in + the same serializer 'pjsip/distibutor' is very high. + + To reproduce compile res_pjsip/pjsip_distributor.c with + DISTRIBUTOR_POOL_SIZE=1 + + Steps to reproduce: + 1. Party A calls Party B (bridged call 'AB') + 2. Party B places Party A on hold + 3. Party B calls Voicemail app (non-bridged call 'BV') + 4. Party B attended transfers Party A to voicemail using REFER. + 5. When asterisk masquerades calls 'AB' and 'BV', + a deadlock is happened. + + This patch adds a suspension indicator to the taskprocessor. + When a session suspends/unsuspends the serializer + it sets the indicator to the appropriate state. + The session checks the suspension indicator before + suspend the serializer. + + ASTERISK-26145 #close + + Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b + +2016-11-08 10:48 +0000 [87e1ebc91a] Mark Michelson + + * res_pjsip_session: Do not call session supplements when it's too late. + + res_pjsip_sesssion was hooking into transaction and invite state + changes. One of the reasons for doing so was due to the + PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the + message sending process, and so we should call session supplements to + alter the outgoing message. + + In reality, this event was meant to indicate that the message either + a) had already been sent, or + b) required a DNS lookup and would be sent when the DNS query + completed. + + In case (a), this meant we were altering an already-sent + request/response for no reason. In case (b), this potentially meant we + could be trying to alter a request/response at the same time that the + DNS resolution completed. In this case, it meant we might be stomping on + memory being used by the thread actually sending the message. This + caused potential crashes and memory corruption. + + This patch removes the calls to session supplements from the case where + the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to + alter the message at this point is too late, and it can cause nothing + but harm to try to do it. Because there were no longer any calls to the + handle_outgoing() function, it has been removed. + + Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92 + (cherry picked from commit e043d1a55cf356066b3b39ebac8b4bbb612ce807) + +2016-11-02 09:15 +0000 [c8df727502] Joshua Colp + + * app_dial: Fix incorrect device state when channel is picked up. + + Given the scenario where multiple channels are dialed using Dial() + but the caller is picked up using PickupChan() all outgoing channels + except the channel specified to PickupChan() would be marked + as ringing until the call had been hung up. + + When using the PickupChan application the channel executing the + application is swapped into place of another channel. As part + of this process the channel is answered. The Dial application + has explicit logic which checks if the channel is answered, + cancels all other outgoing channels, and bridges. This logic is + different than the normal logic that is executed when an outgoing + channel is answered. This different logic failed to publish dial + events stating that the other outgoing channels had been canceled. + As a result references to the outgoing channels were held onto by + the dial masquerade process until the call had been ended and + the channels had gone away. This would result in the channels + appearing in the "core show channels" list despite not being present + anymore and would also result in incorrect device state. + + This change makes it so that this logic also publishes + dial events stating that the other outgoing channels have been + canceled. + + ASTERISK-26549 + + Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f + +2016-10-18 16:50 +0000 [4c50689d09] Joshua Colp + + * Revert "pjproject_bundled: Add patch to address SSL crash" + + This reverts commit 28cc8a9dff2fb9210726cfa6274ae683fbfa4a01. + + Change-Id: I777cf8173f7a88273090bed72bfe57fb0e72b84f + +2016-10-17 11:39 +0000 [28cc8a9dff] gtjoseph + + * pjproject_bundled: Add patch to address SSL crash + + Addresses crashes when an attempt is made to operate on an SSL socket + after the socket has been closed. + + ASTERISK-26477 #close + + Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002 + (cherry picked from commit 546ec4b038ac3d750c5138d7fbb8e3ce93f482df) + +2016-10-12 16:24 +0000 [7c2bd702fd] Richard Mudgett + + * Audit ast_json_pack() calls for needed UTF-8 checks. + + Added needed UTF-8 checks before constructing json objects in various + files for strings obtained outside the system. In this case string values + from a channel driver's peer and not from the user setting channel + variables. + + * aoc.c: Fixed type mismatch in s_to_json() for time and granularity json + object construction. + + ASTERISK-26466 + Reported by: Richard Mudgett + + Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096 + +2016-10-12 16:20 +0000 [3b1b2fc1d5] Richard Mudgett + + * json: Check party id name, number, subaddresses for UTF-8. + + * Updated unit test as ast_json_name_number() is now NULL tolerant. + + ASTERISK-26466 #close + Reported by: Richard Mudgett + + Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6 + +2016-10-11 18:14 +0000 [a835adfa92] Richard Mudgett + + * json: Add UTF-8 check call. + + Since the json library does not make the check function public we + recreate/copy the function in our interface module. + + ASTERISK-26466 + Reported by: Richard Mudgett + + Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99 + +2016-07-19 15:22 +0000 [7baedd9ecd] Alexei Gradinari + + * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice. + + This patch removed call of pjsip_tx_data_dec_ref in send_notify + if send_request failed. + The pjsip_dlg_send_request deletes the message on error by itself. + + It seems this patch fixes next issues: + ASTERISK-26199 + ASTERISK-26166 + ASTERISK-26174 + + Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a + +2016-10-05 14:53 +0000 [a8e37c3d06] gtjoseph + + * pjproject_bundled: Add MALLOC_DEBUG capability + + pjproject_bundled will now use the asterisk memory debugging APIs + if MALLOC_DEBUG is turned on in menuselect. + + Because this required stubs for the executable programs and the python + bindings, some Makefile reorganization was needed to properly handle + the dependencies. As a result, the makefile now individually makes + each of the pjproject libraries separately instead of making them all + in 1 shot. The only visible change is that there are separate status + lines printed for each library instead oif 1 for all libs. Also, the + making of the pjproject dependency files was eliminated. They're not + needed for building unless you're actively modifying pjproject source + files and it makes the build process faster. Finally, any issues with + parallel builds should be resolved again making the build faster. + + NOTE: The certified/13.8 version of this patch also builds libresample + which is needed by pjsua. Later versions do not need libresample. + + Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0 + +2016-08-29 18:08 +0000 [adcdecd47f] Richard Mudgett + + * res_pjsip: Add ignore_uri_user_options option. + + This implements the chan_sip legacy_useroption_parsing option but with a + better name. + + * Made the caller-id number and redirecting number strings obtained from + incoming SIP URI user fields always truncated at the first semicolon. + People don't care about anything after the semicolon showing up on their + displays even though the RFC allows the semicolon. + + ASTERISK-26316 #close + Reported by: Kevin Harwell + + Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62 + +2016-09-08 16:34 +0000 Asterisk Development Team + + * asterisk certified/13.8-cert3 Released. + +2016-09-08 11:34 +0000 [6cec20200b] gtjoseph + + * Release summaries: Remove previous versions + +2016-09-08 11:34 +0000 [9c0f0eef6e] gtjoseph + + * .version: Update for certified/13.8-cert3 + +2016-09-08 11:34 +0000 [3923b114b9] gtjoseph + + * .lastclean: Update for certified/13.8-cert3 + +2016-09-08 11:34 +0000 [83362b5590] gtjoseph + + * realtime: Add database scripts for certified/13.8-cert3 + +2016-08-23 06:35 +0000 [d947baa255] Corey Farrell (license 5909) + + * chan_sip: Don't allocate new RTP instances on top of old ones. + + In some scenarios dialog_initialize_rtp can be called multiple times on + the same dialog. This can cause RTP instances to be leaked along with + multiple file descriptors for each instance. + + This change makes it so the existing RTP instances are destroyed and + not overwritten, stopping the memory leak. + + ASTERISK-26272 #close + patches: + ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909) + + Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73 + +2016-08-10 15:14 +0000 [df9aa402a5] Mark Michelson + + * ConfBridge: Make some announcements asynchronous. + + Confbridge announcements tend to block a channel while they are being + played. In some circumstances, this is warranted since you want that + particular channel not to hear the announcement (Example: "John Doe has + entered the conference"). For others it makes less sense. + + This change first introduces methods for playing sounds asynchronously + into the conference. This is very similar to how synchronous sounds are + played, except the channel initiating the playback does not wait for the + sound to complete before moving on. + + Asynchronous announcements are used for two circumstances: + * Sounds played for a user after they have left the bridge + * Sounds that play first to a single user and then the rest of the + conference (if the channel and conference use the same language) + + ASTERISK-26289 #close + Reported by Mark Michelson + + Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a + +2016-08-24 14:42 +0000 [b1e827d259] gtjoseph + + * res_rtp_multicast: Fix SEGV in ast_multicast_rtp_create_options + + ast_multicast_rtp_create_options now checks for NULL or empty options + + Change-Id: Ib845eae46a67a9787e89a87ebd1027344e5e0362 + +2016-08-10 15:14 +0000 [c218e038d7] Mark Michelson + + * ConfBridge: Rework announcer channel methodology + + NOTE: This patch was submitted earlier and reverted because of a failing + test. The test has been patched so that it adjusts for the changes here, + so this is being resubmitted for review. + + One feature that confbridge has is the ability to play sounds to all + participants in the conference. Prior to this commit, the algorithm for + this was as follows: + + * Grab the playback lock + * Push the conference announcer channel into the bridge + * Play back the sound + * Pull the conference announcer channel from the bridge + * Release the playback lock + + The issue here is that the act of adding the playback channel to the + bridge and removing it for each announcement is expensive. Amongst the + expenses: + + * The announcer channel is imparted into the bridge, meaning a new + thread is spun up for each playback. + * When the announcer is added or removed from the bridge, it results + in the BRIDGEPEER channel variable being set on all channels in the + bridge. This requires keeping the bridge locked and locking each + individual channel in order to set it. + * There's also just the general overhead of adding the channel and + removing it from the bridge. The bridge potentially has to reconfigure + every single time + + With this commit, the paradigm for playing back announcements has + shifted. + + * The announcer channel is now added to the bridge when the conference + is allocated, and it is hung up when the conference is destroyed. + * A taskprocessor is used to queue playbacks onto the announcer channel. + This keeps the behavior from before where playbacks do not overlap. + * The announcer channel is no longer placed into the bridge as + departable. Since we are not constantly removing the channel from + the bridge, it is safe to add the channel using an independent thread + and simply hang the channel up when it is time for the conference to + be destroyed. + + The use of the taskprocessor for playbacks opens up the interesting + possibility of having asynchronous announcements played. In this commit, + however, the behavior is still exactly the same as it previously was. + + ASTERISK-26289 + Reported by Mark Michelson + + Change-Id: Ica9fa4907c2f3728cdd1cf0bc564ef4eb40754a0 + +2016-08-23 05:53 +0000 [b82f0b7722] Joshua Colp + + * Revert "ConfBridge: Rework announcer channel methodology" + + This reverts commit 4ca730127ccdc895e4d9e32cb0828c27bf74817b. + + Change-Id: I8886feb69ae2dbf521a8c0937792349b70db52b2 + +2016-08-10 15:14 +0000 [4ca730127c] Mark Michelson + + * ConfBridge: Rework announcer channel methodology + + One feature that confbridge has is the ability to play sounds to all + participants in the conference. Prior to this commit, the algorithm for + this was as follows: + + * Grab the playback lock + * Push the conference announcer channel into the bridge + * Play back the sound + * Pull the conference announcer channel from the bridge + * Release the playback lock + + The issue here is that the act of adding the playback channel to the + bridge and removing it for each announcement is expensive. Amongst the + expenses: + + * The announcer channel is imparted into the bridge, meaning a new + thread is spun up for each playback. + * When the announcer is added or removed from the bridge, it results + in the BRIDGEPEER channel variable being set on all channels in the + bridge. This requires keeping the bridge locked and locking each + individual channel in order to set it. + * There's also just the general overhead of adding the channel and + removing it from the bridge. The bridge potentially has to reconfigure + every single time + + With this commit, the paradigm for playing back announcements has + shifted. + + * The announcer channel is now added to the bridge when the conference + is allocated, and it is hung up when the conference is destroyed. + * A taskprocessor is used to queue playbacks onto the announcer channel. + This keeps the behavior from before where playbacks do not overlap. + * The announcer channel is no longer placed into the bridge as + departable. Since we are not constantly removing the channel from + the bridge, it is safe to add the channel using an independent thread + and simply hang the channel up when it is time for the conference to + be destroyed. + + The use of the taskprocessor for playbacks opens up the interesting + possibility of having asynchronous announcements played. In this commit, + however, the behavior is still exactly the same as it previously was. + + ASTERISK-26289 + Reported by Mark Michelson + + Change-Id: Ic5cd2c4b98a1eaa1715eb7a5b35d62f1a76d78a5 + +2016-08-16 15:36 +0000 [f40c6874c6] gtjoseph + + * res_pjsip: Add contact_user to endpoint + + contact_user, when specified on an endpoint, will override the user + portion of the Contact header on outgoing requests. + + Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4 + +2016-08-09 12:07 +0000 [78a6da0885] Kevin Harwell + + * alembic/sqlalchemy: auto increment only allowed on a single column + + The extensions table defined two columns (id and priority) as primary key + autoincrement columns. However only one is allowed when defining the primary + key. + + This patch removes the autoincrement attribute from the priority column since + it does not need to be as such and really should not have been on there in the + first place. + + This patch also removes 'context', 'exten', and 'priority' from the primary key + index and creates a new combined unique contraint index on them. + + ASTERISK-26183 #close + + Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b + (cherry picked from commit f6ec94cca66addac71d566d6fa48188b407f26ba) + +2016-08-15 13:27 +0000 Asterisk Development Team + + * asterisk certified/13.8-cert2 Released. + +2016-08-15 08:27 +0000 [d7eec92332] Joshua Colp + + * Release summaries: Remove previous versions + +2016-08-15 08:27 +0000 [847b0d007d] Joshua Colp + + * .version: Update for certified/13.8-cert2 + +2016-08-15 08:27 +0000 [bd8581cd52] Joshua Colp + + * .lastclean: Update for certified/13.8-cert2 + +2016-08-15 08:27 +0000 [628620c5ef] Joshua Colp + + * realtime: Add database scripts for certified/13.8-cert2 + +2016-08-09 16:19 +0000 [13b950f4be] Mark Michelson + + * res_rtp_asterisk: Cache local RTCP address. + + When an RTCP packet is sent or received, res_rtp_asterisk generates a + Stasis event that contains the RTCP report as well as the local and + remote addresses that the report pertains to. + + The addresses are determined using ast_find_ourip(). For the local + address, this will typically result in a lookup of the hostname of the + server, and then a DNS lookup of that hostname. If you do not have the + host in /etc/hosts, then this results in a full DNS lookup, which can + potentially block for some time. + + This is especially problematic when performing RTCP reads, since those + are done on the same thread responsible for reading and writing media. + + This patch addresses the issue by performing a lookup of the local + address when RTCP is allocated. We then use this cached local address + for the Stasis events when necessary. + + ASTERISK-26280 #close + Reported by Mark Michelson + + Change-Id: I3dd61882c2e57036f09f0c390cf38f7c87e9b556 + +2016-08-01 06:57 +0000 [acf021cdec] Joshua Colp + + * ChangeLog: Updated for certified/13.8-cert2-rc1 + +2016-08-01 06:57 +0000 [fba5cf4a00] Joshua Colp + + * Release summaries: Add summaries for certified/13.8-cert2-rc1 + +2016-08-01 06:57 +0000 [b2cc9b4879] Joshua Colp + + * Release summaries: Remove previous versions + +2016-08-01 06:57 +0000 [20e25657fa] Joshua Colp + + * .version: Update for certified/13.8-cert2-rc1 + +2016-08-01 06:57 +0000 [08c26fba06] Joshua Colp + + * .lastclean: Update for certified/13.8-cert2-rc1 + +2016-08-01 06:57 +0000 [b539479f10] Joshua Colp + + * realtime: Add database scripts for certified/13.8-cert2-rc1 + +2016-06-21 10:53 +0000 [164bfc8574] Scott Griepentrog + + * PJSIP: provide transport type with received messages + + The receipt of a SIP MESSAGE may occur over any transport including TCP + and TLS. When the message is received, the original URI is added to the + message in the field PJSIP_RECVADDR, but this is insufficient to ensure + a reply message can reach the originating endpoint. This patch adds the + PJSIP_TRANSPORT field populated with the transport type. + + ASTERISK-26132 #close + + Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e + (cherry picked from commit 69d58a1e377938e5236f51200e222eb219739441) + +2016-07-21 22:28 +0000 [7809034c0d] Richard Mudgett + + * dsp.c: Fix erroneous fax tone detection. + + The Goertzel calculations get less accurate the lower the signal level + being worked with becomes because there is less resolution remaining. + If it is too low we can erroneously detect a tone where none really + exists. The searched for fax frequencies not only need to be so much + stronger than the background noise they must also be a minimum strength. + + * Add needed minimum threshold test to tone_detect(). + + * Set TONE_THRESHOLD to allow low volume frequency spread detection. + + ASTERISK-26237 #close + Reported by: Richard Mudgett + + Change-Id: I84dbba7f7628fa13720add6a88eae3b129e066fc + +2016-07-21 09:05 +0000 [5bc48a290b] gtjoseph + + * chan_sip: Prevent deadlock when issuing "sip show channels" + + sip_show_channels locks the dialogs container first then locks each + sip_pvt so it can spit out the details. The rest of sip dialog + processing locks the sip_pvt first then locks the dialogs container + if it needs to. Both lock in the order they need but deadlocks can + result. To fix, sip_show_channels and sip_show_channelstats have + been converted to use an iterator rather than ao2_callback. This way + the container is locked only while getting the next entry and is + unlocked when the callback is called. + + ASTERISK-23013 #close + + Change-Id: Id9980419909e811f89484950ed46ef117b9eb990 + +2016-07-12 17:24 +0000 [49defa5578] Richard Mudgett + + * res_fax: Fix FAXOPT(faxdetect) timeout option. + + The fax detection timeout option did not work because basically the wrong + variable was checked in fax_detect_framehook(). As a result, the timer + would timeout immediately and disable fax detection. + + * Fixed ignoring negative timeout values. We'd complain and then go right + on using the negative value. + + * Fixed destroy_faxdetect() in the off-nominal case of an incomplete + object creation. + + * Added more range checking to FAXOPT(gateway) timeout parameter. + + ASTERISK-26214 #close + Reported by: Richard Mudgett + + Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976 + +2016-07-18 16:16 +0000 [a0485fe851] Richard Mudgett + + * chan_dahdi: Add faxdetect_timeout option. + + The new option allows the channel driver's faxdetect option to timeout on + a call after the specified number of seconds into a call. The new feature + is disabled if the timeout is set to zero. The option is disabled by + default. + + * Don't clear dsp_features after passing them to the dsp code in + my_pri_ss7_open_media(). We should still remember them especially for the + new faxdetect_timeout option. + + ASTERISK-26214 + Reported by: Richard Mudgett + + Change-Id: Ieffd3fe788788d56282844774365546dce8ac810 + +2016-07-15 20:44 +0000 [d172104e12] Richard Mudgett + + * res_pjsip: Add fax_detect_timeout endpoint option. + + The new endpoint option allows the PJSIP channel driver's fax_detect + endpoint option to timeout on a call after the specified number of + seconds into a call. The new feature is disabled if the timeout is set + to zero. The option is disabled by default. + + ASTERISK-26214 + Reported by: Richard Mudgett + + Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d + +2016-07-13 14:09 +0000 Asterisk Development Team + + * asterisk certified/13.8-cert1 Released. + +2016-07-13 08:34 +0000 [482561f1e3] Joshua Colp + + * Release summaries: Remove previous versions + +2016-07-13 08:34 +0000 [3cb116d75a] Joshua Colp + + * .version: Update for certified/13.8-cert1 + +2016-07-13 08:34 +0000 [797d39c81c] Joshua Colp + + * .lastclean: Update for certified/13.8-cert1 + +2016-07-13 08:34 +0000 [f5fbfe9a6a] Joshua Colp + + * realtime: Add database scripts for certified/13.8-cert1 + +2016-07-07 10:38 +0000 [22a36e5b10] Joshua Colp + + * chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled. + + Some T.38 implementations may send another re-invite after the initial + one which adds additional negotiation details (such as the max bitrate). + Currently this will fail when passthrough is being done in chan_sip as we + do nothing if T.38 is already active. + + Other handlers of T.38 inside of Asterisk (such as res_fax) handle this + scenario so this change adds support for it to chan_sip and res_pjsip_t38. + If a request to negotiate is received while T.38 is already enabled a + new re-INVITE is sent and negotiation is done again. + + ASTERISK-26179 #close + + Change-Id: I0298494d3da6df3219bbfa4be9aa04015043145c + +2016-06-22 13:41 +0000 [d0c04c8986] gtjoseph + + * res_rtp_asterisk: Fix a self-comparison identified by gcc 6 + + gcc 6 caught a previously unidentified self-comparison in + ice_candidate_cmp. Fixed it and re-ordered the predicates for better + short-circuiting. + + ASTERISK-26140 #close + + Change-Id: I3da713c568e24064430257b3502fbdafd35af7a7 + +2016-06-30 08:25 +0000 [0d694ce9b8] gtjoseph + + * configure: Fix HAVE_PJSIP_EVSUB_GRP_LOCK not set with external pjproject + + There was a typo in configure.ac preventing HAVE_PJSIP_EVSUB_GRP_LOCK + from getting set when using an external pjproject. + + ASTERISK-26099 #close + Reported-by: Ross Beer + + Change-Id: I709af70428e125fb5ccd44b171d25dd29141f0ae + +2016-06-28 08:22 +0000 [5f444b1f5b] gtjoseph + + * BuildSystem: Fix a few issues hightlighted by gcc 6.x + + gcc 6.1.1 caught a few more issues. + Made sure the unit tests still pass for the func_env and stdtime + issues. + + ASTERISK-26157 #close + + Change-Id: I6664d8f34a45bc1481d2a854481c7878b0c1cf8e + +2016-06-22 16:15 +0000 [f282a88ee4] Mark Michelson + + * ChangeLog: Updated for certified/13.8-cert1-rc3 + +2016-06-22 16:15 +0000 [bd6da93116] Mark Michelson + + * Release summaries: Add summaries for certified/13.8-cert1-rc3 + +2016-06-22 16:14 +0000 [4df81def29] Mark Michelson + + * Release summaries: Remove previous versions + +2016-06-22 16:14 +0000 [286d58affc] Mark Michelson + + * .version: Update for certified/13.8-cert1-rc3 + +2016-06-22 16:14 +0000 [8b7fe94df7] Mark Michelson + + * .lastclean: Update for certified/13.8-cert1-rc3 + +2016-06-22 16:14 +0000 [0449fd2e1e] Mark Michelson + + * realtime: Add database scripts for certified/13.8-cert1-rc3 + +2016-06-09 09:20 +0000 [a6610fbe2f] gtjoseph + + * build: Fix ast_sockaddr initialization to be more portable + + A change to glibc 2.22 changed the order of the sockadddr_storage + members which caused the places where we do an initialization of + ast_sockaddr with '{ { 0, 0, } }' to fail compilation. Those + initializers (which we shouldn't have been using anyway) have been + replaced with memsets. + + Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4 + +2016-06-12 11:19 +0000 [102d88e791] gtjoseph + + * res_pjsip_pubsub: Address SEGV when attempting to terminate a subscription + + Occasionally under load we'll attempt to send a final NOTIFY on a + subscription that's already been terminated and a SEGV will occur + down in pjproject's evsub_destroy function. This is a result of a + race condition between all the paths that can generate a notify + and/or destroy the underlying pjproject evsub object: + + * The client can send a SUBSCRIBE with Expires: 0. + * The client can send a SUBSCRIBE/refresh. + * The subscription timer can expire. + * An extension state can change. + * An MWI event can be generated. + * The pjproject transaction timer (timer_b) can expire. + + Normally when our pubsub_on_evsub_state is called with a terminate, + we push a task to the serializer and return at which point the dialog + is unlocked. This is usually not a problem because the task runs + immediately and locks the dialog again. When the system is heavily + loaded though, there may be a delay between the unlock and relock + during which another event may occur such as the subscription timer + or timer_b expiring, an extension state change, etc. These may also + cause a terminate to be processed and if so, we could cause pjproject + to try to destroy the evsub structure twice. There's no way for us to + tell that the evsub was already destroyed and the evsub's group lock + can't tolerate this and SEGVs. + + The remedy is twofold. + + * A patch has been submitted to Teluu and added to the bundled + pjproject which adds add/decrement operations on evsub's group lock. + + * In res_pjsip_pubsub: + * configure.ac and pjproject-bundled's configure.m4 were updated + to check for the new evsub group lock APIs. + * We now add a reference to the evsub group lock when we create + the subscription and remove the reference when we clean up the + subscription. This prevents evsub from being destroyed before + we're done with it. + * A state has been added to the subscription tree structure so + termination progress can be tracked through the asyncronous tasks. + * The pubsub_on_evsub_state callback has been split so it's not doing + double duty. It now only handles the final cleanup of the + subscription tree. pubsub_on_rx_refresh now handles both client + refreshes and client terminates. It was always being called for + both anyway. + * The serialized_on_server_timeout task was removed since + serialized_pubsub_on_rx_refresh was almost identical. + * Missing state checks and ao2_cleanups were added. + * Some debug levels were adjusted to make seeing only off-nominal + things at level 1 and nominal or progress things at level 2+. + + ASTERISK-26099 #close + Reported-by: Ross Beer. + + Change-Id: I779d11802cf672a51392e62a74a1216596075ba1 + +2016-06-13 13:33 +0000 [d9ab222edc] Richard Mudgett + + * res_rtp_multicast.c: Fix warning message typo. + + Change-Id: Ic9928208b9957e09866abe3d9649030942ec52b3 + +2016-06-10 12:35 +0000 [39329a9e66] Richard Mudgett + + * chan_rtp: Backport changes from master. + + * Deprecate chan_multicast_rtp. + + Change-Id: Ib5a45e58c75ee8abd0b4f9575379b5321feb853e + +2016-06-10 16:13 +0000 [6d45341963] Richard Mudgett + + * chan_rtp.c: Copy file from chan_multicast_rtp.c + + Change-Id: I1119b53f2152ab1cbec74b5be7ea44844dbda8ef + +2016-06-03 22:44 +0000 [0322479ff7] Richard Mudgett + + * res_pjsip_registrar.c: Eliminate rx REGISTER request race condition. + + This patch fixes a race condition processing received REGISTER requests + and their retransmissions caused by REGISTER requests being processed by + two threads. The "sip_transaction Unable to register REGISTER transaction + (key exists)" message is a notable symptom of this issue. + + This issue was more likely to happen before the pjsip/distributor + serializers were created. Instead of steps one and two below placing the + REGISTER messages into the same pjsip/distributor they were placed in + random pjsip/default serializers. + + 1) REGISTER requests come in and get placed on the pjsip/distributor + serializer. + + 2) Before the first request is processed a retransmission comes in and is + placed on the same pjsip/distributor serializer. + + 3) The first request goes up the pjsip stack and is then shunted off to + the pjsip/aor/ serializer. + + 4) Before the first request is completed processing in the pjsip/aor/ + serializer, the second request goes up the pjsip stack and is also shunted + off to the pjsip/aor/ serializer. + + 5) The first request completes processing and sends out its response. + + 6) The second request completes processing and tries to send out its + response but pjlib complains that the REGISTER transaction key already + exists. + + 7) Sadness ensues. + + * The race is eliminated by removing the pjsip/aor/ serializer and + continuing the processing in the pjsip/distributor serializer. Now any + retransmissions queued in the pjsip/distributor serializer will be + processed after the first message is completely processed. + + ASTERISK-26088 #close + Reported by: Richard Mudgett + + Change-Id: I842d714346088bf717ea27437f1dd85bff0bab5a + +2016-06-03 11:35 +0000 [942fa0c95b] Richard Mudgett + + * stasis: Add setting subscription congestion levels. + + Stasis subscriptions and message routers create taskprocessors to process + the event messages. API calls are needed to be able to set the congestion + levels of these taskprocessors for selected subscriptions and message + routers. + + * Updated CDR, CEL, and manager's stasis subscription congestion levels + based upon stress testing. Increased the congestion levels to reduce the + potential for bursty call setup/teardown activity from triggering the + taskprocessor overload alert. CDRs in particular need an extra high + congestion level because they can take awhile to process the stasis + messages. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: Id0a716394b4eee746dd158acc63d703902450244 + +2016-06-02 18:19 +0000 [b046fa1907] Richard Mudgett + + * sorcery: Add setting object type congestion levels. + + Sorcery creates taskprocessors for object types to process object observer + callbacks. An API call is needed to be able to set the congestion levels + of these taskprocessors for selected object types. + + * Updated PJSIP's contact and contact_status sorcery object type observer + default congestion levels based upon stress testing. Increased the + congestion levels to reduce the potential for bursty register/unregister + and subscribe/unsubscribe activity from triggering the taskprocessor + overload alert. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6 + +2016-06-02 16:08 +0000 [237f9ef7af] Richard Mudgett + + * taskprocessors: Implement high/low water mark alerts. + + When taskprocessors get backed up, there is a good chance that we are + being overloaded and need to defer adding new work to the system. + + * Implemented a high/low water alert mechanism for modules to check if the + system is being overloaded and take appropriate action. When a + taskprocessor is created it has default congestion levels set. A + taskprocessor can later have those congestion levels altered for specific + needs if stress testing shows that the taskprocessor is a symptom of + overloading or needs to handle bursty activity without triggering an + overload alert. + + * Add CLI "core show taskprocessor" low/high water columns. + + * Fixed __allocate_taskprocessor() to not use RAII_VAR(). RAII_VAR() was + never a good thing to use when creating a taskprocessor because of the + nature of how its references needed to be cleaned up on a partial + creation. + + * Made res_pjsip's distributor check if the taskprocessor overload alert + is active before placing a message representing brand new work onto a + distributor serializer. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I182f1be603529cd665958661c4c05ff9901825fa + +2016-05-27 17:31 +0000 [ff70f04a37] Richard Mudgett + + * res_pjsip_session: Use distributor serializer for incoming calls. + + We must continue using the serializer that the original INVITE came in on + for the dialog. There may be retransmissions already enqueued in the + original serializer that can result in reentrancy and message sequencing + problems. + + Outgoing call legs create the pjsip/outsess/ serializers for + their dialogs. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I24d7948749c582b8045d5389ba3f6588508adbbc + +2016-05-27 16:28 +0000 [4b26c9ead8] Richard Mudgett + + * res_pjsip_pubsub.c: Recreate subscriptions using distributor serializer. + + * Resolves potential reentrancy problems if system restarted in the middle + of subscription message transactions. + + * Fixes memory leak recreating persistent subscriptions when the + subscription resource tree could not be created. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I71e34d7ae8ed35a694f1030e820e2548c48697be + +2016-05-27 12:50 +0000 [a137d1822e] Richard Mudgett + + * res_pjsip_pubsub.c: Use distributor serializer for incoming subscriptions. + + We must continue using the serializer that the original SUBSCRIBE came in + on for the dialog. There may be retransmissions already enqueued in the + original serializer that can result in reentrancy and message sequencing + problems. The "sip_transaction Unable to register SUBSCRIBE transaction + (key exists)" message is a notable symptom of this issue. + + Outgoing subscriptions still create the pjsip/pubsub/ + serializers for their dialogs. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I18b00bb74a56747b2c8c29543a82440b110bf0b0 + +2016-05-26 17:35 +0000 [9a7a5aec18] Richard Mudgett + + * pjsip_distributor.c: Consistently pick a serializer for messages. + + Incoming messages that are not part of a dialog or a recognized response + to one of our requests need to be sent to a consistent serializer. Under + load we may be queueing retransmissions before we can process the original + message. We don't need to throw these messages onto random serializers + and cause reentrancy and message sequencing problems. + + * Created a pool of pjsip/distributor serializers that get picked by + hashing the call-id and remote tag strings of the received messages. + + * Made ast_sip_destroy_distributor() destroy items in the reverse order of + creation. + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I2ce769389fc060d9f379977f559026fbcb632407 + +2016-06-02 12:51 +0000 [f2a76c4292] Richard Mudgett + + * pjsip_distributor.c: Ignore messages until fully booted. + + We should not be processing any incoming messages until we are fully + booted. We may not have dialplan or other needed configuration loaded + yet. + + ASTERISK-26089 #close + Reported by: Scott Griepentrog + + ASTERISK-26088 + Reported by: Richard Mudgett + + Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264 + +2016-04-01 13:30 +0000 [51e45e5ca5] gtjoseph + + * res_pjsip contact: Lock expiration/addition of contacts + + Contact expiration can occur in several places: res_pjsip_registrar, + res_pjsip_registrar_expire, and automatically when anyone calls + ast_sip_location_retrieve_aor_contact. At the same time, res_pjsip_registrar + may also be attempting to renew or add a contact. Since none of this was locked + it was possible for one thread to be renewing a contact and another thread to + expire it immediately because it was working off of stale data. This was the + casue of intermittent registration/inbound/nominal/multiple_contacts test + failures. + + Now, the new named lock functionality is used to lock the aor during contact + expire and add operations and res_pjsip_registrar_expire now checks the + expiration with the lock held before deleting the contact. + + ASTERISK-25885 #close + Reported-by: Josh Colp + + Change-Id: I83d413c46a47796f3ab052ca3b349f21cca47059 + +2016-03-31 20:04 +0000 [880d502141] gtjoseph + + * lock: Add named lock capability + + Locking some objects like sorcery objects can be tricky because the underlying + ao2 object may not be the same for all callers. For instance, two threads that + call ast_sorcery_retrieve_by_id on the same aor name might actually get 2 + different ao2 objects if the underlying wizard had to rehydrate the aor from a + database. Locking one ao2 object doesn't have any effect on the other even if + those objects had locks in the first place. + + Named locks allow access control by keyspace and key strings. Now an "aor" + named "1000" can be locked and any other thread attempting to lock "aor" "1000" + will wait regardless of whether the underlying ao2 object is the same or not. + Mutex and rwlocks are supported. + + This capability will initially be used to lock an aor when multiple threads may + be attempting to prune expired contacts from it. + + Change-Id: If258c0b7f92b02d07243ce70e535821a1ea7fb45 + +2016-06-02 12:04 +0000 [a81feefde9] Joshua Colp + + * res_odbc: Implement a connection pool. + + Testing has shown that our usage of UnixODBC is problematic + due to bugs within UnixODBC itself as well as the heavy weight + cost of connecting and disconnecting database connections, even + when pooling is enabled. + + For users of UnixODBC 2.3.1 and earlier crashes would occur due + to insufficient protection of the disconnect operation. This was + fixed in UnixODBC 2.3.2 and above. + + For users of UnixODBC 2.3.3 and higher a slow-down would occur + under heavy database use due to repeated connection establishment. + A regression is present where on each connection the database + configuration is cached again, with the cache growing out of + control. + + The connection pool implementation present in this change helps + to mitigate these issues by reducing how much we connect and + disconnect database connections. We also solve the issue of + crashes under UnixODBC 2.3.1 by defaulting the maximum number of + connections to 1, returning us to the previous working behavior. + For users who may have a fixed version the maximum concurrent + connection limit can be increased helping with performance. + + The connection pool works by keeping a list of active connections. + If the connection limit has not been reached a new connection is + established. If the connection limit has been reached then the + request waits until a connection becomes available before + continuing. + + ASTERISK-26074 #close + ASTERISK-26054 #close + + Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff + +2016-05-30 10:58 +0000 [aab8bc5d31] gtjoseph + + * pjproject_bundled: Move to pjproject 2.5 + + Although all the patches we had against 2.4.5 were applied by Teluu, + a new bug was introduced preventing re-use of tcp and tls transports + This patch removes all the previous patches against 2.4.5, updates + the version to 2.5, and adds a new patch to correct the transport + re-use problem. + + Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068 + (cherry picked from commit e8abfdcdc5ce4d32d1fe281e75b13fd652f9e5f7) + +2016-05-18 07:54 +0000 [b9a28ccbd4] gtjoseph + + * udptl: Don't eat sequence numbers until OK is received + + Scenario: + Local fax -> Asterisk w/ firewall -> Provider -> Remote fax + + * Local fax starts rtp call to remote fax + * Remote fax starts t38 call back to local fax. + * Local fax sends t38 no-signal to Asterisk before sending an OK. + * udptl processes the frame and increments the expected sequence number. + * chan_sip drops the frame because the call isn't up so nothing goes out + the external interface to open the port for incoming packets. + * Local fax sends OK and Asterisk sends OK to the remote fax. + * Remote fax sends t38 packets which are dropped by the firewall. + * Local fax re-sends t38 no-signal with the same sequence number. + * udptl drops the frame because it thinks it's a dup. + * Still no outgoing packets to open the firewall. + * t38 negotiation fails. + + The patch drops frames t38 received before udptl sequence processing + when the call hasn't been answered yet. The second no-signal frame + is then seen as new and is relayed out the external interface which + opens the port and allows negotiation to continue. + + ASTERISK-26034 #close + + Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9 + +2016-05-17 11:14 +0000 [f85c77a9e1] gtjoseph + + * chan_sip: Prevent extra Session-Expires headers from being added + + When chan_sip does a re-INVITE to refresh a session and authentication + is required, the INVITE with the Authorization header containes a + second Session-Expires header without the ";refersher=" parameter. + This is causing some proxies to return a 400. Also, when Asterisk is + the uas and the refresher, it is including the Session-Expires and + Min-SE headers in OPTIONS messages which is not allowed per RFC4028. + + This patch (based on the reporter's) Checks to see if a Session-Expires + header is already in the message before adding another one. It also + checks that the method is INVITE or UPDATE. + + ASTERISK-26030 #close + + Change-Id: I58a7b07bab5a3177748d8a7034fb8ad8e11ce1d9 + +2016-05-07 14:39 +0000 [8bf050b853] gtjoseph + + * config_transport: Tell pjproject to allow all SSL/TLS protocols + + The default tls settings for pjproject only allow TLS 1, TLS 1.1 and TLS 1.2. + SSL is not allowed. So, even if you specify "sslv3" for a transport method, + it's silently ignored and one of the TLS protocols is used. This was a new + behavior of pjsip_tls_setting_default() in 2.4 (when tls.proto was added) that + we never caught. + + Now we need to set tls.proto = 0 after we call pjsip_tls_setting_default(). + This tells pjproject to set the socket protocol to match the method. + + ASTERISK-26004 #close + + Change-Id: Icfb55c1ebe921298dedb4b1a1d3bdc3ca41dd078 + +2016-05-05 11:37 +0000 [4fc2c98369] Kevin Harwell + + * res_pjsip_authenticator_digest: Don't use source port in nonce verification + + From the issue reporter: + "res_pjsip_outbound_authenticator_digest builds a nonce that is a hash of + the timestamp, the source address, the source port, a server UUID that is + calculated at startup, and the authentication realm. + + Rather than caching nonces that we create, we instead attempt to re-calculate + the nonce when receiving an incoming request with authentication. We then + compare the re-calculated nonce to the incoming nonce, and if they don't match, + then authentication has failed early. + + The problem is that it is possible, especially when using TCP, to receive two + requests from the same endpoint but have differing source ports for those + requests. Asterisk itself commonly will use different source ports for + outbound TCP requests." + + This patch removes the source port dependency when building the nonce. + + ASTERISK-25978 #close + + Change-Id: I871b5f4adce102df1c4988066283095ec509dffe + +2016-05-05 05:07 +0000 [4e7791d483] Joshua Colp + + * file: Ensure nativeformats remains valid for lifetime of use. + + It is possible for the nativeformats of a channel to change + throughout its lifetime. As a result a user of it needs to either + ensure the channel is locked when accessing the formats or keep + a reference to the nativeformats themselves. + + This change fixes the file playback support so it keeps a + reference to the nativeformats when accessing things. + + ASTERISK-25998 #close + + Change-Id: Ie45b65475e1481ddf05b874ee48f63e39fff8915 + +2016-05-03 07:55 +0000 [601602f44b] Joshua Colp + + * ChangeLog: Updated for certified/13.8-cert1-rc2 + +2016-05-03 07:55 +0000 [13461bb9a6] Joshua Colp + + * Release summaries: Add summaries for certified/13.8-cert1-rc2 + +2016-05-03 07:54 +0000 [cadb5c4e64] Joshua Colp + + * Release summaries: Remove previous versions + +2016-05-03 07:54 +0000 [d4d5548ef8] Joshua Colp + + * .version: Update for certified/13.8-cert1-rc2 + +2016-05-03 07:54 +0000 [a5bc40ae51] Joshua Colp + + * .lastclean: Update for certified/13.8-cert1-rc2 + +2016-05-03 07:54 +0000 [2b6df52c66] Joshua Colp + + * realtime: Add database scripts for certified/13.8-cert1-rc2 + +2016-04-15 11:59 +0000 [c4426f1035] Alexei Gradinari + + * res_pjsip: disable multi domain to improve realtime performace + + This patch added new global pjsip option 'disable_multi_domain'. + Disabling Multi Domain can improve Realtime performance by reducing + number of database requests. + + ASTERISK-25930 #close + + Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7 + +2016-04-26 05:48 +0000 [c69e0f1813] Joshua Colp + + * app_queue: Fix crash when unloading module. + + When unloading the app_queue module the members in each queue are + destroyed and as part of this they are removed from the pending + members container. Unfortunately a crash would occur as the container + was destroyed before the members were removed. + + This change tweaks ordering so the container destruction occurs + after the members are destroyed. + + ASTERISK-16115 + + Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b + +2016-04-21 14:23 +0000 [eebe8b3dd3] Kevin Harwell + + * app_queue: queue members can receive multiple calls + + It was possible for a queue member that is a member of at least 2 or more + queues to receive mulitiple calls at the same time. This happened because + of a race between when a member was being rung and when the device state + notified the other queue(s) member object of the state change. + + This patch makes it so when a queue member is being rung it gets added to + a global pool of queue members. If that same member is tried again, e.g. + from another queue, and it is found to already exist in the pending member + container then it will not ring that member. + + ASTERISK-16115 #close + + Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48 + +2016-04-22 17:53 +0000 [5cbd4b9799] gtjoseph + + * res_agi: Prevent run_agi from eating frames it shouldn't + + The run_agi function is eating control frames when it shouldn't be. This is + causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond + transfer. + + Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie + answers. + + Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE + and is left thinking he's connected to Bob. + + In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls + an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on + Charlie's channel. + + The fix was to accumulate deferrable frames in the "forever" loop instead of + dropping them, and re-queue them just before running the actual agi command + or exiting. + + ASTERISK-25951 #close + + Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645 + +2016-04-15 14:36 +0000 [bc51227ef8] Richard Mudgett + + * res_stasis: Handle re-enter stasis bridge with swap channel. + + We lose the fact that there is a swap channel if there is one. We + currently wind up rejoining the stasis bridge as a normal join after the + swap channel has already been kicked from the bridge. + + This patch preserves the swap channel so the AMI/ARI events can note that + the channel joining the bridge is swapping with another channel. Another + benefit to swaqpping in one operation is if there are any channels that + get lonely (MOH, bridge playback, and bridge record channels). The lonely + channels won't leave before the joining channel has a chance to come back + in under stasis if the swap channel is the only reason the lonely channels + are staying in the bridge. + + ASTERISK-25947 #close + Reported by: Richard Mudgett + + ASTERISK-24649 + Reported by: John Bigelow + + ASTERISK-24782 + Reported by: John Bigelow + + Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee + +2016-04-19 16:58 +0000 [8dd79720e6] Richard Mudgett + + * bridge: Hold off more than one imparting channel at a time. + + An earlier patch blocked the ast_bridge_impart() call until the channel + either entered the target bridge or it failed. Unfortuantely, if the + target bridge is stasis and the imprted channel is not a stasis channel, + stasis bounces the channel out of the bridge to come back into the bridge + as a proper stasis channel. When the channel is bounced out, that + released the block on ast_bridge_impart() to continue. If the impart was + a result of a transfer, then it became a race to see if the swap channel + would get hung up before the imparted channel could come back into the + stasis bridge. If the imparted channel won then everything is fine. If + the swap channel gets hung up first then the transfer will fail because + the swap channel is leaving the bridge. + + * Allow a chain of ast_bridge_impart()'s to happen before any are + unblocked to prevent the race condition described above. When the channel + finally joins the bridge or completely fails to join the bridge then the + ast_bridge_impart() instances are unblocked. + + ASTERISK-25947 + Reported by: Richard Mudgett + + ASTERISK-24649 + Reported by: John Bigelow + + ASTERISK-24782 + Reported by: John Bigelow + + Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1 + +2016-04-19 17:52 +0000 [2a2e754d15] gtjoseph + + * res_pjsip_callerid: Clear out display name if id->name is not valid + + When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning + the From header, then it overwrites the display name and uri from the channel's + connected.id. If the connected.id.name wasn't valid, create_new_id_hdr was + leaving the display name from the From header in the new RPID or PAI header. + On an attended transfer where the originator had a caller id number set but not + a display name, the re-INVITE to the final transferee had the number of the + originator but the display name of the transferer. + + Added a check to clear out the display name in the new header if + connected.id.name was invalid. + + ASTERISK-25942 #close + + Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b + +2016-04-19 13:02 +0000 [188ce34aff] Joshua Colp + + * app_talkdetect: Make the module core supported. + + This module is used as part of testsuite tests to confirm + stuff works. I'm accordingly marking it as core as it is + required by those tests. + + Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88 + +2016-04-19 13:00 +0000 [da80f40014] Joshua Colp + + * app_talkdetect: Enable for testsuite tests. + + Change-Id: I9acf2e2210f7a15cdd2c63c4c8dcb92de6b47d43 + +2016-04-18 12:12 +0000 [9f3ecf0a8d] Mark Michelson + + * PJSIP: Remove PJSIP parsing functions from uri length validation. + + The PJSIP parsing functions provide a nice concise way to check the + length of a hostname in a SIP URI. The problem is that in order to use + those parsing functions, it's required to use them from a thread that + has registered with PJLib. + + On startup, when parsing AOR configuration, the permanent URI handler + may not be run from a PJLib-registered thread. Specifically, this could + happen when Asterisk was started in daemon mode rather than + console-mode. If PJProject were compiled with assertions enabled, then + this would cause Asterisk to crash on startup. + + The solution presented here is to do our own parsing of the contact URI + in order to ensure that the hostname in the URI is not too long. The + parsing does not attempt to perform a full SIP URI parse/validation, + since the hostname in the URI is what is important. + + ASTERISK-25928 #close + Reported by Joshua Colp + + Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60 + +2016-04-18 17:00 +0000 [39b4742db1] Mark Michelson + + * res_pjsip_registrar: Fix bad memory-ness with user_agent. + + Recent changes to the PJSIP registrar resulted in tests failing due to + missing AOR_CONTACT_ADDED test events. The reason for this was that the + user_agent string had junk values in it, resulting in being unable to + generate the event. + + I'm going to be honest here, I have no idea why this was happening. Here + are the steps needed for the user_agent variable to get messed up: + * REGISTER is received + * First contact in the REGISTER results in a contact being removed + * Second contact in the REGISTER results in a contact being added + * The contact, AOR, expiration, and user agent all have to be passed as + format parameters to the creation of a string. Any subset of those + parameters would not be enough to cause the problem. + + Looking into what was happening, the thing that struck me as odd was + that the user_agent variable was meant to be set to the value of the + User-Agent SIP header in the incoming REGISTER. However, when removing a + contact, the user_agent variable would be set (via ast_strdupa inside a + loop) to the stored contact's user_agent. This means that the + user_agent's value would be incorrect when attempting to process further + contacts in the incoming REGISTER. + + The fix here is to use a different variable for the stored user agent + when removing a contact. Correcting the behavior to be correct also + means the memory usage is less weird, and the issue no longer occurs. + + ASTERISK-25929 #close + Reported by Joshua Colp + + Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08 + +2016-04-18 13:41 +0000 [4caa57f6b3] Joshua Colp + + * res_pjsip_transport_management: Allow unload to occur. + + At shutdown it is possible for modules to be unloaded that wouldn't + normally be unloaded. This allows the environment to be cleaned up. + + The res_pjsip_transport_management module did not have the unload + logic in it to clean itself up causing the res_pjsip module to not + get unloaded. As a result the res_pjsip monitor thread kept going + processing traffic and timers when it shouldn't. + + Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a + +2016-04-14 13:49 +0000 [0b35582bbb] Mark Michelson + + * transport management: Register thread with PJProject. + + The scheduler thread that kills idle TCP connections was not registering + with PJProject properly and causing assertions if PJProject was built in + debug mode. + + This change registers the thread with PJProject the first time that the + scheduler callback executes. + + AST-2016-005 + + Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283 + +2016-03-08 12:12 +0000 [9f8b803a29] Mark Michelson + + * res_pjsip_transport_management: Kill idle TCP connections. + + "Idle" here means that someone connects to us and does not send a SIP + request. PJProject will not automatically time out such connections, so + it's up to Asterisk to do it instead. + + When we receive an incoming TCP connection, we will start a timer + (equivalent to transaction timer D) waiting to receive an incoming + request. If we do not receive a request in that timeframe, then we will + shut down the TCP connection. + + ASTERISK-25796 #close + Reported by George Joseph + + AST-2016-005 + + Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6 + +2016-03-08 10:52 +0000 [a35d3eb73b] Mark Michelson + + * Rename res_pjsip_keepalive res_pjsip_transport_management + + ASTERISK-25796 + Reported by George Joseph + + AST-2016-005 + + Change-Id: Id322a05f927392293570599730050bc677d99433 + +2016-04-14 07:15 +0000 [3de37dee68] Mark Michelson + + * AST-2016-004: Fix crash on REGISTER with long URI. + + Due to some ignored return values, Asterisk could crash if processing an + incoming REGISTER whose contact URI was above a certain length. + + ASTERISK-25707 #close + Reported by George Joseph + + Patches: + 0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch + + AST-2016-004 + + Change-Id: I0ed3898fe7ab10121b76c8c79046692de3a1be55 + +2016-03-23 08:59 +0000 [e378c18815] gtjoseph + + * pjproject-bundled: Cleanups for reported issues + + PortAudio should no longer be required + PJSIP_MAX_PKT_LEN is now 6000 + Older autoconf issue fixed. (CentOS 6) + + Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd + (cherry picked from commit d963a3374991c64594cf196e90a5c74964c8ba7c) + +2016-04-06 11:02 +0000 [dd93204a84] Joshua Colp + + * ChangeLog: Updated for certified/13.8-cert1-rc1 + +2016-04-06 11:01 +0000 [6d29a919d4] Joshua Colp + + * Release summaries: Add summaries for certified/13.8-cert1-rc1 + +2016-04-06 10:27 +0000 [4fa3428247] Joshua Colp + + * Release summaries: Remove previous versions + +2016-04-06 10:27 +0000 [b418e14998] Joshua Colp + + * .version: Update for certified/13.8-cert1-rc1 + +2016-04-06 10:27 +0000 [69b6cf2368] Joshua Colp + + * .lastclean: Update for certified/13.8-cert1-rc1 + +2016-04-06 10:27 +0000 [847dc5c7d7] Joshua Colp + + * realtime: Add database scripts for certified/13.8-cert1-rc1 + +2016-04-06 09:20 +0000 [c23bf7c8df] Joshua Colp + + * ChangeLog: Updated for certified/13.8-cert1-rc1 + +2016-04-06 09:19 +0000 [4f94668022] Joshua Colp + + * Release summaries: Add summaries for certified/13.8-cert1-rc1 + +2016-04-06 08:47 +0000 [454daec0e1] Joshua Colp + + * Release summaries: Remove previous versions + +2016-04-06 08:47 +0000 [4ba2b5e92c] Joshua Colp + + * .version: Update for certified/13.8-cert1-rc1 + +2016-04-06 08:47 +0000 [e6f27ca09c] Joshua Colp + + * .lastclean: Update for certified/13.8-cert1-rc1 + +2016-04-06 08:47 +0000 [08dbdd5996] Joshua Colp + + * realtime: Add database scripts for certified/13.8-cert1-rc1 + +2016-04-06 08:26 +0000 [ec7a89771d] Joshua Colp + + * ChangeLog: Updated for certified/13.8-cert1-rc1 + +2016-04-06 08:25 +0000 [ffcb651205] Joshua Colp + + * Release summaries: Add summaries for certified/13.8-cert1-rc1 + +2016-04-06 07:52 +0000 [97499f717a] Joshua Colp + + * Release summaries: Remove previous versions + +2016-04-06 07:52 +0000 [99d52771b5] Joshua Colp + + * .version: Update for certified/13.8-cert1-rc1 + +2016-04-06 07:52 +0000 [eb9e193c65] Joshua Colp + + * .lastclean: Update for certified/13.8-cert1-rc1 + +2016-04-06 07:52 +0000 [8ec588b8b1] Joshua Colp + + * realtime: Add database scripts for certified/13.8-cert1-rc1 + +2016-04-05 14:23 +0000 [4b87a773dc] Mark Michelson + + * res_pjsip: Handle deferred SDP hold/unhold properly. + + Some SIP devices indicate hold/unhold using deferred SDP reinvites. In + other words, they provide no SDP in the reinvite. + + A typical transaction that starts hold might look something like this: + + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating sendrecv on streams. + * Device sends ACK with SDP indicating sendonly on streams. + + At this point, PJMedia's SDP negotiator saves Asterisk's local state as + being recvonly. + + Now, when the device attempts to unhold, it again uses a deferred SDP + reinvite, so we end up doing the following: + + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating recvonly on streams + * Device sends ACK with SDP indicating sendonly on streams + + The problem here is that Asterisk offered recvonly, and by RFC 3264's + rules, if an offer is recvonly, the answer has to be sendonly. The + result is that the device is not taken off hold. + + What is supposed to happen is that Asterisk should indicate sendrecv in + the 200 OK that it sends. This way, the device has the freedom to + indicate sendrecv if it wants the stream taken off hold, or it can + continue to respond with sendonly if the purpose of the reinvite was + something else (like a session timer refresher). + + The fix here is to alter the SDP negotiator's state when we receive a + reinvite with no SDP. If the negotiator's state is currently in the + recvonly or inactive state, then we alter our local state to be + sendrecv. This way, we allow the device to indicate the stream state as + desired. + + ASTERISK-25854 #close + Reported by Robert McGilvray + + Change-Id: I7615737276165eef3a593038413d936247dcc6ed + +2016-04-05 09:06 +0000 [c29e2e3fb7] Joshua Colp + + * .version: Update for certified/13.8 + + Change-Id: I37e5a8e36c2f4f9137f8f230c99220005424e514 + +2015-01-06 21:29 +0000 [3c796e694e] Matt Jordan + + * Disable extended support modules + + Change-Id: Ia2e359021b3eccecce20028098c5b6d1099c3f9e + +2016-03-28 18:10 +0000 [7b6c4decd3] Richard Mudgett + + * res_stasis: Fix crash on a hanging up channel. + + * Give the struct stasis_app_control ao2 object a ref to the channel held + in the object. Now the channel will still be around if a thread needs to + post a stasis message instead of crash because the topic was destroyed. + + * Moved stopping any lingering silence generator out of the struct + stasis_app_control destructor and made it a part of exiting the Stasis + application. Who knows which thread the destructor will be called under + so it cannot affect the channel's silence generator. Not only was the + channel unprotected when the silence generator was stopped, stasis may no + longer even control the channel. + + ASTERISK-25882 + + Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4 + +2016-03-29 14:39 +0000 [fad0410486] Mark Michelson + + * ChangeLog: Updated for 13.8.0 + +2016-03-29 14:39 +0000 [0f885f0076] Mark Michelson + + * Release summaries: Add summaries for 13.8.0 + +2016-03-29 14:34 +0000 [a1fa37aebd] Mark Michelson + + * Release summaries: Remove previous versions + +2016-03-29 14:34 +0000 [e7de5fd439] Mark Michelson + + * .version: Update for 13.8.0 + +2016-03-29 14:34 +0000 [8baf813848] Mark Michelson + + * .lastclean: Update for 13.8.0 + +2016-03-29 14:34 +0000 [42469df205] Mark Michelson + + * realtime: Add database scripts for 13.8.0 + +2016-03-22 13:32 +0000 [06f5ace1fa] Mark Michelson + + * ChangeLog: Updated for 13.8.0-rc1 + +2016-03-22 13:26 +0000 [a698424678] Mark Michelson + + * Release summaries: Add summaries for 13.8.0-rc1 + +2016-03-22 13:21 +0000 [e395a0b973] Mark Michelson + + * .version: Update for 13.8.0-rc1 + +2016-03-22 13:21 +0000 [38a86b2dbf] Mark Michelson + + * .lastclean: Update for 13.8.0-rc1 + +2016-03-22 13:21 +0000 [e0c8c8bf4a] Mark Michelson + + * realtime: Add database scripts for 13.8.0-rc1 + +2016-03-18 14:31 +0000 [6a40520fe9] Kevin Harwell + + * chan_pjsip: ref leak when checking direct_media_glare + + Fix the reference leak introduced in the following commit: + + 9444ddadf8525d1ce66a1faf1db97f9f6c265ca4 + + ASTERISK-25849 + + Change-Id: I5cfefd5ee6c1c3a1715c050330aaa10e4d2a5e85 +2016-03-16 12:37 +0000 [9444ddadf8] Kevin Harwell + + * chan_pjsip: transfers with direct media reinvite has wrong address/port + + During a transfer involving direct media a race occurs between when the + transferer channel is swapped out, initiating rtp changes/updates, and the + subsequent reinvites. + + When Alice, after speaking with Charlie (Bob is on hold), connects Bob and + Charlie invites are sent to each in order to establish the call between them. + Bob is taken off hold and Charlie is told to have his media flow through + Asterisk. However, if before those invites go out the bridge updates Bob's + and/or Charlie's rtp information with direct media data (i.e. address, port) + then the invite(s) will contain the remote data in the SDP instead of the + Asterisk data. + + The race occurs in the native bridge glue code when updating the peer. The + direct_media_address can get set twice before sending out the first invite + during call connection. This can happen because the checking/setting of the + direct_media_address happened in one thread while the sending of the invite(s) + happened in another thread. + + This fix removes the race condition by moving the checking/setting of the + direct_media_address to be in the same thread as the sending of the invites(s). + This serializes the checking/setting and sending so they can no longer happen + out of order. + + ASTERISK-25849 #close + + Change-Id: Idfea590175e74f401929a601dba0c91ca1a7f873 + +2015-10-19 07:11 +0000 [88240f98d9] Rodrigo Ramírez Norambuena + + * install_prereq: Update repositories before install on Debian systems + + When to install packages the indexed local is more old of the + version of software on the repository they have been upgraded by security + update then get the package will give 404 not found. + + The patch prevent by update local index to repository for aptitude before + install. + + ASTERISK-25495 #close + + Reporte by: Rodrigo Ramírez Norambuena + + Change-Id: I645959e553aac542805ced394cac2dca964051fa + (cherry picked from commit 88f3dbaec9509bfba8bc1de7799aa0dc65304bb5) + +2015-06-03 20:12 +0000 [efcf9a96db] Rodrigo Ramírez Norambuena + + * install_prereq: Check if is installed aptitude otherwise to install. + + If in Debian or system based, dont have aptitude installed the script do + nothing. This patch checked if aptitude installed, if not installed. + + Also, if execute script with all packages installed yet, the script not show + nothing and return exit 1 because the command 'grep' get nothing from pipe from + 'awk'. + + ASTERISK-25113 #close + Reported By: Rodrigo Ramírez Norambuena + + Change-Id: Iebdff55805d3917166e5e08e0a1e2176f36ff27f + (cherry picked from commit 6737ded0581a9e1256bdfe30c1d747e7ca93f8b3) + +2016-03-03 04:43 +0000 [2b1b8e382a] Sergio Medina Toledo + + * res_pjsip_refer.c: Fix seg fault in process of Refer-to header. + + The "Refer-to" header of an incoming REFER request is parsed by + pjsip_parse_uri(). That function requires the URI parameter to be NULL + terminated. Unfortunately, the previous code added the NULL terminator by + overwriting memory that may not be safe. The overwritten memory results + could be benign, memory corruption, or a segmentation fault. Now the URI + is NULL terminated safely by copying the URI to a new chunk of memory with + the correct size to be NULL terminated. + + ASTERISK-25814 #close + + Change-Id: I32565496684a5a49c3278fce06474b8c94b37342 + +2016-03-11 12:22 +0000 [de04308ae4] Richard Mudgett + + * chan_sip.c: Fix mwi resub deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 #close + + Change-Id: I96d429c57a48861fd8bde63dd93db4e92dc3adb6 + +2016-03-10 17:01 +0000 [5f6627a8a4] Richard Mudgett + + * chan_sip.c: Fix registration timeout and expire deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I2e40de89efc8ae6e8850771d089ca44bc604b508 + +2016-03-10 12:17 +0000 [32bd7a64f9] Richard Mudgett + + * chan_sip.c: Fix t38id deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: If595e4456cd059d7171880c7f354e844c21b5f5f + +2016-03-09 16:34 +0000 [43556b800b] Richard Mudgett + + * chan_sip.c: Fix reinviteid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I9c11b9d597468f63916c99e1dabff9f4a46f84c1 + +2016-03-09 16:32 +0000 [38c1cdab2c] Richard Mudgett + + * chan_sip.c: Fix packet retransid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + * Fix retrans_pkt() to call check_pendings() with both the owner channel + and the private objects locked as required. + + * Refactor dialog retransmission packet list to safely remove packet + nodes. The list nodes are now ao2 objects. The list has a ref and the + scheduled entry has a ref. + + ASTERISK-25023 + + Change-Id: I50926d81be53f4cd3d572a3292cd25f563f59641 + +2016-03-09 16:26 +0000 [e4ad55c888] Richard Mudgett + + * chan_sip.c: Fix waitid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + * Made always run check_pendings() under the scheduler thread so scheduler + ids can be checked safely. + + ASTERISK-25023 + + Change-Id: Ia834d6edd5bdb47c163e4ecf884428a4a8b17d52 + +2016-03-08 15:08 +0000 [98d5669c28] Richard Mudgett + + * chan_sip.c: Fix session timers deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I6d65269151ba95e0d8fe4e9e611881cde2ab4900 + +2016-03-07 13:21 +0000 [9cb8f73226] Richard Mudgett + + * chan_sip.c: Fix autokillid deadlock potential. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + * Fix clearing autokillid in __sip_autodestruct() even though we could + reschedule. + + ASTERISK-25023 + + Change-Id: I450580dbf26e2e3952ee6628c735b001565c368f + +2016-03-07 18:28 +0000 [c5c7f48a15] Richard Mudgett + + * chan_sip.c: Fix provisional_keepalive_sched_id deadlock. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Stopping a scheduled event can result in a deadlock if the scheduled event + is running when you try to stop the event. If you hold a lock needed by + the scheduled event while trying to stop the scheduled event then a + deadlock can happen. The general strategy for resolving the deadlock + potential is to push the actual starting and stopping of the scheduled + events off onto the scheduler/do_monitor() thread by scheduling an + immediate one shot scheduled event. Some restructuring may be needed + because the code may assume that the start/stop of the scheduled events is + immediate. + + ASTERISK-25023 + + Change-Id: I98a694fd42bc81436c83aa92de03226e6e4e3f48 + +2016-03-09 11:22 +0000 [f959d84dfd] Richard Mudgett + + * chan_sip.c: Adjust how dialog_unlink_all() stops scheduled events. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + * Make dialog_unlink_all() unschedule all items at once in the sched + thread. + + ASTERISK-25023 + + Change-Id: I7743072fb228836e8228b72f6dc46c8cc50b3fb4 + +2016-03-10 21:54 +0000 [5f3225ddcc] Richard Mudgett + + * chan_sip.c: Clear scheduled immediate events on unload. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + The reordering of chan_sip's shutdown is to handle any immediate events + that get put onto the scheduler so resources aren't leaked. The typical + immediate events at this time are going to be concerned with stopping + other scheduled events. + + ASTERISK-25023 + + Change-Id: I3f6540717634f6f2e84d8531a054976f2bbb9d20 + +2016-03-15 14:51 +0000 [7a74971771] Richard Mudgett + + * sip/dialplan_functions.c: Fix /channels/chan_sip/test_sip_rtpqos crash. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + Delaying destruction of the chan_sip sip_pvt structures caused the + /channels/chan_sip/test_sip_rtpqos unit test to crash. That test + registers a special test ast_rtp_engine with the rtp engine module. When + the unit test completes it cleans up by unregistering the test + ast_rtp_engine and exits. Since the delayed destruction of the sip_pvt + happens after the unit test returns, the destructor tries to call the rtp + engine destroy callback of the test ast_rtp_engine auto variable which no + longer exists on the stack. + + * Change the test ast_rtp_engine auto variable to a static variable. Now + the variable can still exist after the unit test exits so the delayed + sip_pvt destruction can complete successfully. + + ASTERISK-25023 + + Change-Id: I61e34a12d425189ef7e96fc69ae14993f82f3f13 + +2016-03-15 13:31 +0000 [d2c09ed73b] Andrew Nagy + + * app_stasis: Don't hang up if app is not registered + + This prevents pbx_core from hanging up the channel if the app isn't + registered. + + ASTERISK-25846 #close + + Change-Id: I63216a61f30706d5362bc0906b50b6f0544aebce +2016-03-07 15:50 +0000 [b2d2906445] Richard Mudgett + + * sched.c: Ensure oldest expiring entry runs first. + + This patch is part of a series to resolve deadlocks in chan_sip.c. + + * Updated sched unit test to check new behavior. + + ASTERISK-25023 + + Change-Id: Ib69437327b3cda5e14c4238d9ff91b2531b34ef3 + +2016-03-04 18:25 +0000 [9ae21b510f] Richard Mudgett + + * chan_sip.c: Made sip_reinvite_retry() call sip_pvt_lock_full(). + + Change-Id: I90f04208a089f95488a2460185a8dbc3f6acca12 + +2016-03-07 18:56 +0000 [56bcb97a3c] Richard Mudgett + + * chan_sip.c: Simplify sip_pvt destructor call levels. + + Remove destructor calling destroy_it calling really_destroy_it + for no benefit. Just make the destructor the really_destroy_it + function. + + Change-Id: Idea0d47b27dd74f2488db75bcc7f353d8fdc614a + +2016-03-14 08:59 +0000 [677a65fcbb] Joshua Colp + + * build: Add configure check for proto field of PJSIP TLS transport setting. + + Older versions of PJSIP do not have the proto field on the TLS transport + setting structure. This change adds a configure check so even if it is + not present we will still be able to build. + + Change-Id: Ibf3f47befb91ed1b8194bf63888baa6fee05aba9 + +2016-03-12 16:02 +0000 [32f0a3d52a] gtjoseph + + * build_system: Split COMPILE_DOUBLE from DONT_OPTIMIZE + + I can't ever recall actually needing the intermediate files or the checking + that a double compile produces. What I CAN remember is every DONT_OPTIMIZE + build needing 3 invocations of gcc instead of 1 just to do the checks and + produce those intermediate files. + + Having said that, Richard pointed out that the reason for the double compile + was that there were cases in the past where a submitted patch failed to compile + because the submitter never tried it with the optimizations turned on. + + To get the best of both worlds, COMPILE_DOUBLE has been split into its own + option. If DONT_OPTIMIZE is turned on, COMPILE_DOUBLE will also be selected + BUT you can then turn it off if all you need are the debugging symbols. This + way you have to make an informed decision about disabling COMPILE_DOUBLE. + + To allow COMPILE_DOUBLE to be both auto-selected and turned off, a new feature + was added to menuselect. The element can now contain an "autoselect" + attribute which will turn the used member on but not create a hard dependency. + The cflags.xml implementation for COMPILE_DOUBLE looks like this... + + + COMPILE_DOUBLE + core + + + Change-Id: I24b0a4d0872acef00ed89b3c527a713ee4c2ccd4 - * DNS: Create a system-level DNS resolver +2016-03-11 16:03 +0000 [336cae73cc] Walter Doekes - Prior to this patch, the DNS core present in master had no default system-level - resolver implementation. Therefore, it was not possible for the DNS core to - perform resolutions unless the libunbound library was installed and the - res_resolver_unbound module was loaded. + * app_chanspy: Fix occasional deadlock with ChanSpy and Local channels. - This patch introduces a system-level DNS resolver implementation that will - register itself with the lowest consideration priority available (to ensure - that it is to be used only as a last resort). The resolver relies on low-level - DNS search functions to perform a rudimentary DNS search based on a provided - query and then supplies the search results to the DNS core. + Channel masquerading had a conflict with autochannel locking. - ASTERISK-25146 #close - Reported By: Joshua Colp + When locking autochannel->channel, the channel is fetched from the + autochannel and then locked. During the fetch, the autochannel -- which + has no locks itself -- can be modified by someone who owns the channel + lock. That means that the value of autochan->channel cannot be trusted + until you hold the lock. - Change-Id: I3b36ea17b889a98df4f8d80d50bb7ee175afa077 + In practice, this caused problems with Local channels getting + masqueraded away while the ChanSpy attempted to get info from that + channel. The old channel which was about to get removed got locked, but + the new (replaced) channel got unlocked (no-op). Because the replaced + channel was now locked (and would never get unlocked), it couldn't get + removed from the channel list in a timely manner, and would now cause + deadlocks when iterating over the channel list. -2015-07-01 07:55 +0000 [5717340ab3] Joshua Colp + This change checks the autochannel after locking the channel for changes + to the autochannel. If the channel had been changed, the lock is + reobtained on the new channel. - * res_rtp_asterisk: Prevent simultaneous access to DTLS SSL context. + In theory it seems possible that after this fix, the lock attempt on the + old (wrong) channel can be on an already destroyed lock, maybe causing + a crash. But that hasn't been observed in the wild and is harder induce + than the current deadlock. - This change moves logic for setting up the DTLS SSL contexts to - when the SDP is done being processed instead of when ICE negotiation - completes. It also stops handshakes from being initiated when we - are acting as a server. + Thanks go to Filip Frank for suggesting a fix similar to this and + especially to IRC user hexanol for pointing out why this deadlock was + possible and testing this fix. And to Richard for catching my rookie + while loop mistake ;) - Manipulating the SSL context when ICE negotiation has completed - is problematic as the SSL context is not protected and if acting - as a client the remote side may have started DTLS negotiation - already. + ASTERISK-25321 #close - The retransmission timeout timer code has also been split up - and simplified some. Both RTP and RTCP now have their own timers - and the points at which the timer is stopped and started is now - more specific. When a packet is sent the timer is started. When - a response is received but before it is processed the timer is - stopped. This provides a guarantee that the timeout is not - occurring while the response is processed. + Change-Id: I293ae0014e531cd0e675c3f02d1d118a98683def - ASTERISK-22805 #close - ASTERISK-24550 #close - ASTERISK-24651 #close - ASTERISK-24832 #close - ASTERISK-25103 #close - ASTERISK-25127 #close +2016-03-07 21:34 +0000 [875d5e9872] gtjoseph - Change-Id: Ib75ea2546f29d6efc3d2d37c58df6986c7bd9b91 + * pjproject_bundled: Remove --with-external-pa from configure options. -2015-06-26 18:48 +0000 [189841ddb7] Richard Mudgett + Not sure why it was there in the first place as we already specify + --disable-sound. - * res_pjsip_mwi.c: Fix MWI subscription memory corruption crash. + Change-Id: Ia80a40e8b1e1acc287955ab11ba1fbd0c7d4cff9 - MWI subscriptions can crash or corrupt memory when using the subscription - datastore to access the MWI subscription object because the datastore is - not holding a reference to the object. +2016-03-06 14:38 +0000 [530cff5f5f] gtjoseph - * Give the subscription datastore a ref to the MWI subscription object. - It is unfortunate that the ref causes a circular ref chain that must be - explicitly broken to allow the memory to get released. The loop is broken - when the subscription is shutdown and if the subscription setup fails. + * res_pjsip: Strip spaces from items parsed from comma-separated lists - ASTERISK-25168 #close - Reported by: Carl Fortin + Configurations like "aors = a, b, c" were either ignoring everything after "a" + or trying to look up " b". Same for mailboxes, ciphers, contacts and a few + others. - Change-Id: Ice4fa823f138ff10a6c74d280699c41a82836d4f + To fix, all the strsep(©, ",") calls have been wrapped in ast_strip. To + facilitate this, ast_strip, ast_skip_blanks and ast_skip_nonblanks were + updated to handle null pointers. -2015-07-02 14:51 +0000 [7cd99be534] Richard Mudgett + In some cases, an ast_strlen_zero() test was added to skip consecutive commas. - * PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error. + There was also an attempt to ast_free an ast_strdupa'd string in + ast_sip_for_each_aor which was causing a SEGV. I removed it. - When res_pjsip body generator modules were generating XML or XPIDF - response bodies, there was a chance that the generated body would be the - exact size of the supplied buffer. Adding the nul string terminator would - then write beyond the end of the buffer and potentially corrupt memory. + Although this issue was reported for realtime, the issue was in the res_pjsip + modules so all config mechanisms were affected. - * Fix MALLOC_DEBUG high fence violations caused by adding a nul string - terminator on the end of a buffer for XML or XPIDF response bodies. + ASTERISK-25829 #close + Reported-by: Mateusz Kowalski - * Made calls to pj_xml_print() safer if the XML prolog is requested. Due - to a bug in pjproject, the return value could be -1 _or_ - AST_PJSIP_XML_PROLOG_LEN if the supplied buffer is not large enough. + Change-Id: I0b22a2cf22a7c1c50d4ecacbfa540155bec0e7a2 - * Updated the doxygen comment of AST_PJSIP_XML_PROLOG_LEN to describe the - return value of pj_xml_print() when the supplied buffer is not large - enough. +2016-03-04 20:37 +0000 [3c8076a83b] gtjoseph - ASTERISK-25168 - Reported by: Carl Fortin + * install_prereq: Add packages for bundled pjproject - Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de + RedHat/CentOS needs python-devel + Debian/Ubuntu needs automake, libsrtp-dev and python-dev -2015-06-26 10:36 +0000 [792ed7ce93] Richard Mudgett + Ubuntu also needed libncurses5-dev for cmenuselect so while not + needed for pjproject, I adedd it anyway. - * PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences. + Change-Id: Idf5fa16e2d87c687439621507e122cb9461d7089 - When a caller calls a FAX number and then hangs up right after the call is - answered then the T.38 re-INVITE automatic reject timer may still be - running after the channel goes away. +2016-02-24 17:25 +0000 [27f32cd0a6] gtjoseph - * Added session NULL channel checks on the code paths that get executed by - t38_automatic_reject() to prevent a crash when the T.38 re-INVITE - automatic reject timer expires. + * res_pjsip_caller_id: Anonymize 'From' when caller id presentation is prohibited - ASTERISK-25168 - Reported by: Carl Fortin + Per RFC3325, the 'From' header is now anonymized on outgoing calls when + caller id presentation is prohibited. - Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403 + TID = trust_id_outbound + PRO = Set(CALLERID(pres)=prohib) + USR = endpoint/from_user + DOM = endpoint/from_domain + PAI = YES(privacy=off), NO(not sent), PRI(privacy=full) (assumes send_pai=yes) -2015-06-30 11:17 +0000 [030e8339dd] Richard Mudgett + Conditions |Result + --------------------|---------------------------------------------------- + TID PRO USR DOM |PAI FROM + --------------------|---------------------------------------------------- + Y Y abc def.ghi |PRI "Anonymous" + Y Y abc |PRI "Anonymous" + Y Y def.ghi |PRI "Anonymous" + Y Y |PRI "Anonymous" - * res_pjsip_mwi.c: Use safer loop coding in mwi_subscription_mailboxes_str(). + Y N abc def.ghi |YES + Y N abc |YES > + Y N def.ghi |YES "Caller Name" @def.ghi> + Y N |YES "Caller Name" @> - Change-Id: I6f39d809a6d1b47b35bb32b298f5a12f35d6f907 + N Y abc def.ghi |NO "Anonymous" + N Y abc |NO "Anonymous" + N Y def.ghi |NO "Anonymous" + N Y |NO "Anonymous" -2015-06-30 11:14 +0000 [453d7b8d69] Richard Mudgett + N N abc def.ghi |YES + N N abc |YES > + N N def.ghi |YES "Caller Name" @def.ghi> + N N |YES "Caller Name" @> + + ASTERISK-25791 #close + Reported-by: Anthony Messina + + Change-Id: I2c82a5ca1413c2c00fb62ea95b0ae8e97af54dc9 + +2016-03-03 17:34 +0000 [7cf7b0a4f9] gtjoseph + + * third_party/Makefile.rules: Replace unsupported != operator with $(shell ...) + + Apparently the != operator is fairly new so I've replaced it with + the old $(shell ...) syntax. + + Change-Id: I16b2e1878a4f91e7e9740abd427f9639f933c479 + Reported-by: Richard Mudgett +2016-01-23 15:50 +0000 [53f57001f2] gtjoseph + + * loader: Retry dlopen when loading fails + + Although we use the RTLD_LAZY flag when calling dlopen + the first time on a module, this only defers resolution + for function calls. Pointer references to functions are + determined at link time so dlopen expects them to be there. + Since we don't cross-module link, pointers to functions + in other modules won't be available and dlopen will fail. + + Doing a "hardened" build also causes problems because it + typically sets "-z now" on the ld command line which + overrides RTLD_LAZY at run time. + + If the failing module isn't a GLOBAL_SYMBOLS module, then + dlopen will be called again after all the GLOBAL_SYMBOLS + modules have been loaded and they'll eventually resolve. + + If the calling module IS a GLOBAL_SYMBOLS module itself + and a third module depends on it, then there's an issue + because the second time through the dlopen loop, + GLOBAL_SYMBOLS modules aren't given any special treatment + and since the order in which dlopen is called isn't + deterministic, the dependent may again be tried before the + module it needs is loaded. + + Simple solution: Save modules that fail load_resource + because of a dlopen error in a list and retry them + immediately after the first pass. Keep retrying until + the failed list is empty or we reach a #defined max + retries. Error messages are suppressed until the final + pass which also gets rid of those confusing error messages + about module failures that are later corrected. + + Change-Id: Iddae1d97cd2f00b94e61662447432765755f64bb + +2016-03-01 16:18 +0000 [40d9e9e238] Kevin Harwell + + * bridge.c: Crash during attended transfer when missing a local channel half + + It's possible for the transferer channel to get hung up early during the + attended transfer process. For instance, a phone may send a "bye" immediately + upon receiving a sip notify that contains a sip frag 100 (I'm looking at you + Jitsi). When this occurs a race begins between the transferer being hung up + and completion of the transfer code. + + If the channel hangs up too early during a transfer involving stasis bridging + for instance, then when the created local channel goes to look up its swap + channel (and associated datastore) it can't find it (since it is no longer in + the bridge) thus it fails to enter the stasis application. Consequently, the + created local channel(s) hang up as well. If the timing is just right then the + bridging code attempts to add the message link with missing local channel(s). + Hence the crash. + + Unfortunately, there is no great way to solve the problem of the unexpected + "bye". While we can't guarantee we won't receive an early hangup, and in this + case still fail to enter the stasis application, we can make it so asterisk + does not crash. + + This patch does just that by locking the local channel structure, checking + that the local channel's peer has not been lost, and then continuing. This + keeps the local channel's peer from being ripped out from underneath it by + the local/unreal hangup code while attempting to set the stasis message link. + + ASTERISK-25771 + + Change-Id: Ie6d6061e34c7c95f07116fffac9a09e5d225c880 + +2016-03-01 18:08 +0000 [ff3da61c35] Kevin Harwell + + * res_pjsip_refer.c: Delay sending the initial SIP Notify with frag 100 + + During the transfer process, some phones (okay it was the Jitsi softphone, + but maybe others are out there) send a "bye" immediately after receiving a + SIP Notify. When a "bye" is received early for some types of transfers the + transferer channel may no longer be available during late stage transfer + processing. + + For instance, during an attended transfer involving stasis bridging at one + point the created local channel looks for an associated swap channel in + order to retrieve the stasis application name. If the transferer has hung + up then the local channel will fail to find it. The local channel then has + no way to know which stasis app to enter, so it fails and hangs up as well. + Thus the transfer does not complete as expected. + + This patch delays the sending of the initial notify in order to give the + transfer process enough time to gather the necessary data for a successful + transfer. + + ASTERISK-25771 + + Change-Id: I09cfc9a5d6ed4c007bc70625e0972b470393bf16 + +2016-03-03 08:26 +0000 [26b8f2692e] Joshua Colp + + * res_pjsip_dtmf_info: NULL terminate the message body. + + PJSIP does not ensure that when printing the message body the + buffer will be NULL terminated. This is problematic when searching + for the signal and duration values of the DTMF. + + This change ensures the buffer is always NULL terminated. + + Change-Id: I52653a1a60c93092d06af31a27408d569cc98968 + +2016-03-01 20:03 +0000 [86d6e44cc1] gtjoseph + + * alembic: Fix downgrade and tweak for sqlite + + Downgrade had a few issues. First there was an errant 'update' statement in + add_auto_dtmf_mode that looks like it was a copy/paste error. Second, we + weren't cleaning up the ENUMs so subsequent upgrades on postgres failed + because the types already existed. + + For sqlite... sqlite doesn't support ALTER or DROP COLUMN directly. + Fortunately alembic batch_operations takes care of this for us if we + use it so the alter and drops were converted to use batch operations. + + Here's an example downgrade: + + with op.batch_alter_table('ps_endpoints') as batch_op: + batch_op.drop_column('tos_audio') + batch_op.drop_column('tos_video') + batch_op.add_column(sa.Column('tos_audio', yesno_values)) + batch_op.add_column(sa.Column('tos_video', yesno_values)) + batch_op.drop_column('cos_audio') + batch_op.drop_column('cos_video') + batch_op.add_column(sa.Column('cos_audio', yesno_values)) + batch_op.add_column(sa.Column('cos_video', yesno_values)) + + with op.batch_alter_table('ps_transports') as batch_op: + batch_op.drop_column('tos') + batch_op.add_column(sa.Column('tos', yesno_values)) + # Can't cast integers to YESNO_VALUES, so dropping and adding is required + batch_op.drop_column('cos') + batch_op.add_column(sa.Column('cos', yesno_values)) + + Upgrades from base to head and downgrades from head to base were tested + repeatedly for postgresql, mysql/mariadb, and sqlite3. + + Change-Id: I862b0739eb3fd45ec3412dcc13c2340e1b7baef8 + +2016-03-02 15:55 +0000 [6f0d7ce9db] gtjoseph + + * config_transport: Fix objects returned by ast_sip_get_transport_states + + ast_sip_get_transport_states was returning a container of internal_state + objects instead of ast_sip_transport_state objects. This was causing + transport lookups to fail, most noticably in res_pjsip_nat, which + couldn't find the correct external addresses. This was causing contacts + to go out with internal ip addresses. + + ASTERISK-25830 #close + Reported-by: Sean Bright + + Change-Id: I1aee6a2fd46c42e8dd0af72498d17de459ac750e + +2016-03-02 11:17 +0000 [1ea7a5a774] Scott Griepentrog + + * CHAOS: cleanup possible null vars on msg alloc failure + + In message.c, if msg_alloc fails to init the string field, + vars may be null, so use a null tolerant cleanup. + + In res_pjsip_messaging.c, if msg_data_create fails, mdata + will be null, so use a null tolerant cleanup. + + ASTERISK-25323 + + Change-Id: Ic2d55c2c3750d5616e2a05ea92a19c717507ff56 + +2016-03-02 09:34 +0000 [3c37c7071f] Scott Griepentrog + + * CHAOS: prevent crash on failed strdup + + This patch avoids crashing on a null pointer + if the strdup() allocation fails. + + ASTERISK-25323 + + Change-Id: I3f67434820ba53b53663efd6cbb42749f4f6c0f5 + +2016-02-29 18:11 +0000 [9633be9d25] Richard Mudgett + + * func_callerid.c: Update REDIRECTING reason documentation. + + Change-Id: I6e8d39b0711110a4bceafa652e58b30465e28386 + +2016-02-26 18:57 +0000 [4165ea7778] Richard Mudgett + + * SIP diversion: Fix REDIRECTING(reason) value inconsistencies. + + Previous chan_sip behavior: + + Before this patch chan_sip would always strip any quotes from an incoming + reason and pass that value up as the REDIRECTING(reason). For an outgoing + reason value, chan_sip would check the value against known values and + quote any it didn't recognize. Incoming 480 response message reason text + was just assigned to the REDIRECTING(reason). + + Previous chan_pjsip behavior: + + Before this patch chan_pjsip would always pass the incoming reason value + up as the REDIRECTING(reason). For an outgoing reason value, chan_pjsip + would send the reason value as passed down. + + With this patch: + + 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 silly and 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. + + * Added missing malloc() NULL return check in res_pjsip_diversion.c + set_redirecting_reason(). + + * Fixed potential read from a stale pointer in res_pjsip_diversion.c + add_diversion_header(). The reason string needed to be copied into the + tdata memory pool to ensure that the string would always be available. + Otherwise, if the reason string returned by reason_code_to_str() was a + user's reason string then the string could be freed later by another + thread. + + Change-Id: Ifba83d23a195a9f64d55b9c681d2e62476b68a87 + +2016-02-26 18:54 +0000 [41f4af4ce5] Richard Mudgett + + * res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason. + + Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd + +2016-02-29 20:41 +0000 [4c5998ff55] Richard Mudgett + + * res_pjsip_send_to_voicemail.c: Fix off-nominal double channel unref. + + * Fix double unref of other_party channel in off nominal path. + + * This is unlikely to be a real problem. However, for safety, + in handle_incoming_request() keep the datastore ref with the + other_party channel ref until we are finished with the other_party + channel. + + Change-Id: I78f22547bf0bb99fb20814ceab75952bd857f821 + +2016-01-18 21:54 +0000 [b59956a875] gtjoseph + + * build-system: Allow building with static pjproject + + Background here: + http://lists.digium.com/pipermail/asterisk-dev/2016-January/075266.html + + From CHANGES: + * 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. + + Building: + + All you have to do is include the --with-pjproject-bundled option on + the ./configure command line (and remove any existing --with-pjproject + option if specified). Everything else is automatic. + + Behind the scenes: + + The top-level Makefile was modified to include 'third-party' in the + list of MOD_SUBDIRS. + + The third-party directory was created to contain any third party + packages that may be needed in the future. Its Makefile automatically + iterates over any subdirectories passing on targets. + + The third-party/pjproject directory was created to house the pjproject + source distribution. Its Makefile contains targets to download, patch + configure, generate dependencies, compile libs, apps and python bindings, + sanitized build.mak and generate a symbols list. + + When bootstrap.sh is run, it automatically includes the configure.m4 + file in third-party/pjproject. This file has a macro to download and + conifgure pjproject and get and set PJPROJECT_INCLUDE, PJPROJECT_DIR + and PJPROJECT_BUNDLED. It also tests for the capabilities like + PJ_TRANSACTION_GRP_LOCK by parsing preprocessor output as opposed to + trying to compile. Of course, bootstrap.sh is only run once and the + configure file is incldued in the patch. + + When configure is run with the new options, the macro in configure.m4 + triggers the download, patch, conifgure and tests. No compilation is + performed at this time. The downloaded tarball is cached in /tmp so + it doesn't get downloaded again on a distclean. + + When make is run in the top-level Asterisk source directory, it will + automatically descend all the subdirectories in third_party just as it + does for addons, apps, etc. The top-level Makefile makes sure that + the 'third-party' is built before 'main' so that dependencies from the + other directories are built first. + + When main does build, a new shared library (libasteriskpj) is created that + links statically to the pjproject .a files and exports all their symbols. + The asterisk binary links to that, just as it does with libasteriskssl. + + When Asterisk is installed, the pjsua and pjsystest apps, and the pjproject + python bindings are installed in ASTDATADIR/third-party/pjproject. This + will facilitate testing, including running the testsuite which will be + updated to check that directory for the pjsua module ahead of the system + python library. + + Modules should continue to depend on pjproject if they use pjproject APIs + directly. They should not care about the implementation. No changes to any + res_pjsip modules were made. - * res_pjsip_mwi.c: Eliminate a simple RAII_VAR. + Change-Id: Ia7a60c28c2e9ba9537c5570f933c1ebcb20a3103 - Change-Id: Ib1843f81e826a6c760c424c88eb70c350d9d61da +2016-02-22 16:59 +0000 [18a323e542] Richard Mudgett -2015-06-30 11:11 +0000 [786c6d42ef] Richard Mudgett + * chan_sip.c: Fix T.38 issues caused by leaving a bridge. - * res_pjsip_mwi.c: Fix mid-line log message line breaks. + chan_sip could not handle AST_T38_TERMINATED frames being sent to it when + the channel left the bridge. The action resulted in overlapping outgoing + reINVITEs. The testsuite tests/fax/sip/directmedia_reinvite_t38 was not + happy. - * Add create_mwi_subscriptions_for_endpoint() doxygen comment. + * Force T.38 to be remembered as locally bridged. Now when the channel + leaves the native RTP bridge after T.38, the channel remembers that it has + already reINVITEed the media back to Asterisk. It just needs to terminate + T.38 when the AST_T38_TERMINATED arrives. - Change-Id: I3c3f921f4ec749fb65b62d2f6fa0d4d1888b94e2 + * Prevent redundant AST_T38_TERMINATED from causing problems. Redundant + AST_T38_TERMINATED frames could cause overlapping outgoing reINVITEs if + they happen before the T.38 state changes to disabled. Now the T.38 state + is set to disabled before the reINVITE is sent. -2015-06-26 16:10 +0000 [1b91094edd] Richard Mudgett + ASTERISK-25582 #close - * res_pjsip_t38.c: Fix always false if test. + Change-Id: I53f5c6ce7d90b3f322a942af1a9bcab6d967b7ce - Calling t38_change_state() sets the t38 state so it makes little sense to - then check the state right after the call for something else. +2016-02-18 18:27 +0000 [263a39f2cc] Richard Mudgett - * Made the code in t38_interpret_parameters() reject or exit T.38 mode as - intended but not implemented. + * res_pjsip_t38.c: Back out part of an earlier fix attempt. - Change-Id: Ib281263a6ed44da9448132c4e6df1e183b8a3df2 + This backs out item 4 of the 4875e5ac32f5ccad51add6a4216947bfb385245d + commit. Item 4 added the t38_bye_supplement. Unfortunately, the frame + that it puts into the bridge may or may not be processed by the time the + bridged peer is kicked out of the bridge. If it is processed then all is + well. However, if it is not processed then that channel is stuck in fax + mode until it hangs up or maybe if it joins another bridge for T.38 + faxing. -2015-06-30 15:19 +0000 [74135c8efa] Kevin Harwell + ASTERISK-25582 - * res_pjsip: Failover when server is not available + Change-Id: Ib20a03ecadf1bf8a0dcadfadf6c2f2e60919a9f7 - Previously Asterisk did not properly failover to the next resolved DNS - address when a endpoint could not be reached. With this patch, and while - using res_pjsip, SIP requests (both in/out of dialog) now attempt to use - the next address in the list of resolved addresses until a proper response - is received or no more addresses are left. +2016-02-22 13:54 +0000 [221422be50] Richard Mudgett - ASTERISK-25076 #close - Reported by: Joshua Colp + * bridge core: Add owed T.38 terminate when channel leaves a bridge. - Change-Id: Ief14f4ebd82474881f72f4538f4577f30af2a764 + The channel is now going to get T.38 terminated when it leaves the + bridging system and the bridged peers are going to get T.38 terminated as + well. -2015-07-06 09:24 +0000 [38a3c27a09] Joshua Colp + ASTERISK-25582 - * res_sorcery_memory_cache: Execute stale unit test last. + Change-Id: I77a9205979910210e3068e1ddff400dbf35c4ca7 - In Jenkins there is currently a sporadic test failure of a - variable number of sorcery memory cache unit tests. I have not - been able to reproduce this on the build agents themselves or - on my development machine. +2016-02-19 16:01 +0000 [0a5bc64491] Richard Mudgett - My working theory is that the stale unit test is causing a - sorcery instance to persist longer than expected, causing subsequent - tests to fail when setting up and initializing the next - sorcery instance. + * channel api: Create is_t38_active accessor functions. - To see if this is the case this change moves the stale unit test - to execute last so no subsequent unit tests can have issues - initializing their sorcery instance. + ASTERISK-25582 - Change-Id: Ifd6550a949613be774b75fa5db12c02110f82c4a + Change-Id: I69451920b122de7ee18d15bb231c80ea7067a22b -2015-06-20 13:54 +0000 [ef8d3f6506] Matt Jordan +2016-02-19 19:06 +0000 [513638a5f4] Richard Mudgett - * bucket: Add clone/staleness operations for ast_bucket/ast_bucket_file + * bridge_channel: Don't settle owed events on an optimization. - This patch enhances the bucket API in two ways. + Local channel optimization could cause DTMF digits to be duplicated. + Pending DTMF end events would be posted to a bridge when the local channel + optimizes out and is replaced by the channel further down the chain. When + the real digit ends, the channel would get another DTMF end posted to the + bridge. - First, since ast_bucket and ast_bucket_file instances are immutable, a 'clone' - operation has been added that provides a 'clone' of an existing - ast_bucket/ast_bucket_file object. Note that this makes use of the - ast_sorcery_copy operation, along with the copy callback handler on the - "bucket" and "file" object types for the bucket sorcery instance. + A -- LocalA;1/n -- LocalA;2/n -- LocalB;1 -- LocalB;2 -- B - Second, there is a need for the bucket API to ask a wizard if an object - is stale. This is particularly useful with the upcoming media cache - enhancements, where we want to ask the backing data storage if the - object we are currently operating on has known updates. This patch adds - API calls for ast_bucket and ast_bucket_file objects, which callback - into their respective sorcery wizards via the sorcery API. + 1) LocalA has the /n flag to prevent optimization. + 2) B is sending DTMF to A through the local channel chain. + 3) When LocalB optimizes out it can move B to the position of LocalB;1 + 4) Without this patch, when B swaps with LocalB;1 then LocalB;1 would + settle an owed DTMF end to the bridge toward LocalA;2. + 5) When B finally ends its DTMF it sends the DTMF end down the chain. + 6) Without this patch, A would hear the DTMF digit end when LocalB + optimizes out and when B ends the original digit. - Unit tests have also been added to cover the respective - ast_bucket/ast_bucket_file clone and staleness operations. + ASTERISK-25582 - Change-Id: Ib0240ba915ece313f1678a085a716021d75d6b4a + Change-Id: I1bbd28b8b399c0fb54985a5747f330a4cd2aa251 -2015-07-04 10:03 +0000 [b178f8701b] Matt Jordan +2016-02-22 12:15 +0000 [7c4495cb70] Richard Mudgett - * sorcery: Add support for object staleness + * channel.c: Route all control frames to a channel through the same code. - This patch enhances the sorcery API to allow for sorcery wizards to - determine if an object is stale. This includes the following: + Frame hooks can conceivably return a control frame in exchange for an + audio frame inside ast_write(). Those returned control frames were not + handled quite the same as if they were sent to ast_indicate(). Now it + doesn't matter if you use ast_write() to send an AST_FRAME_CONTROL to a + channel or ast_indicate(). - * Sorcery objects now have a timestamp that is set on creation. Since - sorcery objects are immutable, this can be used by sorcery wizards to - determine if an object is stale. + ASTERISK-25582 - * A new API call has been added, ast_sorcery_is_stale. This API call - queries the wizards associated with the object, calling a new callback - function 'is_stale'. Note that if a wizard does not support the new - callback, objects are always assumed to not be stale. + Change-Id: I5775f41421aca2b510128198e9b827bf9169629b - * Unit tests have been added that cover the new API call. +2016-02-25 15:13 +0000 [48d713a832] gtjoseph - Change-Id: Ica93c6a4e8a06c0376ea43e00cf702920b806064 + * sorcery: Refactor create, update and delete to better deal with caches -2015-07-04 18:22 +0000 [f35a4b8525] Joshua Colp + The ast_sorcery_create, update and delete function have been refactored + to better deal with caches and errors. - * res/res_http_websocket: Don't send HTTP response fragmented. + The action is now called on all non-caching wizards first. If ANY succeed, + the action is called on all caching wizards and the observers are notified. + This way we don't put something in the cache (or update or delete) before + knowing the action was performed in at least 1 backend and we only call the + observers once even if there were multiple writable backends. - This change makes it so that when accepting a WebSocket - connection the HTTP response is sent as one packet instead of - fragmented. Browsers don't like it when you send it fragmented. + ast_sorcery_create was never adding to caches in the first place which + was preventing contacts from getting added to a memory_cache when they + were created. In turn this was causing memory_cache to emit errors if + the contact was deleted before being retrieved (which would have + populated the cache). - ASTERISK-25103 + ASTERISK-25811 #close + Reported-by: Ross Beer - Change-Id: I9b82c4ec2949b0bce692ad0bf6f7cea9709e7f69 + Change-Id: Id5596ce691685a79886e57b0865888458d6e7b46 +2016-02-25 15:39 +0000 [ee947d4a7a] gtjoseph -2015-06-27 18:47 +0000 [2c17515f3c] Matt Jordan + * res_pjsip_mwi: Turn some NOTICEs and WARNINGs into debug 1s. - * Makefile: Remove coverage files on 'make clean' + There are a few cases where we're emitting notices or warnings + for things that really need neither, like a client retrying to subscribe + to mwi when they're not conifgured for it. They get a 404 so there's no + need for non-debug messages. - This patch updates a variety of Makefiles in Asterisk's build system to - remove .gcda and .gcno files when 'make clean' is executed. These files - are generated when '--enable-coverage' is passed to the Asterisk - configure script. + Change-Id: I05e38a7ff6c2f2521146f4be6a79731b9864e61f +2016-02-25 14:17 +0000 [6e70e8ccdb] gtjoseph - Change-Id: Ib70b41eea2ee2908885bff02e80faf9f40c84602 + * res_sorcery_memory_cache: Fix SEGV in some CLI commands -2015-07-02 09:08 +0000 [34323f9f95] Walter Doekes + A few of the CLI commands weren't checking for enough arguments + and were SEGVing. - * chan_sip: Fix early call pickup channel leak. + Change-Id: Ie6494132ad2fe54b4f014bcdc112a37c36a9b413 - When handle_invite_replaces() was called, and either ast_bridge_impart() - failed or there was no bridge (because the channel we're picking up was - still ringing), chan_sip would leak a channel. +2016-02-25 10:29 +0000 [4417f64d83] Leif Madsen - Thanks Matt and Corey for checking the bridge path. + * Add initial support to build Docker images - ASTERISK-25226 #close + This work-in-progress is the first step to being able to reliably + build Asterisk containers from the Asterisk source. I'm submitting + this based on feedback gained at AstriDevCon 2015. - Change-Id: Ie736bb182170a73eef5bcef0ab0376f645c260c8 + Information about how to use this is provided in contrib/docker/README.md + and will result in a local Asterisk container being built right from + your source. I believe this can eventually be automated via + hub.docker.com. -2015-07-01 16:04 +0000 [ef74ccb18d] Matt Jordan + Change-Id: Ifa070706d40e56755797097b6ed72c1e243bd0d1 - * sorcery/realtime: Add a bit of debug and warning messages for bad configs +2016-02-22 19:31 +0000 [e7a6abbbd3] Richard Mudgett - When a mapping does not exist between a sorcery.conf defined object and - a realtime mapping in extconf, currently, the user will receive a slew - of ERROR messages that don't really tell what is happening. Some ERROR - messages may even be misleading, as they occur after the sorcery API has - already given up on the attempt to load and create the sorcery object. + * rtp_engine.h: Remove extraneous semicolons. - This patch adds a bit of debug and a useful WARNING message for when a - wizard's open callback fails for a particular object type. In the bad - configurations that resulted in this patch, this provided a 'root cause' - WARNING message that pointed in the right direction of the configuration - problem. + Change-Id: Ib462633d396fa941379dfef648dcd2245e350084 - Change-Id: I1cc7344f2b015b8b9c85a7e6ebc8cb4753a8f80b +2016-02-23 14:57 +0000 [6656afffa0] Richard Mudgett -2015-07-02 06:54 +0000 [f18436642b] Joshua Colp + * chan_sip.c: Suppress T.38 SDP c= line if addr is the same. - * dns: Fix crash when invoking cancel in DNS recurring unit test. + Use the correct comparison function since we only care if the address + without the port is the same. - The recurring unit test expects the user data on a DNS query - created as a result of a recurring DNS query to be the recurring - structure itself. This is true, mostly. When invoking the user - provided callback this user data is changed to the user provided - data. This presents a race condition where the data may or may - not point to the recurring data. + Change-Id: Ibf6c485f843a1be6dee58a47b33d81a7a8cbe3b0 - This change simplifies the callback of the user provided callback - by creating a new query and populating it with the expected values. - This leaves the recurring DNS query alone and fixes the race - condition. This is more in line with how the API should be used - overall. +2016-02-16 08:14 +0000 [ea9deff996] Christof Lauber - ASTERISK-25222 #close + * res_config_sqlite3: Fix crashes when reading peers from sqlite3 tables - Change-Id: I10fb6deec025dff097157e7ec17e6e4921778478 + Introduced realloaction of ast_str buf in sqlite3_escape functions in case + the returned buffer from threadstorage was actually too small. -2015-07-02 06:19 +0000 [6fbb58c7f7] Walter Doekes + Change-Id: I3c5eb43aaade93ee457943daddc651781954c445 - * chan_mgcp: Don't call close on fd -1. +2016-02-11 11:01 +0000 [d2a1457e0b] gtjoseph - ASTERISK-25220 #close + * res_pjsip/config_transport: Allow reloading transports. - Change-Id: Ic48f3a82f51ada87f2fb0e016c9efe0ad56f1ee3 + The 'reload' mechanism actually involves closing the underlying + socket and calling the appropriate udp, tcp or tls start functions + again. Only outbound_registration, pubsub and session needed work + to reset the transport before sending requests to insure that the + pjsip transport didn't get pulled out from under them. -2015-07-02 06:10 +0000 [13a318bbb1] Walter Doekes + In my testing, no calls were dropped when a transport was changed + for any of the 3 transport types even if ip addresses or ports were + changed. To be on the safe side however, a new transport option was + added (allow_reload) which defaults to 'no'. Unless it's explicitly + set to 'yes' for a transport, changes to that transport will be ignored + on a reload of res_pjsip. This should preserve the current behavior. - * rtp_engine: Skip useless self-assignment in ast_rtp_engine_unload_format. + Change-Id: I5e759850e25958117d4c02f62ceb7244d7ec9edf - When running valgrind on Asterisk, it complained about: +2016-02-07 17:34 +0000 [6b921f706d] gtjoseph - ==32423== Source and destination overlap in memcpy(0x85a920, 0x85a920, 304) - ==32423== at 0x4C2F71C: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/...) - ==32423== by 0x55BA91: ast_rtp_engine_unload_format (rtp_engine.c:2292) - ==32423== by 0x4EEFB7: ast_format_attr_unreg_interface (format.c:1437) + * res_pjproject: Add ability to map pjproject log levels to Asterisk log levels - The code in question is a struct assignment, which may be performed by - memcpy as a compiler optimization. It is changed to only copy the struct - contents if source and destination are different. + Warnings and errors in the pjproject libraries are generally handled by + Asterisk. In many cases, Asterisk wouldn't even consider them to be warnings + or errors so the messages emitted by pjproject directly are either superfluous + or misleading. A good exampe of this are the level-0 errors pjproject emits + when it can't open a TCP/TLS socket to a client to send an OPTIONS. We don't + consider a failure to qualify a UDP client an "ERROR", why should a TCP/TLS + client be treated any differently? - ASTERISK-25219 #close + A config file for res_pjproject has bene added (pjproject.conf) and a new + log_mappings object allows mapping pjproject levels to Asterisk levels + (or nothing). The defaults if no pjproject.conf file is found are the same + as those that were hard-coded into res_pjproject initially: 0,1 = LOG_ERROR, + 2 = LOG_WARNING, 3,4,5 = LOG_DEBUG - Change-Id: I6d3546c326b03378ca8e9b8cefd41c16e0088b9a + Change-Id: Iba7bb349c70397586889b8f45b8c3d6c6c8c3898 -2015-07-02 05:16 +0000 [40274e3652] Walter Doekes +2016-02-18 10:55 +0000 [f295088764] Alexei Gradinari - * astfd: Fix buffer overflow in DEBUG_FD_LEAKS. + * res_pjsip_outbound_publish: Fix processing 412 response - If DEBUG_FD_LEAKS was used and more file descriptors than the default of - 1024 were available, some DEBUG_FD_LEAKS-patched functions would - overwrite memory past the fixed-size (1024) fdleaks buffer. + When Asterisk receives a 412 (Conditional Request Failed) response + it has to recreate publish session. + There is bug in res_pjsip_outbound_publish.c + The function sip_outbound_publish_client_alloc is called with wrong object + while processing 412 (Conditional Request Failed) response. + This patch fixes it. - This change: - - adds bounds checks to __ast_fdleak_fopen and __ast_fdleak_pipe - - consistently uses ARRAY_LEN() instead of sizeof() or 1023 or 1024 - - stores pointers to constants instead of copying the contents - - reorders the fdleaks struct for possibly tighter packing - - adds a tiny bit of documentation + ASTERISK-25229 #close - ASTERISK-25212 #close + Change-Id: I3b62f2debf6bb1e5817cde7b13ea39ef2bf14359 +2016-02-18 11:15 +0000 [f1f79812c1] Mark Michelson - Change-Id: Iacb69e7701c0f0a113786bd946cea5b6335a85e5 + * Fix failing threadpool_auto_increment test. -2015-07-02 04:57 +0000 [3fab8212e3] Walter Doekes + The threadpool_auto_increment test fails infrequently for a couple of + reasons + * The threadpool listener was notified of fewer tasks being pushed than + were actually pushed + * The "was_empty" flag was set to an unexpected value. - * res_timing: Don't close FD 0 when out of open files. + The problem is that the test pushes three tasks into the threadpool. + Test expects the threadpool to essentially gather those three tasks, and + then distribute those to the threadpool threads. It also expects that as + the tasks are pushed in, the threadpool listener is alerted immediately + that the tasks have been pushed. In reality, a task can be distributed + to the threadpool threads quicker than expected, meaning that the + threadpool has already emptied by the time each subsequent task is + pushed. In addition, the internal threadpool queue can be delayed so + that the threadpool listener is not alerted that a task has been pushed + even after the task has been executed. - This fixes so a failure to get a timer file descriptor does not cascade - to closing FD 0. + From the test's point of view, there's no way to be able to predict + exactly the order that task execution/listener notifications will occur, + and there is no way to know which listener notifications will indicate + that the threadpool was previously empty. - On error, both res_timing_kqueue and res_timing_timerfd would call the - destructor before setting the file handle. The file handle had been - initialized to 0, causing FD 0 to be closed. This in turn, resulted in - floods of "CLI>" messages and an unusable terminal. + For this reason, the test has been updated to only check the things it + can check. It ensures that all tasks get executed, that the threads go + idle after the tasks are executed, and that the listener is told the + proper number of tasks that were pushed. - ASTERISK-19277 #close - Reported by: Barry Chern + Change-Id: I7673120d74adad64ae6894594a606e102d9a1f2c - For the master branch, this was already fixed. This patch only ensures - that we do not attempt to close a negative file descriptor. +2016-02-16 23:37 +0000 [79dc5e2f00] Rodrigo Ramírez Norambuena - Change-Id: I147d7e33726c6e5a2751928d56561494f5800350 + * app_queue: fix Calculate talktime when is first call answered -2015-07-01 17:25 +0000 [41610df8d5] Richard Mudgett + Fix calculate of average time for talktime is wrong when is completed the + first call beacuse the time for talked would be that call. - * chan_vpb.cc: Fix compiler warning Jenkins found. + ASTERISK-25800 #close - Change-Id: I0ec7fd10d56d90d5a60b12b5a7d6807f265ac5e0 + Change-Id: I94f79028935913cd9174b090b52bb300b91b9492 -2015-07-01 13:34 +0000 [537df26f9c] Scott Griepentrog +2016-02-17 13:30 +0000 [5a3a857dd6] Richard Mudgett - * Channel alert pipe: improve diagnostic error return + * cel.c: Fix mismatch in ast_cel_track_event() return type. - When a frame is queued on a channel, any failure in - ast_channel_alert_write is logged along with errno. + The return type of ast_cel_track_event() is not large enough to return all + 64 potential bits of the event enable mask. Fortunately, the defined CEL + events do not really need all 64 bits and the return value is only used to + determine if the requested CEL event is enabled. - This change improves the diagnostic message through - aligning the errno value with actual failure cases. + * Made the ast_cel_track_event() return 0 or 1 only so the return value + can fit inside an int type instead of zero or a truncated 64 bit non-zero + value. - ASTERISK-25224 - Reported by: Andrey Biglari + Change-Id: I783d932320db11a95c7bf7636a72b6fe2566904c - Change-Id: I1bf7b3337ad392789a9f02c650589cd065d20b5b +2016-02-16 16:37 +0000 [87ab65c557] gtjoseph -2015-06-29 12:45 +0000 [58d18324f0] Mark Michelson + * res_odbc: Fix exports.in for missing symbols - * res_sorcery_realtime: Fix leak of sorcery object type. + res_odbc.exports.in was missing a few symbols. + Changed to wildcards. - This prevents a leak of a sorcery object type when realtime sorcery - objects are retrieved by fields or when multiple objects are retrieved. + Change-Id: Ieadd76df24e43ea92577f651d478a0f7b742c30c - The extent of this leak is that sorcery object types would be leaked. - These are allocated whenever an object type is registered with sorcery, - meaning that on module shutdown, these objects would be leaked. This - could be problematic if many reloads were performed, but it is not as - severe as if every sorcery object retrieved from realtime were being - leaked. +2016-02-16 12:20 +0000 [c0f3062031] gtjoseph - ASTERISK-25165 #close - Reported by Corey Farrell + * res_statsd: Fix exports.in for missing symbols - Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8 -2015-06-26 22:02 +0000 [80d97290bb] Matt Jordan + res_statsd.export.in was missing the _va variations of the log + functions causing Asterisk to crash in res_pjsip if OPTIONAL_API + wasn't enabled. - * res/res_corosync: Always decline module load, instead of failing + ASTERISK-25727 #close + Reported-by: Gergely Dömsödi - Returns a 'failure' from the module load routine indicates to Asterisk - that it should abort loading completely. This is rarely - in fact, - really, never - a good option. Aborting load of Asterisk from a dynamic - module implies that the core, and the rest of the dynamic modules, don't - matter: we should abandon all processing. + Change-Id: I395729f9f51bdd33c5ca757f5f96ebedad74077b - res_corosync is really not that important. +2016-02-15 21:31 +0000 [5e848dae7b] gtjoseph - This patch updates the module such that, if it fails to load, it - politely declines (emitting ERROR messages along the way), and allows - Asterisk to continue to function. + * res_pjsip_config_wizard: Add command to export primitive objects - Note that this issue was keeping Asterisk unit tests from running on - certain build agents. + 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. - Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f + ASTERISK-24919 #close + Reported-by: Ray Crumrine -2015-06-26 20:38 +0000 [892cc5625f] Matt Jordan + Change-Id: Ica2a5f494244b4f8345b0437b16d06aa0484452b - * main/pbx: Resolve case sensitivity regression in PBX hints +2016-02-15 15:37 +0000 [34c64707d1] gtjoseph - When 8297136f was merged for ASTERISK-25040, a regression was introduced - surrounding the case sensitivity of device names within hints. - Previously, device names - such as 'sip/foo' - were compared in a case - insensitive fashion. Thus, 'sip/foo' was equivalent to 'SIP/foo'. After - that patch, only the case sensitive name would match, i.e., 'SIP/foo'. - As a result, some dialplan hints stopped working. + * res_pjsip_caller_id: Fix segfault when replacing rpid or pai header - This patch re-introduces case insensitive matching for device names in - hints. + If the PJSIP_HEADER dialplan function adds a PAI or RPID header and send_rpid + or send_pai is set, res_pjsip_caller_id attemps to retrieve, parse and modify + the header added by the dialplan function. Since the header added by the + dialplan function is generic string, there are no virtual functions to parse + the uri and we get a segfault when we try. Since the modify, was really only + an overwrite, we now just delete the old header if it was type PJSIP_H_OTHER + and recreate it. - ASTERISK-25040 + This raises a question for another time though: What should happen with + duplicate headers? Right now res_pjsip_header_funcs doesn't check for dups + so if it's session supplement is loaded after res_pjsip_caller_id's (or any + other module that adds headers), there'll be dups in the message. - ASTERISK-25202 #close + ASTERISK-25337 #close - Change-Id: If5046a7d14097e1e3c12b63092b9584bb1e9cb4c - (cherry picked from commit 96bbcf495a1da9e607d9b04a44b5c4f49e83cc03) + Change-Id: I5e296b52d30f106b822c0eb27c4c2b0e0f71c7fa -2015-06-26 16:12 +0000 [e18b22a806] Mark Michelson +2016-02-15 13:08 +0000 [ebe167f792] Mark Michelson - * res_pjsip_nat: Adjust when contact should be rewritten. + * Fix creation race of contact_status structures. - A previous change made the contact only get rewritten if the dialog's - route set was not marked frozen. Unfortunately, while the intent of this - is correct, the dialog's route set actually gets marked as frozen - earlier than expected, especially for UAS dialogs. + It is possible when processing a SIP REGISTER request to have two + threads end up creating contact_status structures in sorcery. + contact_status is created using a "find or create" function. If two + threads call into this at the same time, each thread will fail to find + an existing contact_status, and so both will end up creating a new + contact status. - Instead, the idea is that the contact needs to not be rewritten if there - is a pre-existing route set on the dialog. This is now accomplished by - checking the dialog's route set list instead of checking if the route - set is frozen. + During testing, we would see sporadic failures because the + PJSIP_CONTACT() dialplan function would operate on a different + contact_status than what had been updated by res_pjsip/pjsip_options. - Doing this causes some broken tests to begin passing again. + The fix here is two-fold: + 1) The "find or create" function for contact_status now has a lock + around the entire operation. This way, if two threads attempt the + operation simultaneously, the first to get there will create the object, + and the second will find the object created by the first thread. - ASTERISK-25196 - Reported by Mark Michelson + 2) res_sorcery_memory has had its create callback updated so that it + will not allow for objects with duplicate IDs to be created. - Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e + Change-Id: I55b1460ff1eb0af0a3697b82d7c2bac9f6af5b97 -2015-06-19 18:27 +0000 [99b1aa6d26] Richard Mudgett +2016-02-15 12:52 +0000 [1c4f2a920d] Joshua Colp - * res_pjsip_outbound_registration.c: Add a serializer shutdown group. + * res_pjsip_pubsub: Move where the subscription is stored to after initialized. - The client_state objects contain a serializer used to send the outbound - REGISTER messages. Once all those message transactions are complete then - the module can shutdown. + A problem arose when testing the AMI subscription listing actions where it + was possible for a subscription that had not been fully initialized to be + listed. This was problematic as the underlying listing code would crash. - ASTERISK-24907 #close - Reported by: Kevin Harwell + This change makes it so the subscription tree is fully set up before it is + added to the list of subscriptions. This ensures that when the listing actions + get the subscription it is valid. - Change-Id: Ibb2fe558f98190f2a06da830e0fadfa25516f547 + ASTERISK-25738 #close -2015-06-26 10:41 +0000 [f536e9b59c] Mark Michelson + Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48 - * res_pjsip_refer: Prevent sending duplicate headers. +2015-02-20 20:51 +0000 [ac00c6bc2d] Corey Farrell - res_pjsip_refer will attempt to add Referred-By or Replaces headers to - outbound INVITEs at times. If the INVITE gets challenged for - authentication, then we will resend the INVITE. Prior to this patch, the - Referred-By or Replaces header would be re-added to the outbound INVITE, - resulting in duplicated headers. + * main/asterisk.c: Reverse #if statement in listener() to fix code folding. - ASTERISK-25204 #close - Reported by Mark Michelson + listener() opens the same code block in two places (#if and #else). This + confuses some folding editors causing it to think that an extra code block + was opened. Folding in 'geany' causes all code after listener() to be + folded as if it were part of that procedure. - Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d + ASTERISK-24813 #close -2015-06-23 14:34 +0000 [c2d48a2a28] Richard Mudgett + Change-Id: I4b8c766e6c91e327dd445e8c18f8a6f268acd961 - * AMI: Add Linkedid to the standard channel snapshot AMI event headers. +2016-02-09 17:34 +0000 [b1b797e0e7] gtjoseph - ASTERISK-25189 #close - Reported by: John Hardin + * res_pjsip: Refactor load_module/unload_module - Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac -2015-06-23 17:43 +0000 [700606a659] Mark Michelson + load_module was just too hairy with every step having to clean up all + previous steps on failure. - * res_pjsip_nat: Rewrite route set when required. + Some of the pjproject init calls have now been moved to a separate + load_pjsip function and the unload_pjsip function was enhanced to clean + up everything if an error happened at any stage of the load process. - When performing some provider testing, the rewrite_contact option was - interfering with proper construction of a route set when sending an ACK - after receiving a 200 OK response to an INVITE. + In the process, a bunch of missing pj_shutdowns, serializer_pool_shutdowns + and ast_threadpool_shutdowns were also corrected. - The initial INVITE was sent to address sip:foo. The 200 OK had a Contact - header with URI sip:bar. In addition, the 200 OK had Record-Route - headers for sip:baz and sip:foo, in that order. Since the Record-Route - headers had the lr parameter, the result should have been: + Change-Id: I5eec711b437c35b56605ed99537ebbb30463b302 - * Set R-URI of the ACK to sip:bar. - * Add Route headers for sip:foo and sip:baz, in that order. +2016-02-09 22:42 +0000 [20e9792fbc] Badalyan Vyacheslav - However, the rewrite_contact option resulted in our rewriting the - Contact header on the 200 OK to sip:foo. The result was: + * Resources/res_phoneprov: fix memory leak and heap-use-after-free - * R-URI remained sip:foo. - * We added Route headers for sip:foo and sip:baz, in that order. + * heap-use-after-free happens when we free "cfg" + but then use "value" which refers to it - The result was that sip:bar was not indicated in the ACK at all, so the - far end never received our ACK. The call eventually dropped. + * A memory leak occurs because in some cases + it is not released "defaults" - The intention of rewrite_contact is to rewrite the most immediate - destination of our SIP request to be the same address on which we - received a request or response. In the case of processing a SIP response - with Record-Route headers, this means that instead of rewriting the - Contact header, we should instead rewrite the bottom-most Record-Route - header. In the case of processing a SIP request with Record-Route - headers, this means we rewrite the top-most Record-route header. - Like when we rewrite the Contact header, we also ensure to update - the dialog's route set if it exists. + ASTERISK-25721 #close + Reported by: Badalyan Vyacheslav + Tested by: Badalyan Vyacheslav - ASTERISK-25196 #close - Reported by Mark Michelson + Change-Id: I3807d3f4726df6864430ec144cf6265d3f538469 - Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f -2015-06-19 16:16 +0000 [af4ae3095e] Richard Mudgett +2016-02-11 11:21 +0000 [962a9d61f8] Etienne Lessard (license #6394) - * threadpool, res_pjsip: Add serializer group shutdown API calls. + * func_iconv: Ensure output strings are properly terminated. - A module trying to unload needs to wait for all serializers it creates and - uses to complete processing before unloading. + ASTERISK-25272 #close + Reported by: Etienne Lessard + patches: + AST-25272.patch submitted by Etienne Lessard (license #6394) - ASTERISK-24907 - Reported by: Kevin Harwell + Change-Id: Id75ad202300960a1e91afe15e319d992936ecc17 - Change-Id: I8c80b90f2f82754e8dbb02ddf3c9121e5e966059 +2016-02-10 16:16 +0000 [c1bf014ea0] gtjoseph -2015-06-16 15:06 +0000 [4c133d81cd] Richard Mudgett + * res_pjsip: Handle pjsip_dlg_create_uas deprecation - * res_pjsip_outbound_registration.c: Fix handle_client_state_destruction() refs + Pjproject has deprecated pjsip_dlg_create_uas in 2.5 and replaced it with + pjsip_dlg_create_uas_and_inc_lock which, as the name implies, automatically + increments the lock on the returned dialog. To account for this, configure.ac + now detects the presence of pjsip_dlg_create_uas_and_inc_lock and res_pjsip.c + has an #ifdef HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK to decide whether to use + the original call or the new one. If the new one was used, the ref count is + decremented before returning. - * handle_client_state_destruction() must always be passed a ref to - client_state because it will always unref client_state. - handle_registration_response() was not passing a client_state ref. + ASTERISK-25751 #close + Reported-by Josh Colp - * Made the final un-REGISTER message get sent normally using the pjproject - register control structure in handle_client_state_destruction(). The - previous code attempted to short circuit the response handling for the - module to unload. That doesn't work for a couple reasons. One, - pjsip_regc_send() may call the registered callback before it returns and - unbalance the client_state ref count. Two, the registered callback - handles any authentication for the un-REGISTER message. + Change-Id: I1be776b94761df03bd0693bc7795a75682615ca8 - * Made the distinction between internal registration state and external - registration status with sip_outbound_registration_status_str(). This is - necessary to avoid altering documented AMI messages with internal - changes. +2016-02-09 23:40 +0000 [bd07b6f0dd] Badalyan Vyacheslav - * Removed references to client_state->client outside of the serializer - thread. When handle_client_state_destruction() destroys the pjproject - register control structure that memory is freed and cannot be referenced - anymore. These accesses were to provide information for debug and - off-nominal warning messages. + * Build: Added testing compiler to support the system sanitizes - * In sip_outbound_registration_timer_cb() you should not access entry->id - after unrefing client_state because the passed in entry is normally - pointing to the timer entry in the client_state object. + In older versions of the compiler was not sanitizes. + Compilers other than GCC can not support the Usan and TSAN + or have other options for *FLAGS. - ASTERISK-24907 - Reported by: Kevin Harwell + ASTERISK-25767 #close + Reported by: Badalyan Vyacheslav + Tested by: Badalyan Vyacheslav - Change-Id: Ia7b446d8644b6b4550ef5bea49527671de65183f + Change-Id: Iefce6608221fa87884b82ae3cb5649b7b1804916 -2015-06-15 15:28 +0000 [dc63377c60] Richard Mudgett +2016-02-09 20:57 +0000 [e9e896abd1] Badalyan Vyacheslav - * res_pjsip_outbound_registration.c: Use ast_sorcery_object_unregister() API + * Build: Fix menuselect USAN conflicts - The sorcery pjsip 'registration' config object needs to be destroyed on - module unload. Otherwise, a reload of res_pjsip could try to use - callbacks for a previously unloaded instance of the module provided by - ast_sorcery_object_register() or one of the variants. Also, if - res_pjsip_outbound_registration were subsequently reloaded, the sorcery - config field objects would be registered in sorcery twice. + USAN can be used together with other sanitizers. - ASTERISK-24907 - Reported by: Kevin Harwell + Reported by: Badalyan Vyacheslav + Tested by: Badalyan Vyacheslav - Change-Id: I304fad13dece2604af48353f6c6d9d5c7b064697 + Change-Id: I3bffa350d70965c3026651dba3a12414d0aaa45f -2015-06-15 15:28 +0000 [9ec8a0f3cc] Richard Mudgett +2016-02-09 14:21 +0000 [93e8ed0154] Corey Farrell - * sorcery: Add ast_sorcery_object_unregister() API call. + * Simplify and fix conditional in FD_SET. - Find and unlink the specified sorcery object type to complement - ast_sorcery_object_register(). Without this function you cannot - completely unload individual modules that use sorcery for configuration. + FD_SET contains a conditional statement to protect against buffer + overruns. The statement was overly complicated and prevented use + of the last array element of ast_fdset. We now just verify the fd + is less than ast_FDMAX. - ASTERISK-24907 - Reported by: Kevin Harwell + Change-Id: I41895c0b497b052aef5bf49d75c817c48b326f40 - Change-Id: I1c04634fe9a90921bf676725c7d6bb2aeaab1c88 +2016-02-09 07:11 +0000 [a7c8d4cd6b] Joshua Colp -2015-06-15 13:38 +0000 [77ff7325a2] Richard Mudgett + * tests/test_sorcery_memory_cache_thrash: Improve termination process. - * res_pjsip_outbound_registration.c: Reorder load_module() and unload_module(). + When terminating the threads thrashing a sorcery memory cache each + would be told to stop and then we would wait on them. During at + least one thrashing test this was problematic due to the specific + usage pattern in use. It would take some time for termination of the + thread to occur. - It is best if the loading code creates and initializes the module's - infrastructure before letting the system know of its existence. The - unloading code needs to reverse the actions of the loading code and in the - reverse order. + This would occur due to contention between the threads retrieving + and the threads updating the cache. As the retrieving threads are + given priority it may be some time before the updating threads + are able to proceed. - ASTERISK-24907 - Reported by: Kevin Harwell + This change makes it so all threads are told to stop and then each + are joined to ensure they stop. This way all the threads should + stop at around the same time instead of waiting for one to stop, + the next to stop, then the next, and so on. As a result of this + the execution time for each thrash test is much closer to their + expected value than previously seen as well. - Change-Id: I5d151383e9787b5b60aa5e1627b10f040acdded4 + Change-Id: I04a53470b0ea4170b8819180b0bd7475f3642827 +2016-01-29 17:56 +0000 [2451d4e455] gtjoseph -2015-06-25 06:42 +0000 [8d6cf667dc] Joshua Colp + * res_pjsip: Fix infinite recursion when loading transports from realtime - * channel: Remove ignore of answer on non-outgoing channels. + Attempting to load a transport from realtime was forcing asterisk into an + infinite recursion loop. The first thing transport_apply did was to do a + sorcery retrieve by id for an existing transport of the same name. For files, + this just returns the previous object from res_sorcery_config's internal + container, if any. For realtime, the res_sourcery_realtime driver looks in the + database and finds the existing row but now it has to rehydrate it into a + sorcery object which means calling... transport_apply. And so it goes. - Due to the way that channels can now be moved around inside of - Asterisk it is possible for the outgoing flag of a channel to get - cleared before it has been answered. This results in the bridge - not receiving notification that the outgoing leg has been answered. + The main issue with loading from realtime (apart from the loop) was that + transport stores structures and pointers directly in the ast_sip_transport + structure instead of the separate ast_transport_state structure. This patch + separates those items into the ast_sip_transport_state structure. The pattern + is roughly the same as res_pjsip_outbound_registration. - This most easily exhibits itself with DTMF based blond transfers. - Since the answer of the outgoing leg is ignored the other party - continues to receive both a locally generated ringing and the - media stream of the outgoing leg upon its answer. This results - in no media being heard. + Although all current usages of ast_sip_transport and ast_sip_transport_state + were modified to use the new ast_sip_get_transport_state API, the original + items are left in ast_sip_transport and kept updated to maintain ABI + compatability for third-party modules. They are marked as deprecated and + noted that they're now in ast_sip_transport_state. - This change removes the ignore of the answer and allows it - to pass through. + ASTERISK-25606 #close + Reported-by: Martin Moučka - ASTERISK-25171 #close + Change-Id: Ic7a836ea8e786e8def51fe3f8cce855ea54f5f19 - Change-Id: I82aedcec4f89f34a2e5472086dfc9a6c775bca8e +2016-01-25 17:36 +0000 [6f978fbfe5] Richard Mudgett -2015-06-24 14:30 +0000 [daaa551c92] Richard Mudgett + * app_confbridge: Only use b_profile options from the conference. - * test.c: Add unit test registration checks for summary and description. + A user cannot set new bridge options after the conference is created by + the first user. Attempting to do so is documented as undefined behavior. - Added checks when a unit test is registered to see that the summary and - description strings do not end with a new-line '\n' for consistency. + This patch ensures that the bridge profile options used are from the + conference and not what a subsequent user may have tried to set. - The check generates a warning message and will cause the - /main/test/registrations unit test to fail. + Change-Id: I1b6383eba654679e5739d5a8de98199cf074a266 - * Updated struct ast_test_info member doxygen comments. +2016-02-05 10:29 +0000 [ec8fd6714d] gtjoseph - Change-Id: I295909b6bc013ed9b6882e85c05287082497534d + * chan_misdn: Fix a few issues causing compile errors -2015-06-24 16:39 +0000 [71a4d1a033] Richard Mudgett + Change-Id: I54b48c24d7ca88ed80496fdfd142d08772a7ab98 - * Unit tests: Fix more unit test description strings. +2016-02-04 16:17 +0000 [6a799cd78f] Mark Michelson - Analyzing the code shows that the unit test summary and description - strings should not end with a new-line character. Where these strings are - used in the code a new-line is provided for output. + * Check for OpenSSL defines before trying to use them. - Change-Id: I2f4f37988ec363c8d1c5077a2fc8ca841c5cd30c + The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior + to OpenSSL version 1.0.1. A recent commit attempts to, by default, set + these options, which can cause problems on systems with older OpenSSL + installations. -2015-06-24 14:39 +0000 [9c6d72e30d] Richard Mudgett + This commit adds a configure script check for those defines and will not + attempt to make use of those if they do not exist. We will print a + warning urging the user to upgrade their OpenSSL installation if those + defines are not present. - * Unit tests: Fix unit test description strings. + Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d +2016-02-03 14:25 +0000 [953d1cc11a] gtjoseph - Analyzing the code shows that the unit test summary and description - strings should not end with a new-line character. Where these strings are - used in the code a new-line is provided for output. + * pjsip/alembic: Add missing columns to system and registration - Change-Id: I129284f5e7ca93d82532334076da4c462d3d9fba + ps_systems needed disable_tcp_switch + ps_registrations needed line and endpoint -2015-06-24 16:37 +0000 [a0c2d2089d] Richard Mudgett + ASTERISK-25737 #close - * DNS unit tests: Fix extraneous description string commas. + Change-Id: Iaf9c2d69e62243d9fa53104c28c5339c47d4ac19 - Change-Id: Icf5f13c8e1c2c92a4473bb573ed2dd856ce1b64e +2016-02-04 11:39 +0000 [23829b3253] Mark Michelson -2015-06-23 11:21 +0000 [3b2b004d69] Joshua Colp + * res_stasis_device_state: Fix refcounting error. - * app_dial: Hold reference to calling channel formats when dialing outbound. + Device state subscription lifetimes were governed by when the + subscription was established and unsubscribed from. However, it is + possible that at the time of unsubscription, there could be device state + events still in flight. When those device state events occur, the device + state callback could attempt to dereference a freed pointer. Crash. - Currently when requesting a channel the native formats of the - calling channel are provided to the core for usage when dialing - the outbound channel. This occurs without holding the channel lock - or keeping a reference to the formats. This is problematic as - the channel driver may end up changing the formats during this time. - In the case of chan_sip this happens when an SDP negotiation - completes. + This change ensures that the lifetime of the device state subscription + does not end until the underlying stasis subscription has confirmed that + its final message has been sent. - This change makes it so app_dial keeps a reference to the native - formats of the calling channel which guarantees that they will - remain valid for the period of time needed. + Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2 - ASTERISK-25172 #close +2016-01-27 10:44 +0000 [4e8e6d3922] Sean Bright - Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db + * res_rtp_asterisk: Allow ICE host candidates to be overriden -2015-06-17 16:23 +0000 [af66b0f3f7] Richard Mudgett + During ICE negotiation the IPs of the local interfaces are sent to the remote + peer as host candidates. In many cases Asterisk is behind a static one-to-one + NAT, so these host addresses will be internal IP addresses. - * res_pjsip_outbound_registration.c: Add missing line endings to CLI commands + To help in hiding the topology of the internal network, this patch adds the + ability to override the host candidates by matching them against a + user-defined list of replacements. - Change-Id: I39ae612746d892d2dbe86f3ff2d7027fa1da57f7 + Change-Id: I1c9541af97b83a4c690c8150d19bf7202c8bff1f -2015-06-12 14:29 +0000 [3f0708e5fe] Richard Mudgett +2015-12-07 12:46 +0000 [c6b1b2b1c8] Richard Mudgett - * res_pjsip_outbound_registration.c: Eliminate simple RAII_VAR() usage. + * AST-2016-003 udptl.c: Fix uninitialized values. - Change-Id: I399cb9d61bbba706b48c98e0bf75e98984cd9a9e + Sending UDPTL packets to Asterisk with the right amount of missing + sequence numbers and enough redundant 0-length IFP packets, can make + Asterisk crash. -2015-06-12 13:33 +0000 [9ceb848242] Richard Mudgett + ASTERISK-25603 #close + Reported by: Walter Doekes - * res_pjsip_outbound_registration.c: Misc code cleanups. + ASTERISK-25742 #close + Reported by: Torrey Searle - * Break some long lines. + Change-Id: I97df8375041be986f3f266ac1946a538023a5255 +2016-02-03 12:05 +0000 [f8acadde2c] Joshua Colp - * Fix doxygen comment. + * AST-2016-001 http: Provide greater control of TLS and set modern defaults. - Change-Id: I8f12ba6822f84d5e7bb575280270cd7e2fefb305 + This change exposes the configuration of various aspects of the TLS + support and sets the default to the modern standards. -2015-06-22 15:11 +0000 [44c3c392e3] Kevin Harwell + The TLS cipher is now set to the best values according to the + Mozilla OpSec team, different TLS versions can now be disabled, and + the cipher order can be forced to be that of the server instead of + the client. - * bridge.c: Hangup attended transfer target if bridged + ASTERISK-24972 #close - After completing an attended transfer the transfer target channel was not being - hung up after leaving the bridge. Added an explicit softhangup to hangup said - channel, but only if it was previously bridged. + Change-Id: I0a10f2883f7559af5e48dee0901251dbf30d45b8 +2015-09-28 17:07 +0000 [3c81a052c8] Richard Mudgett - ASTERISK-24782 #close - Reported by: John Bigelow + * AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow. - Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada + Setting the sip.conf timert1 value to a value higher than 1245 can cause + an integer overflow and result in large retransmit timeout times. These + large timeout times hold system file descriptors hostage and can cause the + system to run out of file descriptors. -2015-06-17 05:04 +0000 [7846f73432] Joshua Colp + NOTE: The default sip.conf timert1 value is 500 which does not expose the + vulnerability. - * res_pjsip_mwi: Set up unsolicited MWI upon registration. + * The overflow is now detected and the previous timeout time is + calculated. - The res_pjsip_mwi previously required a reload to set up the proper - subscriptions to allow unsolicited MWI to work. This change - makes it so the act of registering will also cause this to occur. - This is particularly useful if realtime is involved as no reload - needs to occur within Asterisk to cause the MWI information - to get sent. + ASTERISK-25397 #close + Reported by: Alexander Traud - ASTERISK-25180 #close + Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290 +2016-02-03 14:07 +0000 [2a6ee8caeb] gtjoseph - Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252 + * logging: Remove/fix some message annoyances -2015-06-22 13:57 +0000 [096b27d9d2] Richard Mudgett + test_dlinklists doesn't need to NOTICE everyone that every macro worked. - * res_pjsip_outbound_registration.c: Fix whitespace conflict potential. + res_phoneprov doesn't need to VERBOSE everyone that a phoneprov extension or + provider was registered. - Change-Id: I82e6e388e3688aebe0783f16c9e0800a747584b5 + res_odbc was missing a newline at the end of one message. -2015-06-22 09:26 +0000 [1ad9a6b6b6] Alexander Traud (License 6520) + Change-Id: I6c06361518ef3711821795e535acd439782a995e - * chan_sip: Reload peer without its old capabilities. +2016-02-02 10:52 +0000 [32fc784284] Alexei Gradinari License #5691 - On reload, previously allowed codecs were not removed. Therefore, it was not - possible to remove codecs while Asterisk was running. Furthermore, newly added - codecs got appended behind the previous codecs. Therefore, it was not possible - to add a codec with a priority of #1. This change removes the old capabilities - before the current ones are added. + * res_sorcery_realtime: Fix regex regression. - ASTERISK-25182 #close - Reported by: Alexander Traud - patches: - asterisk_13_allow_codec_reload.patch uploaded by Alexander Traud (License 6520) + A regression was introduced where searching for realtime PJSIP objects + by regex by starting the regex with a leading "^" would cause no items + to be returned. - Change-Id: I62a06bcf15e08e8c54a35612195f97179ebe5802 + This was due to a change which attempted to drop the requirement for a + leading "^" to be present due to how some CLI commands formulate their + regexes. However, the change, rather than simply eliminating the + requirement, caused any regexes that did begin with "^" to end up not + returning the expected results. -2015-06-20 19:38 +0000 [5caefc98a1] Joshua Colp + This change fixes the problem by inspecting the regex and formulating + the realtime query differently depending on if it begins with "^". - * chan_sip: Destroy peers without holding peers container lock. + ASTERISK-25702 #close + Reported by Nic Colledge - Due to the use of stasis_unsubscribe_and_join in the peer destructor - it is possible for a deadlock to occur when an event callback is - occurring at the same time. + Patches: + realtime_retrieve_regex.patch submitted by Alexei Gradinari License #5691 - This happens because the peer may be destroyed while holding the - peers container lock. If this occurs the event callback will never - be able to acquire the container lock and the unsubscribe will - never complete. + Change-Id: I055df608a6e6a10732044fa737a9fe8dca602693 - This change makes it so the peers that have been removed from the - peers container are not destroyed with the container lock held. +2016-02-02 04:05 +0000 [0405c31756] Karsten Wemheuer - ASTERISK-25163 #close + * res_xmpp: Does not connect in component mode - Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33 + The module res_xmpp does not accept usernames in the form used in component + mode (XEP-0114). In component mode there is no @something in the name. + In component mode the connection is now not dropped anymore. -2015-06-18 13:16 +0000 [d7a1e84a1e] Mark Michelson + If the xmpp server sends out a "stream" tag before handshake is finished, + the connection gets dropped in res_xmpp. Now this tag will be ignored and + the connection will be established. - * Resolve race conditions involving Stasis bridges. + After connecting there will be an exchange of presence states. This does + not work as expected in component mode. The responsible function + "xmpp_pak_presence" is left before the states get sent out. Sending + presence states in component mode is now moved to the top of the function. - This resolves two observed race conditions. + ASTERISK-25735 #close - First, a bit of background on what the Stasis application does: + Change-Id: I70e036f931c3124ebb2ad1e56f93ed35cfdd9d5c +2016-02-01 13:04 +0000 [8804d0973c] gtjoseph - 1a Creates a stasis_app_control structure. This structure is linked into - a global container and can be looked up using a channel's unique ID. - 2a Puts the channel in an event loop. The event loop can exit either - because the stasis_app_control structure has been marked done, or - because of some other factor, such as a hangup. In the event loop, the - stasis_app_control determines if any specific ARI commands need to be - run on the channel and will run them from this thread. - 3a Checks if the channel is bridged. If the channel is bridged, then - ast_bridge_depart() is called since channels that are added to Stasis - bridges are always imparted as departable. - 4a Unlink the stasis_app_control from the container. + * build_system: Fix some warnings highlighted by clang - When an ARI command is received by Asterisk, the following occurs - 1b A thread is spawned to handle the HTTP request - 2b The stasis_app_control(s) that corresponds to the channel(s) in the - request is/are retrieved. If the stasis_app_control cannot be - retrieved, then it is assumed that the channel in question has exited - the Stasis app or perhaps was never in Stasis in the first place. - 3b A command is queued onto the stasis_app_control, and the channel's - event loop thread is signaled to run the command. - 4b While most ARI commands do nothing further, some, such as adding or - removing channels from a bridge, will block until the command they - issued has been completed by the channel's event loop. + Fix some warnings found with clang. - The first race condition that is solved by this patch involves a crash - that can occur due to faulty detection of the channel's bridged status - in step 3a. What can happen is that in step 2a, the event loop may run - the ast_bridge_impart() function to asynchronously place the channel - into a bridge, then immediately exit the event loop because the channel - has hung up. In step 3a, we would detect that the channel was not - bridged and would not call ast_bridge_depart(). The reason that the - channel did not appear to be bridged was that the depart_thread that is - spawned by ast_bridge_impart() had not yet started. That is the thread - where the channel is marked as being bridged. Since we did not call - ast_bridge_depart(), the Stasis application would exit, and then the - channel would be destroyed Then the depart_thread would start up and - try to manipulate the destroyed channel, causing a crash. + Change-Id: I5195b6189b148c2ee3ed4a19d015a6d4ef3e77bd - The fix for this is to switch from using ast_channel_is_bridged() to - checking the NULLity of ast_channel_internal_bridge_channel() to - determine if ast_bridge_depart() needs to be called. The channel's - internal bridge_channel is set when ast_bridge_impart() is called and - is NULLed by the call to ast_bridge_depart(). If the channel's internal - bridge_channel is non-NULL, then the channel must have been imparted - into the bridge and needs to be departed, even if the actual bridging - operation has not yet started. By departing the channel when necessary, - the thread that is running the Stasis application will block until the - bridge gives the okay that the depart_thread has exited. +2016-02-01 13:16 +0000 [109b0aff6b] gtjoseph - The second race condition that is solved by this patch involves a leak - of HTTP handler threads. The problem was that step 2b would successfully - retrieve a stasis_app_control structure. Then step 2a would exit the - channel from the event loop due to a hangup. Steps 3a and 4a would - execute, and then finally steps 3b and 4b would. The problem is that at - step 4b, when attempting to add a channel to a bridge, the thread would - block forever since the channel would never execute the queued command - since it was finished with the event loop. This meant that the HTTP - handling thread would be leaked, along with any references that thread - may have owned (in my case, I was seeing bridges leaked). + * res/Makefile: Fix bug in "clean" target for ari - The fix for this is to hone in better on when the channel has exited the - event loop. The stasis_app_control structure has an is_done field that - is now set at each point where the channel may exit the event loop. If - step 2b retrieves a valid stasis_app_control structure but the control - is marked as done, then the attempted operation exits immediately since - there will be nothing to service the attempted command. + The "clean" target was attempting to clean res/ari from inside + the res directory which doesn't remove anything. Removed the res/ + prefix. - ASTERISK-25091 #close - Reported by Ilya Trikoz + Change-Id: Ib1a518d54efa81b9fd5a42742d43cc3767435bf6 - Change-Id: If66265b73b4c9f8f58599124d777fedc54576628 -2015-06-17 07:00 +0000 [9668a1acb5] Joshua Colp +2016-01-31 20:13 +0000 [a85fab7c44] gtjoseph - * res_sorcery_memory_cache: Remove 'prefetch' option. + * pjsip/alembic: Fix definition of qualify_timeout - To prevent confusion I am removing the prefetch option until such - time as it is implemented. All other functionality, however, has - been implemented. + A recent commit set qualify_timeout to Decimal which isn't supported. + This path corrects it to Float. - ASTERISK-25067 + Change-Id: I038f5274ba8cb60f8518a5845ce448d49306aadf - Change-Id: I9ce6aa3e5c6c5bc3c5baa8ff90fa036d73939895 +2016-01-29 07:39 +0000 [aa9348ab9a] Stefan Engström -2015-06-16 11:13 +0000 [59552c2d08] Mark Michelson + * chan_sip.c: AMI & CLI notify methods get different values of asterisk's own ip. - * Parking: Add documentation for AMI ParkedCallSwap event. + When I ask asterisk to send a SIP NOTIFY message to a sip peer using either a) + AMI action: SIPnotify or b) cli command: sip notify , I expect + asterisk to include the same value for its own ip in both cases a) and b), + but it seems a) produces a contact header like Contact: + whereas b) produces a contact header like + . 0.0.0.0:8060 is my udpbindaddr in sip.conf - This event was added some time ago in order to clarify when a channel - took the place of another channel in a parking lot. However, there was - no XML documentation added for the event. This patch adds the XML - documentation. + My guess is that manager_sipnotify should call + ast_sip_ouraddrfor(&p->sa, &p->ourip, p) the same way sip_cli_notify does, + because after applying this patch, both cases a) and b) produce + the contact header that I expect: - ASTERISK-24900 #close - Reported by Rusty Newton + Reported by: Stefan Engström + Tested by: Stefan Engström - Change-Id: I4cfe7777c4b94bbff91c9221c6096a7a02a92eac -2015-06-15 16:40 +0000 [ea9d5f155e] Corey Farrell + Change-Id: I86af5e209db64aab82c25417de6c768fb645f476 +2015-12-23 15:07 +0000 [65bd4fcc3f] Mark Michelson - * func_pjsip_aor: Fix leaked contact from iterator. + * res_odbc: Remove connection management - ASTERISK-25162 #close + Asterisk by default will create a single database connection and share + it among all threads that attempt to access the database. In previous + versions of Asterisk, this was tolerable, because the most used channel + driver, chan_sip, mostly accessed the database from a single thread. + With PJSIP, however, many threads may be attempting to perform database + operations, and there is the potential for many more database accesses, + meaning the concurrency is a horrible bottleneck if only one connection + is shared. - Change-Id: Id79aa3c6fe490016ee98efc97ac4c1d3f461f97e + Asterisk has a connection pooling facility built into it, but the + implementation has flaws. For one, there is a strict limit on the number + of simultaneous connections that could be made to the database. Anything + beyond the maximum would result in a failed operation. Attempting to + predict what the maximum should be is nearly impossible even for someone + intimately familiar with Asterisk's threading model. In addition, use of + transactions in the dialplan can cause some severe bugs if connection + pooling is enabled. -2015-06-12 16:58 +0000 [93ac45d3bd] Kevin Harwell + This commit seeks to fix the concurrency problem by removing all + connection management code from Asterisk and leaving that to the + underlying unixODBC code instead. Now, Asterisk does not share a single + connection, nor does it try to maintain a connection pool. Instead, all + Asterisk ever does is request a connection from unixODBC and allow + unixODBC to either allocate those connections or retrieve them from a + pool. - * res_pjsip: Add option to force G.726 to be treated as AAL2 packed. + Doing this has a bit of a ripple effect. For one, since connections are + not long-lived objects, several of the safeguards that previously + existed have been removed. We don't have to worry about trying to use a + connection that has gone stale. In every case, when we request a + connection, it has just been made and we don't need to perform any + sanity checks to be sure it's still active. - Some phones send g.726 audio packed for AAL2, which differs from what is - recommended by RFC 3351. If Asterisk receives audio formatted as such when - negotiating g.726 then it sounds a bit distorted. Added an option to - res_pjsip_endpoint that allows g.726 negotiated audio to be treated as g.726 - AAL2 packed. + Another major player affected by this change is transactions. + Transactions and their respective connections were so tightly coupled + that it was almost pornographic. This code change moves + transaction-related code to its own file separate from the core ODBC + functionality. This way, the core of ODBC does not even have to know + that transactions exist. - ASTERISK-25158 #close - Reported by: Steve Pitts + In making this large change, I had to look at a lot of code and + understand it. When making this change, I discovered several places + where the behavior is definitely not ideal, but it seemed outside the + scope of this change to be fixing it. Instead, any place where I saw + some sort of room for improvement has had a XXX comment added explaining + what could be altered to improve it. - Change-Id: Ie7e21f75493d7fe53e75e12c971e72f5afa33615 + Change-Id: I37a84def5ea4ddf93868ce8105f39de078297fbf -2015-06-14 19:48 +0000 [15c2208701] Matt Jordan +2016-01-28 12:44 +0000 [2a9e623ff9] Richard Mudgett - * main/cdr: Carry over the disable flag when 'disable all' is specified + * config_options.c: Fix warning message wording. - The CDR_PROP function (as well as the NoCDR application) set the - 'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This - flag is supposed to be applied to all CDRs that are currently in the - chain, as well as all CDRs that may be created in the future. Currently, - however, the flag is only applied to the existing CDRs in the chain; new - CDRs do not receive the 'disable all' flag. In particular, this affects - parallel dials, which generate new CDRs for each pair of channels in - the dial attempt. + Change-Id: I915ea437936320393afde0e7552cf0a980a6b2e4 - This patch carries over the 'disable all' flag when it is specified on a - CDR and a new CDR is generated for the chain. +2016-01-25 17:34 +0000 [ed3c9c1512] Richard Mudgett - ASTERISK-24344 #close + * app_confbridge.c: Replace inlined code with existing function. - Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e -2015-06-12 14:28 +0000 [b8bc15286f] Matt Jordan + Change-Id: Ida5594e9f8d7c1fc18eeb733a11f8fb96326da51 - * main/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines +2016-01-25 16:05 +0000 [1d0abf86e7] Richard Mudgett - When a parallel dial occurs, a new CDR will be created for each dial - attempt that is made. In most circumstances, the act of creating each - CDR in the chain will include a step that updates the Party A snapshot, - which causes the context/extension of the Party A to be copied onto the - CDR object. + * app_confbridge: Add ability to get the muted conference state. - However, when the Party A is in a subroutine, we explicitly do *not* - copy the context/extension onto the CDR. This prevents the Macro or - GoSub routine name from blowing away the context/extension that the - channel was originally executing in. For the original CDR, this is not a - problem: the original CDR already recorded the last known 'good' state - of the channel just prior to it going into the subroutine. However, for - newly generated CDRs in a chain, there is no context/extension set on - them. Since we are in a subroutine, we will never set the Party A's - context/extension on the CDR, and we end up with a CDR with no - destination recorded on it. + * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state. - This patch updates the creation of a chained CDR such that it copies - over the original CDR's context/extension. This is the last known "good" - state of the CDR, and is a reasonable starting point for the newly - generated CDR. In the case where we are not in a subroutine, subsequent - code will update the location of the CDR from the Party A information; - in the case where we are in a subroutine, the context/extension on the - original CDR is the correct information. + * Added Muted header to AMI ConfbridgeListRooms action response list + events to indicate the muted conference state. - ASTERISK-24443 #close + * 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. - Change-Id: I6a3ef0d6e458d3b9b30572feaec70f2964f3bc2a + ASTERISK-20987 + Reported by: hristo -2015-06-11 08:18 +0000 [19f60d9412] Damian Ivereigh + Change-Id: I4076bd8ea1c23a3afd4f5833e9291b49a0c448b1 - * chan_sip.c: Update dialog fromtag after request with auth +2016-01-26 17:59 +0000 [f0d40afa69] Richard Mudgett - If a client sends and INVITE which is 401 rejected, then subsequently - sends a new INVITE with the auth info and uses a different fromtag - from the first INVITE, Asterisk will accept the new INVITE as part of - the original dialog - match_req_to_dialog() specifically ignores the - fromtag. However it does not update the stored dialog with the new - fromtag. + * app_confbridge.c: Update CONFBRIDGE and CONFBRIDGE_INFO documentation. - This results in Asterisk being unable to match future packets that are - part of this dialog (such as the ACK to the OK or the OK to the BYE), - and the call is dropped. + Change-Id: Ic1f9e22ba1f2ff3b3f5cb017c5ddcd9bd48eccc7 - This problem was originally found when using an NEC-i SV8100-GE (NEC SIP - Card). +2016-01-25 15:48 +0000 [3e51e5c7fd] Richard Mudgett - * After a successful match of a packet to the dialog, if the packet is - not a SIP_RESPONSE, authentication is present and the fromtags are - different, the stored fromtag is updated with the one from the recent - INVITE. + * app_confbridge: Make non-admin users join a muted conference muted. - ASTERISK-25154 #close - Reported by: Damian Ivereigh - Tested by: Damian Ivereigh + ASTERISK-20987 #close + Reported by: hristo - Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e + Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38 -2015-06-11 18:52 +0000 [bb00b26f35] Matt Jordan +2016-01-27 13:02 +0000 [9da18af992] gtjoseph - * chan_pjsip: Set the context and extension on the channel when created + * res_pjsip: Add res_pjproject dependency to UPGRADE.txt and samples - Prior to this patch, chan_pjsip was failing to pass the endpoint's - context and the desired extension to the ast_channel_alloc_* routine. - This caused a new channel snapshot to be issued without a context and - extension, which can cause some reporting issues for users of AMI, CEL, - and other APIs. The channel driver would later set the context and - extension on the channel such that the channel would start in the - correct location in the dialplan, but the information reported in the - initial event would be incorrect. + Since res_pjsip now depends on res_pjproject, this is now mentioned + in UPGRADE.txt and the basic-pbx modules.conf has been updated. - This patch modifies the channel driver such that it now passes the - context and extension directly into the allocation routine. This - provides the information in the new channel snapshot published over - Stasis. + Change-Id: I42826597d5e10f08e518208860c44c96e52f1b2d +2016-01-27 10:29 +0000 [aee8448bc2] gtjoseph - ASTERISK-25156 #close - Reported by: cloos + * build_system: Prevent goals needing makeopts from running when it's missing - Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e + The Makefile only optionally includes makeopts so when goals like uninstall that + dont depend on anything else are run after a distclean, rules like + 'rm -f "$(DESTDIR)$(ASTMODDIR)/"*' get run as 'rm -f ""/*' which attempts + to remove everything in the root directory. -2015-06-10 18:28 +0000 [7230ee2efe] Joshua Colp + Although there's a rule defined for makeopts which prints a message and does + an 'exit 1', since '-include makepopts' was specified (with the -), the exit + was ignored letting the rest of the rules run. - * bridge: When performing a blonde transfer update connected line information. + This patch makes makeopts required unless the goal has the string 'clean' in it. - When performing a blonde transfer the code uses the old masquerade - mechanism to move a channel around. As a result of this certain information, - such as connected line, is moved between the channels involved. Upon - completion of the move a frame is queued which is supposed to update the - connected line information on the channel. This does not occur as the - code considers it a redundant update since the masquerade operation - updated the channel (but did not inform it of the new connected line - information). The code also does not queue a connected line update - to be handled by the thread handling the channel. Without this any - other channel that may be loosely involved does not know it is - talking to a different caller. + ASTERISK-25730 #close + Reported-by: George Joseph - This change does the following to resolve this: + Change-Id: I1bce59a7ea4f48e7a468e22b2abbb13c63417ac7 - 1. The indicated connected line information is cleared upon - completion of the masquerade operation when doing a blonde transfer. - This prevents the connected line update from being considered - redundant. +2016-01-25 09:35 +0000 [f22074e5d9] Joshua Colp - 2. A connected line update frame is now queued upon the completion - of the masquerade operation so any other channel loosely involved - knows that there is a different caller. + * config: Allow options to register when documentation is unavailable. - ASTERISK-25157 #close - Reported by: Joshua Colp + The config options framework is strict in that configuration options must + be documented unless XML documentation support is not available. In + practice this is useful as it ensures documentation exists however in + off-nominal cases this can cause strange problems. - Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20 + If it is expected that a config option has a non-zero or non-empty + default value but the config option documentation is unavailable + this reasonable expectation will not be met. This can cause obscure + crashes and weirdness depending on how the code handles it. -2015-06-11 14:39 +0000 [a657ab12f9] Richard Mudgett + This change tweaks the behavior to ensure that the config option + is still allowed to register, apply default values, and be set when + devmode is not enabled. If devmode is enabled then the option can + NOT be set. - * app_directory: Fix crash when using the alias option 'a'. + This also does not remove the initial documentation error message that + is output on load when registering the configuration option. - The voicemail.conf mailbox key/value pair is defined as: - =[[,[,[,[,]]]]] - Where all fields in the value including the field values are optional. + ASTERISK-25725 #close - Since the parsing code for the mailbox key/value pair is sloppy, this - patch tightens the parsing for the directory information. + Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8 - * Renamed the 'pos' and 'bufptr' variables to 'name' and 'options' - respectively in search_directory_sub(). Those names make more sense. +2016-01-25 10:23 +0000 [4a3275abb9] Mark Michelson - * Made sure that search_directory_sub() is dealing with the voicemail.conf - mailbox options field if it even exists when looking for the 'hidefromdir' - and 'alias' options. + * Stasis: Use custom structure when setting variables. - * Fix crash if a voicemail.conf mailbox is just - =, when the 'a' option is used. If there were no - fields after the name then the 'options' pointer was not checked for NULL. + A recent change to queue channel variable setting to the Stasis control + queue caused a regression. When setting channel variables, it is + possible to give a NULL channel variable value in order to unset the + variable (i.e. remove it from the channel variable list). The change + introduced a call to ast_variable_new(), which is not tolerant of NULL + channel variable values. - * Fix users.conf alias processing if the 'a' option is used. The wrong - variable was used. + This new change switches from using ast_variable to using a custom + channel variable struct that is lighter weight and NULL value-tolerant. - ASTERISK-25087 #close - Reported by: Chet Stevens + Change-Id: I784d7beaaa3c036ea936d103e7caf0bb1562162d - Change-Id: I86052ea77307beddddba5279824d39dc0d593374 +2016-01-25 16:56 +0000 [b2c8a99f9e] Rusty Newton -2015-06-05 15:37 +0000 [30cd559345] Richard Mudgett + * sounds/Makefile: Incremented core and extra sounds versions to 1.5 - * DNS: Need to use the same serializer for a pjproject SIP transaction. + Core and extra sounds 1.5 was recently released! The tarballs contain + change descriptions however I figure more people will see this one so + I'll try to be a bit detailed. Approximately 60 sounds were moved from Extra + to Core for en, en_GB, fr and added for languages that didn't already + have Extra sound sets (it,ja,ru). - All send/receive processing for a SIP transaction needs to be done under - the same threadpool serializer to prevent reentrancy problems inside - pjproject when using an external DNS resolver to process messages for the - transaction. + In addition all of the English and Russian sounds have been completely + re-recorded. - * Add threadpool API call to get the current serializer associated with - the worker thread. + Sounds moved and added: + activated,added,all-circuits-busy-now,astcc-followed-by-pound + at-tone-time-exactly,call-forwarding,call-fwd-no-ans,call-fwd-on-busy + ,call-fwd-unconditional,calling,call-waiting,cancelled, + cannot-complete-as-dialed,check-number-dial-again,conf-full,de-activated + ,disabled,do-not-disturb,enabled,enter-num-blacklist,entr-num-rmv-blklist + ,extension,feature-not-avail-line,for,from-unknown-caller,goodbye,hello + ,if-correct-press,im-sorry,info-about-last-call,is,is-in-use,is-set-to + ,location,number,number-not-answering,num-was-successfully,one-moment-please + ,please-try-again,pls-hold-while-try,pls-try-call-later,pm-invalid-option + ,privacy-to-blacklist-last-caller,removed,simul-call-limit-reached + ,something-terribly-wrong,sorry,sorry-youre-having-problems,speed-dial + ,speed-dial-empty,telephone-number,time,to-call-this-number,to-extension + ,to-listen-to-it,to-rerecord-it,unidentified-no-callback,with,you-entered + ,your - * Pick a serializer from a pool of default serializers if the caller of - res_pjsip.c:ast_sip_push_task() does not provide one. + There were also a few random fixes here and there to file names for a few + of the languages. - This is a simple way to ensure that all outgoing SIP request messages are - processed under a serializer. Otherwise, any place where a pushed task is - done that would result in an outgoing out-of-dialog request would need to - be modified to supply a serializer. Serializers from the default - serializer pool are picked in a round robin sequence for simplicity. + ASTERISK-25068 #close - A side effect is that the default serializer pool will limit the growth of - the thread pool from random tasks. This is not necessarily a bad thing. + Change-Id: I2b594344ec585d7dfd922b40c1af43b1508828b3 +2016-01-25 16:51 +0000 [8261bda1bf] Mark Michelson - * Made pjsip_resolver.c use the requesting thread's serializer to execute - the async callback. + * res_pjsip_pubsub: Prevent crash from AMI command on freed subscription. - * Made pjsip_distributor.c save the thread's serializer name on the - outgoing request tdata struct so the response can be processed under the - same serializer. + A test recently uncovered that running an ill-timed AMI command to show + inbound subscriptions could cause a crash since Asterisk will try to + operate on a freed subscription. - ASTERISK-25115 #close - Reported by: John Bigelow + The fix for this is to remove the subscription tree from the list of + subscriptions at the time that we are sending our final NOTIFY request + out. This way, as the subscription is in the process of dying, it is + inaccessible from AMI. - Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a + Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23 -2015-06-05 12:16 +0000 [b23f33e7e5] Richard Mudgett +2016-01-25 11:03 +0000 [a6823bb0c4] Corey Farrell - * DNS: Fix some corner cases. + * chan_sip: Fix buffer overrun in sip_sipredirect. - * Fix query_set destruction before we are done kicking the queries off. + sip_sipredirect uses sscanf to copy up to 256 characters to a stacked buffer + of 256 characters. This patch reduces the copy to 255 characters to leave + room for the string null terminator. - * Fixed no queries requested handling. + ASTERISK-25722 #close - * Add empty queries request unit test. + Change-Id: Id6c3a629a609e94153287512c59aa1923e8a03ab - * Added missing allocation check in ast_dns_query_set_add(). +2016-01-22 15:08 +0000 [1003c2eb05] Mark Michelson - * Made initial pjsip resolving query vector slightly larger. + * Stasis: Fix potential memory leak of control data. - ASTERISK-25115 - Reported by: John Bigelow + When queuing tasks onto the Stasis control queue, you can pass an + arbitrary data pointer and a function to free that data. All ARI + commands that use the Stasis control queue made the assumption that the + destructor function would be called in all paths, whether the task was + queued successfully or not. However, this was not correct. If a task was + queued onto a control structure that was already completed, the + allocated data would not be freed properly. - Change-Id: Ie8be8347d0992e93946d72b6e7b1299727b038f2 + This patch corrects this by making sure that all return paths call the + data destructor. -2015-06-10 17:51 +0000 [ae589da466] Richard Mudgett + Change-Id: Ibf06522094f8e5c4cce652537dc5d7222b1c4fcb - * DNS: Remove trailing newline from summary and descriptions. +2016-01-21 10:58 +0000 [eedd77fda0] Mark Michelson - Those trailing newlines mess up test formatting. + * Stasis: Use control queue to prevent crash. - Change-Id: I5e3f3a55b82c9d7acb9661201d4993d1958f1185 + A crash occurred when attempting to set a channel variable on a channel + that had already been hung up. This is because there is a small window + between when a control is grabbed and when the channel variable is set + that the channel can be hung up. -2015-06-05 11:43 +0000 [83bc9d366d] Richard Mudgett + The fix here is to queue the setting of the channel variable onto the + control queue. This way, the manipulation of the channel happens in a + thread where it is safe to be done. - * pjsip_resolver.c: Fix debug code to only execute at acceptable debug level. + In this change, I also noticed that the setting of bridge roles on + channels was being done outside of the control queue, so I also changed + those operations to be done in the control queue. - Change-Id: I1716c93d6e097ad28128ecb9e806aac7a4180c8a + ASTERISK-25709 #close + Reported by Mark Michelson -2015-06-05 11:41 +0000 [6d49dccd85] Richard Mudgett + Change-Id: I2a0a4d51bce6fba6f1d9954e40935e42f366ea78 - * DNS: Fix doxygen comments. +2016-01-22 11:48 +0000 [1c95b211a0] Richard Mudgett - Change-Id: Icafea3fb4ea64ac027561b23cbfe2b17997dc549 + * logger.c: Fix buffer overrun found by address sanitizer. -2015-06-09 15:31 +0000 [b705c09dbb] Richard Mudgett + The null terminator of the tail struct member was not being allocated + when no logger.conf config file is installed. - * res_pjsip.h: Fix some doxygen comments. + ASTERISK-25714 #close + Reported by: Badalian Vyacheslav - Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976 + Change-Id: I45770fdd08af39506a3bc33ba279c4f16e047a30 -2015-06-05 13:46 +0000 [aa8479778e] Richard Mudgett +2016-01-21 16:40 +0000 [6ff945ab87] Corey Farrell - * taskprocessor.c: Remove extra unref from off-nominal path. + * Build System: Add support for checking alembic branches. - Change-Id: Iee3bd8c8a528776056972066698fe735f0f6cf60 + * Add 'check-alembic' target to root Makefile. + * Create build_tools/make_check_alembic to do the actual checks. -2015-05-31 12:37 +0000 [07f5f45e5a] Ivan Poddubny + ASTERISK-25685 - * res_pjsip_transport_websocket: Fix use-after-free bugs. + Change-Id: Ibb3cae7d1202ac23dc70b0f3b5801571ad46b004 - This patch fixes use-after-free bugs caught by AddressSanitizer. +2016-01-19 18:20 +0000 [02035212de] Richard Mudgett - 1. PJSIP transport manager may decide to destroy transport on its own. - For example, when the contact registered via websocket has not renewed - its registration in time. The transport was destoyed, but the websocket - listener thread was still active until the socket closes, and then tried - to call transport_shutdown on transport that has been freed. + * res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case. - Also, the transport destructor accessed wstransport->rdata.tp_info.pool - right after freeing memory that contained wstransport itself. + ASTERISK-25712 #close + Reported by: Richard Mudgett - This patch converts transport to an ao2 object, allowing it to be - refcounted, so that it is available until both websocket listener and - pjsip transport manager are finished with it. + Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f - 2. The websocket listener deletes the last reference on websocket session - when the tcp connection is closed, and it gets destroyed, but - the transport manager may still use it, for example when disconnect - happens in the middle of a SIP transaction. +2016-01-18 03:49 +0000 [c68c66c61f] Diederik de Groot - A new reference to websocket session has been added that is released - with the transport to prevent this. + * main/asterisk.c: ast_el_read_char - ASTERISK-25096 #close - Reported by: Josh Kitchens + Make sure buf[res] is not accessed at res=-1 (buffer underrun). + Address Sanitizer will complain about this quite loudly. - ASTERISK-24963 #close - Reported by: Badalian Vyacheslav + ASTERISK-24801 #close - Change-Id: Idc0b63eb6e459c1ddfb2430127d34b3c4d8d373b + Change-Id: Ifcd7f691310815a31756b76067c56fba299d3ae9 -2015-06-09 13:41 +0000 [f897f36721] ibercom +2016-01-13 16:49 +0000 [f87c3275cc] Richard Mudgett - * weakref attribute detection broken with gcc 4.6 and higher + * res_pjsip: Add CLI "pjsip dump endpt [details]" - GCC 4.7 Manual: - http://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Function-Attributes.html + Dump the res_pjsip endpt internals. - weakref ("target") + In non-developer mode we will not document or make easily accessible the + "details" option even though it is still available. The user has to know + it exists to use it. Presumably they would also be aware of the potential + crash warning below. - A weak reference is an alias that does not by itself require a definition - to be given for the target symbol. + Warning: PJPROJECT documents that the function used by this CLI command + may cause a crash when asking for details because it tries to access all + active memory pools. - ASTERISK-22559 #close - Reported by: Ibercom + Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb - Change-Id: I36a136cae947b65187a697533416f9ff9a0b8cdf +2016-01-18 17:16 +0000 [46b2de55f9] Matt Jordan -2015-06-08 10:09 +0000 [80621ce3c5] Corey Farrell + * funcs/func_cdr: Correctly report high precision values for duration and billsec - * Fix unsafe uses of ast_context pointers. + When CDRs were refactored, func_cdr's ability to report high precision values + for duration and billsec (the 'f' option) was broken. This was due to func_cdr + incorrectly interpreting the duration/billsec values provided by the CDR engine + in milliseconds, as opposed to seconds. Since the CDR engine only provides + duration and billsec in seconds, and does not expose either attribute with + sufficient precision to merely pass back the underlying value, this patch fixes + the bug by re-calculating duration and billsec with microsecond precision based + on the start/answer/end times on the CDR. - Although ast_context_find, ast_context_find_or_create and - ast_context_destroy perform locking of the contexts table, - any context pointer can become invalid at any time that the - contexts table is unlocked. This change adds locking around - all complete operations involving these functions. + ASTERISK-25179 #close - Places where ast_context_find was followed by ast_context_destroy - have been replaced with calls ast_context_destroy_by_name. + Change-Id: I8bc63822b496537a5bf80baf6102c06206bee841 - ASTERISK-25094 #close - Reported by: Corey Farrell +2016-01-18 19:20 +0000 [137fe5ae01] gtjoseph - Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa + * res_pjproject: Add module providing pjproject logging and utils -2015-06-08 09:44 +0000 [53c1126090] Kevin Harwell + res_pjsip_log_forwarder has been renamed to res_pjproject + and enhanced as follows: - * AMI: Escape string values. + As a follow-on to the recent 'Add CLI "pjsip show buildopts"' patch, + a new ast_pjproject_get_buildopt function has been added. It + allows the caller to get the value of one of the buildopts. - So this issue is a bit complicated. Since it is possible to pass values to AMI - that contain a '\r\n' (or other similar sequences) these values need to be - escaped. One way to solve this is to escape the values and then pass the escaped - values to the AMI variable parameter string building function. However, this - puts the onus on the pre-build function to escape all string values. This - potentially requires a fair amount of changes along with a lot of string - allocations/freeing for all values. + The initial use case is retrieving the runtime value of + PJ_MAX_HOSTNAME to insure we don't send a hostname greater + than pjproject can handle. Since it can differ between + the version of pjproject that Asterisk was compiled against + and the version of pjproject that Asterisk is running against, + we can't use the PJ_MAX_HOSTNAME macro directly in Asterisk + source code. - Surely there is a way to push this complexity down a level into the string - building function itself? This of course is possible, but ends up requiring a - way to distinguish between strings that need to be escaped and those that don't. - The best way to handle this is by introducing a new format specifier in the - format string. For instance a %s (no escape) and %S (escape). However, that is - a bit weird and unexpected. + Change-Id: Iab6e82fec3d7cf00c1cf6185c42be3e7569dee1e - So faced with those possibilities this patch implements a limited version of the - first option. Instead of attempting to escape all string values this patch only - escapes those values that make sense. This approach limits the number of changes - and doesn't suffer from the odd format specifier problem. +2016-01-19 17:15 +0000 [b5c13c1545] Joshua Colp - ASTERISK-24934 #close - Reported by: warren smith + * test_threadpool: Wait for each task to complete and fix memory leak. - Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0 + This change makes the thread_timeout_thrash unit test wait for + each task to complete. This fixes the problem where the test would + prematurely end when all threads were gone and a new one had to be + started to handle the last task. It also increases the thrasing as + it is now more likely for each task to encounter the above scenario. -2015-06-02 15:07 +0000 [9fca378b36] David M. Lee + This also fixes a memory leak where the data for each task was not + being freed. - * Fixes for OS X + ASTERISK-25611 #close - * Add some type casting so tv_usec can really be a long, instead of - some strange platform specific type. + Change-Id: I5017d621a4dc911f509074c16229b86bff2fb3c6 - * Add some .dylib style files to .gitignore. +2016-01-18 19:44 +0000 [0ab89182d9] Richard Mudgett - * Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer - versions of GCC, when compiling the Homebrew formula for Asterisk, - are not properly passing the -Xlinker options to the linker. Given - that -Wl, does exactly the [same thing][], and does it properly, this - patch changes the -Xlinker options to use -Wl, instead. + * taskprocessor.c: Increase CLI "core ping taskprocessor" timeout. - [reasons unknown]: http://bit.ly/1SUbEYx - [same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html + Change-Id: I4892d6acbb580d6c207d006341eaf5e0f8f2a029 - Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd +2016-01-18 19:43 +0000 [a2a8ea3330] Richard Mudgett -2015-06-04 07:14 +0000 [d463bac574] ibercom + * taskprocessor.c: Fix some taskprocessor unrefs. - * CLI: Cosmetic issue - core show uptime + You have to call ast_taskprocessor_unref() outside of the taskprocessor + implementation code. Taskprocessor use since v12 has become more + transient than just the singleton uses in earlier versions. - Show uptime information ends with an unnecessary space. + Change-Id: If7675299924c0cc65f2a43a85254e6f06f2d61bb - Now NEEDCOMMA is better defined. +2016-01-19 13:44 +0000 [d604a9afc8] Richard Mudgett - Change-Id: I11b360504a0703309ff51772ff8f672287f3c5a1 + * Fix alembic branches on v13. -2015-06-04 13:11 +0000 [128fe4cee8] Joshua Colp + Change-Id: I313449b609ede18ad1e1763a655dd23b9210a8e0 - * res_sorcery_memory_cache: Implement expire_on_reload option. +2016-01-18 18:45 +0000 [a0c79f3a4f] gtjoseph - This change implements the expire_on_reload option for memory caches. - If enabled and a reload is performed all objects within the cache - will be expired and the cache emptied. + * pjsip_loging_refactor: Rename res_pjsip_log_forwarder to res_pjproject - ASTERISK-25067 - Reported by: Matt Jordan + Change-Id: I5387821f29e5caa0cba0b7d62b0fc0d341e7e20b - Change-Id: Id46aa1957d660556700e689e195eed57c989b85e +2016-01-14 09:26 +0000 [018ccf680b] Rusty Newton -2015-06-02 10:20 +0000 [028edae82e] Joshua Colp + * func_channel: Add help text for undocumented CHANNEL function arguments - * test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache. + Adding help text documentation for: + * hangupsource + * appname + * appdata + * exten + * context + * channame + * uniqueid + * linkedid - This change adds a CLI command which can perform memory cache thrashing as well - as unit tests which perform thrashing under the following configurations: + ASTERISK-24097 #close + Reported by: Steven T. Wheeler + Tested by: Rusty Newton - 1. Low number of unique objects that go stale after 1 second - 2. Low number of unique objects that expire after 1 second - 3. Low number of unique objects which are constantly updated - 4. Large number of unique objects which exceed a defined cache size - 5. Large number of unique objects which exceed a defined cache size - that also expire and go stale rapidly - 6. Large number of unique objects which expire and go stale rapidly - 7. Large number of unique objects + Change-Id: Ib94b00568b0433987df87d5b67ea529b5905754d - For all of the above there are a large number of threads constantly - attempting to retrieve random objects and each test runs for a few - seconds. +2016-01-16 13:18 +0000 [5644bca9f9] Daniel Journo - ASTERISK-25067 - Reported by: Matt Jordan + * Update version number in features.conf.sample - Change-Id: I8c8ceff977332c80ed4a31f10d694d48552b2f78 + Update the version number in the comments from Asterisk 12 to Asterisk 12+ -2015-06-04 05:33 +0000 [19de2bbc5f] Joshua Colp + Change-Id: Ie692ac8cda3c993c3bf10f27f51a1cca3317ec7b - * res_sorcery_memory_cache: Add test event when a refresh occurs. +2016-01-15 19:52 +0000 [3f5f30cf82] Corey Farrell - This change adds a testsuite event for when a refresh occurs. - This is useful as it provides a guaranteed mechanism of knowing when - it has occurred instead of waiting an arbitrary amount of time. + * main/config: Clean config maps on shutdown. - ASTERISK-25067 - Reported by: Matt Jordan + ASTERISK-25700 #close - Change-Id: Iaa6b8d2d6bab7f99ee08e1c8908b8272a8987e65 + Change-Id: I096da84f9c62c6095f68bcf98eac4b7c7868e808 -2015-06-03 20:12 +0000 [6737ded058] Rodrigo Ramírez Norambuena +2016-01-14 14:42 +0000 [660fedecb7] Kevin Harwell - * install_prereq: Check if is installed aptitude otherwise to install. + * bridge_basic: don't cache xferfailsound during an attended transfer - If in Debian or system based, dont have aptitude installed the script do - nothing. This patch checked if aptitude installed, if not installed. + The xferfailsound was read from the channel at the beginning of the transfer, + and that value is "cached" for the duration of the transfer. Therefore, changing + the xferfailsound on the channel using the FEATURE() dialplan function does + nothing once the transfer is under way. - Also, if execute script with all packages installed yet, the script not show - nothing and return exit 1 because the command 'grep' get nothing from pipe from - 'awk'. + This makes it so the transfer code instead gets the xferfailsound configuration + options from the channel when it is actually going to be used. - ASTERISK-25113 #close - Reported By: Rodrigo Ramírez Norambuena + This patch also fixes a potential memory leak of the props object as well as + making sure the condition variable gets initialized before being destroyed. - Change-Id: Iebdff55805d3917166e5e08e0a1e2176f36ff27f + ASTERISK-25696 #close -2015-06-03 17:41 +0000 [92ccffd9e6] Mark Michelson + Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4 - * res_pjsip: Prevent access of NULL channels. +2015-07-10 10:37 +0000 [9cda1de34d] Richard Mudgett - It is possible to receive incoming requests or responses after the channel - on an ast_sip_session has been destroyed and NULLed out. Handlers of these - sorts of requests or responses need to be prepared for the possibility - that the channel is NULL or else they could cause a crash. + * taskprocessor.c: Simplify ast_taskprocessor_get() return code. - While several places have been amended to deal with NULL channels, there - were still a couple of places that needed updating. + Change-Id: Id5bd18ef1f60ef8be453e677e98478298358a9d1 - res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to - return early if there is no channel on the session. +2016-01-13 18:20 +0000 [a79af2b312] Richard Mudgett - res_pjsip_session.c: When handling a 302 response, we need to stop the - redirecting attempt if there is no channel on the session. + * astmm.c: Add more stats to CLI "memory show" commands. - ASTERISK-25148 #close - reported by Mark Michelson + * Add freed regions totals to allocations and summary. - Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9 + * Add totals for all allocations and not just the selected allocations. -2015-06-03 13:17 +0000 [d355ee7ff3] gtjoseph + Change-Id: I61d5a5112617b0733097f2545a3006a344b4032a - * res_pjsip/location: Fix ref leak in contact_apply_handler +2016-01-14 16:00 +0000 [83feb7db3b] Kevin Harwell - contact_apply_handler calls ast_res_pjsip_find_or_create_contact_status - to force the creation of a contact_status object whenever a new - contact is added but it didn't unref the returned object. + * bridge_basic: don't play an attended transfer fail sound after target hangs up - Added an ao2_cleanup(status) to plug the leak. + If the attended transfer destination answers (picks call up or goes to + voicemail) and then hangs up on the transferer then transferer hears the + fail sound. - ASTERISK-25141 + This patch makes it so the fail sound is not played when the transfer + destination/target hangs up after answering. - Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40 - Reported-by: Corey Farrell + ASTERISK-25697 #close -2015-06-02 13:02 +0000 [6d8dc9bb5c] Richard Mudgett + Change-Id: I97f142fe4fc2805d1a24b7c16143069dc03d9ded - * res_pjsip: Remove outgoing authentication code no longer needed. +2016-01-14 13:22 +0000 [935d641f3b] Mark Michelson - Associated with ASTERISK-25131 + * Remove res/ari/* content during 'make clean'. - Change-Id: Iefa3b2066cfd8b108a90d2dd4a64d92c3a195d33 + 'make clean' and 'make distclean' can leave behind .o files in the + res/ari/ directory. One observed consequence of this is that running + Asterisk with MALLOC_DEBUG can cause Asterisk to crash immediately on + startup sometimes. -2015-06-02 12:55 +0000 [00a47ffc7e] Richard Mudgett + By ensuring that we are making a clean build, we can be sure that stale + files are not being included in the build and causing problems when + build options should have caused files to be re-built. - * res_pjsip_session: Fix cherry pick to master compile error. + ASTERISK-25683 #close + Reported by yaron nahum - ASTERISK-25131 - Reported by: Richard Mudgett + Change-Id: I1f48baa904d2468eddeefb42ee68a56af7adc7b7 - Change-Id: I87c9c96ae4a8fe2bc8a0ddea6958a2ad9cefd8e3 +2016-01-13 15:58 +0000 [46f21df302] Daniel Journo -2015-06-02 12:27 +0000 [9472bbaa95] Joerg Sonnenberger + * pjsip/alembic: Fix qualify_timeout column definition - * Remove const cast from leaf functions. + Corrects the qualify_timeout column type from Integer to Decimal - app_control_register_rule and app_control_unregister_rule lock/unlock - the queue, which is a mutating operation according to the - ao2_lock/_unlock prototype. Depending on the specific (implicit) casts - in SCOPED_LOCK and RAII_VAR, the compiler may warn or not. As the only - callers of those functions do not have the const, get consistent results - by just dropping it. + ASTERISK-25686 #close + Reported-by: Marcelo Terres - Change-Id: Ib9e6296155a39bc5d627142a3828180c3cfe8fbb + Change-Id: I757d0e3c011ee9be6cd5abd48bc92441a405d3c8 -2015-06-02 11:35 +0000 [5f712e82ac] Joerg Sonnenberger +2016-01-12 11:14 +0000 [32b29d7b02] Joshua Colp - * tcptls.c: Don't use OpenSSL functions when no SSL support is present. + * app: Queue hangup if channel is hung up during sub or macro execution. - Change-Id: I68a85a7fcbdb282140ff333c6274b6763d5f82a3 -2015-06-01 12:08 +0000 [2cd40c2bd7] Rodrigo Ramírez Norambuena + This issue was exposed when executing a connected line subroutine. + When connected or redirected subroutines or macros are executed it is + expected that the underlying applications and logic invoked are fast + and do not consume frames. In practice this constraint is not enforced + and if not adhered to will cause channels to continue when they shouldn't. + This is because each caller of the connected or redirected logic does not + check whether the channel has been hung up on return. As a result the + the hung up channel continues. - * cdr/cdr_csv.c: Set file name for csv master to the module when (re)loaded. + This change makes it so when the API to execute a subroutine or + macro is invoked the channel is checked to determine if it has hung up. + If it has then a hangup is queued again so the caller will see it + and stop. - Compute the location for the csv master file when the module is - loaded or reload. Before it was calculated every time a log - entry was written. + ASTERISK-25690 #close - Change-Id: I3ed9f6a8f965308099db70b71128f43d4d3f5585 -2015-05-26 13:56 +0000 [5cdcae5240] Richard Mudgett + Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea - * res_pjsip_session: Fix in-dialog authentication. +2016-01-13 07:20 +0000 [e7cfda0b38] Sean Bright - When the remote peer requires authentication for in-dialog requests then - re-INVITEs to the peer cause the call to be disconnected and other - in-dialog requests to the peer like MESSAGE just don't go through. + * res_musiconhold: Prevent multiple simultaneous reloads. - * Made session_inv_on_tsx_state_changed() handle in-dialog authentication - for re-INVITEs and other methods. Initial INVITEs cannot be handled here - because the INVITE transaction must be restarted earlier. + There are two ways in which the reload() function in res_musiconhold can be + called from the CLI: - * Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in - preparation for removing the file. The generic outbound authentication - code did not work as well as anticipated. + * module reload res_musiconhold.so + * moh reload - * Created outbound_invite_auth() to only handle initial outbound INVITEs. - Re-INVITEs cannot be handled here. The re-INVITE transaction is still in - progress and the PJSIP library cannot handle the overlapping INVITE - transactions. Other method types should not be handled here as this code - only works on outgoing calls and we need to handle incoming and outgoing - calls. + In the former case, the module loader holds a lock that prevents multiple + concurrent calls, but in the latter there is no such protection. - ASTERISK-25131 #close - Reported by: Richard Mudgett + This patch changes the 'moh reload' CLI command to invoke the module loader + directly, rather than call reload() explicitly. - Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0 + ASTERISK-25687 #close -2015-05-30 20:22 +0000 [9f1939ee27] Corey Farrell + Change-Id: I408968b4c8932864411b7f9ad88cfdc7b9ba711c +2016-01-12 14:25 +0000 [5586abc957] Richard Mudgett - * pjsip_configuration: Fix leak in persistent_endpoint_update_state. + * res_pjsip_log_forwarder.c: Add CLI "pjsip show buildopts". - The loop to find the first available contact of an endpoint grabbed - contact from the iterator, then checked for offline state. This - caused the first contact after the state was found to leak a reference. + PJPROJECT has a function available to dump the compile time + options used when building the library. - ASTERISK-25141 + * Add CLI "pjsip show buildopts" command. - Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08 + * Update contrib/scripts/autosupport to get pjproject information. -2015-05-31 11:33 +0000 [0a5f8c0d73] Ivan Poddubny + Change-Id: Id93a6a916d765b2a2e5a1aeb54caaf83206be748 - * Fix buffer overflow in slin sample frames generation. +2016-01-12 10:36 +0000 [4cd58c3b20] Mark Michelson - The length of frames retured by sample functions was twice as large as - real, what caused global buffer overflow caught by AddressSanitizer. + * res_sorcery_realtime: Remove leading ^ requirement. - ASTERISK-24717 #close - Reported by: Badalian Vyacheslav + res_sorcery_realtime's search-by-regex callback performed a check to + ensure that the passed-in regex began with a caret (^). If it did not, + then no results would be returned. - Change-Id: Iec2fe682aef13e556684912f906bedf7c18229c6 + This callback only started to become used when "like" support was added + to PJSIP CLI commands. The CLI command for listing objects would pass an + empty regex ("") to the sorcery backend if no "like" statement was + present. For most sorcery backends, this resulted in returning all + objects. However, for realtime, this resulted in returning no objects. -2015-05-29 16:19 +0000 [bef000dd7c] gtjoseph + This commit seeks to fix the regression by removing the requirement from + res_sorcery_realtime for the passed-in-regex to begin with a caret. - * res_pjsip/location: Fix memory leak in permanent_uri_handler + ASTERISK-25689 #close + Reported by Marcelo Terres - When permanent_uri_handler was creating the contact status - object for each contact, it wasn't unreffing it at the - end of the loop. + Change-Id: I22b4dc5d7f3f11bb29ac2e42ef94682e9bab3b20 - ASTERISK-25141 #close - Reported-by: Corey Farrell +2016-01-07 11:57 +0000 [219c204a41] gtjoseph - Change-Id: I7bb127994677bb3d459f87952f8425c9b9967b12 + * pjsip_sdp_rtp: Add option endpoint/bind_rtp_to_media_address -2015-05-29 14:52 +0000 [82716410a4] gtjoseph + On a system with multiple ip addresses in the same subnet, if a + transport is bound to a specific ip address and endpoint/media_address + is set, the SIP/SDP will have the correct address in all fields but + the rtp stream MAY still originate from one of the other ip addresses, + most probably the "primary" ip address. This happens because + res_pjsip_sdp_rtp/create_rtp always calls ast_instance_new with + the "all" ip address (0.0.0.0 or ::). - * Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change" + The new option causes res_pjsip_sdp_rtp/create_rtp to call + ast_rtp_instance_new with the endpoint's media_address (if specified) + instead of the "all" address. This causes the packets to originate from + the specified address. - This reverts commit 6fca75bb628dfff2ab112e80b0228cf3ac0b8a05. + ASTERISK-25632 + ASTERISK-25637 + Reported-by: Olivier Krief + Reported-by: Dan Journo - Change-Id: Ifee026cc63e22c5ac5717c37867a9f036373ae5a + Change-Id: I3dfaa079e54ba7fb7c4fd1f5f7bd9509bbf8bd88 -2015-05-26 07:34 +0000 [dfc45254d1] Joshua Colp +2016-01-10 16:22 +0000 [22801a06ee] Daniel Journo - * res_sorcery_memory_cache: Add CLI commands and AMI actions. + * pjsip: Add option global/regcontext - This change adds the following CLI commands and AMI actions: + 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. - sorcery memory cache show - sorcery memory cache dump - sorcery memory cache expire - sorcery memory cache stale + ASTERISK-25670 #close + Reported-by: Daniel Journo - SorceryMemoryCacheExpire - SorceryMemoryCacheExpireObject - SorceryMemoryCacheStale - SorceryMemoryCacheStaleObject + Change-Id: Ib1530c5b45340625805c057f8ff1fb240a43ea62 - These allow both examination and manipulation of sorcery memory - caches from external sources. +2016-01-08 15:22 +0000 [1600ebca7d] Kevin Harwell - Cached objects can be explicitly expired from a cache or marked - as stale. If expired they are immediately removed. If marked as - stale they will be background refreshed when next retrieved. + * pbx: Deadlock between contexts container and context_merge locks - ASTERISK-25067 - Reported by Matt Jordan + Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5) + introduced the possibility of a deadlock. Due to the mentioned modifications + ast_change_hints now needs to keep both merge/delete and state callbacks from + occurring while it executes. Unfortunately, sometimes ast_change_hints can be + called with the contexts container locked. When this happens it's possible for + another thread to grab the context_merge_lock before the thread calling into + ast_change_hints does and then try to obtain the contexts container lock. This + of course causes a deadlock between the two threads. The thread calling into + ast_change_hints waits for the other thread to release context_merge_lock and + the other thread is waiting on that one to release the contexts container lock. - Change-Id: I68e03cfd8c34b5e07f4b6ee4fd93a3f4a00a3d9e + Unfortunately, there is not a great way to fix this problem. When hints change, + the subsequent state callbacks cannot run at the same time as a merge/delete, + nor when the usual state callbacks do. This patch alleviates the problem by + having those particular callbacks (the ones run after a hint change) occur in a + serialized task. By moving the context_merge_lock to a task it can now safely be + attempted or held without a deadlock occurring. -2015-05-27 13:22 +0000 [6fca75bb62] gtjoseph + ASTERISK-25640 #close + Reported by: Krzysztof Trempala - * endpoint/stasis: Eliminate duplicate events on endpoint status change + Change-Id: If2210ea241afd1585dc2594c16faff84579bf302 - When an endpoint was created, it's messages were being forwarded to - both the tech endpoint topic and the all endpoints topic. Since - the tech topic was also forwarded to all, this was resulting in - duplicate messages whenever an endpoint published. This patch - causes the endpoint to only forward to the tech topic and lets - the tech topic forward to all. +2016-01-10 17:08 +0000 [0fc3dad965] Corey Farrell - To accomplish this, the existing stasis_cp_single_create function - (which both creates and forwards) was cloned and split into 2 - functions, one that creates the topic and one that sets up the - forwarding. This allows endpoint_internal_create to create - the topic from the endpoint_all cache without forwarding it there, - then allows it to do the forward to the tech's topic. + * devicestate: Cleanup engine thread during graceful shutdown. - ASTERISK-25137 #close - Reported-by: Vitezslav Novy - ASTERISK-25116 #close - Reported-by: George Joseph - Tested-by: George Joseph + ASTERISK-25681 #close - Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c + Change-Id: I64337c70f0ebd8c77f70792042684607c950c8f1 -2015-05-26 13:01 +0000 [2e54e7227c] Mark Michelson +2016-01-10 13:51 +0000 [f34dd10495] Corey Farrell - * res_sorcery_memory_cache: Add support for refreshing stale objects. + * manager: Cleanup manager_channelvars during shutdown. - This change introduces a check of object_lifetime_stale when retrieving - cached objects. If the amount of time the object has been in the cache - exceeds the lifetime, then a task is scheduled to update the cached - object based on an object retrieved from other sorcery wizards instead. + ASTERISK-25680 #close - To prevent the cached object from being retrieved during a refresh, - thread-local storage is used to mark the thread as being a stale object - update. This results in the cache returning no object, leading to - sorcery querying other wizards for the object instead. + Change-Id: I3251d781cbc3f48a6a7e1b969ac4983f552b2446 - A test has been added for stale objects as well. This test ensures that - stale objects are retrieved the same as freshly-cached objects. The test - also ensures that after an object is stale, changes in the backend are - reflected in the cache, to include if the object has been deleted from - the backend. +2016-01-10 13:27 +0000 [1d3a1167fc] Corey Farrell - ASTERISK-25067 - Reported by Matt Jordan + * res_calendar: Cleanup scheduler context at unload. - Change-Id: I9bd7c049adf6939bfe2899f393c2bfbbf412d217 -2015-05-21 17:21 +0000 [b8ac683822] gtjoseph + ASTERISK-25679 #close - * res_pjsip: Add AMI events for chan_pjsip contact lifecycle changes + Change-Id: I839159bf6882cccc1b23494c7aa2bc2a2624613f - Add a new ContactStatus AMI event. - Publish the following status/state changes: - Created - Removed - Reachable - Unreachable - Unknown +2016-01-08 11:49 +0000 [3a160cdbf6] Joshua Colp - Contact URI, new status/state, aor and endpoint names, and the - last qualify rtt result are included in the event. + * res_rtp_asterisk: Revert DTLS negotiation changes. - ASTERISK-25114 #close + Due to locking issues within pjnath these changes are being + reverted until pjnath can be changed. - Change-Id: Id25aae5f7122facba183273efb3e8f36c20fb61e - Reported-by: George Joseph - Tested-by: George Joseph + ASTERISK-25645 -2015-05-07 11:18 +0000 [95b186a174] Rodrigo Ramírez Norambuena + Revert "res_rtp_asterisk.c: Fix DTLS negotiation delays." - * res/res_config_pgsql.c: Use PQescapeStringConn for escaping names. + This reverts commit 24ae124e4f7310cfa64c187b944b2ffc060da28d. - Use function PQescapeStringConn for escaping the name of the table and - schema instead of doing it manually. + Change-Id: I2986cfb2c43dc14455c1bcaf92c3804f9da49705 - ASTERISK-25132 #close - Reported By: Rodrigo Ramírez Norambuena + Revert "res_rtp_asterisk: Resolve further timing issues with DTLS negotiation" - Change-Id: I302a263f7210d20925f14716b508b081998b7608 + This reverts commit 965a0eee46d24321f74c244e23c5a5f45e67e12b. -2015-05-26 07:44 +0000 [a7af6bca3c] Joshua Colp + Change-Id: Ie68fafde27dad4b03cb7a1e27ce2a8502c3f7bbe - * sorcery: Fix cache creation callback. +2016-01-09 17:57 +0000 [4b10fc9173] gtjoseph - The cache creation callback function expects to receive a sorcery_details - structure and not just a standalone object. + * Revert "pjsip_location: Delete contact_status object when contact is deleted" - Change-Id: I3e4a5a137cb25292eb52d7a14cbb6daa09213450 + This reverts commit 0a9941de9d24093b5ff44096d1d7406f29d11e45. -2015-05-24 13:47 +0000 [23a798fecc] Ivan Poddubny + Matt, - * Astobj2: Correctly treat hash_fn returning INT_MIN + This patch causes another problem and should not have been needed. + Before this patch, persistent_endpoint_contact_deleted_observer WAS + deleting the contact_status when ast_sip_location_delete_contact was + called. By deleting it yourself in ast_sip_location_delete_contact + it was gone before the observer could run and the observer therefore + was throwing an error and not sending stasis/AMI/statsd messages. - The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0. - However, abs(INT_MIN) = INT_MIN and is still negative, as well as - abs(INT_MIN) % num_buckets, and as a result this led to a crash. + So, I don't think this was the cause of your original issue. I also + had verified the contact AMI and statsd lifecycle and it was working. + I'll double check now though. - One way to trigger the bug is using host=::80 or 0.0.0.128 in peer - configuration section in chan_sip or chan_iax. + ASTERISK-25675 + Reported-by: Daniel Journo - This patch takes the remainder before applying abs, so that bucket - number is always in range. + Change-Id: Ib586a6b7f90acb641b0c410f659743ab90e84f1a - ASTERISK-25100 #close - Reported by: Mark Petersen +2016-01-09 18:04 +0000 [79b4309881] Corey Farrell - Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899 -2015-05-23 04:36 +0000 [70d54ab6c4] Ivan Poddubny + * pbx_dundi: Run cleanup on failed load. - * res_pjsip_transport_websocket: Fix crash on receiving large SIP packets + During failed startup of pbx_dundi no cleanup was performed. Add a call + to unload_module before returning AST_MODULE_LOAD_DECLINE. - Incoming SIP packets larger than PJSIP_MAX_PKT_LEN were themselves - truncated before passing to pjsip_tpmgr_receive_packet, but the length - was passed unaltered, thus causing memory corruption and segfault. + ASTERISK-25677 #close - ASTERISK-25122 #close + Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29 - Change-Id: I608a6b6b7f229eacc33a0a7d771d18e27e5b08ab +2016-01-09 13:28 +0000 [a5406b1f9e] Corey Farrell -2015-05-22 21:50 +0000 [50044fdc15] Corey Farrell + * res_crypto: Perform cleanup at shutdown. - * Stasis: Fix unsafe use of stasis_unsubscribe in modules. + This change causes res_crypto to unregister CLI at shutdown while still + preventing the module from being unloaded. - Many uses of stasis_unsubscribe in modules can be reached through unload. - These have been switched to stasis_unsubscribe_and_join. + ASTERISK-25673 #close - Some subscription callbacks do nothing, for these I've created a noop - callback function in stasis.c. This is used by some modules that monitor - MWI topics in order to enable cache, since the callback does not become - invalid after dlclose it is safe to use stasis_unsubscribe on these, even - during module unload. + Change-Id: Ie5d57338dc2752abfc0dd05d0eec86413f2304fc - ASTERISK-25121 #close +2016-01-06 19:10 +0000 [cf8e7a580b] Richard Mudgett - Change-Id: Ifc2549fbd8eef7d703c222978e8f452e2972189c + * res_pjsip: Create human friendly serializer names. -2015-05-22 16:52 +0000 [5a1f2a5884] Corey Farrell + PJSIP name formats: + pjsip/aor/- -- registrar thread pool serializer + pjsip/default- -- default thread pool serializer + pjsip/messaging -- messaging thread pool serializer + pjsip/outreg/- -- outbound registration thread pool + serializer + pjsip/pubsub/- -- pubsub thread pool serializer + pjsip/refer/- -- REFER thread pool serializer + pjsip/session/- -- session thread pool serializer + pjsip/websocket- -- websocket thread pool serializer - * Astobj2: Run weakproxy subscription callbacks in reverse order. + Change-Id: Iff9df8da3ddae1132cb2ef65f64df0c465c5e084 - Modify ao2_weakproxy_subscribe so each new subscription is added - to the head of the list. This ensures that when other objects - are allocated and use a subscription to the weakproxy for cleanup, - cleanup will occur in the correct order. +2016-01-06 19:09 +0000 [4276f185f0] Richard Mudgett - ASTERISK-25120 #close + * Sorcery: Create human friendly serializer names. - Change-Id: Ie0476f08ec21330de1b3f5a2dd3d9eb683df3d3d + Sorcery name formats: + sorcery/- -- Sorcery thread pool serializer -2015-05-22 12:22 +0000 [f66c41e668] Matt Jordan + Change-Id: Idc2e5d3dbab15c825b97c38c028319a0d2315c47 - * res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS +2016-01-06 19:09 +0000 [f02ac1b7f9] Richard Mudgett - In addition to specifying lists of 'presence' and 'message-summary', - users can also create lists of type 'dialog'. These should be treated in - the same fashion as 'presence'. + * Stasis: Create human friendly taskprocessor/serializer names. - Change-Id: I583bb69cd9f88b0b29bf09ddaddeac4e84189f6e + Stasis name formats: + subm:- -- Stasis subscription mailbox task processor + subp:- -- Stasis subscription thread pool serializer -2015-05-22 12:18 +0000 [ad7192a8fd] Matt Jordan + Change-Id: Id19234b306e3594530bb040bc95d977f18ac7bfd - * res/res_pjsip_exten_state: Fix confusing NOTICE message +2016-01-07 16:15 +0000 [ec1f1c6742] Richard Mudgett - When a SUBSCRIBE request is made to a dialplan hint that doesn't exist, - the current NOTICE message informing users of this swaps the context and - extension parameters. This can cause a bit of confusion. + * taskprocessor.c: New API for human friendly taskprocessor names. - Thanks to CptBurger in #asterisk for helping to point this out. + * Add new API call to get a sequence number for use in human friendly + taskprocessor names. - Change-Id: Ie584d1a58ae217385c87a450ca25b55ca0e36e43 + * Add new API call to create a taskprocessor name in a given buffer and + append a sequence number. -2015-05-17 20:36 +0000 [9cffcca5f9] Matt Jordan + Change-Id: Iac458f05b45232315ed64aa31b1df05b875537a9 - * res/ari: Register Stasis application on WebSocket attempt +2016-01-06 17:19 +0000 [d8bc3e0c8b] Richard Mudgett - Prior to this patch, when a WebSocket connection is made, ARI would not - be informed of the connection until after the WebSocket layer had - accepted the connection. This created a brief race condition where the - ARI client would be notified that it was connected, a channel would be - sent into the Stasis dialplan application, but ARI would not yet have - registered the Stasis application presented in the HTTP request that - established the WebSocket. + * taskprocessor.c: Fix CLI "core show taskprocessors" output format. - This patch resolves this issue by doing the following: - * When a WebSocket attempt is made, a callback is made into the ARI - application layer, which verifies and registers the apps presented in - the HTTP request. Because we do not yet have a WebSocket, we cannot - have an event session for the corresponding applications. Some - defensive checks were thus added to make the application objects - tolerant to a NULL event session. - * When a WebSocket connection is made, the registered application is - updated with the newly created event session that wraps the WebSocket - connection. + Update the CLI "core show taskprocessors" output format to not be + distorted because UUID names are longer than previously used taskprocessor + names. - ASTERISK-24988 #close - Reported by: Joshua Colp + Change-Id: I1a5c82ce3e8f765a0627796aba87f8f7be077601 - Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636 +2016-01-07 21:07 +0000 [2c4b7502de] Richard Mudgett -2015-05-20 11:11 +0000 [29ef6571cb] gtjoseph + * taskprocessor.c: Fix CLI "core show taskprocessors" unref. - * res_pjsip: Refactor endpt_send_transaction (qualify_timeout) + Change-Id: I1d9f4e532caa6dfabe034745dd16d06134efdce5 - This patch refactors the transaction timeout processing to eliminate - calling the lower level public pjsip functions and reverts to calling - pjsip_endpt_send_request again. This is the result of me noticing - a possible incompatibility with pjproject-2.4 which was causing - contact status flapping. +2016-01-07 20:44 +0000 [3b33ac7a46] Richard Mudgett - The original version of this feature used the lower level calls to - get access to the tsx structure in order to cancel the transaction - when our own timer expires. Since we no longer have that access, - if our own timer expires before the pjsip timer, we call the callbacks - and just let the pjsip transaction take it's own course. When the - transaction ends, it discovers the callbacks have already been run - and just cleans itself up. + * taskprocessor.c: Sort CLI "core show taskprocessors" output. - A few messages in pjsip_configuration were also added/cleaned up. + Change-Id: I71e7bf57c7b908c8b8c71f1816348ed7c5a5d51e - ASTERISK-25105 #close +2016-01-06 19:00 +0000 [0fc32c4dd3] Richard Mudgett - Change-Id: I0810f3999cf63f3a72607bbecac36af0a957f33e - Reported-by: George Joseph - Tested-by: George Joseph -2015-05-20 17:35 +0000 [81d375baad] Joshua Colp + * ccss.c: Replace space in taskprocessor name. - * res_sorcery_memory_cache: Add support for object_lifetime_maximum. + The CLI "core ping taskprocessor" command does not work very + well with taskprocessor names that have spaces in them. You + have to put quotes around the name so using tab completion + becomes awkward. - This makes the "object_lifetime_maximum" option operational. + Change-Id: I29e806dd0a8a0256f4e2e0a7ab88c9e19ab0eda0 - On the addition of an object to an empty memory cache a scheduled - task is created which, when invoked, expires objects from the cache - which have exceeded their lifetime. If more objects have been added - the remaining life of the oldest object is used to schedule the - next invocation of the scheduled task. +2016-01-05 16:54 +0000 [0e0c24ad78] Richard Mudgett - If the oldest object is removed from the cache before it can be - expired automatically the scheduled task is cancelled, if possible, - and the lifetime of the next oldest is used to schedule the task. + * taskprocessor.c: Add CLI "core ping taskprocessor" missing unlock. - If during these two operations no additional objects exist in the - cache then no task is scheduled. + Change-Id: I78247e0faf978bf850b5ba4e9f4933ab3c59d17b - An additional unit test has been added which verifies this - functionality. +2016-01-07 03:33 +0000 [0f79c8839b] Diederik de Groot - ASTERISK-25067 - Reported by: Matt Jordan + * main: Use ast_strdup instead of strdup - Change-Id: I87409674674a508e7717ee20739ca15cec6ba7b6 + Fix compile error in main/utils.c because strdup was used in dummy_start -2015-05-20 00:45 +0000 [9e2a582d2d] demon-ru + Change-Id: Id61a6cf4f3cbf235450441e10e7da101a6335793 - * res_pjsip_outbound_registration: Check request URI for line. +2016-01-07 03:21 +0000 [4285dee778] Diederik de Groot - When an inbound call is received the To header is checked - for the "line" option. Some remote servers will place this - in the request URI instead. This adds an additional check for - the option in the request URI. + * include/asterisk/time.h: Renamed global declaration:tv - ASTERISK-25072 #close - Reported by: Dmitriy Serov + Renamed global declaration:tv to dummy_tv_var_for_types, + which would oltherwise cause 'shadow' warnings when 'tv' + was declared as a local variable elsewhere. - Change-Id: Id4e44debbb80baad623b914a88574371575353c8 + Added comment to note that dummy_tv_var_for_types is never + really exported and only used as a place holder. -2015-05-20 15:19 +0000 [071b3d43cb] Mark Michelson + ASTERISK-25627 #close - * res_sorcery_memory_cache: Add support for maximum_objects. + Change-Id: I9a6e17995006584f3627efe8988e3f8aa0f5dc28 - This makes the "maximum_objects" option operational. +2016-01-07 15:37 +0000 [96094feab6] Mark Michelson - A heap has been added alongside the hash table in the cache. When - objects are added to the cache, they are also added to the heap. - Similarly, when objects are removed from the cache, they are removed - from the heap. + * PJSIP: Prevent deadlock due to dialog/transaction lock inversion. - The heap's use comes into play when an item is to be added to a "full" - cache. When the cache is full, the oldest item is removed from the - cache, using the heap to determine the oldest item. + A deadlock was observed where the monitor thread was stuck, therefore + resulting in no incoming SIP traffic being processed. - A unit test has been added that verifies that the maximum_objects option - works as expected and that the oldest object is removed from the cache - when an object beyond the maximum is added. + The problem occurred when two 200 OK responses arrived in response to a + terminating NOTIFY request sent from Asterisk. The first 200 OK was + dispatched to a threadpool worker, who locked the corresponding + transaction. The second 200 OK arrived, resulting in the monitor thread + locking the dialog. At this point, the two threads are at odds, because + the monitor thread attempts to lock the transaction, and the threadpool + thread loops attempting to try to lock the dialog. - ASTERISK-25067 #close - Reported by Matt Jordan + In this case, the fix is to not have the monitor thread attempt to hold + both the dialog and transaction locks at the same time. Instead, we + release the dialog lock before attempting to lock the transaction. - Change-Id: I490658830e9c4cbf0b3051e4cdc4913cf9f1b73a + There have also been some debug messages added to the process in an + attempt to make it more clear what is going on in the process. -2015-05-16 17:02 +0000 [f2cc766d81] Joshua Colp + ASTERISK-25668 #close + Reported by Mark Michelson - * res_sorcery_memory_cache: Add basic module implementation. + Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a - This change adds a basic res_sorcery_memory_cache module which implements - configuration option parsing, configuration file parsing for threading, - sorcery interface implementation, and unit tests. +2016-01-07 09:39 +0000 [52e9de0016] Corey Farrell - Objects can be added, updated, deleted, and retrieved from the memory - cache. Automatic expiration and stale handling will be added in the - future. + * ast_format_cap_append_by_type: Resolve codec reference leak. - Note that unit tests exist within the module itself in case the - threading done as a result of expiration results in asynchronous - actions (which it likely will). Providing access and a notification - mechanism for an external test module would be complicated and - not worth it. + This resolves a reference leak caused by ASTERISK-25535. The pointer + returned by ast_format_get_codec is saved so it can be released. - ASTERISK-25067 #close - Reported by: Matt Jordan + ASTERISK-25664 #close - Change-Id: Id8a6a357ef5a83d466f81eee56a67d13eeb118b9 + Change-Id: If9941b1bf4320b2c59056546d6bce9422726d1ec -2015-05-21 17:51 +0000 [36e5402885] Corey Farrell +2016-01-04 04:26 +0000 [86eae38d7e] Aaron An - * res_mwi_external_ami: Use module version of AMI registration. + * cel/cel_radius: Fix wrong pointer. - Use ast_manager_register_xml for res_mwi_external_ami manager - actions. This ensures the module is held open while any of - the actions are being run. + The macro ADD_VENDOR_CODE defined in the cel_radius.c should use the parameter + y not the address of y. - ASTERISK-25117 #close - Reported by: Corey Farrell + I capture the radius UDP packet via tcpdump, and the AV pairs are not correct, + then i review the source code and compare it with cdr/cdr_radius.c. Fix it and + it works. - Change-Id: Iececfdc2da498b2c32b9e09042f5f12292007ac7 + ASTERISK-25647 #close + Reported by: Aaron An + Tested by: Aaron An -2015-05-21 13:05 +0000 [3e2a994c71] Matt Jordan + Change-Id: I72889bccd8fde120d47aa659edc0e7e6d4d019f0 - * ARI: Update version to 1.7.0 +2016-01-05 14:52 +0000 [881dc862e0] gtjoseph - This patch updates the version of ARI to 1.7.0 to reflect the backwards - compatible changes that will be introduced in 13.4.0. + * asterisk.h: Add ASTERISK_REGISTER_FILE macro - Change-Id: I6c36e6144da426412f25828a868e4df916bff60a - (cherry picked from commit 9d8a462356a938eea82e8424242d89a682495b57) + The 11/13 branches and master use 2 different file version macros. 11/13 + uses ASTERISK_FILE_VERSION but master uses ASTERISK_REGISTER_FILE. This + means a new file added to 11/13 can't just be cherry-picked to master + because the macro has to be changed. -2015-05-20 20:53 +0000 [d067847695] Corey Farrell + To make cherry-picking possible, ASTERISK_REGISTER_FILE was added + to asterisk.h as a simple alias for ASTERISK_FILE_VERSION(__FILE__, NULL) + The "$Revision$" tag doesn't do anything since Asterisk moved to git so + just passing NULL as the verison works fine. asterisk.h was also + annotated to deprecate ASTERISK_FILE_VERSION and suggest using + ASTERISK_REGISTER_FILE for all new files. - * Logger: Reset defaults before processing config. + Finally, 2 recent file additions, pbx_builtins.c and pbx_functions.c, + were modified to use the new macro to make sure it actually worked. + 'core show file version' showed the correct output. - Reset options to default values before reloading config. This ensures - that if a setting is removed or commented out of the configuration file - it is unset on reload. + Change-Id: I5867ed898818d26ee49bb6e5c7d4c1a45d4789a5 - ASTERISK-25112 #close - Reported by: Corey Farrell +2016-01-05 11:06 +0000 [d228b62fd4] gtjoseph - Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd + * stasis_cache_pattern: Backport to 13 -2015-05-20 19:05 +0000 [31f0d78d7b] gtjoseph + Somehow stasis_cache_pattern got out of sync between 13 and master + and it was causing duplicate channel message issues in 13 when + related to a specific endpoint. I.E. from statsd, + 'endpoints.PJSIP.1174.channels 0|g' was being emitted twice. - * app_playback: Suppress warnings on playback if channel hung up + Backporting stasis_cache_pattern from master to 13 solved + the issue and running the unit and testsuite tests confirmed + that no new ones were created. - If a channel hangs up while an audio file is playing, there's - no need to clutter up the logs with a warning so suppress it - if ast_check_hangup returns true. + ASTERISK-25317 #close - Also, change warning to debug/2 in file.c if writing a frame - fails. Same reasoning. + Change-Id: Ia8707462f62d15eed14541c37f332a7bbbceb548 +2016-01-04 20:23 +0000 [e462f0063f] Corey Farrell - Change-Id: I2e66191af3c5b6e951c98e8f1c3fe3cf2cf7ed89 - Reported-by: George Joseph - Tested-by: George Joseph + * main/pbx: Move hangup handler routines to pbx_hangup_handler.c. -2015-04-20 16:00 +0000 [83ff268b9e] Yousf Ateya + This is the sixth patch in a series meant to reduce the bulk of pbx.c. + This moves hangup handler management functions to their own source. - * chan_iax2: Prevent deadlock between hangup and sending lagrq/ping + Change-Id: Ib25a75aa57fc7d5c4294479e5cc46775912fb104 - channels/chan_iax.c: Prevent the deadlock between iax2_hangup and send_lagrq/ - send_ping. This deadlock happens because the scheduled task send_lagrq(or - send_ping) starts execution after the call hangup procedure starts but before - it deletes the tasks in the scheduler. +2016-01-04 19:46 +0000 [ab191d124c] Corey Farrell - The solution is to delete scheduled lagrq (and ping) task asynchronously - (i.e. schedule AST_SCHED_DEL for these tasks); By this, AST_SCHED_DEL will - be called in a new context (doesn't have callno locked). + * main/pbx: Move dialplan application management routines to pbx_app.c. - This commit also cleans up the procedure of sending LAGRQ and PING. + This is the sixth patch in a series meant to reduce the bulk of pbx.c. + This moves dialplan application management functions to their own source. - main/sched.c: Do not assert when deleting non existant entry from scheduler. - This assert seems to be the reason for a lot of awkward code to avoid it. + Change-Id: I444c10fb90a3cdf9f3047605d6a8aad49c22c44c - ASTERISK-24983 #close - Reported by: Y Ateya +2016-01-04 18:20 +0000 [09a9b93896] Corey Farrell - Change-Id: I03bec1fc8faacb89630269e935fa667c6d6c080c + * main/pbx: Move switch routines to pbx_switch.c. -2015-05-14 15:21 +0000 [7bf88eb60d] Kevin Harwell + This is the fifth patch in a series meant to reduce the bulk of pbx.c. + This moves ast_switch functions to their own source. - * audiohook.c: Difference in read/write rates caused continuous buffer resets + Change-Id: Ic2592a18a5c4d8a3c2dcf9786c9a6f650a8c628e - Currently, everytime a sample rate change occurs (on read or write) the - associated factory buffers are reset. If the requested sample rate on a - read differed from that of a write then the buffers are continually reset - on every read and write. This has the side effect of emptying the buffer, - thus there being no data to read and then write to a file in the case of - call recording. +2016-01-04 18:00 +0000 [c608274a39] Corey Farrell - This patch fixes it so that an audiohook_list's rate always maintains the - maximum sample rate among hooks and formats. Audiohook sample rates are - only overwritten by this value when slin native compatibility is turned on. - Also, the audiohook sample rate can only overwrite the list's sample rate - when its rate is greater than that of the list or if compatibility is - turned off. This keeps the rate from constantly switching/resetting. + * main/pbx: Move timing routines to pbx_timing.c. - ASTERISK-24944 #close - Reported by: Ronald Raikes + This is the fourth patch in a series meant to reduce the bulk of pbx.c. + This moves pbx timing functions to their own source. - Change-Id: Idab4dfef068a7922c09cc631dda27bc920a6c76f + Change-Id: I05c45186cb11edfc901e95f6be4e6a8abf129cd6 -2015-05-13 09:55 +0000 [5ce54ed74a] Matt Jordan +2015-12-29 04:31 +0000 [338a8ffed6] Martin Tomec - * res/res_http_websocket: Add a pre-session established callback + * app_queue: Add member flag "in_call" to prevent reading wrong lastcall time - This patch updates http_websocket and its corresponding implementation - with a pre-session established callback. This callback allows for - WebSocket server consumers to be notified when a WebSocket connection is - attempted, but before we accept it. Consumers can choose to reject the - connection, if their application specific logic allows for it. + Member lastcall time is updated later than member status. There was chance to + check wrapuptime for available member with wrong (old) lastcall time. + New boolean flag "in_call" is set to true right before connecting call, and + reset to false after update of lastcall time. Members with "in_call" set to true + are treat as unavailable. - As a result, this patch pulls out the previously private - websocket_protocol struct and makes it public, as - ast_websocket_protocol. In order to preserve backwards compatibility - with existing modules, the existing APIs were left as-is, and new APIs - were added for the creation of the ast_websocket_protocol as well as for - adding a sub-protocol to a WebSocket server. + ASTERISK-19820 #close - In particular, the following new API calls were added: - * ast_websocket_add_protocol2 - add a protocol to the core WebSocket - server - * ast_websocket_server_add_protocol2 - add a protocol to a specific - WebSocket server - * ast_websocket_sub_protocol_alloc - allocate a sub-protocol object. - Consumers can populate this with whatever callbacks they wish to - support, then add it to the core server or a specified server. + Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500 - ASTERISK-24988 - Reported by: Joshua Colp +2015-12-28 17:23 +0000 [e13719bff1] Rodrigo Ramírez Norambuena - Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2 + * app_queue: Added reason pause of member -2015-05-20 12:55 +0000 [ddb7cbef8e] John Bigelow + In app_queue added value Paused Reason on QueueMemberStatus when a member + on queue is paused and the reason was set. - * res/res_resolver_unbound.c: Add missing include of signal.h + ASTERISK-25480 #close + Reporte by: Rodrigo Ramírez Norambuena - ASTERISK-25110 #close - Reported by: John Bigelow + Change-Id: Ia5db503482f50764c15e2020196c785f59d4a68e - Change-Id: I99a9d93f066f265357b647b8e99a75e45da5a39f +2015-12-30 10:49 +0000 [4ec85a9f07] gtjoseph -2015-05-06 21:18 +0000 [9c3c7797e5] Rodrigo Ramírez Norambuena + * voicemail: Move app_voicemail / res_mwi_external conflict to runtime - * cel, cdr: Assigned separator for column name and values. + The menuselect conflict between app_voicemail and res_mwi_external + makes it hard to package 1 version of Asterisk. There no actual + build dependencies between the 2 so moving this check to runtime + seems like a better solution. - Use a separator string between column names and values for SQL sentences - instead of evaluating the separator to use each time. + The ast_vm_register and ast_vm_greeter_register functions in app.c + were modified to return AST_MODULE_LOAD_DECLINE instead of -1 if there + is already a voicemail module registered. The modules' load_module + functions were then modified to return DECLINE instead of -1 to the + loader. Since -1 is interpreted by the loader as AST_MODULE_LOAD_FAILURE, + the modules were incorrectly causing Asterisk to stop so this needed + to be cleaned up anyway. - This change adds a space after the comma in constructing SQL sentences. - Before the SQL was created like "INSERT INTO cdr(calldate,clid,dst" - without spaces between column name and values. + Now you can build both and use modules.conf to decide which voicemail + implementation to load. - The files applied this change are cdr/cdr_adaptive_odbc.c, cdr/cdr_pgsql.c, - cel/cel_odbc.c + The default menuselect options still build app_voicemail and not + res_mwi_external but if both ARE built, res_mwi_external will load + first and become the voicemail provider unless modules.conf rules + prevent it. This is noted in CHANGES. - ASTERISK-25109 #close - Reported By: Rodrigo Ramírez Norambuena + Change-Id: I7d98d4e8a3b87b8df9e51c2608f0da6ddfb89247 - Change-Id: Ia5a1a161f5e26e1643703b30f8cc9cf0860cc7ea +2016-01-04 16:22 +0000 [7fdcfd7724] Corey Farrell -2015-05-17 07:15 +0000 [d8698b7f3f] Matt Jordan + * main/pbx: Move variable routines to pbx_variables.c. - * doxygen: Fix doxygen errors + This is the third patch in a series meant to reduce the bulk of pbx.c. + This moves channel and global variable routines to their own source. - This patch fixes a number of errors and warning messages in the doxygen - log. Specifically, it addresses: - * A number of files incorrectly places a '\brief' tag immediately after - a '\file' tag. Doing so emits a warning, as '\file' takes an optional - argument specifying which file the doxygen comment is for. As '\brief' - is not a file, doxygen was unamused. - * A grouping of Stasis Topics and Messages in rtp_engine.h was - incorrectly terminated. We now correctly terminate the grouping, which - prevents members of rtp_engine.h from showing up in the wrong group. - * Group indicators which are not part of the Stasis Topics and Messages - group were removed. Group indicators without an \addtogroup or - \ingroup have no meaning. + Change-Id: Ibe8fb4647db11598591d443a99e3f99200a56bc6 - Change-Id: Ia1415ffec6767e27233ae1cae5ed5970de5656d4 +2015-12-04 17:22 +0000 [80a8b2a4cd] Richard Mudgett -2015-05-19 13:01 +0000 [d2e998cd68] Corey Edwards + * app_dial: Immediately exit dial if the caller is already hung up. - * main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits + If a caller hangs up before dial is executed within an AGI then the AGI + has likely eaten all queued frames before executing the dial in DeadAGI + mode. With the caller hung up and no pending frames from the caller's + read queue, dial would not know that the call has hung up until a called + channel answers. It is rather annoying to whoever just answered the + non-existent call. - ASTERISK-24887 #close - Reported by: Makoto Dei - Tested by: tensai + Dial should not continue execution in DeadAGI mode, hangup handlers, or + the h exten. - Change-Id: I6a96f572adb17f76b3acafe503a01c48eb5dd9bf -2015-05-14 22:05 +0000 [17129d2c29] snuffy + * Added a check early in dial to abort dialing if the caller has hungup. - * chan_pjsip: Fix crash during off-nominal when no endpoint specified. + ASTERISK-25307 #close + Reported by: David Cunningham - Add missing return -1 when no endpoint name is specified. + Change-Id: Icd1bc0764726ef8c809f76743ca008d0f102f418 - ASTERISK-25086 #close - Reported by: snuffy +2016-01-02 10:26 +0000 [1087b0c6ed] Matt Jordan - Change-Id: I9de76c2935a1f4e3f0cffe97a670106f5605e89e -2015-05-14 18:01 +0000 [5d93928175] gtjoseph + * main/cdr: Allow setting properties on a finalized CDR if it is the last one - * res_pjsip_config_wizard/config: Fix template processing + Prior to this patch, we explicitly disallowed setting any properties on a + finalized CDR. This seemed like a good idea at the time; in practice, it was + more restrictive. - The config wizard was always pulling the first occurrence of - a variable from an ast_variable list but this gets the template - value from the list instead of any overridden value. This patch - creates ast_variable_find_last_in_list() in config.c and updates - res_pjsip_config_wizard to use it instead of - ast_variable_find_in_list. Now the overridden values, where they - exist, are used instead of template variables. + There are weird and strange scenarios where setting a property on a finalized + CDR is definitely wrong. For example, we may Fork a CDR, finalizing the + previous one, then change a property. In said case, the old CDR is supposed + to now be 'immutable' (so to speak), and should not be updated. From the + perspective of the code, a forked CDR that is finalized is just finalized. + Hence why we decided these should not be updated. - Updated test_config to test the new API. + In practice, it is much more common to want to set a property on a CDR in + the h extension or in a hangup handler. Disallowing a common scenario to make + an esoteric behaviour work isn't good. This patch fixes this by allowing + callers to set a property IF we are the last CDR in the chain. This preserves + the finalized CDR if it was forked, while allowing the more common case to + function. - ASTERISK-25089 #close + ASTERISK-25458 #close - Reported-by: George Joseph - Tested-by: George Joseph - Change-Id: Ifa7ddefc956a463923ee6839dd1ebe021c299de4 + Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9 -2015-05-15 01:54 +0000 [e48d29054f] snuffy +2016-01-02 10:23 +0000 [1f23e65b89] Matt Jordan - * cdr: Fix 'core show channel' CDR variable truncation. + * main/cdr: Set the end time on a CDR if endbeforehexten is Yes - When the new Bridging API was implemented, the workspace variable - changed to a malloc'd string, causing sizeof() to always be 8 (char). + Prior to this patch, the CDR engine attempted to set the end time on a CDR + that was executing hangup logic and with endbeforehexten set to Yes by + calling a function that inspects the properties on the Party A snapshot to + determine if we are ready to set the end time. That always failed. This is + because a Party A snapshot is not updated for CDRs that are executing hangup + logic with endbeforehexten=Yes. - Revert back to stored on stack string for workspace. + Instead of calling a function that looks at the Party A snapshot, we just + simply set the end time on the CDR. This is safe to call multiple times, and is + safe to call at this point as we know that (a) we are executing hangup logic, + and (b) we are supposed to set the end time at this point. - ASTERISK-25090 #close + ASTERISK-25458 - Change-Id: I51e610ae87371df771ce7693a955510efb90f8f7 -2015-05-10 09:55 +0000 [8f3f414d8c] Alexander Traud (License 6520) + Change-Id: I0c27b493861f9c13c43addbbb21257f79047a3b3 - * tcptls: Enable multiple TLS certificate chains (RSA+ECC+DSA) for server socket. +2015-12-30 20:51 +0000 [2ffade4574] Corey Farrell - When a client connects to a server via SSL/TLS, the server commonly utilizes an - RSA key-pair. However, other such algorithms exist (i.e. DSA and ECDSA), and if - the server socket is configured with a certificate for either one of those, it - would lose its compatibility with RSA-only clients. + * main/pbx: Move custom function routines to pbx_functions.c. - Now, the server socket can be configured with up to one RSA, ECDSA and DSA key - each. For example, if a client is not compatible with SHA-2 hashed certificates - like Nokia mobile phones, the server socket still can use RSA/SHA-1 for legacy - clients and ECDSA/SHA-2 for everyone else. + This is the second patch in a series meant to reduce the bulk of pbx.c. + This moves custom function management routines to their own source. - ASTERISK-24815 #close - Reported by: Alexander Traud - patches: - tls_rsa_ecc_dsa.patch uploaded by Alexander Traud (License 6520) + Change-Id: I34a6190282f781cdbbd3ce9d3adeac3c3805e177 - Change-Id: Iada5e00d326db5ef86e0af7069b4dfa1b979da9a +2015-12-28 19:18 +0000 [20b8474f20] gtjoseph -2015-05-14 17:12 +0000 [2415a14ce9] Maciej Szmigiero + * main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c - * Add X.509 subject alternative name support to TLS certificate - verification. + We joked about splitting pbx.c into multiple files but this first step was + fairly easy. All of the pbx_builtin dialplan applications have been moved + into pbx_builtins.c and a new pbx_private.h file was added. load_pbx_builtins() + is called by asterisk.c just after load_pbx(). - This way one X.509 certificate can be used for hosts that - can be reached under multiple DNS names or for multiple hosts. + A few functions were renamed and are cross-exposed between the 2 source files. - Signed-off-by: Maciej Szmigiero + Change-Id: I87066be3dbf7f5822942ac1449d98cc43fc7561a - ASTERISK-25063 #close +2015-12-24 20:26 +0000 [e4a566918a] Matt Jordan - Change-Id: I13302c80490a0b44c43f1b45376c9bd7b15a538f + * tests/test_stasis_endpoints: Remove expected duplicate events -2015-05-13 15:41 +0000 [3e89f01b55] Jonathan Rose + The cache_clear test was written to expect duplicate Stasis messages + sent from the technology endpoint to the all caching topic. This patch + fixes the test to no longer expect these duplicate messages. - * Message.c: Clear message channel frames on cleanup + ASTERISK-25137 - The message channel is a special channel that doesn't actually process frames. - However, certain actions can cause frames to be placed in the channel's read - queue including the Hangup application which is called on the channel after - each message is processed. Since the channel will continually be reused for - many messages, it's necessary to flush these frames at some point. + Change-Id: I58075d70d6cdf42e792e0fb63ba624720bfce981 - ASTERISK-25083 #close - Reported by: Jonathan Rose +2015-12-28 14:02 +0000 [a280400758] Joshua Colp - Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f + * test_time: Provide a timeout when waiting. -2015-05-14 00:06 +0000 [0a46d43b9c] Corey Farrell + The test_timezone_watch unit test is written to expect a + condition to be signaled when the inotify daemon thread runs. + There exists a small window where the test_timezone_watch + thread can signal the inotify daemon thread while it is not + reading on the underlying file descriptor. If this occurs + the test_timezone_watch thread will wait indefinitely for a + signal that will never arrive. - * Fix potential crash after unload of func_periodic_hook or test_message. + This change adds a timeout to the condition so it will return + regardless after a period of time. - These modules save a pointer to the context they create on load, and - use that pointer to destroy the context at unload. It is not safe - to save this pointer, it is replaced during load of pbx_config, - pbx_lua or pbx_ael. + Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390 - This change causes the modules to pass NULL to ast_context_destroy, - a safer way to perform the unregistration since it does not use - a pointer that could become invalid. +2015-05-27 13:22 +0000 [3a1c4885be] gtjoseph - ASTERISK-25085 #close - Reported by: Corey Farrell + * endpoint/stasis: Eliminate duplicate events on endpoint status change - Change-Id: I6a00ec8e38046058f97dc703e1adcde9bf517835 + When an endpoint is created, its messages are forwarded to both the tech + endpoint topic and the all endpoints topic. This is done so that various + parties interested in endpoint messages can subscribe to just the tech + endpoint and receive all messages associated with that particular technology, + as opposed to subscribing to the all endpoints topic. Unfortunately, when the + tech endpoint is created, it also forwards all of its messages to the all + topic. This results in duplicate messages whenever an endpoint publishes its + messages. -2015-05-12 08:58 +0000 [478fb4a388] Corey Farrell + This patch resolves the duplicate message issue by creating a new function + for Stasis caching topics, stasis_cp_sink_create. In most respects, this acts + as a normal caching topic, save that it no longer forwards messages it receives + to the all endpoints topic. This allows it to act as an aggregation "sink", + while preserving the necessary caching behaviour. - * MALLOC_DEBUG: Replace WRAP_LIBC_MALLOC with ASTMM_LIBC. + ASTERISK-25137 #close + Reported-by: Vitezslav Novy - There are 3 ways that calls directly to standard allocator functions can - be dealt with: - 1. Block their use, cause them to generate an error. This is the default. - 2. Replace them with the Asterisk equivalent function calls. - 3. Leave them alone. + ASTERISK-25116 #close + Reported-by: George Joseph + Tested-by: George Joseph - This change allows one of these 3 options to be selected by any source. - The source just needs to define ASTMM_LIBC to ASTMM_BLOCK, ASTMM_REDIRECT, - or ASTMM_IGNORE to use option 1, 2 or 3 respectively. Normally ASTMM_BLOCK - is the correct option, so it is default when ASTMM_LIBC is not defined. - In some cases when building 3rd party code it is desirable to have it use - Asterisk functions, without changing the whole source - ASTMM_REDIRECT - accomplishes this. When using 3rd party libraries sometimes a static - inline function will make use of malloc or free. In these cases it may - be unsafe to replace the allocator in the header, as it's possible the - memory could be freed by the library using standard allocators. For - those cases ASTMM_IGNORE is needed. + Change-Id: Ie47784adfb973ab0063e59fc18f390d7dd26d17b +2015-12-24 22:19 +0000 [136c537695] Dade Brandon - Change-Id: I8afef4bc7f3b93914263ae27d3a5858b69663fc7 + * res_http_websocket.c: prevent avoidable disconnections caused by write errors -2015-05-05 19:49 +0000 [eec010829a] Rodrigo Ramírez Norambuena + Updated ast_websocket_write to encode the entire frame in to one + write operation, to ensure that we don't end up with a situation + where the websocket header has been sent, while the body can not + be written. - * AST_MODULE_INFO: Format corrections to the usages of AST_MODULE_INFO macro. + Previous to August's patch in commit b9bd3c14, certain network + conditions could cause the header to be written, and then the + sub-sequent body to fail - which would cause the next successful + write to contain a new header, and a new body (resulting in + the peer receiving two headers - the second of which would be + read as part of the body for the first header). - Change-Id: Icf88f9f861c6b2a16e5f626ff25795218a6f2723 -2015-05-06 05:28 +0000 [46bb8449e8] Rodrigo Ramírez Norambuena + This was patched to have both write operations individually fail + by closing the websocket. - * cel/cel_pgsql.c: Use the 'SEP' macro when appending a column name + In a case available to the submitter of this patch, the same + body which would consistently fail to write, would succeed + if written at the same time as the header. - When appending a column name to the sql buffer, the predicate, "if first is - non-null, use empty string; else, use comma", is identical to the 'SEP' macro - definition. Since they are the same, this patch replaces the redundant - predicate statement with the 'SEP' macro. + This update merges the two operations in to one, adds debug messages + indicating the reason for a websocket connection being closed during + a write operation, and clarifies some variable names for code legibility. - Change-Id: Ib8b6138b06a48381723108a05ab8752cb8700509 -2015-05-12 17:45 +0000 [0d97d7cb94] Jonathan Rose + Change-Id: I4db7a586af1c7a57184c31d3d55bf146f1a40598 - * app_voicemail: fix moving when old messages full +2015-12-27 22:38 +0000 [f2efbb5d75] Corey Farrell - When completing voicemail playback of a message in the 'INBOX', the - message gets moved to the 'Old' messages folder. Without this patch, if - the 'Old' folder is already at its set limit, then the 'INBOX' message will - simply be deleted. With this patch, the flag to delete the message will be - removed if the save_to_folder function indicates that the message could - not be moved due to a full folder. + * Remove res_jabber file that was left behind. - ASTERISK-25082 #close - Reported by: Jonathan Rose - Review: https://gerrit.asterisk.org/#/c/448/ + Change-Id: I9d88fac0394d5bbaff0900a2ee911c4e4478846b - Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f -2015-05-12 17:34 +0000 [0bb0d4a603] Richard Mudgett +2015-12-13 13:09 +0000 [dde7f3c1c4] Matt Jordan - * chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision. + * res_pjsip_history: Add a module that provides PJSIP history for debugging - If an ISDN call is hungup by both sides at the same time a crash could - happen. + This patch adds a new module, res_pjsip_history, that provides a slightly + better way of debugging SIP message traffic on a busy Asterisk system. The + existing mechanisms all rely on passively dumping a SIP message to the CLI. + While this is perfectly fine for logging purposes and well controlled + environments, on many installations, the amount of SIP messages Asterisk + receives will quickly swamp the CLI. This makes it difficult to view/capture + those messages that you want to diagnose in real time. - * Added missing NULL checks for the owner channel after calling - pri_queue_pvt_cause_data() in two places. Code after those calls need to - check the owner channel pointer for NULL before use because - pri_queue_pvt_cause_data() needs to do deadlock avoidance to lock the - owner and the owner may get hung up. + This patch provides another way of handling this. When enabled, the module + will store SIP message traffic in memory. This traffic can then be queried + at leisure. - ASTERISK-21893 #close - Reported by: Alexandr Gordeev + In order to make the querying useful, a CLI command has been implemented, + 'pjsip show history', that supports a basic expression syntax similar to + SQL or other query languages. A small number of useful fields have been + added in this initial patch; additional fields can easily be added in + later improvements. Those fields are: + - number: The entry index in the history + - timestamp: The time the message was recieved + - addr: The source/destination address of the message + - sip.msg.request.method: The request method + - sip.msg.call-id: The Call-ID header - Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a + Note - this is a resurrection of the module initially proposed on Review Board + here: https://reviewboard.asterisk.org/r/4053/ -2015-05-06 08:31 +0000 [57386dcb67] Corey Farrell + Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36 - * Allow command-line options to override asterisk.conf. +2015-12-25 09:56 +0000 [be050f2638] Dade Brandon - Previous versions of Asterisk processed command-line options before - processing asterisk.conf. This meant that if an option was set in - asterisk.conf, it could not be overridden with the equivelent command - line option. This change causes Asterisk to process the command-line - twice. First it processes options that are needed to load asterisk.conf, - then it processes the remaining options after the config is read. + * chan_sip.c: fix websocket_write_timeout default value - This changes the function of -X slightly. Previously using -X without - disabling execincludes in asterisk.conf caused #exec to be usable in any - config. Now -X only enables #exec for the load of asterisk.conf, if it - is wanted in the rest of the system it must be enabled with execincludes - in asterisk.conf. Updated 'asterisk -h' and 'man asterisk' to reflect - the limited function of -X. + websocket_write_timeout was not being set to its default value + during sip config reload, which meant that prior to this commit, + 1) the default value of 100 was not used, unless an invalid value + (or 1) was specified in sip.conf for websocket_write_timeout, and + 2) if the websocket_write_timeout directive was removed from sip.conf + without a full restart of asterisk, then the previous value would + continue to be used indefinitely. - ASTERISK-25042 #close - Reported by: Corey Farrell + This essentially lead to a 0ms write timeout (the first write attempt + in ast_careful_fwrite must have succeeded) in websocket write requests + from chan_sip, unless websocket_write_timeout was explicitely set in sip.conf. - Change-Id: I1450d45c15b4467274b871914d893ed4f6564cd7 + Changes to websocket_write_timeout still only apply to new websocket + sessions, after the sip reload -- timeouts on existing sessions are + not adjusted during sip reload. -2015-05-05 15:32 +0000 [52407088f8] gtjoseph + Change-Id: Ibed3816ed29cc354af6564c5ab3e75eab72cb953 - * sorcery: Add API to insert/remove a wizard to/from an object type's list +2015-12-23 17:40 +0000 [b3024cad10] Richard Mudgett - Currently you can 'apply' a wizard to an object type but the wizard - always goes at the end of the object type's wizard list. This patch - adds a new ast_sorcery_insert_wizard_mapping function that allows - you to insert a wizard anyplace in the list. I.E. You could - add a caching wizard to an object type and place it before all - wizards. + * bridge_basic.c: Fix GOTO_ON_BLINDXFR - ast_sorcery_get_wizard_mapping_count and - ast_sorcery_get_wizard_mapping were added to allow examination - of the mapping list. + Use of GOTO_ON_BLINDXFR would not work at all. The target location would + never be executed by the transferring channel. - ast_sorcery_remove_mapping was added to remove a mapping by name. + * Made feature_blind_transfer() call ast_bridge_set_after_go_on() with + valid context, exten, and priority parameters from the transferring + channel. - As part of this patch, the object type's wizard list was converted - from an ao2_container to an AST_VECTOR_RW. + * Renamed some feature_blind_transfer() local variables for clarity. - A new test was added to test_sorcery for this capability. + ASTERISK-25641 #close + Reported by Dmitry Melekhov - ASTERISK-25044 #close + Change-Id: I19bead9ffdc4aee8d58c654ca05a198da1e4b7ac - Change-Id: I9d2469a9296b2698082c0989e25e6848dc403b57 +2015-12-24 12:19 +0000 [0a9941de9d] Matt Jordan -2015-05-12 01:31 +0000 [cc853dcf90] Corey Farrell + * res/res_pjsip_location: Delete contact_status object when contact is deleted - * Fix processing of asterisk.conf debug=yes. + In 450579e908, a change was made that removed the deletion of the + 'contact_status' object when a 'contact' object is deleted in sorcery. + This unfortunately means that the 'contact_status' object persists, even when + something has explicitly removed a contact. The result is that the state of + the contact will not be regenerated if that contact is re-created, and the + stale state will be reported/used for that contact. It also results in + no ContactStatusChanged events being generated for either ARI or AMI. - The code which reads asterisk.conf supports processing the debug - option with ast_true, but ast_true returns -1. This causes debug - to still be off, convert to 1 so debug will be on as requested. + This patch restores the deletion logic that was removed. Doing so now + results in the expected events being generated again. - ASTERISK-25042 - Reported by: Corey Farrell + Change-Id: I28789a112e845072308b5b34522690e3faf58f07 - Change-Id: I3c898b7d082d914b057e111b9357fde46bad9ed6 +2015-12-24 10:18 +0000 [1e24a0ca8a] Kevin Harwell -2015-05-10 02:26 +0000 [c624e4bae1] Sebastian Kemper + * res_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef - * General: Fix recent menuselect-related cross compile regression + Change-Id: I19b49112e1b630bd04e859f14ccf96f8ebd6b151 - MAKE_MENUSELECT currently sets CC to CC, which is the compiler for the - target platform. But menuselect is to be run on the build system, so - BUILD_CC needs to be used instead - like it was in the past, before the - recent changes (https://reviewboard.asterisk.org/r/4370/). This is the - patch for ASTERISK-25074. +2015-12-20 21:33 +0000 [1d3d20dd68] Dade Brandon - ASTERISK-25074 #close - Reported by: Sebastian Kemper - Tested by: Sebastian Kemper + * app_amd: Correct documentation to reflect functionality - Change-Id: I8a2b1fc5deb6ad2b80f49baca35b1b13d468ebf8 -2015-05-01 12:22 +0000 [e6daafb8a6] Rodrigo Ramírez Norambuena + Update documentation to reflect that maximum_number_of_words + has functionality inconsistent with the variable name (and inconsistent + with prior documentation.) - * cdr_pgsql, cel_pgsql: Store maximum buffer size to prevent reallocation + Update documentation for silence_threshold, which previously implied + that it was measuring time, rather than noise averages in the sample. - The code previously used a fixed size of 512 for the SQL - queries. Depending on the size this may require it to grow. + Update the comments in amd.conf.sample. - This change makes it so if the buffer size does grow the size - is stored and next time the buffer will be large enough. + ASTERISK-25639 #close + Change-Id: I4b1451e5dc9cb3cb06d59b6ab872f5275ba79093 - Change-Id: I55385899f1c06dee47e4274c2d21538037b2d895 -2015-05-09 16:58 +0000 [87d8b36755] gtjoseph +2015-12-17 19:05 +0000 [965a0eee46] Dade Brandon - * vector: Add REMOVE, ADD_SORTED and RESET macros + * res_rtp_asterisk: Resolve further timing issues with DTLS negotiation - Based on feedback from Corey Farrell and Y Ateya, a few new - macros have been added... + Resolves an edge case dtls negotiation delay for certain networks which + somehow manage to drop the rtcp side's packet when these are both sent + ast_rtp_remote_address_set, causing it to have to time-out and restart + the handshake. - AST_VECTOR_REMOVE which takes a parameter to indicate if - order should be preserved. + Move dtls pending bio flush in to it's own function, and call it from + ast_rtp_on_ice_complete, when we're rtp->ice, rather than when + ast_rtp_remote_address_set. - AST_VECTOR_ADD_SORTED which adds an element to - a sorted vector. + Keep the existing flush from the recent change to res_rtp_remote_address_set + if ice is not being used. - AST_VECTOR_RESET which cleans all elements from the vector - leaving the storage intact. + ASTERISK-25614 #close + Reported-by: XenCALL + Tested by: XenCALL - Change-Id: I41d32dbdf7137e0557134efeff9f9f1064b58d14 + Change-Id: Ie2caedbdee1783159f375589b6fd3845c8577ba5 -2015-05-11 07:07 +0000 [e6ebddd9ae] Ivan Poddubny +2015-12-18 09:54 +0000 [ae428d8460] Carlos Oliva - * pbx/pbx_spool: Fix issue when call files were executed too early + * app_queue: update RT members when the 1st call joins a queue with no agents - pbx_spool used to delete/move the call file upon successful outgoing - call completion, but did not delete it from in-memory list of files - (dirlist, used only when compiled with inotify/kqueue support). - That resulted in an extra attempt to process that filename after - retrytime seconds. - Then, if a new file with the same name appears that is scheduled - in future further than the completed one plus its retrytime, - then it gets executed earlier than expected. + If a call enters on a queue and the members on that queue are updated in + realtime (ex: using mysql inserting a new agent) the queue members are + never refreshed and the call will stay in the queue until other event occurs. + This happens only if this is the first call of the queue and there is no + agents servicing. + This patch prevent this issue, ensuring realtime members are updated if + there is one call in the queue and no available agents - This patch fixes remove_from_queue function to also remove the entry - from the dirlist. + ASTERISK-25442 #close - ASTERISK-17069 #close - Reported by: Jeremy Kister + Change-Id: If1e036d013a5c1d8b0bf60d71d48fe98694a8682 - ASTERISK-24442 #close - Reported by: tootai +2015-12-05 10:01 +0000 [59d5bb0613] Joshua Colp - Change-Id: If9ec9b88073661ce485d6b008fd0b2612e49a28b + * res_sorcery_memory_cache: Add support for a full backend cache. -2015-05-01 23:43 +0000 [c61b146238] Rodrigo Ramírez Norambuena + This change introduces the configuration option 'full_backend_cache' + which changes the cache to be a full mirror of the backend instead + of a per-object cache. This allows all sorcery retrieval operations + to be carried out against it and is useful for object types which + are used in a "retrieve all" or "retrieve some" pattern. - * cdr_pgsql: Use PQescapeStringConn for escaping names. + ASTERISK-25625 #close - Use function PQescapeStringConn for escaping the name - of the table and schema instead of doing it manually. + Change-Id: Ie2993487e9c19de563413ad5561c7403b48caab5 - Change-Id: I6709165e2d00463e9c813d24f17830ad4910b599 -2015-05-10 07:37 +0000 [2ab5d22c0d] Yousf Ateya +2015-12-17 10:25 +0000 [0cefcabd58] Joshua Colp - * res_rtp_asterisk: Correction for the limit which detects that a packet is DTLS. + * rtp_engine: Ignore empty filenames in DTLS configuration. - First byte of DTLS packet shall be in range 20-63, not 20-64. Refer to RFC - https://tools.ietf.org/html/rfc5764#section-5.1.2 for correct values. + When applying an empty DTLS configuration the filenames in the + configuration will be empty. This is actually valid to do and + each filename should simply be ignored. - Change-Id: Iae6fa0d72b37c36a27fe40686e0ae6fba3afec31 + Change-Id: Ib761dc235638a3fb701df337952f831fc3e69539 -2015-05-10 08:36 +0000 [f82bd76e3c] Joshua Colp +2015-12-17 08:10 +0000 [158a0a5422] Joshua Colp - * dns_srv: Fix SRV sorting when records with priority zero exist with non-zero. + * chan_sip: Enable WebSocket support by default. - The DNS SRV sorting code currently has an issue when records with a priority - of zero exist with records of a non-zero priority. This occurs because the - sorting code considers zero to mean unset when in reality is a valid - value. If the current priority is zero it will get replaced with any remaining - record that has a priority of non-zero, until no records of those exist after - which the records of priority zero are handled. + Per the documentation the WebSocket support in chan_sip is + supposed to be enabled by default but is not. This change + corrects that. - This change makes it so that the priority of the first remaining record is - the current starting priority. There is also a small optimization to prevent - iterating records when the starting priority is already zero. + Change-Id: Icb02bbcad47b11a795c14ce20a9bf29649a54423 - Change-Id: I103511f35b50428f770bd4db3ffef70fb6f82d35 +2015-12-14 12:04 +0000 [a9d6fc571d] Joshua Colp -2015-05-08 18:01 +0000 [1503d0c14c] Alexandre Fournier + * json: Audit ast_json_* usage for thread safety. - * res_config_mysql: Fix broken column type checking + The JSON library Asterisk uses, jansson, is not thread + safe for us in a few ways. To help with this wrappers for JSON + object reference count increasing and decreasing were added + which use a global lock to ensure they don't clobber over + each other. This does not extend to reference count manipulation + within the jansson library itself. This means you can't safely + use the object borrowing specifier (O) in ast_json_pack and + you can't share JSON instances between objects. - MySQL configuration engine contains a bug in require_mysql(). This - function is used for column type checking in tables. This bug only - affects DATETIME, DATE and FLOAT types. + This change removes uses of the O specifier and replaces them + with the o specifier and an explicit ast_json_ref. Some cases + of instance sharing have also been removed. - It came from mixing the first condition (switch-case-like - if/then/else), to check the expected column type, with the second - condition, to check the actual column type against the expected column - type. Both conditions must be checked separately in order to avoid the - execution of the wrong block. + ASTERISK-25601 #close - ASTERISK-18252 #comment This patch might fix the issue - Reported by: Gareth Blades + Change-Id: I06550d8b0cc1bfeb56cab580a4e608ae4f1ec7d1 - ASTERISK-25041 #close - Reported by: Alexandre Fournier - Tested by: Alexandre Fournier +2015-12-16 11:28 +0000 [53bd5a539a] Mark Michelson - Change-Id: I0b8bf7e68ab938be8e6525a249260cb648cb0bfa + * Alembic: Increase column size of PJSIP AOR "contact". -2015-05-08 14:47 +0000 [5e361e1476] Rusty Newton + When running the PJSIP AMI "show_endpoint" test with automatic + conversion to realtime, the test would fail. This was because the AOR + "contact" column was sized at 40, and the configured contact was larger + than that. - * configs/basic-pbx: Modified main IVR to play new Allison prompt. + This commit increases the size of the contact column to 255 characters. - The main IVR was playing demo-congrats. I've switched it over to the - basic-pbx-ivr-main file that we added in core sounds 1.4.27. This prompt - has Allison prompting the user with the actual IVR menu. + Change-Id: Ia65bc7fd37699b7c0eaef9629a1a31eab9a24ba1 - ASTERISK-24892 #close +2015-12-16 11:25 +0000 [da17dc4d75] Mark Michelson - Change-Id: Ifb749616ff8e156a1031ddaddfcc9244767a095d + * Alembic: Add PJSIP global keep_alive_interval. -2015-05-08 12:30 +0000 [2d4dc0c963] Corey Farrell + The keep_alive_interval option was added about a year ago, but no + alembic revision was created to add the appropriate column to the + database. - * Fix error's produced by astmm.h when standard allocators are used. + This commit fixes the problem and adds the column. This was discovered + by running the testsuite with automatic conversion to realtime enabled. - astmm.h includes defines that are meant to cause error's when standard - allocators (malloc, calloc, free, etc) are used. It actually only - causes a warning, which is not always caught on certain sources. In - modules this unknown symbol is not detected until runtime, where the - module fails to load. This modifies the define's so that using one - of the blocked functions will cause a compile error regardless of - CFLAGS. + Change-Id: If3ef92a7c4f4844d08f8aae170d2178aec5c4c1a - Moved spandsp header includes to before asterisk.h so the static inline - functions can continue using malloc and free. Although these functions - are never called and optimized away, the updated replacement macro's - would still cause a failure. +2015-12-14 13:53 +0000 [24ae124e4f] server-pandora - Change-Id: I532640aca0913ba9da3b18c04a0f010ca1715af5 + * res_rtp_asterisk.c: Fix DTLS negotiation delays. -2015-05-08 10:39 +0000 [63c71c9f4a] Sean Bright + - Trigger pending DTLS packets to send out, once the RTP instance's remote + address is set. + - Avoids locking the DTLS structure unnecessarily by only doing this if + DTLS is passive. + - Add DTLS locks around the structurally sensitive calls in the SSL + portion of __rtp_recvfrom, since dtls_srtp_check_pending does not lock + inside of itself, and we're dealing with the SSL BIO in at least two + threads. - * res_rtp_asterisk: Issue ERROR if res_srtp is not found. + WebRTC channels may receive a DTLS handshake before + ast_rtp_remote_address_set is called, which causes there to be a pending + response to send out. Previous to 1ad827, this was handled by calling + dtls_srtp_check_pending on receipt of any RTP packet - a STUN or RTP + packet could trigger the pending handshake response. Since that was + rightfully removed, whenever the DTLS handshake is received before the + remote address is set, we would have to wait until another SSL packet + arrives. - While trying to get WebRTC working with chan_pjsip, I was running - into the following error: + As of Chrome M47's optimizations to their handshake process, WebRTC + conversations between Chrome M47+ and Asterisk, where Asterisk is passive, + experience a 1 second delay without this patch, because the SSL handshake + is received before ICE negotation stores the remote_address, and the next + SSL packet isn't received until after a 1 second timeout in Chrome, which + causes a new handshake request. - Attempted to set an invalid DTLS-SRTP configuration on RTP - instance... + ASTERISK-25614 #close - Josh helpfully pointed out that res_srtp.so might not be loaded, and - sure enough, it wasn't. This patch adds a ERROR indiciating as much - to hopefully help others having a similar problem. + Change-Id: I547f1be7e302dbf71f6553dd8cbc0657b1d0b908 - Change-Id: I13aa477b47b299876728a21b130998a0ea6cd19f +2015-12-14 15:25 +0000 [36097a185d] Richard Mudgett -2015-05-07 17:49 +0000 [60bf9ed91a] Rusty Newton + * Fix sscanf() format string type mismatch. - * sounds: Add Swedish sounds to Makefile and XML + ASTERISK-25615 + Reported by: George Joseph - Added the necessary lines to the Makefile and sounds.xml so we'll have the - Swedish sounds in all available formats in menuselect. + Change-Id: Ieff35307254ca193f3d473cff2e396ca57c7ce0b - See also: Swedish sounds were added into the core sounds release 1.4.27. +2015-12-13 13:13 +0000 [94f9927784] Matt Jordan - ASTERISK-24744 #close + * main/utils: Don't emit an ERROR message if the read end of a pipe closes - Reported by: Tove Hjelm - Tested by: Rusty Newton + An ERROR or WARNING message should generally indicate that something has gone + wrong in Asterisk. In the case of writing to a file descriptor, Asterisk is not + in control of when the far end closes its reading on a file descriptor. If the + far end does close the file descriptor in an unclean fashion, this isn't a bug + or error in Asterisk, particularly when the situation can be gracefully + handled in Asterisk. - Change-Id: Ib6f4fd177afd1667b2402735034001d4d055a908 + Currently, when this happens, a user would see the following somewhat cryptic + ERROR message: -2015-05-08 10:30 +0000 [f93b3a22d6] Corey Farrell + "utils.c: write() returned error: Broken pipe" - * Fix crash in codec_lpc10 when MALLOC_DEBUG is enabled. + There's a few problems with this: + (1) It doesn't provide any context, other than 'something broke a pipe' + (2) As noted, it isn't actually an error in Asterisk + (3) It can get rather spammy if the thing breaking the pipe occurs often, such + as a FastAGI server + (4) Spammy ERROR messages make Asterisk appear to be having issues, or can even + mask legitimate issues - This switches codecs/lpc10/lpcini.c back to including "asterisk.h" - instead of . lpcini.c allocates memory that is freed by - codec_lpc10.c, so it is important to use MALLOC_DEBUG allocator. - Added #define WRAP_LIBC_MALLOC to the start of the source to prevent - runtime symbol link error's. + This patch changes ast_carefulwrite to only log an ERROR if we actually had one + that was reasonably under our control. For debugging purposes, we still emit + a debug message if we detect that the far side has stopped reading. - Change-Id: I74f63fd09fdeb673ee7753122c3bb4722ab6e1ac + Change-Id: Ia503bb1efcec685fa6f3017bedf98061f8e1b566 -2015-05-07 14:54 +0000 [cf637f2510] gtjoseph +2015-12-12 11:08 +0000 [5b867fa904] gtjoseph - * doc: Make progdocs play nice with git + * pjsip/config_transport: Check pjproject version at runtime for async ops - Moved contrib/asterisk-ng-doxygen to doc/asterisk-ng-doxygen.in + pjproject < 2.5.0 will segfault on a tls transport if async_operations + is greater than 1. A runtime version check has been added to throw + an error if the version is < 2.5.0 and async_operations > 1. - Changed /Makefile to copy asterisk-ng-doxygen.in to - asterisk-ng-doxygen then modify it with version instead of - modifying asterisk-ng-doxygen directly. Updated clean - targets as well. + To assist in the check, a new api "ast_compare_versions" was added + to utils which compares 2 major.minor.patch.extra version strings. - Updated /.gitignore and doc/.gitignore. + ASTERISK-25615 #close - Change-Id: I38712d3e334fa4baec19d30d05de8c6f28137622 + Change-Id: I8e88bb49cbcfbca88d9de705496d6f6a8c938a98 + Reported-by: George Joseph + Tested-by: George Joseph -2015-05-04 14:43 +0000 [b885f719bf] Ivan Poddubny +2015-12-10 11:44 +0000 [14b41115e3] Jonathan Rose - * contrib/editors: Fix vim syntax highlighting of comments in config files + * chan_sip: Add TCP/TLS keepalive to TCP/TLS server - * Added a lookbehind to one-line comment matcher to skip escaped - semicolons. - * Added support for block comments. + Adds the TCP Keep Alive option to TCP and TLS server sockets. Previously + this option was only being set on session sockets. + http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ + According to the link above, the SO_KEEPALIVE option is useful for knowing + when a TCP connected endpoint has severed communication without indicating + it or has become unreachable for some reason. Without this patch, keep + alive is not set on the socket listening for incoming TCP sessions and + in Komatsu's report this resulted in the thread listening for TCP becoming + stuck in a waiting state. - Change-Id: Id17dfaeda8ed4be572e8107a0c010066584aaee7 + ASTERISK-25364 #close + Reported by: Hiroaki Komatsu -2015-05-06 13:24 +0000 [e33682cae2] Joshua Colp + Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36 +2015-12-08 13:04 +0000 [fe8011cc50] sungtae kim - * res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination + * AMI: Fixed OriginateResponse message - The res_pjsip_exten_state module currently has a race condition between - processing the extension state callback from the PBX core and processing - the subscription shutdown callback from res_pjsip_pubsub. There is currently - no synchronization between the two. This can present a problem as while - the SIP subscription will remain valid the tree it points to may not. - This is in particular a problem as a task to send a NOTIFY may get queued - which will try to use the tree that may no longer be valid. + When the asterisk sending OriginateResponse message, + it doesn't set the "Uniqueid". + And it didn't support correct response message for + Application originate. - This change does the following to fix this problem: + ASTERISK-25624 #close - 1. All access to the subscription tree is done within the task that - sends the NOTIFY to ensure that no other thread is modifying or - destroying the tree. This task executes on the serializer for the - subscriptions. + Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d - 2. A reference to the subscription serializer is kept to ensure it - remains valid for the lifetime of the extension state subscription. +2015-12-09 09:48 +0000 [cd119ed4a2] Tyler Cambron - 3. The NOTIFY task has been changed so it will no longer attempt - to send a NOTIFY if the subscription has already been terminated. + * res_chan_stats: Fix bug to send correct statistics to StatsD - ASTERISK-25057 #close - Reported by: Matt Jordan + Fixed a bug that originally would show a negative number of + active calls occuring in Asterisk. A gauge is persistent so + incrementing and decrementing it results in a more consistent + performance. Also changed to the call to StatsD to use + ast_statsd_log_string() so that a "+" could be sent to StatsD. - Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643 + ASTERISK-25619 #close -2015-05-05 20:22 +0000 [c886be5df2] gtjoseph + Change-Id: Iaaeff5c4c6a46535366b4d16ea0ed0ee75ab2ee7 - * vector: Additional enhancements and fixes +2015-12-07 13:07 +0000 [ddf4dddf4f] Corey Farrell - After using the new vector stuff for real I found... + * app_meetme: Set default value for audio_buffers. - A bug in AST_VECTOR_INSERT_AT that could cause a seg fault. + The default value was never set for audio_buffers, causing bad + audio quality. This ensures the default is always set. - The callbacks needed to be closer to ao2_callback in behavior - WRT to CMP_MATCH and CMP_STOP behavior and the ability to return - a vector of matched entries. + ASTERISK-25569 #close - A pre-existing issue with APPEND and REPLACE was also fixed. + Change-Id: I2d2ee3e644120b0f9f6ea6ab9286d7d590942a44 +2015-12-08 01:57 +0000 [142d4fefb8] Filip Jenicek - I also added a new macro to test.h that acts like ast_test_validate - but also accepts a return code variable and a cleanup label. As well - as printing the error, it sets the rc variable to AST_TEST_FAIL and - does a goto to the specified label on error. I had a local version - of this in test_vector so I just moved it. + * chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c) - ASTERISK-25045 + Asterisk may crash when calling ast_channel_get_t38_state(c) + on a locked channel which is being hung up. - Change-Id: I05e5e47fd02f61964be13b7e8942bab5d61b29cc + ASTERISK-25609 #close -2015-05-06 17:37 +0000 [1f5db1c7e3] Kevin Harwell + Change-Id: Ifaa707c04b865a290ffab719bd2e5c48ff667c7b - * res_stasis_snoop: Spying on a single direction continually increases CPU +2015-12-08 17:49 +0000 [21962dad93] gtjoseph - Creating a snoop channel in ARI and spying only on a single direction (in or - out) results in CPU utilization continually increasing until the CPU is fully - consumed. This occurs because frames are being put in the opposing direction's - slin factory queue, but not being removed. + * res_pjsip: Add existence and readablity checks for tls related files - Fixed the problem by always reading and disposing of frames from the opposite - queue of the direction selected. + Both transport and endpoint now check for the existence and readability + of tls certificate and key files before passing them on to pjproject. + This will cause the object to not load rather than waiting for pjproject + to discover that there's a problem when a session is attempted. - ASTERISK-24938 #closes + NOTE: chan_sip also uses ast_rtp_dtls_cfg_parse but it's located + in build_peer which is gigantic and I didn't want to disturb it. + Error messages will emit but it won't interrupt chan_sip loading. - Change-Id: I935bfd15f1db958f364d9d6b3b45582c0113dd60 + ASTERISK-25618 #close -2015-05-06 16:00 +0000 [7103b374ef] Richard Mudgett + Change-Id: Ie43f2c1d653ac1fda6a6f6faecb7c2ebadaf47c9 + Reported-by: George Joseph + Tested-by: George Joseph - * chan_dahdi: Improve force_restart_unavailable_chans option description. +2015-12-02 12:42 +0000 [28d9243079] Eugene Voityuk - ASTERISK-25034 - Reported by: Richard Mudgett + * chan_sip.c: Start ICE negotiation when response is sent or received. - Change-Id: I1ff8f02124d2f4abd632a050da52c64285bb7f30 + The current logic for ICE negotiation starts it + when receiving an SDP with ICE candidates. This is + incorrect as ICE negotiation can only start when each + call party have at least one pair of local and remote + candidate. Starting ICE negotiation early would result + in negotiation failure and ultimately no audio. -2015-05-06 04:32 +0000 [d2e2271874] Joshua Colp + This change makes it so ICE negotiation is only started + when a response with SDP is received or when a response + with SDP is sent. - * manager: Fix build due to missing variable usage. + ASTERISK-24146 - Change-Id: I26d4d2cb9cee924632ff59ef0b30a7e6a1e2b00d + Change-Id: I55a632bde9e9827871b09141d82747e08379a8ca +2015-12-08 11:03 +0000 [e03582a1c2] gtjoseph -2015-05-04 20:11 +0000 [6b40bbf5bb] Rodrigo Ramírez Norambuena + * res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls - * main/manager.c: Bugfix sort action_manager by alphabetically + See ASTERISK-25615. + If the transport protocol is tls and async_operations > 1, pjproject + will segfault if more than one operation is attempted on the same socket. + Until this is fixed upstream, a check has been added to throw an error + if a tls transport config has async_operations set to > 1. - Fix the alphabetic order added on ast_manager_register_struct. The order - for struct manager_action added is not working, this change fixes the - problem. + ASTERISK-25615 - Change-Id: I149da0cd06c3c4445d7516cc303358e9f26f8b4b + Change-Id: I76b9a5b2a5a0054fe71ca5851e635f2dca7685a6 + Reported-by: George Joseph + Tested-by: George Joseph -2015-05-05 18:17 +0000 [6c4d1c3223] Richard Mudgett +2015-12-08 08:39 +0000 [876600ce6e] Alexander Traud - * features: Fix crash when transferee hangs up during DTMF attended transfer. + * codec_resample: Increase buffer for Opus Codec with FEC. - A crash happens with this sequence of steps: - 1) Party A is connected to party B. - 2) Party B starts a DTMF attended transfer. - 3) Party A hangs up while party B is dialing party C. + ASTERISK-25599 #close - When party A hangs up the bridge that party A and party B are in is - dissolved and party B is kicked out of the bridge. When party B finishes - dialing party C he attempts to move to the new bridge with party C. Since - party B is no longer in a bridge the attempted move dereferences a NULL - bridge_channel pointer and crashes. + Change-Id: Idbd187f711b2ec63dda949ca0f79aa0c1a0a0b6e - * Made the hold(), unhold(), ringing(), and the bridge_move() functions - tolerant of the channel not being in a bridge. The assertion that party B - is always in a bridge is not true if the bridged peer of party B hangs up - and dissolves the bridge. Being tolerant of not being in a bridge allows - the peer hangup stimulus to be processed by the FSM. +2015-12-08 03:46 +0000 [69e3d40ad7] Alexander Traud - * Made the bridge_move() function return void since where the return value - for a failed move was checked generated a FSM coding ERROR message for a - normal off-nominal condition. + * translate: Avoid a warning message when doing FEC within Opus Codec. - * Eliminated most uses of RAII_VAR in bridge_basic.c. + ASTERISK-25616 #close - ASTERISK-25003 #close - Reported by: Artem Volodin + Change-Id: Ibe729aaf2e6e25506cff247cec5149ec1e589319 - Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada +2015-12-04 15:36 +0000 [2b992014dc] Richard Mudgett -2015-05-05 14:48 +0000 [90bfc02e84] Ivan Poddubny + * chan_sip: Fix crash involving the bogus peer during sip reload. - * app_queue: Fix queue_log EXITWITHTIMEOUT containing only 1 parameter + A crash happens sometimes when performing a CLI "sip reload". The bogus + peer gets refreshed while it is in use by a new call which can cause the + crash. - This patch fixes EXITWITHTIMEOUT queue_log entry to always come with 3 - parameters: position, original position and waiting time. + * Protected the global bogus peer object with an ao2 global object + container. - ASTERISK-25038 #close - Reported by: Etienne Lessard + ASTERISK-25610 #close - Change-Id: I0c62045922e26bee2125e93aee1dee17eee79618 + Change-Id: I5b528c742195681abcf713c6e1011ea65354eeed -2015-05-05 13:34 +0000 [bebf0b9b27] Joshua Colp +2015-12-06 16:32 +0000 [529535f0c2] Matt Jordan - * chan_unistim: Fix build failure due to ACL changes. + * Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state" - Change-Id: I57081045c72b9fcf12d5c84493278f9272c31b32 + This reverts commit 6614babea27fbafbe11820ea03737dd5c4f9ecec. -2015-05-05 11:35 +0000 [247fef6653] Alexander Traud (License 6520) + Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks + in core_unreal/chan_local. Local channels attempt to reach across both their + peer and the peer's bridge to inspect T.38 state. Given the propensity of + Local channel chains, managing the locking situation in such a scenario is + practically infeasible. - * tcptls: Avoiding ERR_remove_state in OpenSSL. + Change-Id: Ic687397ffea08dfb899345a443bd990ec3d0416a - ERR_remove_state was deprecated with OpenSSL 1.0.0 and was replaced by - ERR_remove_thread_state. ERR_load_SSL_strings and ERR_load_BIO_strings were - called by SSL_load_error_strings already and got removed. These changes allow - OpenSSL forks like BoringSSL to be used with Asterisk. +2015-12-04 16:23 +0000 [450579e908] gtjoseph - ASTERISK-25043 #close - Reported by: Alexander Traud - patches: - asterisk_with_BoringSSL.patch uploaded by Alexander Traud (License 6520) + * res_pjsip/contacts/statsd: Make contact lifecycle events more consistent - Change-Id: If1c0871ece21a7e0763fafbd2fa023ae49d4d629 -2015-05-05 09:47 +0000 [c541923ac3] Corey Farrell + It will never be perfect or even pretty, mostly because of the differences + between static and dynamic contacts. - * res_ari_bridges: Add missing dependencies. + Created: - Missed this module in the previous commit. res_ari_bridges uses symbols - from res_stasis_playback and res_stasis_recording. + Can't use the contact or contact_status alloc functions + because the objects come and go regardless of the actual state. - ASTERISK-25027 #close - Reported by: Corey Farrell + Can't use the contact_apply_handler, ast_sip_location_add_contact or + a sorcery created handler because they only get called for dynamic + contacts. Similarly, permanent_uri_handler only gets called for + static contacts. - Change-Id: I90bf756abd25adfc4920d2869ebe7feb636b8c5f + So, Matt had it right. :) ast_res_pjsip_find_or_create_contact_status is + the only place it can go and not have duplicated code. Both + permanent_uri_handler and contact_apply_handler call find_or_create. -2015-05-05 09:27 +0000 [8a3e93a349] Corey Farrell + Removed: - * pbx_config: Register manager actions with module version of macro. + Can't use the destructors for the same reason as above. The only + place to put this is in persistent_endpoint_contact_deleted_observer + which I believe is the "correct" place but even that will handle only + dynamic contacts. This doesn't called on shutdown however. There is + no hook to use for static contacts that may be removed because of a + config change while asterisk is in operation. - Switch manager actions in pbx_config to use the registration macro that - passes the module pointer, allowing pbx_config reference to be bumped - while the manager actions run. + I moved the cleanup of contact_status from ast_sip_location_delete_contact + to the handler as well. - ASTERISK-25061 #close - Reported by: Corey Farrell + Status Change and RTT: - Change-Id: I422c50dd74814616ac10c5e9c6598a0b1bc2c44e + Although they worked fine where they were (in update_contact_status) I + moved them to persistent_endpoint_contact_status_observer to make it + more consistent with removed. There was logic there already to detect + a state change. -2015-05-01 22:14 +0000 [cb79b8ab80] Rodrigo Ramírez Norambuena + Finally, fixed a nit in permanent_uri_handler rmudgett reported + eralier. - * cel_pgsql: Add support for setting schema + ASTERISK-25608 #close - Add feature to set optional schema parameter on configuration file via - 'schema' setting. + Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d + Reported-by: George Joseph + Tested-by: George Joseph - Fix query to get columns from table while considering schema. If in - the database there exists two tables with same name in distinct schemas - it will return an error when inserting record. +2015-11-21 06:02 +0000 [5a18193dc0] Alexander Traud - ASTERISK-24967 #close + * res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8. - Change-Id: I691fd2cbc277fcba10e615f5884f8de5d8152f2c + ASTERISK-25584 #close -2015-05-04 12:16 +0000 [11f650c6ac] Joshua Colp + Change-Id: Iae00071b4ff1ae76f24995aeac4d00284fd14f91 - * stasis: Fix dial masquerade datastore lifetime +2015-11-21 05:21 +0000 [3e2178c05e] Alexander Traud - A recent change went into Asterisk which added reference counts to the - channels stored in a dial masquerade datastore. Unfortunately this - included a reference to the caller in a dialing operation. While all - of the dialed targets have the datastore removed from them upon dialing - completion this did not occur for the caller, causing it to have a - reference to itself that could go never go away (as it depended on - the destruction of the datastore which only happened when the channel - was destroyed). This resulted in the caller channel remaining on the - system despite it having hung up. + * res_format_attr_opus: Update to latest RFC 7587. - This change does the following to fix this issue: + Beside that, the format-attribute module sends only non-default values in the + line fmtp, now. This avoids unnecessary overhead in SDP messages. Furthermore, + previously the parameter stereo was not parsed when being the first parameter. - 1. The dial masquerade datastore is now removed from the caller upon - dialing completion, just like the dialed targets. - 2. Upon destruction of the caller all the dialed targets are also - removed from the dial masquerade datastore (just in case). - 3. The reference to the caller has been removed as it should not be - possible for the datastore to now be valid/useful after the lifetime - of the caller has ended. + ASTERISK-25583 #close - ASTERISK-25025 #close + Change-Id: Iae85ba3e5960bfd5d51cf65bcffad00dd4875a73 +2015-12-02 14:11 +0000 [072d94183c] Jonathan Rose - Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f + * Fix crash in audiohook translate to slin -2015-04-21 17:27 +0000 [a24ce38e5e] Rodrigo Ramírez Norambuena + This patch fixes a crash which would occur when an audiohook was + applied to a channel using an audio codec that could not be translated + to signed linear (such as when using pass-through codecs like OPUS or + when the codec translator module for the format in use is not loaded). - * cdr_adaptive_odbc: Add ability to set character for quoted identifiers. + ASTERISK-25498 #close + Reported by: Ben Langfeld - 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. + Change-Id: Ib6ea7373fcc22e537cad373996136636201f4384 - ASTERISK-25006 +2015-12-03 12:07 +0000 [9184fbeb34] gtjoseph - Change-Id: I0b9a56b79ca13a727a803d88ed3b8643e37632b8 + * res_pjsip: Use a MD5 hash for static Contact IDs -2015-05-04 22:57 +0000 [39cf642d40] Rodrigo Ramírez Norambuena + When 90d9a70789 was merged, it mostly tested dynamic contacts created as + a result of registering a PJSIP endpoint. Contacts generated in this + fashion typically have a long alphanumeric string as their object identifier, + which maps reasonably well for StatsD. Unfortunately, this doesn't work in the + general case. StatsD treats both '.' and ':' characters as special characters. + In particular, having a ':' appear in the middle of a StatsD metric will + result in the metric being rejected. - * cdr: standardizes tab for options of AST_MODULE_INFO + This causes some obvious issues with SIP URIs. - Change-Id: I3c6de30b4859717873100092a7c06e206713a301 + The StatsD API should not be responsible for escaping the metric name passed + to it. The metric is treated as a single long string, and it would be + challenging to know what to escape in the string passed to the function. + Likewise, we don't want to escape the metric in PJSIP, as that involves + overhead that is wasted when either res_statsd isn't loaded or enabled. -2015-05-04 16:41 +0000 [df6c1d755f] Corey Farrell + This patch takes an alternative approach. The Contact ID has been changed + to be "aor@@uri_hash" instead of "aor@@uri". This (a) won't contain any of the + aforementioned special characters, (b) can be done on Contact creation, + which has minimal impact on run-time performance, and (c) also conforms to an + earlier commit that changed the ID for dynamic contacts. - * CLI: Enable automatic references to modules. + The downside of this is that StatsD users will have to map SHA1 hashes back to + the Contacts that are emitting the statistics. To that end, the CLI commands + have been updated to include the first 10 characters of the MD5 hash, which + should be enough to match what is shown in Graphite (or some other StatsD + backend). - * Pass module to ast_cli_register and ast_cli_register_multiple. - * Add a module reference before executing any CLI callback, remove - the reference when complete. + ASTERISK-25595 #close - ASTERISK-25049 #close - Reported by: Corey Farrell + Change-Id: Ic674a3307280365b4a45864a3571c295b48a01e2 + Reported-by: Matt Jordan + Tested-by: George Joseph - Change-Id: I7aafc7c9f2b912918f28fe51d51e9e8a755750e3 +2015-11-30 22:19 +0000 [ed9134282e] gtjoseph -2015-05-04 14:26 +0000 [a8bfa9e104] Corey Farrell + * res_pjsip: Update logging to show contact->uri in messages - * Modules: Make ast_module_info->self available to auxiliary sources. + An earlier commit changed the id of dynamic contacts to contain + a hash instead of the uri. This patch updates status change + logging to show the aor/uri instead of the id. This required + adding the aor id to contact and contact_status and adding + uri to contact_status. The aor id gets added to contact and + contact_status in their allocators and the uri gets added to + contact_status in pjsip_options when the contact_status is + created or updated. - ast_module_info->self is often needed to register items with the core. Many - modules have ad-hoc code to make this pointer available to auxiliary sources. - This change updates the module build process to make the needed information - available to all sources in a module. + ASTERISK-25598 #close - ASTERISK-25056 #close - Reported by: Corey Farrell + Reported-by: George Joseph + Tested-by: George Joseph - Change-Id: I18c8cd58fbcb1b708425f6757becaeca9fa91815 + Change-Id: I56cbec1d2ddbe8461367dd8b6da8a6f47f6fe511 -2015-05-01 19:25 +0000 [6d5941297b] gtjoseph +2015-12-01 16:11 +0000 [eadad24b59] Jonathan Rose - * vector: Traversal, retrieval, insert and locking enhancements + * Unset BRIDGEPEER when leaving a bridge - Renamed AST_VECTOR_INSERT to AST_VECTOR_REPLACE because it really - does replace not insert. The few users of AST_VECTOR_INSERT were - refactored. Because these are macros, there should be no ABI - compatibility issues. + Currently if a channel is transferred out of a bridge, the BRIDGEPEER + variable (also BRIDGEPVTCALLID) remain set even once the channel is + out of the bridge. This patch removes these variables when leaving + the bridge. - Added AST_VECTOR_INSERT_AT that actually inserts an element into the - vector at a specific index pushing existing elements to the right. + ASTERISK-25600 #close + Reported by: Mark Michelson - Added AST_VECTOR_GET_CMP that can retrieve from the vector based - on a user-provided compare function. + Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da - Added AST_VECTOR_CALLBACK function that will execute a function - for each element in the vector. Similar to ao2_callback and - ao2_callback_data functions although the vector callback can take - a variable number of arguments. This should allow easy migration - to a vector where a container might be too heavy. +2015-11-30 14:22 +0000 [bb0b60619d] Richard Mudgett - Added read/write locked vector and lock manipulation macros. + * res_sorcery_memory_cache.c: Fix off nominal ref leak. - Added unit tests. + Change-Id: If83d63cf11cbc6df9b15251848b01feb570ade49 - ASTERISK-25045 #close +2015-11-30 16:42 +0000 [e7c88e11aa] Richard Mudgett - Change-Id: I2e07ecc709d2f5f91bcab8904e5e9340609b00e0 + * sched.c: Make not return a sched id of 0. -2015-05-03 13:55 +0000 [4f4aaa0c30] Corey Farrell + According to the API doxygen a sched ID of 0 is valid. Unfortunately, 0 + was never returned historically and several users incorrectly coded usage + of the returned sched ID assuming that 0 was invalid. - * main/test.c: Add test to verify there were no registration errors. + ASTERISK-25476 - This adds a test that will fail if any test failed to register. Also fail - if any test registration produced a warning about missing a leading or - trailing slash. + Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20 - ASTERISK-25053 #close - Reported by: Corey Farrell +2015-11-25 12:23 +0000 [4aed349a7b] Richard Mudgett - Change-Id: I93e50b8fcbcfa7f1f5b41b2c44a51685c09529c3 + * Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions) -2015-04-21 11:52 +0000 [ebe371357e] Martin Tomec + chan_sip.c: + * Initialize mwi subscription scheduler ids earlier because of ASTOBJ to + ao2 conversion. - * res_odbc: Use negative connection cache for all connections + * Initialize register scheduler ids earlier because of ASTOBJ to ao2 + conversion. - Apply the negative connection cache setting to all connections, - even those that are not pooled. This ensures that the connection - will not be re-established before the negative connection cache - time is met. + chan_skinny.c: + * Fix more scheduler usage for the valid 0 id value. - ASTERISK-22708 #close + ASTERISK-25476 - Change-Id: I431cc2e8584ab0b6908b3523d0a0e18c9a527271 -2015-05-03 21:03 +0000 [981084f08c] Corey Farrell + Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95 - * Format Interfaces: Prevent unload except by shutdown. +2015-11-24 12:44 +0000 [6d9156d10f] Richard Mudgett - Format interfaces cannot be unregistered, so the modules that provide them - need to be held open except by shutdown. + * Audit improper usage of scheduler exposed by 5c713fdf18f. - ASTERISK-25054 #close - Reported by: Corey Farrell + channels/chan_iax2.c: + * Initialize struct chan_iax2_pvt scheduler ids earlier because of + iax2_destroy_helper(). - Change-Id: Iadbd9675bf0d30b8fded5a739b163db3ea2db8f3 + channels/chan_sip.c: + channels/sip/config_parser.c: + * Fix initialization of scheduler id struct members. Some off nominal + paths had 0 as a scheduler id to be destroyed when it was never started. -2015-05-03 20:28 +0000 [75c0aa6979] Matt Jordan + chan_skinny.c: + * Fix some scheduler id comparisons that excluded the valid 0 id. - * contrib/ast-db-manage: Add Postgres ENUM type support in auto DTMF mode update + channel.c: + * Fix channel initialization of the video stream scheduler id. - The upgrade script for auto DTMF mode (31cd4f4891ec) added in 88b0fa7755 - failed to add ENUM support for Postgres databases. This requires a - specific import from the sqlalchemy.dialects.postgresql package. This - patch corrects this error, which allows for Postgres update scripts to - be generated. + pbx_dundi.c: + * Fix channel initialization of the packet retransmission scheduler id. - ASTERISK-24706 + ASTERISK-25476 - Change-Id: I4742ac8efa533cd6f18e0bdd907b339a9aedf015 + Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8 -2015-05-03 13:36 +0000 [1368dae773] Corey Farrell +2015-12-01 07:55 +0000 [b76c196e13] Alexander Traud - * main/presencestate.c: Add trailing slash to test category. + * codec_resample: Increase buffer for Opus Codec. - ASTERISK-25053 - Reported by: Corey Farrell + ASTERISK-25599 #close - Change-Id: I8c0375dd0818747b2d2e1ceaea87bfbeb2daf8d4 + Change-Id: I1f88a88c59fb4e1e62bbdbb100c7152d48e73f10 -2015-04-20 13:03 +0000 [305ce3defd] Diederik de Groot +2015-11-28 08:46 +0000 [6614babea2] Matt Jordan - * Update configure.ac/Makefile for clang + * bridges/bridge_t38: Add a bridging module for managing T.38 state - Created autoconf/ast_check_raii.m4: contains AST_CHECK_RAII which - checks compiler requirements for RAII: - gcc: -fnested-functions support - clang: -fblocks (and if required -lBlocksRuntime) - The original check was implemented in configure.ac and now has it's - own file. This function also sets C_COMPILER_FAMILY to either gcc or - clang for use by makefile + When 4875e5ac32 was merged, it fixed several issues with a direct media bridge + transitioning to handling a T.38 fax. However, it uncovered a race condition + caused by the bridging core. When a channel involved in a T.38 fax leaves a + bridge, the frame queued by the channel driver that should inform the far side + that it is no longer in a T.38 fax may not make it across the bridge. The + bridging framework is *extremely* aggressive in tearing down the bridge, and + control frames that are currently in flight *may* get dropped. - Created autoconf/ast_check_strsep_array_bounds.m4 (contains - AST_CHECK_STRSEP_ARRAY_BOUNDS): - which checks if clang is able to handle the optimized strsep & strcmp - functions (linux). If not, the standard libc implementation should be - used instead. Clang + the optimized macro's work with: - strsep(char *, char []), but not with strsepo(char *, char *). - Instead of replacing all the occurences throughout the source code, - not using the optimized macro version seemed easier + This patch adds a new module to the bridging framework, bridge_t38. This module + maintains some notion of the T.38 state for the two channels in a bridge. When + the bridge detects that it is being torn down or when one of the two channels + leaves, it informs the respective channel(s) that they should stop faxing. This + ensures that channels switch back to audio if they survive and are ejected out + of a bridge while faxing. - See 'define __strcmp_gc(s1, s2, l2) in bits/string2.h': - llvm-comment: Normally, this array-bounds warning are suppressed for - macros, so that unused paths like the one that accesses __s1[3] are - not warned about. But if you preprocess manually, and feed the - result to another instance of clang, it will warn about all the - possible forks of this particular if statement. Instead of switching - of this optimization, another solution would be to run the preproces- - sing step with -frewrite-includes, which should preserve enough - information so that clang should still be able to suppress the diag- - nostic at the compile step later on. + ASTERISK-25582 - See also "https://llvm.org/bugs/show_bug.cgi?id=20144" - See also "https://llvm.org/bugs/show_bug.cgi?id=11536" + Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0 - Makefile.rules: If C_COMPILER_FAMILY=clang then add two warning - suppressions: - -Wno-unused-value - -Wno-parentheses-equality - In an earlier review (reviewboard: 4550 and 4554), they were deemed a - nuisace and less than benefitial. +2015-11-27 07:39 +0000 [3fcf160fae] Niklas Larsson - configure.ac: - Added AST_CHECK_RAII() see earlier - Added AST_CHECK_STRSEP_ARRAY_BOUNDS() see earlier - Removed moved content + * CHANGES: Fix a typo - ASTERISK-24917 - Change-Id: I12ea29d3bda2254ad3908e279b7effbbac6a97cb + Change-Id: Iceb3d9bb78140c376174a7bee197dfcf8ef9cda7 +2015-11-25 15:26 +0000 [45efbf8503] Kevin Harwell -2015-04-28 04:49 +0000 [8886b724ae] Rodrigo Ramírez Norambuena + * fastagi: record file closed after sending result - * cdr/cdr_csv.c: Add a new option to enable columns added in Asterisk 1.8 + The fastagi record-file testsuite test sometimes fails reporting an empty + recorded file. This was happening because Asterisk was sending the agi result + notification prior to actually closing the file and the data, being buffered, + had not been written to the file yet when the test attempts to check the file + size. - This patch adds a new option to cdr.conf, 'newcdrcolumns', that will handle CDR - columns added in Asterisk 1.8. The columns are: - * peeraccount - * linkedid - * sequence - When enabled, the columns in the database entry will be populated with the data - from the CDR. + This patch makes it so the record file stream is closed prior to sending the + agi result notification. - ASTERISK-24976 #close + ASTERISK-25593 #close - Change-Id: I51a57063f4ae5e194a9d933a8df45dc8a4534f0b -2015-05-03 04:39 +0000 [94532b2c22] Rodrigo Ramírez Norambuena + Change-Id: I6b2b3be3ae37f7c7b18e672c419a89b3b8513cde - * main/asterisk.c: Update Asterisk copyright year +2015-11-25 13:29 +0000 [b2787876d6] Walter Doekes - Change-Id: I5e75d7f7e2c096d74edd9e8735268a894f4b93ab + * main: Slight refactor of main. Improve color situation. -2015-05-03 04:09 +0000 [2ed5e6a9ba] Rodrigo Ramírez Norambuena + Several issues are addressed here: + - main() is large, and half of it is only used if we're not rasterisk; + fixed by spliting up the daemon part into a separate function. + - Call ast_term_init from rasterisk as well. + - Remove duplicate code reading/writing asterisk history file. + - Attempt to tackle background color issues and color changes that + occur. Tested by starting asterisk -c until the colors stopped + changing at odd locations. - * utils: Remove trailing whitespace + ASTERISK-25585 #close - Change-Id: I4644f43a6a1ca9b5130cd2a6746772b888eb4f7a + Change-Id: Ib641a0964c59ef9fe6f59efa8ccb481a9580c52f -2015-05-02 18:58 +0000 [c3ec5da156] Corey Farrell +2015-11-24 13:54 +0000 [59881fbb99] David M. Lee - * Remove unneeded uses of optional_api providers. + * Fixed some typos - A few cases exist where headers of optional_api provders are included but - not needed. This causes unneeded calls to ast_optional_api_use. + Fixes some minor typos in the CHANGES file, plus an embarrasing typo in + the StatsD API. - * Don't include optional_api.h from sip_api.h. - * Move 'struct ast_channel_monitor' to channel.h. - * Don't include monitor.h from chan_sip.c, channel.c or features.c. + Change-Id: I9ca4858c64a4a07d2643b81baa64baebb27a4eb7 - The move of struct ast_channel_monitor is needed since channel.c depends on - it. This has no effect on users of monitor.h since channel.h is included - from monitor.h. +2015-11-24 13:07 +0000 [b75f587d15] Corey Farrell - ASTERISK-25051 #close - Reported by: Corey Farrell + * res_pjsip_notify: Fix CLI usage info - Change-Id: I53ea65a9fc9693c89f8bcfd6120649bfcfbc3478 + The usage info for 'pjsip send notify' previously referenced the + chan_sip configuration sip_notify.conf. Fix this to reference + the correct configuration pjsip_notify.conf. -2015-05-02 02:15 +0000 [44bbdbe3a4] Corey Farrell + ASTERISK-25590 #close - * res_pjsip_dlg_options: Fix MODULEINFO section. + Change-Id: I3898271a8e8a8b1db201741e790ebe2c6bf5cdea - Removed the extra space before "MODULEINFO" in res_pjsip_dlg_options. - This extra space prevented any of the dependencies from being seen by - menuselect, so building with default options would fail if PJSIP was - not installed. +2015-11-23 14:27 +0000 [fc45f4040d] Richard Mudgett - This also makes the tool that extracts information for menuselect - tolerant of multiple spaces in the future. + * res_sorcery_realtime.c: Fix crash from NULL sorcery object type. - ASTERISK-25033 #close - Reported by: Peter Whisker + If the sorcery object type is not found a NULL is returned. + Unfortunately, sorcery_realtime_filter_objectset() will crash after + complaining about not finding the object type and saying to expect errors. - Change-Id: Iccd54846f70c4a7a50cb5bf70b7bb5cb4bab3698 + * Use ao2_cleanup() instead of ao2_ref() to prevent the crash. -2015-05-01 19:50 +0000 [e4f0a55f7f] D Tucny + ASTERISK-25165 + Reported by Corey Farrell - * term: send proper reset sequence when black background is forced + Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97 - When using the force black background command-line option or configuration - option an invalid reset sequence is sent following a coloured output item - in the CLI, the result is that the colour is not 'turned off' and continues - until the next non-default coloured text output. +2015-11-20 21:08 +0000 [4875e5ac32] Matt Jordan - A reset sequence is already defined in term.c, but the ast_term_reset - function doesn't use it, instead building it's own invalid sequence and - returning that. + * chan_pjsip: Handle T.38 faxes with direct media bridges - This patch changes that behaviour, removing the building of a reset sequence - and instead using the pre-built constant 'enddata' which is a suitable reset - sequence for this purpose. + When a channel is in a direct media bridge, a re-INVITE may arrive that forces + Asterisk to re-negotiate the media to a T.38 fax. When this occurs, the bridge + must change its technology to a simple bridge, and re-INVITE the media back + to Asterisk. - ASTERISK-24896 #close - Reported by: Dan Tucny + Generally, this logic mostly already exists in Asterisk. However, prior to this + patch, there were a few bugs: + (1) The T.38 framehook currently prevents a channel capable of T.38 faxes from + ever entering into a direct media bridge. This applies even when the only + media being passed over the channel is audio. This patch fixes this bug + by having the framehook specify that it defers caring about any frame type. + This allows the channels to enter into a direct media bridge, which will + be broken when a re-INVITE is received. + (2) When a re-INVITE is received, nothing instructed the bridging layer to + re-inspect the allowed bridging technology. This now occurs when either + a re-INVITE is received from a peer, or when a response is received from + the far end (that is, when the T.38 state changes to either + T38_PEER_REINVITE or T38_LOCAL_REINVITE). + (3) chan_pjsip needs to do a small amount of work to prevent a direct media + bridge from being chosen when a T.38 session is in progress. When a T.38 + session supplement has a t38 datastore - which is added when we detect + we should start thinking about T.38 on a channel - we now refuse a native + RTP bridge. + (4) When a BYE request is received, we don't terminate the T.38 session. If + the other side of a T.38 fax survives the hangup (due to the 'g' flag + in Dial, for example), we don't currently re-INVITE the media on the + other channel back to audio. This patch now has res_pjsip_t38 intercept + BYE requests and inform the far side that the T.38 session is terminated. + This naturally causes the correct re-INVITEs to be sent. - Change-Id: I56323899123ae3264900389cae1f5b252aa3bf43 -2015-05-01 13:22 +0000 [8f3cee1258] Corey Farrell + ASTERISK-25582 - * Astobj2: Fix initialization order of refdebug and AO2_DEBUG. + Change-Id: Iabd6aa578e633d16e6b9f342091264e4324a79eb - This ensures that refdebug is initialized before AO2_DEBUG if - both are enabled, since AO2_DEBUG allocates a container. +2015-11-20 21:07 +0000 [2b94d9a10d] Matt Jordan - This change also makes AO2_DEBUG initialization critical, a - failure will abort Asterisk startup. This is needed since - the failure would be caused by reg_containers allocation - failure, and that would result in a segmentation fault by - ao2_container_register later in startup. + * res/res_pjsip_t38: Add debug statements - ASTERISK-25048 #close - Reported by: Corey Farrell + This patch adds some debug statements to res_pjsip_t38. These statements help + to determine which SDP negotiation callbacks are being executed, and, when + a particular callback exits, why a callback may not have applied its logic + to the local or remote SDP. - Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244 + Change-Id: I61b3fb9183b7ebbb5da8e9f48b59a5d9d7042d77 -2015-04-29 14:49 +0000 [7ac28be04b] Matt Jordan +2015-10-22 09:44 +0000 [af288b2d96] Matt Jordan - * main/pbx: Improve performance of dialplan reloads with a large number of hints + * main/cli: Use proper string methods to check existence of context/exten/app - The PBX core maintains two hash tables for hints: a container of the - actual hints (hints), along with a container of devices that are watching that - hint (hintdevices). When a dialplan reload occurs, each hint in the hints - container is destroyed; this requires a lookup in the container of devices to - find the device => hint mapping object. In the current code, this performs an - ao2_callback, iterating over each of the device to hint objects in the - hintdevices container. For a large number of hints, this is extremely - expensive: dialplan reloads with 20000 hints could take several minutes - in just this phase. + Because the context, extension, and application are stored in stringfields, + checking for them being NULL doesn't work so well. This patch uses the + appropriate string library call, ast_strlen_zero, to see if there is a value + in the context/exten/app values. - This patch improves the performance of this step in the dialplan reloads - by caching which devices are watching a hint on the hint object itself. - Since we don't want to create a circular reference, we just cache the - name of the device. This allows us to perform a smarter ao2_callback on - the hintdevices container during hint removal, hashing on the name of the - device and returning an iterator to the matching names. The overall - performance improvement is rather large, taking this step down to a number of - seconds as opposed to minutes. + Change-Id: Ie09623bfdf35f5a8d3b23dd596647fe3c97b9a23 - In addition, this patch also registers the hint containers in the PBX - core with the astobj2 library. This allows for reasonable debugging to - hash collisions in those containers. +2015-11-18 09:43 +0000 [d27aac0a9d] Matt Jordan - ASTERISK-25040 #close - Reported by: Matt Jordan + * res/res_endpoint_stats: Add module to emit endpoint StatsD statistics - Change-Id: Iedfc97a69d21070c50fca42275d7b3e714e59360 + This patch adds a module that emits StatsD statistics about Asterisk + endpoints. This includes: + * A GUAGE statistic for endpoint states, tracking how many endpoints are in + a particular state. + * A GUAGE statistic for each endpoint, counting the number of channels + currently associated with an endpoint. -2015-04-30 15:54 +0000 [6b208d8c3b] Corey Farrell + ASTERISK-25572 - * Sample Configs: Fix syntax error in pjsip.conf + Change-Id: If7e1333c5aeda8d136850b30c2101c0ee1c97305 - The sample pjsip.conf has a few comment lines that are missing the - semicolons at the start of the comment, causing the config to fail - load. +2015-11-18 10:07 +0000 [90d9a70789] Matt Jordan - Change-Id: I776a38c916a7df7ee3e072fd0b21dbf4cc457352 + * res_pjsip/pjsip_options: Add StatsD statistics for PJSIP contacts -2015-04-30 15:20 +0000 [dc23204aca] Mark Michelson + This patch adds the ability to send StatsD statistics related to the + state of PJSIP contacts. This includes: + * A GUAGE statistic measuring the count of contacts in a particular state. + This measures how many contacts are reachable, unreachable, etc. + * The RTT time for each contact, if those contacts are qualified. This + provides StatsD engines useful time-based data about each contact. - * Prevent potential crash on blond transfer. + ASTERISK-25571 - Scenario: - Alice calls Bob. Bob performs a blond transfer to Carol. Carol rejects - the incoming call (or some other immediate circumstance causes Carol not - to answer the call) + Change-Id: Ib8378d73afedfc622be0643b87c542557e0b332c - What occurs in this case is that when the bridge between Alice and Bob - breaks, Alice is told to masquerade into Bob's channel that had placed - the call to Carol. The actual masquerade goes down without a hitch. - However, a channel fixup callback that attempts to publish dial events - over Stasis has a crash. The reason for this crash is that the datastore - on Bob's channel that placed the outbound call to Carol only had a bare - pointer to Carol's channel. Since Carol rejected the incoming call, - Carol's channel has been hung up and freed, meaning accessing her - channel results in a crash. +2015-11-13 10:34 +0000 [75097a0955] Matt Jordan - The fix here is simple. The dial fixup code has been altered to hold - references to the involved channels and to drop those references when - freeing data. + * res/res_pjsip_outbound_registration: Add registration statistics for StatsD - ASTERISK-25025 #close - Reported by Chet Stevens + This patch adds outbound registration statistics for StatsD. This includes + the following: + * A GUAGE metric for the overall count of outbound registrations. + * A GUAGE metric for each state an outbound registration can be in. As the + outbound registrations change state, the overall count of how many + outbound registrations are in the particular state is changed. - Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197 + These statistics are particularly useful for systems with a large number of + SIP trunks, and where measuring the change in state of the trunks is useful + for monitoring. -2015-04-30 14:40 +0000 [47fa2ad10b] Corey Farrell + ASTERISK-25571 - * Build System: Fix issue with addons moduleinfo. + Change-Id: Iba6ff248f5d1c1e01acbb63e9f0da1901692eb37 - The build system now scans additional sources when generating - moduleinfo for menuselect. Unfortunately the extra sources - for format_mp3 only exist if downloaded. +2015-11-19 09:40 +0000 [8f71263e72] Matt Jordan - Use the Makefile macro 'wildcard' to allow moduleinfo generator - to ignore sources that do not exist. + * res/res_pjsip_outbound_registration: Apply configuration on object type load - Change-Id: I596604713b7345ce994f32197f8f6bfd9bcf4170 + When Asterisk is configured to use a dynamic sorcery backend (such as + res_sorcery_astdb) with 'registration' objects, it will fail to create the + internal state objects associated with the registration objects on module + load. This is due to nothing actually querying for the specific objects + and calling their sorcery apply handler during module load. -2015-04-30 13:42 +0000 [bb6ddb3dc8] Joshua Colp + This patch fixes that by calling get_registrations in the sorcery observer's + object_type_loaded handler. Doing this causes the sorcery backends to be + asked for the current state of all registration objects, which causes the + apply handler to be called and the internal run-time state to be created. - * res_ari_device_states: Fix dependency on res_stasis_device_state. + ASTERISK-25575 #close - The res_ari_device_states module depends on res_stasis_device_state, - not res_stasis_device_states. + Change-Id: Ie9306e797098c6d4da7bcf4a5434a15891508b23 - Change-Id: I26e02ad37f9e36bcc859867e2fad1b90452ec3de +2015-11-11 11:51 +0000 [0b508789ab] Alexander Traud -2015-04-28 17:00 +0000 [11ffcf662f] Mark Michelson + * translate: Provide translation modules the result of SDP negotiation. - * Restrict functionality when ACLs are misconfigured. + Previously, a trancoding module did not have access to the joint but cached + format. Therefore, the module did not have access to the attributes negotiated + via SDP (line fmtp). Now, a translation module receives the joint format. - This patch has two main purposes: + ASTERISK-25545 #close - 1) Improve warning messages when ACLs are configured improperly. - 2) Prevent misconfigured ACLs from allowing potentially unwanted - traffic. + Change-Id: Id6878a989b50573298dab115d3371ea369e1a718 - To acomplish point (2) in most cases, whatever configuration object that - the ACL belonged to was not allowed to load. +2015-11-19 01:14 +0000 [1aa552b2a2] Alexander Traud - The one exception is res_pjsip_acl. In that case, ACLs are their own - configuration object. Furthermore, the module loading code has no - indication that a ACL configuration had a failure. So the tactic taken - here is to create an ACL that just blocks everything. + * res_format_attr_h264: Do not reset string buffer. - ASTERISK-24969 - Reported by Corey Farrell + When no parameter is present, Asterisk does not generate the line fmtp, as + expected. However, because a buffer was reset, even rtpmap and fmtp of previous + media codecs got removed. Now, Asterisk does not reset other codecs in case of + no parameter for H.264. - Change-Id: I2ebcb6959cefad03cea4d81401be946203fcacae + ASTERISK-25573 #close -2015-04-29 14:29 +0000 [03c51cf525] Richard Mudgett + Change-Id: I93811331f4a28c45418a9e14ee46c0debd47a286 - * chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option. +2015-11-18 10:05 +0000 [3354b325c6] Matt Jordan - Some telco switches occasionally ignore ISDN RESTART requests. The fix - for ASTERISK-19608 added an escape clause for B channels in the restarting - state if the telco ignores a RESTART request. If the telco fails to - acknowledge the RESTART then Asterisk will assume the telco acknowledged - the RESTART on the second call attempt requesting the B channel by the - telco. The escape clause is good for dealing with RESTART requests in - general but it does cause the next call for the restarting B channel to be - rejected if the telco insists the call must go on that B channel. + * res_statsd: Add functions that support variable arguments - chan_dahdi doesn't really need to issue a RESTART request in response to - receiving a cause 44 (Requested channel not available) code. Sending the - RESTART in such a situation is not required (nor prohibited) by the - standards. I think chan_dahdi does this for historical reasons to deal - with buggy peers to get channels unstuck in a similar fashion as the - chan_dahdi.conf resetinterval option. + Often, the metric names of statistics we are generating for StatsD have some + dynamic component to them. This can be the name of a particular resource, or + some internal status label in Asterisk. With the current set of functions, + callers of the statsd API must first build the metric name themselves, then + pass this to the API functions. This results in a large amount of boilerplate + code and usage of either fixed length static buffers or dynamic memory + allocation, neither of which is desireable. - * Add the chan_dahdi.conf force_restart_unavailable_chans compatability - option that when disabled will prevent chan_dahdi from trying to RESTART - the channel in response to a cause 44 code. + This patch adds two new functions to the StatsD API that support a printf + style format specifier for constructing the metric name. A dynamic string, + allocated in threadstorage, is used to build the metric name. This eases + the burden on users of the StatsD API. - ASTERISK-25034 #close - Reported by: Richard Mudgett + Change-Id: If533c72d1afa26d807508ea48b4d8c7b32f414ea - Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65 -2015-04-29 21:54 +0000 [556653d937] Rodrigo Ramírez Norambuena +2015-11-17 14:53 +0000 [d4a522d587] Richard Mudgett - * cdr/cdr_csv.c: Refactor, function to write content of csv file. + * res_pjsip_outbound_registration.c: Be tolerant of short registration timeouts. - Create a function for write content of CDR on csv files. Before used same - code for write two distinct files (account and master cdr) instead use a - function for thats. + Change-Id: Ie16f5053ebde0dc6507845393709b4d6a3ea526d - Reduced to one lock when files are written. +2015-11-17 14:53 +0000 [e44ab3816c] Richard Mudgett - Change-Id: Idce707f4c108083252e0aeb948f421d924953e65 + * res_pjsip_outbound_registration.c: Fix 423 response handling. -2015-04-30 06:04 +0000 [80aa9aee5d] Joshua Colp + Receiving a 423 Interval Too Brief response after authentication for an + outbound registration attempt results in assuming that the registrar has + rejected the registration permanently. If there are no configured retries + for fatal responses then the outbound registration is stopped for that + endpoint. - * res_pjsip_outbound_registration: Fix double unref on error return. + For registrations, PJSIP/PJPROJECT intercepts the handling of 423 + responses and does not include any authentication in the updated + registration request. When the updated request is challenged then the + Asterisk code assumes that we were challenged again because the peer + rejected the authentication we sent earlier. - When the PJSIP pjsip_regc_send function is invoked and an error - status returned the caller currently decrements the reference count - of the client state that it just incremented, assuming the - registration callback would not have been invoked. In practice - this is not correct. If the failure happens after the transaction - has been set up the callback will still be invoked. This will - cause the reference count to be incorrectly decremented twice, once - by the registration callback and second by the caller of - pjsip_regc_send. + * Made registration challenges keep track of the CSeq number to determine + if the received challenge response was for the request we thought we sent. + If the response's CSeq number differs from the CSeq number we last sent + with authentication then authenticate again because it is a challenge to a + different request. - This change makes it so that whether the callback is invoked or - not is known by the caller of pjsip_regc_send. Depending on - this it can know whether it is responsible for decrementing the - reference count of the client state or not. + Change-Id: I81b4bd36d1be095bab606e34b8b44e6302971b09 - ASTERISK-25037 #close - Reported by: Joshua Colp +2015-11-03 14:36 +0000 [1e0040b88f] Tyler Cambron - Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de + * StatsD: Add res_statsd compatibility -2015-04-30 02:07 +0000 [7ff3b2d479] Rodrigo Ramírez Norambuena + Added a new api to res_statsd.c to allow it to receive a + character pointer for the value argument. This allows for a + '+' and a '-' to easily be sent with the value. - * include/asterisk/channel.h: Fix typo + ASTERISK-25419 + Reported By: Ashley Sanders - Change-Id: Ie584b85e16a94c255e60d0b1732ef9686464fef3 + Change-Id: Id6bb53600943d27347d2bcae26c0bd5643567611 -2015-04-29 16:15 +0000 [39d3e1ef6e] Matt Jordan +2015-11-16 13:56 +0000 [f62b642fe3] Matt Jordan - * main/rtp_engine: Fix DTLS double-free introduced by 0b6410c4f8 + * res/res_pjsip: Fix off nominal crash with requests that fail and have a timer - The patch in 0b6410c4f8 did correctly fix a memory leak of the DTLS - structures in the RTP engine. However, when a 'core reload' is issued, a - double free of the memory pointed to by the char *'s in the DTLS - configuration struct can occur, as ast_rtp_dtls_cfg_free does not set - the pointers to NULL when they are freed. + When a request is sent using pjsip_endpt_send_request and fails, a condition + exists where the request wrapper, which is an AO2 object, may be de-ref'd + more times than it should. This occurs when the request's callback is called, + and, in the callback, the timer on the PJSIP heap is cancelled. When that + occurs, the request wrapper's lifetime is decremented. When + pjsip_endpt_send_request fails, we unilaterally decrement the lifetime of + the request wrapper again, even though we've already cancelled the reference + associated with the timer. - This patch sets those pointers to NULL, preventing a second call to - ast_rtp_dtls_cfg_free from corrupting memory. + This patch checks the return result of pj_timer_heap_cancel_if_active before + removing the reference associated with the timer. We now only decrement it + in this case if a timer is cancelled as a result of the function call. - ASTERISK-25022 + Change-Id: I21332343a1a019c1117076f9bf2df27be2850102 - Change-Id: I820471e6070a37e3c26f760118c86770e12f6115 +2015-11-13 14:03 +0000 [fdd2afcd16] Mark Michelson -2015-04-29 13:05 +0000 [5d0c182885] Kevin Harwell + * Confbridge: Add a user timeout option - * res_fax: allow 2400 transmission rate according to v.27ter standard + This option adds the ability to specify a timeout, in seconds, for a + participant in a ConfBridge. When the user's timeout has been reached, + the user is ejected from the conference with the CONFBRIDGE_RESULT + channel variable set to "TIMEOUT". - A previous set of patches (see: ASTERISK-22790 & ASTERISK-23231) made it so - a v.27 modem was not allowed to have a minimum transmission rate of 2400 bits - per second. This reverts all or some of those patches since according to the - v.27ter standard a rate of 2400 bits per second is also supported. + The rationale for this change is that there have been times where we + have seen channels get "stuck" in ConfBridge because a network issue + results in a SIP BYE not being received by Asterisk. While these + channels can be hung up manually via CLI/AMI/ARI, adding some sort of + automatic cleanup of the channels is a nice feature to have. - One of the original patches also added 9600 bits per second support for v.27. - This patch also removes that since v.27ter only supports 2400/4800 bits per - second. + ASTERISK-25549 #close + Reported by Mark Michelson - Also, since Asterisk specifically supports v.27ter the enum was renamed to - better reflect this. + Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98 - ASTERISK-24955 #close - Reported by: Matt Jordan +2015-11-16 04:29 +0000 [7debb986a5] Alec Davis - Change-Id: I4b9dfb6bf7eff08463ab47ee1a74224f27cae733 + * app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked! -2015-04-28 23:35 +0000 [c9c03998cc] Corey Farrell + commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525) + refer ASTERISK-24958 - * Astobj2: Add ao2_weakproxy_ref_object function. + above commit removed ast_channel_lock(qe->chan); + but failed to remove corresponding ast_channel_unlock(qe->chan); - This function allows code to run ao2_ref against the real - object associated with a weakproxy. It is useful when - all of the following conditions are true: - * You have a pointer to weakproxy. - * You do not have or need a pointer to the real object. - * You need to ensure the real object exists and is not - destroyed during a process. + ASTERISK-25561 #close + Reported Alec Davis - In this case it's wasteful to store a pointer to the real - object just for the sake of releasing it later. + Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a - Change-Id: I38a319b83314de75be74207a8771aab269bcca46 +2015-11-14 07:02 +0000 [afd9a89e5a] Joshua Colp -2015-04-27 16:13 +0000 [4f1db2070d] Mark Michelson + * hashtab: Add NULL check when destroying iterator. - * res_pjsip_outbound_registration: Don't fail on delayed processing. + The hashtab API is pretty NULL tolerant which has resulted + in remaining callers not doing much checks themselves. + Unfortunately the function to destroy an iterator does not + do a NULL check and will result in a crash if passed NULL. + This change fixes that. - Odd behaviors have been observed during outbound registrations. The most - common problem witnessed has been one where a request with - authentication credentials cannot be created after receiving a 401 - response. Other behaviors include apparently processing an incorrect SIP - response. + ASTERISK-25552 #close - Inspecting the code led to an apparent issue with regards to how we - handle transactions in outbound registration code. When a response to a - REGISTER arrives, we save a pointer to the transaction and then push a - task onto the registration serializer. Between the time that we save the - pointer and push the task, it's possible for the transaction to be - destroyed due to a timeout. It's also possible for the address to be - reused by the transaction layer for a new transaction. + Change-Id: Ic1bf8eec3639e5a440f1c941d3ae3893ac6ed619 - To allow for authentication of a REGISTER request to be authenticated - after the transaction has timed out, we now hold a reference to the - original REGISTER request instead of the transaction. The function for - creating a request with authentication has been altered to take the - original request instead of the transaction where the original request - was sent. +2015-11-13 14:32 +0000 [c0f2f8de45] Richard Mudgett - ASTERISK-25020 - Reported by Mark Michelson + * res_pjsip_rfc3326.c: Fix crash when channel goes away. - Change-Id: I756c19ab05ada5d0503175db9676acf87c686d0a -2015-04-29 10:46 +0000 [ed5715eb39] Joshua Colp + If an authenticated incoming caller does not respond to our 200 OK INVITE + response with an ACK then PJSIP will hangup the call. Unfortunately, + there is a chance that the session's channel will go away between one use + of the channel pointer and another when building the BYE request because + the BYE is being built by the monitor thread and not the call's serializer + thread. - * res_sorcery_config: Fix build issue due to syntax error. + * Added a check to ensure that the thread trying to add the Reason header + is the call's serializer thread. This ensures that the channel will not + go away on us. - Change-Id: Ic8322f04e37842848ad72cf2871bd0378f67c4ac + Change-Id: I866388d2b97ea2032eaae3f3ab3f1ca6cbd2df89 -2015-04-29 06:46 +0000 [f226bd6f60] Corey Farrell +2015-11-13 14:19 +0000 [4f43b85c92] Mark Michelson - * ARI: Fix missing dependencies. + * Taskprocessors: Increase high-water mark - ARI modules that are generated by 'make ari-stubs' are all dependent on - res_ari_model. Additionally some of the same modules depend on one or more - res_stasis_* modules. + In practical tests, we have seen certain taskprocessors, specifically + Stasis subscription taskprocessors, cross the recently-added high-water + mark and emit a warning. This high-water mark warning is only intended + to be emitted when things have tanked on the system and things are + heading south quickly. In the practical tests, the Stasis taskprocessors + sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in + any danger at all. - ASTERISK-25027 #close - Reported by: Corey Farrell + As such, this ups the high-water mark to 500 tasks instead. It also + redefines the SIP threadpool request denial number to be a multiple of + the taskprocessor high-water mark. - Change-Id: I8e07fe7e81fedacb87232f2b6f8b5f47927b4153 + Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce -2015-04-29 06:26 +0000 [881844297a] Corey Farrell +2015-11-11 11:46 +0000 [d8d3991390] Alexander Traud - * res_pjsip: Remove incorrect MODULEINFO from presence_xml.c. + * format: Register format-attribute module with cached formats. - Remove incorrect MODULEINFO block and unneeded header includes - from presence_xml.c. + In Asterisk 13, cached formats are created before their corresponding format- + attribute module is registered. Cached formats are involved when a local + extension is called. Therefore, ast_format_generate_sdp_fmtp did not work + on local extensions. This change affects the Opus Codec, H.263 (Plus), H.264, + and format-attribute modules provided externally. - ASTERISK-25027 - Reported by: Corey Farrell + ASTERISK-25160 #close - Change-Id: I977c609ab9d1fe05373027c4138900f6985990eb + Change-Id: I1ea1f0483e5261e2a050112e4ebdfc22057d1354 -2015-04-29 06:17 +0000 [c232ff3af0] Corey Farrell +2015-11-12 11:17 +0000 [367972e42d] Mark Michelson - * Git Migration: Create doc/rest-api when needed. + * res_pjsip distributor: Don't send 503 response to responses. - Create the directory './doc/rest-api' at the start of 'make ari-stubs' - to prevent an error when documentation is generated. The directory is - also added to git ignores. + When the SIP threadpool is backed up with tasks, we send 503 responses + to ensure that we don't try to overload ourselves. The problem is that + we were not insuring that we were not trying to send a 503 to an + incoming SIP response. - ASTERISK-25027 - Reported by: Corey Farrell + This change makes it so that we only send the 503 on incoming requests. - Change-Id: Iaccc7f0138501c23aa78feaca2f3cce9e68cbc1b + Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404 -2015-04-29 03:03 +0000 [5d997ecc83] Corey Farrell +2015-11-11 17:11 +0000 [2f9cb7d62b] Mark Michelson - * Build System: Prevent unneeded changes to asterisk/buildopts.h. + * res_pjsip: Deny requests when threadpool queue is backed up. - * Add AST_DEVMODE to BUILDOPTS - * Use BUILDOPTS to generate AST_BUILDOPT_SUM. - * Remove loop that defined AST_MODULE_* + We have observed situations where the SIP threadpool may become + deadlocked. However, because incoming traffic is still arriving, the SIP + threadpool's queue can continue to grow, eventually running the system + out of memory. - These changes ensure that only ABI effecting options are considered for - AST_BUILDOPT_SUM. This also reduces unneeded full system rebuilds caused - by enabling or disabling one module that another is dependent on. + This change makes it so that incoming traffic gets rejected with a 503 + response if the queue is backed up too much. - ASTERISK-25028 #close - Reported by: Corey Farrell + Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816 - Change-Id: I2c516d93df9f6aaa09ae079a8168c887a6ff93a2 +2015-11-12 06:24 +0000 [4e5bf12b33] Joshua Colp -2015-04-29 00:02 +0000 [55a780d211] Corey Farrell + * format_cap: Don't append the 'none' format when appending all. - * Git Conversion: Switch Non-C files to ASTERISK_REGISTER_FILE. + When appending all formats of a type all the codecs are iterated + and added. This operation was incorrectly adding the ast_format_none + format which is special in that it is supposed to be used when no + format is present. It shouldn't be appended. - This switches files used to generate other sources to use the new - ASTERISK_REGISTER_FILE macro. + ASTERISK-25535 - ASTERISK-25026 #close - Reported by: Corey Farrell + Change-Id: I7b00f3bdf4a5f3022e483d6ece602b1e8b12827c - Change-Id: Ieb2537b83421cad07c8955e5f90c405ccf079740 +2015-11-11 04:16 +0000 [07583c2888] Steve Davies -2015-04-28 13:28 +0000 [5ebfed8ef3] Yousf Ateya + * Further fixes to improper usage of scheduler - * chan_iax2: Ensure that IAX flags are 64 bits. + When ASTERISK-25449 was closed, a number of scheduler issues mentioned in + the comments were missed. These have since beed raised in ASTERISK-25476 + and elsewhere. - Flags are 64 bits. Without LLU suffix the value of 1<<31 is negative. - Although it doesn't have an effect on the current implementation, it will - be problem if more flags are added. + This patch attempts to collect all of the scheduler issues discovered so + far and address them sensibly. - Change-Id: Ic290c81cfbbbf062872392d99d3322932cc49487 -2015-04-28 00:29 +0000 [46cf643c75] Ashley Sanders + ASTERISK-25476 #close - * chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR - Sections Exist in pjsip.conf + Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b - This patch modifies the current loading strategy of the pjsip configuration. If - duplicate sections (e.g. sections containing the same [id/type]) are defined in - [pjsip.conf], the loader will consider the configuration for the given type as - invalid when the duplicate section is encountered. The entire configuration - (including what was previously loaded) for the duplicate [id/type] sections - will be rejected and destroyed, an error message is logged and the load - processing for the given stops. +2015-11-11 11:04 +0000 [b818d70533] Joshua Colp - ASTERISK-24996 - Reported By: Ashley Sanders + * threadpool: Handle worker thread transitioning to dead when going active. - Change-Id: I35090ca4cd40f1f34881dfe701a329145c347aef -2015-04-28 11:50 +0000 [0bbe2c35cf] Richard Mudgett + This change adds handling of dead worker threads when moving them + to be active. When this happens the worker thread is removed from + both the active and idle threads container. If no threads are able + to be moved to active then the pool grows as configured. - * chan_vpb: Fix compile error due to use of ASTERISK_FILE_VERSION. + A unit test has also been added which thrashes the idle timeout + and thread activation to exploit any race conditions between the + two. - Change-Id: I51179e2a83937423676da522b766f1126de4059e -2015-04-27 14:44 +0000 [f47fed2e12] Mark Michelson + ASTERISK-25546 #close - * res_pjsip_outbound_registration: Add debugging messages. + Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143 - When problems occur regarding outbound registrations, it currently - is difficult to debug. Most off-nominal paths had warning messages, - but sometimes we want to know what's going on before hitting the - off-nominal path. This patch adds lots of debugging output that - should give a clearer picture of what is happening with regards - to outbound registrations. +2015-11-10 09:27 +0000 [4bf84459c7] Alexander Traud - ASTERISK-25020 - Reported by Mark Michelson + * rtp_engine: Init a format-attribute module to its RFC defaults. - Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45 + Previously, format-attribute modules relied on an existing fmtp line in SDP + negotiation. However, fmtp is optional for several formats like the Opus Codec. + Now, the format-attribute module is called with an empty fmtp, which allows the + module to initialise itself to RFC defaults. Furthermore now, Asterisk is able + to differentiate between internally and externally created formats. -2015-04-28 05:38 +0000 [5e96584829] Steve Davies + ASTERISK-25537 #close - * res_rtp_asterisk: Resolve 2 discrete memory leaks in DTLS + Change-Id: I28f680cef7fdf51c0969ff8da71548edad72ec52 - ao2 ref leak in res_rtp_asterisk.c when a DTLS policy is created. - The resources are linked into a table, but the original alloc refs - are never released. ast_strdup leak in rtp_engine.c. If - ast_rtp_dtls_cfg_copy() is called twice on the same destination struct, - a pointer to an alloc'd string is overwritten before the string is free'd. +2015-11-09 03:04 +0000 [1bff400df7] Alexander Traud - ASTERISK-25022 - Reported by: one47 + * ast_format_cap_get_names: To display all formats, the buffer was increased. - Change-Id: I62a8ceb8679709f6c3769136dc6aa9a68202ff9b + ASTERISK-25533 #close -2015-04-28 04:28 +0000 [d6a2d92353] Rodrigo Ramírez Norambuena + Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a - * cdr/cdr_csv.c: Add missing space after comma. +2015-11-09 07:04 +0000 [f3ac4d8090] Alexander Traud - Change-Id: I3866a20019b1a3a2f10fe36640053929330b0fcb + * ast_format_cap: Avoid format creation on module load, use cache instead. -2015-04-27 22:01 +0000 [542bfee881] Rodrigo Ramírez Norambuena + Since Asterisk 13, formats are immutable and cached. However while loading a + module like chan_sip, some formats were created instead using cached ones. - * CHANGES: Add missing spaces. + ASTERISK-25535 #close - Change-Id: I534ea0f22759e3633585dfa9b145b4a284efe67f + Change-Id: I479cdc220d5617c840a98f3389b3bd91e91fbd9b -2015-04-17 02:16 +0000 [5c1d07baf0] Corey Farrell +2015-11-06 07:54 +0000 [6d1bdb9d3b] Walter Doekes - * Astobj2: Allow reference debugging to be enabled/disabled by config. + * func_callerid: Document that CALLERID(pres) is available. - * The REF_DEBUG compiler flag no longer has any effect on code that uses - Astobj2. It is used to determine if reference debugging is enabled by - default. Reference debugging can be enabled or disabled in asterisk.conf. - * Caller information is provided in logger errors for ao2 bad magic numbers. - * Optimizes AO2 by merging internal functions with the public counterpart. - This was possible now that we no longer require a dual ABI. + CALLERPRES() says that it's deprecated in favor of CALLERID(num-pres) + and CALLERID(name-pres). But for channel driver that don't make a + distinction between the two (e.g. SIP), it makes more sense to get/set + both at once. This change reveals the availability of CALLERID(pres), + CONNECTEDLINE(pres), REDIRECTING(orig-pres), REDIRECTING(to-pres) and + REDIRECTING(from-pres). - ASTERISK-24974 #close - Reported by: Corey Farrell + ASTERISK-25373 #close - Change-Id: Icf3552721fe999365ba8a8cf00a965aa6b897cc1 + Change-Id: I5614ae4ab7d3bbe9c791c1adf147e10de8698d7a +2015-11-06 07:52 +0000 [8410336681] Walter Doekes -2015-04-27 12:11 +0000 [356568dc7f] gtjoseph + * docs: Fix a few typo's in app docs (more then, resourse). - * res_pjsip: Fix SEGV on pending-qualify contacts + Change-Id: Iba57efadf6c0b822e762c7a001bc89611d98afd7 - Permanent contacts that hadn't been qualified yet were missing - their contact_status entries causing SEGVs when running CLI - commands. +2015-11-06 07:36 +0000 [0d425f2eb4] Walter Doekes - This patch makes sure that contact_statuses are created for - both dynamic and permanent contacts when they are created. - It also adds checks in the CLI code to make sure there's a - contact_status, just in case. + * xmldoc: Improve xmldoc wrapping of 'core show ...' output. - ASTERISK-25018 #close - Reported-by: Ivan Poddubny - Tested-by: Ivan Poddubny - Tested-by: George Joseph + Previously, the wrapping did both lookahead and lookback, which, + together with color escape sequences, caused some lines to be wrapped + way earlier than other lines. This led to inconsistent output. - Change-Id: I3cc13e5cedcafb24c400368b515b02d7fb81e029 + This simplifies the wrapping code and makes it more sane: if maxcolumns + is hit, we simply jump back to the last space and wrap there. -2015-04-15 18:55 +0000 [358080e86e] Rodrigo Ramírez Norambuena + ASTERISK-25527 #close - * cdr/cdr_odbc.c: Added to record new columns add on CDR 1.8 Asterisk Version + Change-Id: I56d01c6f9a812642b1b05535c98d4db48d17c957 - Add new column to INSERT new columns added in cdr 1.8 version. The columns are: - * peeraccount - * linkedid - * sequence - This feature is configurable in cdr_odbc.conf using a new configuration - option, 'newcdrcolumns'. +2015-11-06 06:57 +0000 [33752e0837] Sean Bright (license #5060) - ASTERISK-24976 #close + * res_pjsip_sdp_rtp: Enable Opus to be negotiated via SIP/SDP. - Change-Id: Ibe0c7540a88305c6012786f438a0813ad8b19127 -2015-04-26 17:21 +0000 [d7f4788341] Matt Jordan + In SIP/SDP, Opus has two channels always (see RFC 7587 section 7). The actual + amount of channels is negotiated in-band. Therefore now, the Opus codec and its + attribute rtpmap are registered with two channels. - * channels/chan_skinny: Fix compilation error introduced in f8e21a1adf + ASTERISK-24779 #close + Reported by: PowerPBX + Tested by: Alexander Traud + patches: + asterisk-24779.patch submitted by Sean Bright (license #5060) - A typo in commit f8e21a1adf resulted in a compilation error in - chan_skinny. This patch fixes the typo. + Change-Id: Ic7ac13cafa1d3450b4fa4987350924b42cbb657b - ASTERISK-24917 +2015-11-03 16:19 +0000 [6ff48319d9] Jonathan Rose - Change-Id: Id7f4ad1fe948eb2408622e80c27936ce4516c33c + * taskprocessor: Add high water mark warnings -2015-04-23 17:29 +0000 [9f65ea482e] Kevin Harwell + If a taskprocessor's queue grows large, this can indicate that there + may be a problem with tasks not leaving the processor or else that + the number of available task processors for a given type of task is + too low. This patch makes it so that if a taskprocessor's task queue + grows above 100 queued tasks that it will emit a warning message. + Warning messages are emitted only once per task processor. - * app_confbridge: Default the template option to a compatible default profile. + ASTERISK-25518 #close + Reported by: Jonathan Rose - Confbridge dynamic profiles did not have a default profile unless you - explicitly used Set(CONFBRIDGE(bridge,template)=default_bridge). If a - template was not set prior to the bridge being created then some - options were left with no default values set. This patch makes it so - the default templates are set to the default bridge and user profiles. + Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c - ASTERISK-24749 #close - Reported by: philippebolduc +2015-11-04 14:31 +0000 [506aea26e6] Matt Jordan - Change-Id: I1bd6e94b38701ac2112d842db68de63d46f60e0a + * main/dial: Protect access to the format_cap structure of the requesting channel -2015-04-23 07:31 +0000 [cafdb7a049] Olle E. Johansson + When a dial attempt is made that involves a requesting channel, we previously + were not: + a) Protecting access to the native format capabilities structure on the + requesting channel. That is inherently unsafe. + b) Reference bumping the lifetime of the format capabilities structure. - * CREDITS: Update credits for Olle Johansson + In both cases, something else could sneak in, blow away the format + capabilities, and we'd be holding onto an invalid format_cap structure. When + the newly created channel attempts to construct its format capabilities, things + go poorly. - Change-Id: I8f3d0a6c3f1075a1f7d8308593394611a96749de -2015-04-24 09:17 +0000 [bd61c9300c] Mark Michelson + This patch: + a) Ensures that we get a reference to the native format capabilities while + the requesting channel is locked + b) Holds a reference to the native format capabilities during the creation + of the new channel. - * res_pjsip_outbound_authenticator: Increase CSeq on authed requests. + ASTERISK-25522 #close - The way PJSIP generates an authenticated request is to use a previous - request as a template. This means that the authenticated request will - have the same Call-ID, From header (including tag), and CSeq as the - original request. PJSIP generates a new branch on the Via header to - indicate that this is a new transaction, though. + Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f - There are some SIP implementations, though, that do not notice the - change in the branch and therefore will match the authed request to the - original request's transaction. Since the CSeq is the same, the server - will repeat the response it sent to the original request. +2015-10-30 22:57 +0000 [d098d00424] Corey Farrell - This patch aids interoperability by increasing the CSeq of the authed - request by one. + * Fix cli display of build options. - ASTERISK-24845 #close - Reported by: Carl Fortin - Tested by: Carl Fortin + A previous commit reduced the AST_BUILDOPTS compiler define to + only include options that affected ABI. This included some options + that were previously displayed by cli "core show settings". This + change corrects the CLI display while still restricting buildopts.h + to ABI effecting options only. - Change-Id: I39c4ca52e688a9f83bcc1878371334becdc5be01 + ASTERISK-25434 #close + Reported by: Rusty Newton -2015-04-22 04:17 +0000 [f8e21a1adf] Diederik de Groot + Change-Id: Id07af6bedd1d7d325878023e403fbd9d3607e325 - * Clang: Fix some more tautological-compare warnings. +2015-11-03 11:15 +0000 [afec1b1b64] Matt Jordan - clang can warn about a so called tautological-compare, when it finds - comparisons which are logically always true, and are therefor deemed - unnecessary. + * res_pjsip/location: Destroy contact_status objects on contact deletion - Exanple: - unsigned int x = 4; - if (x > 0) // x is always going to be bigger than 0 + The contact_status Sorcery objects are currently not destroyed when a contact + is deleted. This causes the contact's last known RTT/status to be 'sticky' + when the contact itself may no longer exist. This patch causes the + contact_status objects associated with both dynamic and static contacts to + be destroyed if the AoR holding those contacts is also destroyed (or via + other paths where a contact may be deleted.) - Enum Case: - Each enumeration is its own type. Enums are an integer type but they - do not have to be *signed*. C leaves it up to the compiler as an - implementation option what to consider the integer type of a particu- - lar enumeration is. Gcc treats an enum without negative values as - an int while clang treats this enum as an unsigned int. + Change-Id: I7feec8b9278cac3c5263a4c0483f4a0f3b62426e - rmudgett & mmichelson: cast the enum to (unsigned int) in assert. - The cast does have an effect. For gcc, which seems to treat all enums - as int, the cast to unsigned int will eliminate the possibility of - negative values being allowed. For clang, which seems to treat enums - without any negative members as unsigned int, the cast will have no - effect. If for some reason in the future a negative value is ever - added to the enum the assert will still catch the negative value. +2015-11-03 10:58 +0000 [715f770c9f] Matt Jordan - ASTERISK-24917 - Change-Id: Ief23ef68916192b9b72dabe702b543ecfeca0b62 + * pjsip_configuration: On delete, remove the persistent version of an endpoint -2015-04-20 13:06 +0000 [1e74793061] Diederik de Groot + When an endpoint is deleted (such as through an API), the persistent endpoint + currently continues to lurk around. While this isn't harmful from a memory + consumption perspective - as all persistent endpoints are reclaimed on + shutdown - it does cause Stasis endpoint related operations to continue + to believe that the endpoint may or may not exist. - * Example script for scan-build (the llvm static analyzer) + This patch causes the persistent endpoint related to a PJSIP endpoint to be + destroyed if the PJSIP endpoint is deleted. - - Added Pre-amble (Options / Flags / Usage Example / GNU License) - - Extended Configurability - - Made Executable + Change-Id: I85ac707b4d5e6aad882ac275b0c2e2154affa5bb +2015-11-03 08:15 +0000 [f0f190af08] Matt Jordan - ASTERISK-24917 - Change-Id: I70405fe54e4be7dbfbcb62e291690069b88617a8 + * main/stasis_endpoints: Fix ContactStatusChange JSON for roundtrip_usec field -2015-04-23 12:54 +0000 [89a3fc0572] Mark Michelson + The JSON packing for the ContactStatusChange event forgot to include the + roundtrip_usec field. As a result, the field never showed up in any event, + even when the data was available. This patch corrects that error by properly + packing the JSON blob with the data. - * res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX. + Change-Id: I8df80da659a44010afbd48f645967518ff5daa17 - When Asterisk originates a channel to an application, the channel is - hung up once the application finishes executing. When the application - in question is SendFax, the Asterisk PJSIP code will attempt to reinvite - the T.38 session to audio after the FAX completes. The hangup of the - channel happens in the midst of this reinvite transaction. In most - circumstances, this works out okay because the BYE is delayed until the - reinvite transaction can complete. +2015-11-02 20:24 +0000 [0393bd6bed] Corey Farrell - However, if the reinvite that Asterisk sends receives a 401/407 - response, then Asterisk's attempt to re-send the reinvite with - authentication will fail. This is because the session supplement in - res_pjsip_t38 makes the assumption that the channel on the session will - always be non-NULL. Since the channel has been hung up, though, the - channel is now NULL. Attempting to operate on the channel causes a - crash. + * chan_sip: Allow websockets to be disabled. - This patch fixes the issue by ensuring that the channel on the session - is not NULL before attempting to mess with the T.38 framehook. + This patch adds a new setting "websockets_enabled" to sip.conf. + Setting this to false allows chan_sip to be used without causing + conflicts with res_pjsip_transport_websocket. - This patch also contains some corrections for comments that were - incorrect and really confused me when I first started looking at the - code. + ASTERISK-24106 #close + Reported by: Andrew Nagy - ASTERISK-25004 #close - Reported by Mark Michelson + Change-Id: I04fe8c4f2d57b2d7375e0e25826c91a72e93bea7 - Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0 +2015-11-02 17:19 +0000 [6fbffe42e1] Mark Michelson -2015-04-23 09:16 +0000 [75666ad7c6] gtjoseph + * res_pjsip: Set threadpool max size default to 50. - * res_pjsip: Validate that contact uris start with sip: or sips: + During a stress test of subscriptions, a huge blast of + subscription-related traffic resulted in the threadpool expanding to a + ridiculous number of threads. The balooning of threads resulted in an + increase of memory, which led to a crash due to being out of memory. - Currently we use pjsip_parse_hdr to validate contact uris but it - appears that it allows uris without a scheme if there's a port - supplied. I.E myexample.com will fail but myexample.com:5060 will - pass even though it has no scheme. This causes SEGVs later on - whenever the uri is used. + An easy fix for the particular test was to limit the size of the + threadpool, thus reining in the amount of memory that would be used. It + was decided that there really is no downside to having a non-infinite + default value for the maximum size of the threadpool, so this change + introduces 50 threads as the maximum threadpool size for the SIP + threadpool. - To prevent this, permanent_contact_validate has been updated to check - that the scheme is either 'sip' or 'sips'. + ASTERISK-25513 #close + Reported by John Bigelow - 2 uses of possibly-null endpoint have also been fixed in - create_out_of_dialog_request. + Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be - ASTERISK-24999 +2015-11-02 06:57 +0000 [11e54b1932] Matt Jordan - Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2 - Reported-by: Brad Latus + * pjsip_options: Schedule/unschedule qualifies on AoR creation/destruction -2015-04-23 08:00 +0000 [ca7193167e] Diederik de Groot + When an AoR is created or destroyed dynamically, the scheduled OPTIONS + requests that qualify the contacts on the AoR are not necessarily started + or destroyed, particularly for persistent contacts created for that AoR. + This patch adds create/update/delete sorcery observers for an AoR, which + schedule/unschedule the qualifies as expected. - * Clang: change previous tautological-compare fixes. + Change-Id: Ic287ed2e2952a7808ee068776fe966f9554bdf7d - clang can warn about a so called tautological-compare, when it finds - comparisons which are logically always true, and are therefor deemed - unnecessary. +2015-10-30 13:22 +0000 [118d628e08] Matt Jordan - Exanple: - unsigned int x = 4; - if (x > 0) // x is always going to be bigger than 0 + * Makefile: Add a rule 'basic-pbx' that installs the Basic PBX configs - Enum Case: - Each enumeration is its own type. Enums are an integer type but they - do not have to be *signed*. C leaves it up to the compiler as an - implementation option what to consider the integer type of a particu- - lar enumeration is. Gcc treats an enum without negative values as - an int while clang treats this enum as an unsigned int. + This patch adds a rule for installing the Super Awesome Company based 'Basic + PBX' configuration files. As part of adding this rule, a bit of the content + that makes up installing the configuration files under the 'samples' target + was refactored into a make subroutine for usage by additional later config + make targets. - rmudgett & mmichelson: cast the enum to (unsigned int) in assert. - The cast does have an effect. For gcc, which seems to treat all enums - as int, the cast to unsigned int will eliminate the possibility of - negative values being allowed. For clang, which seems to treat enums - without any negative members as unsigned int, the cast will have no - effect. If for some reason in the future a negative value is ever - added to the enum the assert will still catch the negative value. + Change-Id: I6c2e27906f73e2919a2b691da0be20ae70302404 +2015-10-29 08:28 +0000 [9a021a42ad] Joshua Colp - ASTERISK-24917 + * res_pjsip_pubsub: Fix assertion when UAS dialog creation fails. - Change-Id: I0557ae0154a0b7de68883848a609309cdf0aee6a + When compiled with assertions enabled one will occur when destroying + the subscription tree when UAS dialog creation fails. This is because + the code assumes that a dialog will always exist on a subscription + tree when in reality during this specific scenario it won't. -2015-04-22 16:22 +0000 [cc77440deb] gtjoseph + This change makes it so a dialog is not removed from the subscription + tree if it is not present. - * res_corosync: Add check for config file before calling corosync apis + ASTERISK-25505 #close - On some systems, res_corosync isn't compatible with the installed version of - corosync so corosync_cfg_initialize fails, load_module returns LOAD_FAILURE, - and Asterisk terminates. The work around has been to remember to add - res_corosync as a noload in modules.conf. A better solution though is to have - res_corosync check for its config file before attempting to call corosync apis - and return LOAD_DECLINE if there's no config file. This lets Asterisk loading - continue. + Change-Id: Id5c182b055aacc5e66c80546c64804ce19218dee - If you have a res_corosync.conf file and res_corosync fails, you get the same - behavior as today and the fatal error tells you something is wrong with the - install. +2015-10-26 11:42 +0000 [1256aedf66] Alexander Traud - ASTERISK-24998 + * chan_sip: Do not send all codecs on INVITE. - Change-Id: Iaf94a9431a4922ec4ec994003f02135acfdd3889 -2015-04-22 15:17 +0000 [c231c85ea4] Corey Farrell + Since version 13, Asterisk sent all allowed codecs as callee, even when the + caller did not request/support them. In case of dynamic RTP payloads, this led + to the same ID for different codecs, which is not allowed by SIP/SDP. Now, the + intersection between the requested and the supported codecs is send again. - * Astobj2: Ensure all calls to __adjust_lock pass a valid object. + ASTERISK-24543 #close - __adjust_lock doesn't check for invalid objects, and doesn't have an - appropriate return value for invalid objects. Most callers of - __adjust_lock pass objects that have already been confirmed valid, - this change adds checks before the remaining calls. + Change-Id: Ie90cb8bf893b0895f8d505e77343de3ba152a287 - ASTERISK-24997 #close - Reported by: Corey Farrell +2015-10-24 13:08 +0000 [5f593e7c38] gtjoseph - Change-Id: I669100f87937cc3f867cec56a27ae9c01292908f + * build: GCC 5.1.x catches some new const, array bounds and missing paren issues -2015-04-22 16:32 +0000 [0722e11f26] gtjoseph + Fixed 1 issue in each of the affected files. - * .gitignore: Add .gcno and .gcda + ASTERISK-25494 #close + Reported-by: George Joseph + Tested-by: George Joseph - Products of --enable-coverage + Change-Id: I818f149cd66a93b062df421e1c73c7942f5a4a77 - Change-Id: Ie20882d64b60692e2c941ea8872ab82a86ce77a3 +2015-10-20 16:02 +0000 [162acd45f7] gtjoseph -2015-04-22 11:28 +0000 [7216e3c608] Joshua Colp + * res_pjsip: Add "like" processing to pjsip list and show commands - * dns: Make query sets hold on to queries for their lifetime. + Add the ability to filter output from pjsip list and show commands + using the "like" predicate like chan_sip. - The query set documentation states that upon completion queries can be - retrieved for the lifetime of the query set. This is a reasonable - expectation but does not currently occur. This was originally done - to resolve a circular reference between queries and query sets, but - in practice the query can be kept. + For endpoints, aors, auths, registrations, identifyies and transports, + the modification was a simple change of an ast_sorcery_retrieve_by_fields + call to ast_sorcery_retrieve_by_regex. For channels and contacts a + little more work had to be done because neither of those objects are + true sorcery objects. That was just removing the non-matching object + from the final container. Of course, a little extra plumbing in the + common pjsip_cli code was needed to parse the "like" and pass the regex + to the get_container callbacks. - This change makes it so a query does not have a reference to the - query set until it begins resolving. It also makes it so that the - reference is given up upon the query being completed. This allows - the queries to remain for the lifetime of the query set. As the - query set on the query is only useful to the query set functionality - and only for the lifetime that the query is resolving this is safe - to do. + Some of the get_container code in res_pjsip_endpoint_identifier was also + refactored for simplicity. - ASTERISK-24994 #close - Reported by: Joshua Colp + ASTERISK-25477 #close + Reported by: Bryant Zimmerman + Tested by: George Joseph - Change-Id: I54e09c0cb45475896654e7835394524e816d1aa0 + Change-Id: I646d9326b778aac26bb3e2bcd7fa1346d24434f1 -2015-04-20 13:01 +0000 [09c7c678a3] Diederik de Groot +2015-10-21 11:51 +0000 [c58091737d] Kevin Harwell - * Fix/Update clang-RAII macro implementation + * res_pjsip_outbound_registration: registration stops due to fatal 4xx response - - When you need to refer to 'variable XXX' outside a block, it needs - to be declared as '__block XXX', otherwise it will not be available with- - in the block, making updating that variable hard to do, and ast_free - lead to issues. + During outbound registration it is possible to receive a fatal (any permanent/ + non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due + to a problem with the registrar itself. Upon receiving the failure response + Asterisk terminates outbound registration for the given endpoint. - - Removed the #error message - because it creates complications when compiling external projects - against asterisk For example when using a different compiler than the - one used to compile asterisk. The warning/error should be generated - during the configure process not the compilation process + This patch adds an option, 'fatal_retry_interval', that when set continues + outbound registration at the given interval up to 'max_retries' upon receiving + a fatal response. - ASTERISK-24917 - Change-Id: I12091228090e90831bf2b498293858f46ea7a8c2 + ASTERISK-25485 #close -2015-04-14 14:04 +0000 [190fa4f333] Joshua Colp + Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2 - * res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers. +2015-10-22 17:07 +0000 [ebe69dee0d] Mark Michelson - Currently the res_pjsip_mwi module only sends an unsolicited MWI NOTIFY upon - a mailbox state change (such as a new message being left, or one being deleted). - In practice this is not sufficient to keep clients aware of the current MWI status. + * format_cap: Detect vector allocation failures. - This change makes the module send unsolicited MWI NOTIFY on startup so that - clients are guaranteed to have the most up to date MWI information. It also makes - clients receive an unsolicited MWI NOTIFY upon registration so if they are unaware - of the current MWI status they receive it. + A crash was seen on a system that ran out of memory due to Asterisk not + checking for vector allocation failures in format_cap.c. With this + change, if either of the AST_VECTOR_INIT calls fail, we will return a + value indicating failure. - ASTERISK-24982 #close - Reported by: Joshua Colp + Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8 - Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58 +2015-10-02 15:32 +0000 [3b19efefef] Mark Michelson -2015-04-21 17:45 +0000 [2a36bb5d9a] Rodrigo Ramírez Norambuena + * res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog. - * CHANGES remove tab space + A certain situation can result in our attempting to send a NOTIFY on a + destroyed dialog. Say we attempt to send a NOTIFY to a subscriber, but + that subscriber has dropped off the network. We end up retransmitting + that NOTIFY until the appropriate SIP timer says to destroy the NOTIFY + transaction. When the pjsip evsub code is told that the transaction has + been terminated, it responds in kind by alerting us that the + subscription has been terminated, destroying the subscription, and then + removing its reference to the dialog, thus destroying the dialog. - Change-Id: I6b43e43474bf6fb77b8227eadb036036f8e90521 + The problem is that when we get told that the subscription is being + terminated, we detect that we have not sent a terminating NOTIFY + request, so we queue up such a NOTIFY to be sent out. By the time that + queued NOTIFY gets sent, the dialog has been destroyed, so attempting to + send that NOTIFY can result in a crash. -2015-04-21 15:17 +0000 [5757d2d30d] Corey Farrell + The fix being introduced here is actually a reintroduction of something + the pubsub code used to employ. We hold a reference to the dialog and + wait to decrement our reference to the dialog until our subscription + tree object is destroyed. This way, we can send messages on the dialog + even if the PJSIP evsub code wants to terminate earlier than we would + like. - * Check for ao2_alloc failure in __ast_channel_internal_alloc. + In doing this, some NULL checks for subscription tree dialogs have been + removed since NULL dialogs are no longer actually possible. - Fix a crash that could occur in __ast_channel_internal_alloc if - ao2_alloc fails. + Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5 - ASTERISK-24991 #close +2015-09-29 14:53 +0000 [0a346f095f] Mark Michelson - Change-Id: I4ca89189eb22f907408cb87d0a1645cfe1314a90 + * res_pjsip_pubsub: Ensure dialog lock balance. -2015-04-20 14:30 +0000 [6331be0638] Mark Michelson + When sending a NOTIFY, we lock the dialog and then unlock the dialog + when finished. A recent change made it so that the subscription tree's + dialog pointer will be set NULL when sending the final NOTIFY request + out. This means that when we attempt to unlock the dialog, we pass a + NULL pointer to pjsip_dlg_dec_lock(). The result is that the dialog + remains locked after we think we have unlocked it. When a response to + the NOTIFY arrives, the monitor thread attempts to lock the dialog, but + it cannot because we never released the dialog lock. This results in + Asterisk being unable to process incoming SIP traffic any longer. - * res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs. + The fix in this patch is to use a local pointer to save off the pointer + value of the subscription tree's dialog when locking and unlocking the + dialog. This way, if the subscription tree's dialog pointer is NULLed + out, the local pointer will still have point to the proper place and the + dialog lock will be unlocked as we expect. - When SUBSCRIBE dialogs were established, we never associated - the endpoint that created the subscription with the dialog - we end up creating. In most cases, this ended up not causing - any problems. + Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a - The actual bug that was observed was that when a device that - was behind NAT established a subscription with Asterisk, Asterisk - would end up sending in-dialog NOTIFY requests to the device's - private IP addres instead of the public address of the NAT router. +2015-09-28 16:36 +0000 [ad39508095] Mark Michelson - When Asterisk receives the initial SUBSCRIBE from the device, - res_pjsip_nat rewrites the contact to the public address on which the - SUBSCRIBE was received. This allows for the dialog to have its target - address set to the proper public address. Asterisk then would send a 200 - OK response to the SUBSCRIBE, then a NOTIFY with the initial - subscription state. The device would then send a 200 OK response to - Asterisk's NOTIFY. + * res_pjsip_pubsub: Prevent crashes on final NOTIFY. - Here's where things went wrong. When the 200 OK arrived, res_pjsip_nat - did not rewrite the address in the Contact header. Then, when the PJSIP - dialog layer processed the 200 OK, PJSIP would perform a comparison - between the IP address in the Contact header and its saved target - address for the dialog. Since they differed, PJSIP would update the - target dialog address to be the address in the Contact header. From this - point, if Asterisk needed to send a NOTIFY to the device, the result was - that the NOTIFY would be sent to the private address that the device - placed in the Contact header. + The SIP dialog is removed from the subscription tree when the final + NOTIFY is sent. However, after the final NOTIFY is sent, the persistence + update function still attempts to access the cseq from the dialog, + resulting in a crash. - The reason why res_pjsip_nat did not rewrite the address when it - received the 200 OK response was that it could not associate the - incoming response with a configured endpoint. This is because on a - response, the only way to associate the response to an endpoint is by - finding the dialog that the response is associated with and then finding - the endpoint that is associated with that dialog. We do not perform - endpoint lookups on responses. res_pjsip_pubsub skipped the step of - associating the endpoint with the dialog we created, so res_pjsip_nat - could not find the associated endpoint and therefore couldn't rewrite - the contact. + This fix removes the subscription persistence at the same time that the + dialog is removed from the subscription tree. This way, there is no + attempt to update persistence when the subscription is being destroyed. - This commit message is like 50x longer than the actual fix. + Change-Id: Ibb46977a6cef9c51dc95f40f43446e3d11eed5bb - ASTERISK 24981 #close - Reported by Mark Michelson +2015-09-17 17:28 +0000 [067f408760] Mark Michelson - Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd -2015-04-16 22:34 +0000 [2f418c052e] Gareth Palmer + * res_pjsip_pubsub: Remove serializer when sending final NOTIFY. - * New AMI Command Output Format + There have been crashes seen where a taskprocessor's listener is NULL + unexpectedly. - This change modifies how the the output from a CLI command is sent - to a client over AMI. + Looking at backtraces, the problem was specifically seen in PJSIP + serializers. - Output from the CLI command is now sent as a series of zero-or-more - Output: headers. + Subscriptions make the mistake of removing a serializer from a dialog + during subscription tree destruction. Since subscription trees are + reference-counted, guaranteeing the circumstances behind the destruction + are not possible. This makes it so that the dialog serializer can be + removed while not holding the dialog lock. This makes it possible for + the distributor to get a pointer to the dialog serializer and have that + serializer get freed out from under it. - Additionally, commands that fail to execute (eg: no such command, - invalid syntax etc.) now cause an Error response instead of Success. + The fix for this is to remove the serializer from a subscription dialog + when sending the final NOTIFY. This guarantees that the serializer is + removed with the dialog lock held. By doing this, we guarantee that if + the distributor gains access to the dialog's serializer, it will not be + possible for the serializer to get freed by another thread. - If the command executed successfully, but the manager unable to - provide the output the reason will be included in the Message: - header. Otherwise it will contain 'Command output follows'. + Change-Id: I21f5dac33529f65cec45679bdace60670800ff66 - Depends on a new version of starpy (> 1.0.2) that supports the new - output format. +2015-09-02 09:14 +0000 [1bcc592765] Mark Michelson - See pull-request https://github.com/asterisk/starpy/pull/34 + * res_pjsip_pubsub: Fix crash on destruction of empty subscription tree. - ASTERISK-24730 + If an old persistent subscription is recreated but then immediately + destroyed because it is out of date, the subscription tree will have no + leaf subscriptions on it. This was resulting in a crash when attempting + to destroy the subscription tree. - Change-Id: I6718d95490f0a6b3f171c1a5cdad9207f9a44888 -2015-04-20 18:00 +0000 [614f506690] Richard Mudgett + A simple NULL check fixes this problem. - * chan_dahdi/sig_pri: Make post AMI HangupRequest events on PRI channels. + Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac - The chan_dahdi channel driver is a very old driver. The ability for it to - support ISDN was added well after the initial analog support. Setting the - softhangup flags is a carry over from the original analog code. The - driver was not updated to call ast_queue_hangup() which will post the AMI - HangupRequest event. +2015-09-01 15:47 +0000 [b3cc2bd7df] Mark Michelson - * Changed sig_pri.c to call ast_queue_hangup() instead of setting the - softhangup flag when the remote party initiates a hangup. + * res_pjsip_pubsub: Solidify lifetime and ownership of objects. - ASTERISK-24895 #close - Reported by: Andrew Zherdin + There have been crashes and general instability seen in the pubsub code, + so this patch introduces three changes to increase the stability. - Change-Id: I5fe2e48556507785fd8ab8e1c960683fd5d20325 + First, the ownership model for subscriptions has been modified. Due to + RLS, subscriptions are stored in memory as a tree structure. Prior to my + patch, the PJSIP subscription was the owner of the subscription tree. + When the PJSIP subscription told us that it was terminating, we started + destroying the subscription tree along with all of the individual leaf + subscriptions that belong to the tree. The problem with this model is + that the two actors in play here, the PJSIP subscription and the + individual leaf subscriptions, need to have joint ownership of the + subscription tree. So now, the PJSIP subscription and the individual + leaf subscriptions each have a reference to the subscription tree. This + way, we will not actually free memory until no players are left that + care. The PJSIP subscription is a bigger stakeholder, in that if the + PJSIP subscription's reference to the subscription tree is removed, the + subscription tree instructs the leaf subscriptions to shut down and drop + their references to the subscription tree when possible. The individual + leaf subscriptions, upon being told to shut down, can drop their stasis + subscriptions or whatever they use to learn of new state, and then drop + their reference to the subscription tree once they are ready to die. -2015-04-20 13:40 +0000 [bff3064578] Rodrigo Ramírez Norambuena + Second, the lifetime of a PJSIP subscription's reference to our + subscription tree has been altered. As I learned from doing a deep dive, + the PJSIP evsub code can tell Asterisk multiple times that the + subscription has been terminated, and not all of these times + are especially helpful. I have altered the message flow that we use for + SIP subscriptions such that we will always drop the PJSIP subscription's + reference to the subscription tree when we send the NOTIFY that + terminates a SIP subscription. This also means that we will now queue + NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so + that we can have predictable state changes from the PJSIP evsub code. - * cdr/cdr_adaptive_odbc.c: Refactor concatenate columns name. + Third, the synchronization of operations has been improved. PJSIP can + call into our code from a serializer thread (e.g. upon receiving an + incoming request) or from the monitor thread (e.g. when a subscription + times out). Because of this, there is the possibility of competing + threads stepping on each other. PJSIP attempts to do some + synchronization on its own by always keeping the dialog lock held when + it calls into us. However, since we end up pushing tasks into the + serializer, the result was that serialized operations were not grabbing + the dialog lock and could, as a result, step on something that was being + attempted by a different thread. Now we ensure that serialized + operations grab the dialog lock, then check for extenuating + circumstances, then proceed with their operation if they can. - The concatenate for columns name to INSERT INTO is always the same. It is - possible to do it on one line. + Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5 - ASTERISK-24980 +2015-10-19 15:28 +0000 [c8c65dfa41] Richard Mudgett - Change-Id: Ib8bb53c42535378581d4ef729cc5ebbb22b067ac -2015-04-20 09:53 +0000 [06ba1e59cb] gtjoseph + * strings.c: Fix __ast_str_helper() to always return a terminated string. - * pjsip_options: Fix format specifier for int64_t rtt. + Users of functions which call __ast_str_helper() such as the ones listed + below are likely to not check the return value for failure so ensuring + that the string is always nil terminated is a good safety measure. - Contact status rtt is an int64_t and needs the PRId64 macro to - properly create the format specifier on 32-bit systems. + ast_str_set_va() + ast_str_append_va() + ast_str_set() + ast_str_append() - Change-Id: I4b8ab958fc1e9a179556a9b4ffa49673ba9fdec7 + Change-Id: I36ab2d14bb6015868b49329dda8639d70fbcae07 -2015-04-18 13:36 +0000 [298faf7c50] gtjoseph +2015-10-19 15:27 +0000 [b271d4a28a] Richard Mudgett - * pjsip_options: Fix non-qualified contacts showing as unavailable + * Add missing failure checks to ast_str_set_va() callers. - The "Add qualify_timeout processing and eventing" patch introduced - an issue where contacts that had qualify_frequency set to 0 were - showing Unavailable instead Unknown. This patch checks for - qualify_frequency=0 and create an "Unknown" contact_status - with an RTT = 0. + Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f - Previously, the lack of contact_status implied Unknown but since - we're now changing endpoint state based on contact_status, I've - had to add new UNKNOWN status so that changes could trigger the - appropriate contact_status observers. +2015-10-21 11:44 +0000 [f2725c8b77] Joshua Colp - ASTERISK-24977: #close + * res_pjsip: Move URI validation to use time. - Change-Id: Ifcbc01533ce57f0e4e584b89a395326e098b8fe7 + In a realtime based system with a limited number of threadpool threads + it is possible for a deadlock to occur. This happens when permanent + endpoint state is updated, which will cause database queries to be done. + These queries may result in URI validation being done which is done + synchronously using a PJSIP thread. If all PJSIP threads are in use + processing traffic they themselves may be blocked waiting to get the + permanent endpoint container lock when identifying an endpoint. -2015-04-19 15:49 +0000 [8e903b17ea] Matt Jordan + This change moves URI validation to occur at use time instead of + configuration time. While this comes at a cost of not seeing a problem + until you use it it does solve the underlying deadlock problem. - * main/pbx: Don't attempt to destroy a previously destroyed exten/priority tuple + ASTERISK-25486 #close - When a PBX registrar is unloaded, it will fail to remove its extension from - the context root_table if a dialplan application used by that extension is - still loaded. This can be the case for AGI, which can be unloaded after several - of the standard PBX providers. Often, this is harmless; however, if the - extension's priorities are removed during the failed unloading *and* the - dialplan application later unregisters, it leaves a ticking timebomb for the - next PBX provider that attempts to iterate over the extensions. When that - occurs, the peer_table pointer on the extension will already be set to NULL. - The current code does not check to see if the pointer is NULL before passing - it to a hashtab function this is not NULL tolerant. + Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a - Since it is possible for the peer_table to be NULL when we normally would not - expect that to be the case, the solution in this patch is to simply skip over - processing an extension's priorities if peer_table is NULL. +2015-10-21 08:08 +0000 [84ff075d41] Alexander Traud - Prior to this patch, the tests/pbx/callerid_match test would crash during - module unload. With this patch, the test no longer crashes after running. + * format: Update the maximum packetization time for iLBC 30. - ASTERISK-24774 #close - Reported by: Corey Farrell + In September 2006, the maximum packetization time (ptime) were set to such a + low value, packetization was disabled for many codecs actually. This was fixed + for many codecs but not for iLBC 30. This enables packetization for iLBC which + can be enabled for example via allow=ilbc:60,gsm,alaw,ulaw in the file sip.conf. - Change-Id: I2bbeecb7e0f77bac303a1b9135e4cdb4db6d4c40 + ASTERISK-7803 -2015-04-17 18:05 +0000 [1269dd06bc] Richard Mudgett + Change-Id: I2ef90023d35efb7cb8fe96ed74f53f6846ffad12 +2015-10-21 09:51 +0000 [869ef2a8ee] Alexander Traud - * res_fax: Fix latent bug exposed by ASTERISK-24841 changes. + * chan_sip: Fix autoframing=yes. - Three fax related tests started failing as a result of changes made for - ASTERISK-24841: - tests/fax/pjsip/gateway_t38_g711 - tests/fax/sip/gateway_mix1 - tests/fax/sip/gateway_mix3 + With Asterisk 13, the structures ast_format and ast_codec changed. Because of + that, the paketization timing (framing) of the RTP channel moved away from the + formats/codecs. In the course of that change, the ptime of the callee was not + honored anymore, when the optional autoframing was enabled. - Historically, ast_channel_make_compatible() did nothing if the channels - were already "compatible" even if they had a sub-optimal translation path - already setup. With the changes from ASTERISK-24841 this is no longer - true in order to allow the best translation paths to always be picked. In - res_fax.c:fax_gateway_framehook() code manually setup the channels to go - through slin and then called ast_channel_make_compatible(). With the - previous version of ast_channel_make_compatible() this was always a - no-operation. + ASTERISK-25484 #close - * Remove call to ast_channel_make_compatible() in fax_gateway_framehook() - that now undoes what was just setup when the framehook is attached. + Change-Id: Ic600ccaa125e705922f89c72212c698215d239b4 - * Fixed locking around saving the channel formats in - fax_gateway_framehook() to ensure that the formats that are saved are - consistent. +2015-10-20 22:24 +0000 [9fd2adc204] Matt Jordan - * Fix copy pasta errors in fax_gateway_framehook() that confuses read and - write when dealing with saved channel formats. + * rest-api-templates: Wikify error code response reasons - ASTERISK-24841 - Reported by: Matt Jordan + Error response code descriptions may contain wiki markup that need to be + escaped. Without this patch, Confluence will reject the document being sent + and the responsible script will raise an exception. - Change-Id: I6fda0877104a370af586a5e8cf9e161a484da78d + Change-Id: I21fcb66fee7f6332381f2b99b1b0195dff215ee5 -2015-04-17 16:19 +0000 [c1d44ff043] Corey Farrell +2015-10-20 12:06 +0000 [72cbb6df55] Matt Jordan - * Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled. + * funcs/func_holdintercept: Actually add the HOLD_INTERCEPT function - When DEBUG_THREADLOCALS is enabled it causes the threadlocal cleanup to be - called as a function. This causes a compile error with raw threadstorage as - it uses NULL for cleanup. This fix uses a macro that provides NULL when - DEBUG_THREADLOCALS is disabled, and replaces the call to "c_cleanup(data);" - with "{};" when DEBUG_THREADLOCALS is enabled. + When ab803ec342 was committed, it accidentally forgot to actually *add* the + HOLD_INTERCEPT function. This highlights two interesting points: + * Gerrit forces you to put the patch as it is going to into the repo up for + review, which Review Board did not. Yay Gerrit. + * No one apparently bothered to use this feature, or else they don't know about + it. I'm going to go with the latter explanation. - ASTERISK-24975 #close - Reported by: Ashley Sanders + ASTERISK-24922 - Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402 + Change-Id: Ida38278f259dd07c334a36f9b7d5475b5db72396 -2015-04-15 10:38 +0000 [aae45acbda] Mark Michelson +2015-10-19 19:59 +0000 [9fc9777fa3] Matt Jordan - * Detect potential forwarding loops based on count. + * contrib/scripts/autosupport: Update for Asterisk 13 - A potential problem that can arise is the following: + This patch adds some minor tweaks for autosupport to update it for Asterisk 13. + This includes: + * Finally removing most references to Zaptel + * Adding support for some additional 'core' commands, and fixing nomenclature + that generally hasn't been used for some time + * Adding some PJSIP/SIP commands to gather endpoints/peers and active channels - * Bob's phone is programmed to automatically forward to Carol. - * Carol's phone is programmed to automatically forward to Bob. - * Alice calls Bob. + Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1 - If left unchecked, this results in an endless loops of call forwards - that would eventually result in some sort of fiery crash. +2015-10-14 14:15 +0000 [dc6ec661b3] mdu113 - Asterisk's method of solving this issue was to track which interfaces - had been dialed. If a destination were dialed a second time, then - the attempt to call that destination would fail since a loop was - detected. + * res_config_pgsql.c: Fix deadlock loading realtime configuration. - The problem with this method is that call forwarding has evolved. Some - SIP phones allow for a user to manually forward an incoming call to an - ad-hoc destination. This can mean that: + On v13, loading several thousand PJSIP endpoints on Asterisk start causes + a deadlock most of the time. - * There are legitimate use cases where a device may be dialed multiple - times, or - * There can be human error when forwarding calls. + Thanks to mdu113 for discovering that there was a call to pgsql_exec() not + protected by the pgsql_lock reentrancy lock. - This change removes the old method of detecting forwarding loops in - favor of keeping a count of the number of destinations a channel has - dialed on a particular branch of a call. If the number exceeds the - set number of max forwards, then the call fails. This approach has - the following advantages over the old: + {quote} + I believe a code path exists that attempts to use pgsql connection without + locking pgsql_lock. I believe what happens during that deadlock that I + see is two concurrent threads are both attempting to send query to pgsql, + one of the thread is using a code path without locking pgsql_lock. If + they managed to send queries at the same time, it seems postgres ignores + one of the queries and replies only to the one of them. If it happens so + that the thread holding the lock didn't receive the reply it will wait for + it (and hold the lock) forever (or at least for very long time), thus + completely blocking all access to db. + {quote} - * It is much simpler. - * It can detect loops involving local channels. - * It is user configurable. + * Added missing reentrancy locking around pgsql_exec() in find_table(). - The only disadvantage it has is that in the case where there is a - legitimate forwarding loop present, it takes longer to detect it. - However, the forwarding loop is still properly detected and the - call is cleaned up as it should be. + * Moved unlock of pgsql_lock in unload_module() to avoid locking inversion + between the psql_tables list lock and the pgsql_lock. - Address review feedback on gerrit. + ASTERISK-25455 #close + Reported by: mdu113 + Patches: + res_config_pgsql.c-connlock2.diff (license #5543) patch uploaded by mdu113 - * Correct "mfgium" to "Digium" - * Decrement max forwards by one in the case where allocation of the - max forwards datastore is required. - * Remove irrelevant code change from pjsip_global_headers.c + Change-Id: Id9e7cdf8a3b65ff19964b0cf942ace567938c4e2 - ASTERISK-24958 #close +2015-10-13 14:13 +0000 [f8707ae9a5] Olle Johansson (License 5267) - Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23 -2015-04-16 10:51 +0000 [56a2baa21d] Kevin Harwell + * channels/chan_sip: Set cause code to 44 on RTP timeout - * bridge.c: NULL app causes crash during attended transfer + To quote Olle: - Due to a race condition there was a chance that during an attended transfer the - channel's application would return NULL. This, of course, would cause a crash - when attempting to access the memory. This patch retrieves the channel's app - at an earlier time in processing in hopes that the app name is available. - However, if it is not then "unknown" is used instead. Since some string value - is now always present the crash can no longer occur. + "When issuing a hangup due to RTP timeouts the cause code is not set. I have + selected 44 based on Cisco's implementation..." - ASTERISK-24869 #close - Reported by: viniciusfontes - Review: https://gerrit.asterisk.org/#/c/133/ + ASTERISK-25135 #close + Reported by: Olle Johansson + patches: + rtp-timeout-cause-1.8.diff uploaded by Olle Johansson (License 5267) - Change-Id: I5134b84c4524906d8148817719d76ffb306488ac + Change-Id: Ia62100c55077d77901caee0bcae299f8dc7375fc -2015-04-11 17:04 +0000 [c6ed681638] gtjoseph +2015-10-10 15:20 +0000 [486b172b50] Ivan Poddubny - * res_pjsip: Add global option to limit the maximum time for initial qualifies + * Build: Add menuselect options for using compiler sanitizers - Currently when Asterisk starts initial qualifies of contacts are spread out - randomly between 0 and qualify_timeout to prevent network and system overload. - If a contact's qualify_frequency is 5 minutes however, that contact may be - unavailable to accept calls for the entire 5 minutes after startup. So while - staggering the initial qualifies is a good idea, basing the time on - qualify_timeout could leave contacts unavailable for too long. + This patch adds menuselect options for building Asterisk with + various sanitizers provided by gcc and clang. - This patch adds a new global parameter "max_initial_qualify_time" that sets the - maximum time for the initial qualifies. This way you could make sure that all - your contacts are initialy, randomly qualified within say 30 seconds but still - have the contact's ongoing qualifies at a 5 minute interval. + When one of *SANITIZER flags is set in menuselect, the appropriate + option is added to CFLAGS ad LDFLAGS for the build. - If max_initial_qualify_time is > 0, the formula is initial_interval = - min(max_initial_interval, qualify_timeout * random(). If not set, - qualify_timeout is used. + Information on sanitizers in the project wiki: + https://github.com/google/sanitizers/wiki - The default is "0" (disabled). + GCC Manual: + https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html - ASTERISK-24863 #close + Clang Compiler User's Manual: + http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation - Change-Id: Ib80498aa1ea9923277bef51d6a9015c9c79740f4 - Tested-by: George Joseph + ASTERISK-24718 #close + Reported by: Badalian Vyacheslav -2015-04-16 13:20 +0000 [664d3263e4] Scott Griepentrog + Change-Id: Iafa51b792b7bcb20e848b99d16cf362d08590fa0 - * res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced +2015-10-12 11:21 +0000 [e14023ca35] Richard Mudgett - This change makes the send_notify of the sub_tree - not happen when the sub_tree has been deleted due - to the notify call failing, which avoids a crash. + * config.c: Fix off-nominal memory leak. - ASTERISK-24970 #close + Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0 - Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf -2015-04-11 16:56 +0000 [51886c68dc] gtjoseph +2015-10-12 11:20 +0000 [a99e821520] Richard Mudgett - * pjsip_options: Add qualify_timeout processing and eventing + * config.c: Fix potential memory corruption after [section](+). - This is the second follow-on to https://reviewboard.asterisk.org/r/4572/ and the - discussion at - http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html + The memory corruption could happen if the [section](+) is the last section + in the file with trailing comments. In this case process_text_line() has + left *last_cat is set to newcat and newcat is destroyed. - The basic issues are that changes in contact status don't cause events to be - emitted for the associated endpoint. Only dynamic contact add/delete actions - update the endpoint. Also, the qualify timeout is fixed by pjsip at 32 seconds - which is a long time. + Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93 - This patch makes use of the new transaction timeout feature in r4585 and - provides the following capabilities... +2015-10-12 11:21 +0000 [8d31d2526b] Richard Mudgett - 1. A new aor/contact variable 'qualify_timeout' has been added that allows the - user to specify the maximum time in milliseconds to wait for a response to an - OPTIONS message. The default is 3000ms. When the timer expires, the contact is - marked unavailable. + * config.c: Fix #include after [section](+). - 2. Contact status changes are now propagated up to the endpoint as follows... - When any contact is 'Available', the endpoint is marked as 'Reachable'. When - all contacts are 'Unavailable', the endpoint is marked as 'Unreachable'. The - existing endpoint events are generated appropriately. + An #include right after a [section](+) would associate any variable + assignments before a new section in the #include with the wrong section. - ASTERISK-24863 #close + * Fix section association by setting the current section to the appended + section. - Change-Id: Id0ce0528e58014da1324856ea537e7765466044a - Tested-by: Dmitriy Serov - Tested-by: George Joseph + * Fix '+' and '!' section flag interaction corner case depending upon + which flag came first. If the '!' came first then it would be ignored. + If the '!' came after then it would affect the appended section. The '!' + will now no longer be ignored. -2015-04-11 16:39 +0000 [ab6382cafd] gtjoseph + ASTERISK-25461 #close + Reported by: Sean Pimental - * res_pjsip: Refactor endpt_send_request to include transaction timeout + Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3 - This is the first follow-on to https://reviewboard.asterisk.org/r/4572/ and the - discussion at - http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html +2015-10-06 18:01 +0000 [3329c714f7] Richard Mudgett - Since we currently have no control over pjproject transaction timeout, this - patch pulls the pjsip_endpt_send_request function out of pjproject and into - res_pjsip/endpt_send_transaction in order to implement that capability. + * res_pjsip: Fix deadlock when sending out-of-dialog requests. - Now when the transaction is initiated, we also schedule our own pj_timer with - our own desired timeout. + The struct send_request_wrapper has a pjsip lock associated with it that + is created non-recursive. There is a code path for the struct + send_request_wrapper lock that will attempt to lock it recursively. The + reporter's deadlock showed that the thread calling endpt_send_request() + deadlocked itself right after the wrapper object got created. - If the transaction completes before either timeout, pjproject cancels its timer, - and calls our tsx callback where we cancel our timer and run the app callback. + Out-of-dialog requests such as MESSAGE, qualify OPTIONS, and unsolicited + MWI NOTIFY messages can hit this deadlock. - If the pjproject timer times out first, pjproject calls our tsx callback where - we cancel our timer and run the app callback. + * Replaced the struct send_request_wrapper pjsip lock with the mutex lock + that can come with an ao2 object since all of Asterisk's mutexes are + recursive. Benefits include removal of code maintaining the pjsip + non-recursive lock since ao2 objects already know how to maintain their + own lock and the lock will show up in the CLI "core show locks" output. - If our timer times out first, we terminate the transaction which causes - pjproject to cancel its timer and call our tsx callback where we run the app - callback. + ASTERISK-25435 #close + Reported by: Dmitriy Serov - Regardless of the scenario, pjproject is calling the tsx callback inside the - group_lock and there are checks in the callback to make sure it doesn't run - twice. + Change-Id: I458e131dd1b9816f9e963f796c54136e9e84322d - As part of this patch ast_sip_send_out_of_dialog_request was created to replace - its similarly named private function. It takes a new timeout argument in - milliseconds (<= 0 to disable the timeout). +2015-10-06 11:05 +0000 [a1435aa3fa] Stefan Engström - ASTERISK-24863 #close - Reported-by: George Joseph - Tested-by: George Joseph + * res/res_rtp_asterisk.c: Fix incorrect assignment of frame->subclass.frame_ending - Change-Id: I0778dc730d9689c5147a444a04aee3c1026bf747 -2015-04-15 16:08 +0000 [043c38f6de] gtjoseph + In ast_rtp_read, the value of the variable 'mark' which we try to assign to a + frame->subclass.frame_ending may be 0, 1 or (1<<23), but we should translate + it to 0 or 1. - * More .gitignore updates + ASTERISK-25451 #close + Change-Id: I53bdf5c026041730184a6a809009c028549ce626 - Added .pyc and .sha1 to the top-level .gitignore. +2015-10-07 01:24 +0000 [3357678b94] Ivan Poddubny - Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a - Tested-by: George Joseph + * func_presencestate: Return "not_set" when no data is set in AstDB -2015-04-14 02:36 +0000 [abf10a1d4c] Corey Farrell + Return AST_PRESENCE_NOT_SET when CustomPresence AstDB key does not + exist, i.e. when a new CustomPresence is added in the dialplan. - * Build System: Enable use of ~/.asterisk.makeopts and /etc/asterisk.makeopts. + ASTERISK-25400 #close + Reported by: Andrew Nagy - The Makefile claims that you can set default menuselect options by creating - ~/.asterisk.makeopts or /etc/asterisk.makeopts, but they are never read. - The rule for menuselect.makeopts is only allowed to run if the active target - is 'menuselect', but the menuselect target doesn't depend on - menuselect.makeopts. A dot (wildcard character) was added so the rule will - be active for the targets that cause it to run: nmenuselect, cmenuselect, - and gmenuselect. + Change-Id: I6fb17b16591b5a55fbffe96f3994ec26b1b1723a - ASTERISK-13271 #close - Reported by: John Nemeth +2015-10-06 20:43 +0000 [b714b2152d] Matt Jordan - Change-Id: Ibde804ff196283def49ccb9432fbf224a22586e2 -2015-04-13 08:47 +0000 [a3cec44a0a] Joshua Colp + * res/res_rtp_asterisk: Fix assignment after ao2 decrement - * res_pjsip: Add external PJSIP resolver implementation using core DNS API. + When we decide we will no longer schedule an RTCP write, we remove the + reference to the RTP instance, then assign -1 to the stored scheduler ID + in case something else comes along and wants to see if anything is scheduled. - This change adds the following: + That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to + fix the regression introduced by 3cf0f29310, this improper assignment on a + potentially destroyed object started getting tripped on the build agents. - 1. A query set implementation. This is an API that allows queries to be executed in parallel and once all have completed a callback is invoked. - 2. Unit tests for the query set implementation. - 3. An external PJSIP resolver which uses the DNS core API to do NAPTR, SRV, AAAA, and A lookups. + Frankly, this should have been crashing a lot more often earlier. I can only + assume that the timing was changed just enough by both changes to start + actually hitting this problem. - For the resolver it will do NAPTR, SRV, and AAAA/A lookups in parallel. If NAPTR or SRV - are available it will then do more queries. And so on. Preference is NAPTR > SRV > AAAA/A, - with IPv6 preferred over IPv4. For transport it will prefer TLS > TCP > UDP if no explicit - transport has been provided. Configured transports on the system are taken into account to - eliminate resolved addresses which have no hope of completing. + As it is, simply moving the assignment prior to the ao2 deference is sufficient + to keep the RTP instance from being referenced when it is very, truly, + aboslutely dead. + + (Note that it is still good practice to assign -1 to the scheduler ID when we + know we won't be scheduling it again, as the ao2 deref *may* not always destroy + the ao2 object.) - ASTERISK-24947 #close - Reported by: Joshua Colp + ASTERISK-25449 - Change-Id: I56cb03ce4f9d3d600776f36928e0b3e379b5d71e + Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7 -2015-04-14 13:16 +0000 [33a319ae73] Rodrigo Ramírez Norambuena +2015-10-06 12:40 +0000 [f939e2bd48] Florian Sauerteig - * cel_pgsql: Fix name string for log on unable allocate memory. + * chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers. - The LOG_ERROR has reference to CDR instead of CEL for LENGTHEN_BUF1 and - LENGTHEN_BUF2. + If a Via header containes an IPv6 address and a port number is ommitted, + as it is the standard port, we now leave the port empty and to not set it + to the value after the first colon of the IPv6 address. - ASTERISK-24965 #close - Reported by: Rodrigo Ramirez Norambuena + ASTERISK-25443 #close - Change-Id: Icc818697d7d66d34bfe3048cdd15ca2b06c89744 -2015-04-14 15:59 +0000 [f89481e39c] Corey Farrell + Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70 - * test_astobj2_weaken: Fix source file registration. +2015-10-05 16:53 +0000 [426263a64d] Richard Mudgett - Update test_astobj2_weaken to use the new AST_REGISTER_FILE macro. + * chan_pjsip: Fix crash on reINVITE before initial INVITE completes. - Change-Id: Ieedadf16610f2e042f393e0501a36447cd07f83d + Apparently some endpoints attempt to send a reINVITE before completing the + initial INVITE transaction. In this case PJSIP responds appropriately to + the reINVITE with a 491 INVITE request pending. Unfortunately chan_pjsip + is using the initial INVITE transaction state to determine if an INVITE is + the initial INVITE or a reINVITE. Since the initial INVITE transaction + has not been confirmed yet chan_pjsip thinks the reINVITE is an initial + INVITE and starts another PBX thread on the channel. The extra PBX thread + ensures that hilarity ensues. -2015-04-13 05:28 +0000 [62508d6891] Corey Farrell + * Fix checks for a reINVITE on incoming requests to look for the presence + of a to-tag instead of the initial INVITE transaction state. - * Build System: Create Makefile macro MOD_ADD_SOURCE. + * Made caller_id_incoming_request() determine what to do if there is a + channel on the session or not. After a channel is created it is too late + to just store the new party id on the session because the session's party + id has already been copied to the channel's caller id. - This new macro allows a single line to add all additional - sources to a module. This helps prevent modules from - missing steps, and makes future changes easier since - they can be made in a single place. + ASTERISK-25404 #close + Reported by: Chet Stevens - ASTERISK-24960 #close - Reported by: Corey Farrell + Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be - Change-Id: I38f12d8b72c5e7bb37a879b2fb51761a2855eb4b +2015-10-05 21:34 +0000 [50fa9ff997] Matt Jordan -2015-04-12 09:08 +0000 [23a180cade] Rodrigo Ramírez Norambuena + * Fix improper usage of scheduler exposed by 5c713fdf18f - * cdr_pgsql: Fix CLI "cdr show pgsql status" command. + When 5c713fdf18f was merged, it allowed for scheduled items to have an ID of + '0' returned. While this was valid per the documentation for the API, it was + apparently never returned previously. As a result, several users of the + scheduler API viewed the result as being invalid, causing them to reschedule + already scheduled items or otherwise fail in interesting ways. - The command always showed the usage information. + This patch corrects the users such that they view '0' as valid, and a returned + ID of -1 as being invalid. - * Fix the error in command validation for CLI_SHOWUSAGE. + Note that the failing HEP RTCP tests now pass with this patch. These tests + failed due to a duplicate scheduling of the RTCP transmissions. - ASTERISK-24959 #close - Reported by: Rodrigo Ramirez Norambuena + ASTERISK-25449 #close - Change-Id: I584f0936bb01001336a468a55c1d05d79fe795d5 -2015-04-13 19:06 +0000 [bf46ef35ca] gtjoseph + Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39 +2015-08-26 16:58 +0000 [8f777ab584] Debian Amtelco - * .gitignore updates for master/13 + * chan_pjsip: Add Referred-By header to the PJSIP REFER packet. - Added products of ./bootstrap + Some systems require the REFER packet to include a Referred-By header. + If the channel variable SIPREFERREDBYHDR is set, it passes that value as the + Referred-By header value. Otherwise, it adds the current dialog’s local info. - Added nmenuselect and gmenuselect to menuselect/ + Reported by: Dan Cropp + Tested by: Dan Cropp - Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35 + Change-Id: I3d17912ce548667edf53cb549e88a25475eda245 -2015-04-13 06:52 +0000 [62e95065d6] Corey Farrell +2015-10-03 06:27 +0000 [74635b5638] Ivan Poddubny - * AMI: Fix improper handling of lines that are exactly 1025 bytes long. + * manager: Fix GetConfigJSON returning invalid JSON - When AMI receives a line that is 1025 bytes long, it sends two error - messages. Copy the last byte in the buffer to the first postiion, - set the length to 1. + When GetConfigJSON was introduced back in 1.6, it returned each + section as an array of strings: ["key=value", "key2=value2"]. + Afterwards, it was changed a few times and became + ["key": "value", "key2": "value2"], which is not a correct JSON. + This patch fixes that by constructing a JSON object {} instead of + an array []. - ASTERISK-20524 #close - Reported by: David M. Lee + Also, the keys "istemplate" and "tempates" that are used to + indicate templates and their inherited categories are now wrapped in + quotes. - Change-Id: Ifda403e2713b59582c715229814fd64a0733c5ea + ASTERISK-25391 #close + Reported by: Bojan Nemčić -2015-04-12 03:22 +0000 [cb6bf3094e] Corey Farrell + Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8 - * astobj2: Add support for weakproxy objects. +2015-09-30 17:28 +0000 [40c69e78f5] Richard Mudgett - This implements "weak" references. The weakproxy object is a real ao2 with - normal reference counting of its own. When a weakproxy is pointed to a normal - object they hold references to each other. The normal object is automatically - freed when a single reference remains (the weakproxy). The weakproxy also - supports subscriptions that will notify callbacks when it does not point - to any real object. + * res_sorcery_memory_cache.c: Fix deadlock with scheduler. - ASTERISK-24936 #close - Reported by: Corey Farrell + A deadlock can happen when a sorcery object is being expired from the + memory cache when at the same time another object is being placed into the + memory cache. There are a couple other variations on this theme that + could cause the deadlock. Basically if an object is being expired from + the sorcery memory cache at the same time as another thread tries to + update the next object expiration timer the deadlock can happen. - Change-Id: Ib9f73c02262488d314d9d9d62f58165b9ec43c67 + * Add a deadlock avoidance loop in expire_objects_from_cache() to check if + someone is trying to remove the scheduler callback from the scheduler. -2015-04-13 14:41 +0000 [a573b77f78] David M. Lee + ASTERISK-25441 #close - * Fixing extconf compile + Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc - During the mass code deletion for clang support, a stray backslash was - left behind that was causing utils to fail to compile. +2015-10-01 14:30 +0000 [dfeb513e85] Richard Mudgett - Change-Id: I60e5fa58c9a5b248bde23aaada79ff663f87a2a1 + * res_sorcery_memory_cache.c: Replace inline code with function. -2015-04-13 09:54 +0000 [3f9aa29945] Matt Jordan + Make sorcery_memory_cache_close() call remove_all_from_cache() instead of + partially inlining it. - * build_tools/make_version: Update version parsing for Git migration + ASTERISK-25441 - External systems - such as the Asterisk Test Suite - require knowledge of the - upstream branch. Unfortunately, after moving to Git, the Asterisk version - currently consists of only a 'GIT" prefix followed by an object blob, - e.g., GIT-as08d7. This makes it difficult for such systems to know what - features are available in a particular check out of Asterisk. + Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c - This patch fixes this by hardcoding the branch in a variable in the - make_version script. Since the mainline branches are not changed often - - typically only once a year - this is a reasonable approach to solving - the problem, and is more reliable than parsing the output of 'git branch - -vv'. Branches that track off of an upstream primary branch will then get the - benefit of knowing which mainline branch they are currently based off - of. +2015-10-01 14:27 +0000 [ced0a2d71b] Richard Mudgett - ASTERISK-24954 #close + * res_sorcery_memory_cache.c: Shutdown in a less crash potential order. - Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799 + Basically you should shutdown in the opposite order of how you setup since + later setup pieces likely depend on earlier setup pieces. e.g., + Registering your external API with the rest of the system should be the + last thing setup and the first thing unregistered during shutdown. -2015-04-13 05:57 +0000 [fbc8ddfe63] Corey Farrell + Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e - * Optional API: Fix handling of sources that are both provider and user. +2015-09-30 17:27 +0000 [cc279eea11] Richard Mudgett - OPTIONAL_API has conditionals to define AST_OPTIONAL_API and - AST_OPTIONAL_API_ATTR differently based on if AST_API_MODULE is defined. - Unfortunately this is inside the include protection block, so only the - first status of AST_API_MODULE is respected. For example res_monitor - is an optional API provider, but uses func_periodic_hook. This makes - func_periodic_hook non-optional to res_monitor. + * res_sorcery_memory_cache.c: Misc tweaks. - This changes optional_api.h so that AST_OPTIONAL_API and - AST_OPTIONAL_API_ATTR is redefined every time the header is included. + Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160 - ASTERISK-17608 #close - Reported by: Warren Selby +2015-09-30 17:27 +0000 [9af3b613f6] Richard Mudgett - Change-Id: I8fcf2a5e7b481893e17484ecde4f172c9ffb5679 + * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK. -2015-04-11 21:38 +0000 [4a58261694] Matt Jordan + Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c - * git migration: Refactor the ASTERISK_FILE_VERSION macro +2015-09-30 13:42 +0000 [56ed7b9dd5] Joshua Colp - Git does not support the ability to replace a token with a version - string during check-in. While it does have support for replacing a - token on clone, this is somewhat sub-optimal: the token is replaced - with the object hash, which is not particularly easy for human - consumption. What's more, in practice, the source file version was often - not terribly useful. Generally, when triaging bugs, the overall version - of Asterisk is far more useful than an individual SVN version of a file. As a - result, this patch removes Asterisk's support for showing source file - versions. + * res_rtp_asterisk: Move "Set role" warning to be debug. - Specifically, it does the following: + In practice the set_role API callback can be invoked even + when no ICE is present on an RTP instance. This can occur + if ICE has not been enabled on it. - * Rename ASTERISK_FILE_VERSION macro to ASTERISK_REGISTER_FILE, and - remove passing the version in with the macro. Other facilities - than 'core show file version' make use of the file names, such as - setting a debug level only on a specific file. As such, the act of - registering source files with the Asterisk core still has use. The - macro rename now reflects the new macro purpose. + ASTERISK-25438 #close - * main/asterisk: - - Refactor the file_version structure to reflect that it no longer - tracks a version field. - - Remove the "core show file version" CLI command. Without the file - version, it is no longer useful. - - Remove the ast_file_version_find function. The file version is no - longer tracked. - - Rename ast_register_file_version/ast_unregister_file_version to - ast_register_file/ast_unregister_file, respectively. + Change-Id: I0e17e4316f0f0d7f095c78c3d4fd73a913b6ba69 - * main/manager: Remove value from the Version key of the ModuleCheck - Action. The actual key itself has not been removed, as doing so would - absolutely constitute a backwards incompatible change. However, since - the file version is no longer tracked, there is no need to attempt to - include it in the Version key. +2015-09-28 15:31 +0000 [ddebb217f0] Richard Mudgett - * UPGRADE: Add notes for: - - Modification to the ModuleCheck AMI Action - - Removal of the "core show file version" CLI command + * sched.c: Add warning about negative time interval request. - Change-Id: I6cf0ff280e1668bf4957dc21f32a5ff43444a40e + Change-Id: Ib91435fb45b7f5f7c0fc83d0eec20b88098707bc -2015-04-12 06:12 +0000 [5d34bce635] Corey Farrell +2015-09-29 14:53 +0000 [d30939b6e8] Kevin Harwell - * main/editline: Add .gitignore. + * ARI: Changed version from 1.8.0 to 1.9.0 - This patch adds a .gitignore for main/editline to ignore all build results. + Change-Id: I510991c60d28d171f47c4b58bba4947f7fc71b13 - Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d +2015-09-25 18:37 +0000 [5f19c9bade] Richard Mudgett -2015-04-11 23:22 +0000 [d6605b3c10] Matt Jordan + * res/ari/config.c: Fix user sort compare function. - * .gitignore: Ignore tarballs (*.gz) + Made use the ao2 sort compare template function and OBJ_SEARCH_xxx + identifiers. - This patch updates the root .gitignore file to ignore files with a .gz - extension. This will cause git to ignore downloaded sound tarballs in - the the sounds/ directory. + Change-Id: Ic53005dc5aafa7a36c72300dd89b75fb63c92f4c - Change-Id: Ie84f085cc0fa51262209e7bfc1b1ba8c04a1ef59 +2015-09-25 17:26 +0000 [3a85764039] Richard Mudgett -2015-04-11 13:20 +0000 [b35e184d41] gtjoseph + * res/ari/config.c: Optimize conf_alloc() object init. - * Add .gitignore and .gitreview files + * Now conf_alloc() has more off nominal error checking. - Add the .gitignore and .gitreview files to the asterisk repo. + * Eliminated RAII_VAR() use in conf_alloc(). - NB: You can add local ignores to the .git/info/exclude file - without having to do a commit. + * Eliminated a dubius shortcut when destroying cfg->general in + conf_destructor() that would cause a crash if cfg->general failed to get + allocated. - Common ignore patterns are in the top-level .gitignore file. - Subdirectory-specific ignore patterns are in their own .gitignore - files. + * Add some ACO registration section comments. - Change-Id: I842a1588ff27d8a0189f12d597f0a7af033d6c69 - Tested-by: George Joseph + Change-Id: Ia40c2b1b2d0777d641605118ae019c5a73865e1a -2015-04-11 10:27 +0000 [356b770632] Diederik de Groot (License 6600) +2015-09-25 16:48 +0000 [028033e5a8] Richard Mudgett - * clang compiler warnings: Fix various warnings for tests + * res/ari/config.c: Fix conf_alloc() object init. - This patch fixes a variety of clang compiler warnings for unit tests. This - includes autological comparison issues, ignored return values, and - interestingly enough, one embedded function. Fun! + Need to finish initializing the string fields in the ao2 object before + putting any default strings into them. - Review: https://reviewboard.asterisk.org/r/4555 + ASTERISK-25383 #close + Reported by: yaron nahum - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4555.patch submitted by dkdegroot (License 6600) - ........ + Change-Id: I9f7f3a03f0c4991a01593abf8697b9a587c0ea84 - Merged revisions 434705 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-09-27 20:45 +0000 [90165e306d] Matt Jordan - Merged revisions 434706 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res/res_stasis: Fix accidental subscription to 'all' bridge topic + When b99a7052621700a1aa641a1c24308f5873275fc8 was merged, subscribing to a + NULL bridge will now cause app_subscribe_bridge to implicitly subscribe to + all bridges. Unfortunately, the res_stasis control loop did not check that + a bridge changing on a channel's control object was actually also non-NULL. + As a result, app_subscribe_bridge will be called with a NULL bridge when a + channel leaves a bridge. This causes a new subscription to be made to the + bridge. If an application has also subscribed to the bridge, the application + will now have two subscriptions: + (1) The explicit one created by the app + (2) The implicit one accidentally created by the control structure - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434707 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + As a result, the 'BridgeDestroyed' event can be sent multiple times. This + patch corrects the control loop such that it only subscribes an application + to a new bridge if the bridge pointer is non-NULL. -2015-04-11 10:11 +0000 [5f181bcccd] Juergen Spies (License 6698) + ASTERISK-24870 - * res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram + Change-Id: I3510e55f6bc36517c10597ead857b964463c9f4f - Prior to this patch, the far_max_datagram value on the UDPTL structure would - remain -1 if the remote endpoint fails to provide the SDP media attribute - T38FaxMaxDatagram. This can result in the INVITE request being rejected. With - this patch, we will now properly initialize the value with either the default - value or with the value provided by pjsip.conf's t38_udptl_maxdatagram - parameter. +2015-09-04 13:51 +0000 [e1223ff6db] Scott Griepentrog - Review: https://reviewboard.asterisk.org/r/4589 + * Scripts: check file versions of Asterisk and dependencies - ASTERISK-24928 #close - Reported by: Juergen Spies - Tested by: Juergen Spies - patches: - pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698) - ........ + To help in diagnosing mismatched modules and libraries, this + script scans for version, repository, and source information + and reports what is found. - Merged revisions 434688 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25376 #close + Reported by: Ashley Sanders + Change-Id: Ib0642d0fb96712476f59760d6d137a24633fe2d6 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434689 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-24 14:56 +0000 [6b1e7583c1] Richard Mudgett -2015-04-10 18:37 +0000 [c499cabf53] Richard Mudgett + * app_queue.c: Force COLP update if outgoing channel name changed. - * chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices. + * When a call is answered and the outgoing channel name has changed then + force a connected line update because the channel is no longer the same. + The channel was masqueraded into by another channel. This is usually + because of a call pickup. - With this patch, chan_pjsip/res_pjsip now sets the native formats to the - codecs negotiated by a call. + Note: Forwarded calls are handled in a controlled manner so the original + channel name is replaced with the forwarded channel. - * The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native - formats to include all the negotiated audio codecs instead of only the - initial preferred audio codec and later the currently received audio - codec. + ASTERISK-25423 #close + Reported by: John Hardin - * The audio frame handling in channel.c:ast_read() is more streamlined and - will automatically adjust to changes in received frame formats. The new - policy is to remove translation and pass the new frame format to the - receiver except if the translation was to a signed linear format. A more - long winded version is commented in ast_read() along with some caveats. + Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172 - * The audio frame handling in channel.c:ast_write() is more streamlined - and will automatically adjust any needed translation to changes in the - frame formats sent. Frame formats sent can change for many reasons such - as a recording is being played back or the bridged peer changed the format - it sends. Since it is a normal expectation that sent formats can change, - the codec mismatch warning message is demoted to a debug message. +2015-09-24 14:20 +0000 [6bf304bf25] Richard Mudgett - * Removed the short circuit check in - channel.c:ast_channel_make_compatible_helper(). Two party bridges need to - make channels compatible with each other. However, transfers and moving - channels among bridges can result in otherwise compatible channels having - sub-optimal translation paths if the make compatible check is short - circuited. A result of forcing the reevaluation of channel compatibility - is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc - options take effect consistently now. It is unfortunate that these two - options are enabled by default and negate some of the benefits to the - changes in channel.c:ast_read() by forcing translation through signed - linear on a two party bridge. + * app_queue.c: Factor out a connected line update routine. - * Improved the softmix bridge technology to better control the translation - of frames to the bridge. All of the incoming translation is now normally - handled by ast_read() instead of splitting any translation steps between - ast_read() and the slin factory. If any frame comes in with an unexpected - format then the translation path in ast_read() is updated for the next - frame and the slin factory handles the current frame translation. + Replace inlined code with update_connected_line_from_peer(). - This is the final patch in a series of patches aimed at improving - translation path choices. The other patches are on the following reviews: - https://reviewboard.asterisk.org/r/4600/ - https://reviewboard.asterisk.org/r/4605/ + ASTERISK-25423 + Reported by: John Hardin - ASTERISK-24841 #close - Reported by: Matt Jordan + Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3 - Review: https://reviewboard.asterisk.org/r/4609/ - ........ +2015-09-24 13:27 +0000 [e36b5f1e8e] Richard Mudgett - Merged revisions 434671 from http://svn.asterisk.org/svn/asterisk/branches/13 + * app_dial.c: Make 'A' option pass COLP updates. + While the 'A' option is playing the announcement file allow the caller and + peer to exchange COLP update frames. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434672 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25423 + Reported by: John Hardin -2015-04-10 16:06 +0000 [66f3fd0028] Kevin Harwell + Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9 - * chan_sip: make progressinband default to no +2015-09-24 12:59 +0000 [747bfac895] Richard Mudgett - After the "progressinband" value setting of "never" was updated to never send a - 183 this separated its use from the "no" value. Since "never" was the default, - but most users probably expect "no" this patch updates the default for the - "progressinband" setting to "no." + * app_dial.c: Force COLP update if outgoing channel name changed. - ASTERISK-24835 #close - Reported by: Andrew Nagy - Review: https://reviewboard.asterisk.org/r/4606/ - ........ + * When a call is answered and the outgoing channel name has changed then + force a connected line update because the channel is no longer the same. + The channel was masqueraded into by another channel. This is usually + because of a call pickup. - Merged revisions 434654 from http://svn.asterisk.org/svn/asterisk/branches/13 + Note: Forwarded calls are handled in a controlled manner so the original + channel name is replaced with the forwarded channel. + ASTERISK-25423 + Reported by: John Hardin - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434655 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c -2015-04-10 12:56 +0000 [8bae18ab93] yaron nahum (License 6676) +2015-09-24 12:37 +0000 [14481d9aa0] Richard Mudgett - * res_pjsip: Add an 'auto' option for DTMF Mode + * app_dial.c: Factor out a connected line update routine. - This patch adds support for automatically detecting the type of DTMF that a - PJSIP endpoint supports. When the 'dtmf_mode' endpoint option is set to 'auto', - the channel created for an endpoint will attempt to determine if RFC 4733 - DTMF is supported. If so, it will use that DTMF type. If not, the DTMF type - for the channel will be set to inband. + Replace inlined code with update_connected_line_from_peer(). - Review: https://reviewboard.asterisk.org/r/4438 + ASTERISK-25423 + Reported by: John Hardin - ASTERISK-24706 #close - Reported by: yaron nahum - patches: - yaron_patch_3_Feb.diff submitted by yaron nahum (License 6676) - ........ + Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091 - Merged revisions 434637 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-09-23 17:41 +0000 [bbeda190c3] Richard Mudgett + * app_dial.c: Remove some no-op code. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434638 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ice1884a94315d3cb7e3bbd47a9fba76a27276c54 -2015-04-10 12:00 +0000 [f69e46de25] gtjoseph +2015-09-23 14:02 +0000 [f050fa76eb] Mark Michelson - * res_pjsip_config_wizard: Cleanup load unload + * logger: Prevent duplicate dynamic channels from being added. - While investigating other unload issues I realized that the load/unload process - for the config wizard was pretty ugly so I've refactored it as follows... + There was a problem observed where the "logger add channel" CLI command + would allow for a channel with the same name to be added multiple times. + This would result in each message being written out to the same file + multiple times. - When the res_pjsip sorcery instance is created the config_wizard bumps it's own - module reference to prevent it from unloading while the sorcery instance is - still active. When res_pjsip unloads and it's sorcery instance is destroyed, - the config wizard unrefs itself which then allows itself to unload cleanly. - Since the config wizard now can't load after res_pjsip or unload before it - (which should have been the correct behavior all along), I was able to remove - the chunks of code in both load_module and unload_module that handled that case. + The problem was due to the difference in how logger channel filenames + are stored versus the format they are allowed to be presented when they + are added. For instance, if adding the logger channel "foo" through the + CLI, the result would be a logger channel with the file name + /var/log/asterisk/foo being stored. So when trying to add another "foo" + channel, "foo" would not match "/var/log/asterisk/foo" so we'd happily + add the duplicate channel. - Ran the testsuite tests to insure there were no functional changes and REF_DEBUG - to insure that Asterisk was shutting down cleanly with no FRACKs or leaks. + The fix presented here is to introduce two new methods in the logger + code: + * make_filename(): given a logger channel name, this creates the + filename for that logger channel. + * find_logchannel(): given a logger channel name, this calls + make_filename() and then traverses the list of logchannels in order + to find a match. - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4610/ - ........ + This change has made use of make_filename() and find_logchannel() + throughout to more consistently behave. - Merged revisions 434619 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25305 #close + Reported by Mark Michelson + Change-Id: I892d52954d6007d8bc453c3cbdd9235dec9c4a36 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434620 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-24 14:49 +0000 [629458d349] Mark Michelson -2015-04-10 11:38 +0000 [6f1a7fe05f] Richard Mudgett + * Do not swallow frames on channels leaving bridges. - * bridge_softmix.c,channel.c: Minor code simplification and cleanup. + When leaving a bridge, indications on a channel could be swallowed by + the internal indication logic because it appears that the channel is on + its way to be hung up anyway. One such situation where this is + detrimental is when channels on hold are redirected out of a bridge. The + AST_CONTROL_UNHOLD indication from the bridging code is swallowed, + leaving the channel in question to still appear to be on hold. - * Made code easier to follow in bridge_softmix.c:analyse_softmix_stats() - and made some debug messages more helpful. + The fix here is to modify the logic inside ast_indicate_data() to not + drop the indication if the channel is simply leaving a bridge. This way, + channels on hold redirected out of a bridge revert to their expected "in + use" state after the redirection. - * Made some debug and warning messages more helpful in - channel.c:set_format(). + ASTERISK-25418 #close + Reported by Mark Michelson - Review: https://reviewboard.asterisk.org/r/4607/ - ........ + Change-Id: If6115204dfa0551c050974ee138fabd15f978949 - Merged revisions 434617 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-09-22 17:08 +0000 [5f15cd93f0] Richard Mudgett + * app_page.c: Fix crash when forwarding with a predial handler. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434618 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Page uses the async method of dialing with the dial API. When a call gets + forwarded there is no calling channel available. If the predial handler + was set then the calling channel could not be put into auto-service + for the forwarded call because it doesn't exist. A crash is the result. -2015-04-10 11:32 +0000 [0b805cb875] Richard Mudgett + * Moved the callee predial parameter string processing to before the + string is passed to the dial API rather than having the dial API do it. + There are a few benefits do doing this. The first is the predial + parameter string processing doesn't need to be done for each channel + called by the dial API. The second is in async mode and the forwarded + channel is to have the predial handler executed on it then the + non-existent calling channel does not need to be present to process the + predial parameter string. - * translate.c: Only select audio codecs to determine the best translation choice. + * Don't start auto-service on a non-existent calling channel to execute + the predial handler when the dial API is in async mode and forwarding a + call. - Given a source capability of h264 and ulaw, a destination capability of - h264 and g722 then ast_translator_best_choice() would pick h264 as the - best choice even though h264 is a video codec and Asterisk only supports - translation of audio codecs. When the audio starts flowing, there are - warnings about a codec mismatch when the channel tries to write a frame to - the peer. + ASTERISK-25384 #close + Reported by: Chet Stevens - * Made ast_translator_best_choice() only select audio codecs. + Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981 - * Restore a check in channel.c:set_format() lost after v1.8 to prevent - trying to set a non-audio codec. +2015-09-03 21:19 +0000 [b50e372394] Matt Jordan - This is an intermediate patch for a series of patches aimed at improving - translation path choices for ASTERISK-24841. + * ARI: Add events for Contact and Peer Status changes - This patch is a complete enough fix for ASTERISK-21777 as the v11 version - of ast_translator_best_choice() does the same thing. However, chan_sip.c - still somehow tries to call ast_codec_choose() which then calls - ast_best_codec() with a capability set that doesn't contain any audio - formats for the incoming call. The remaining warning message seems to be - a benign transient. + This patch adds support for receiving events regarding Peer status changes + and Contact status changes. This is particularly useful in scenarios where + we are subscribed to all endpoints and channels, where we often want to know + more about the state of channel technology specific items than a single + endpoint's state. - ASTERISK-21777 #close - Reported by: Nick Ruggles + ASTERISK-24870 - ASTERISK-24380 #close - Reported by: Matt Jordan + Change-Id: I6137459cdc25ce27efc134ad58abf065653da4e9 - Review: https://reviewboard.asterisk.org/r/4605/ - ........ +2015-09-04 12:24 +0000 [3502c0431d] Matt Jordan - Merged revisions 434614 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res/res_stasis_device_state: Allow for subscribing to 'all' device state - Merged revisions 434615 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch adds support for subscribing to all device state changes. This is + done either by subscribing to an empty device, e.g., 'eventSource=deviceState:', + or by the WebSocket connection specifying that it wants all state in the + system. + ASTERISK-24870 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434616 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I9cfeca1c9e2231bd7ea73e45919111d44d2eda32 -2015-04-10 09:56 +0000 [894153b8b1] Matt Jordan +2015-09-04 12:25 +0000 [4c9f613309] Matt Jordan - * res/ari: Fix model validation for ChannelHold event + * ARI: Add the ability to subscribe to all events - When the ChannelHold event was added, the 'musicclass' parameter was - erroneously removed. This caused the ChannelHold events to be rejected as - they failed model validation. This patch updates the Swagger schema such that - it now properly reflects the event that is being created. + This patch adds the ability to subscribe to all events. There are two possible + ways to accomplish this: + (1) On initial WebSocket connection. This patch adds a new query parameter, + 'subscribeAll'. If present and True, Asterisk will subscribe the + applications to all ARI events. + (2) Via the applications resource. When subscribing in this manner, an ARI + client should merely specify a blank resource name, i.e., 'channels:' + instead of 'channels:12354'. This will subscribe the application to all + resources of the 'channels' type. - Hooray for tests that catch things like this. - ........ + ASTERISK-24870 #close - Merged revisions 434597 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I4a943b4db24442cf28bc64b24bfd541249790ad6 +2015-09-21 08:16 +0000 [ec514ad64d] Elazar Broad - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434598 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * core/logging: Fix logging to more than one syslog channel -2015-04-10 08:32 +0000 [02a0a4d65f] Joshua Colp + Currently, Asterisk will log to the last configured syslog + channel in logger.conf. This is due to the fact that the + final call to openlog() supersedes all of the previous calls. + This commit removes the call to openlog() and passes the + facility to ast_log_vsyslog(), along with utilizing the + LOG_MAKEPRI macro to ensure that the message is routed to + the correct facility and with the correct priority. - * dns: Fix build when TEST_FRAMEWORK is not defined. + ASTERISK-25407 #close + Reported by: Elazar Broad + Tested by: Elazar Broad + Change-Id: Ie2a2416bc00cce1b04e99ef40917c2011953ddd2 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434583 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-21 18:06 +0000 [aeddee39fb] Kevin Harwell -2015-04-10 07:40 +0000 [80c443bea4] Y Ateya (License 6693) + * app_record: RECORDED_FILE variable not being populated - * channels/chan_iax2: Improve POKE expiration time calculation for lossy networks + The RECORDED_FILE variable is empty unless a '%d' is specified in the filename. + This patch makes it so the variable is always set to the filename. - POKE is used to check for peer availability; however, in networks with packet - loss, the current calculations may result in POKE expiration times that are too - short. This patch alters the expiration/retry time logic to take into account - the last known qualify round trip time, as opposed to always using a static - value for each peer. + ASTERISK-25410 #close - Review: https://reviewboard.asterisk.org/r/4536 + Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653 - ASTERISK-22352 #close - Reported by: Frederic Van Espen +2015-09-16 08:22 +0000 [2bd27d1222] Joshua Colp - ASTERISK-24894 #close - Reported by: Y Ateya - patches: - poke_noanswer_duration.diff submitted by Y Ateya (License 6693) - ........ + * pbx: Update device and presence state when changing a hint extension. - Merged revisions 434564 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + When changing a hint extension without removing the hint first the + device state and presence state is not updated. This causes the state + of the hint to be that of the previous extension and not the current + one. This state is kept until a state change occurs as a result of + something (presence state change, device state change). - Merged revisions 434565 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change updates the hint with the current device and presence + state of the new extension when it is changed. Any state callbacks + which may have been added before the hint extension is changed are + also informed of the new device and presence state if either have + changed. + ASTERISK-25394 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434566 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f -2015-04-10 07:23 +0000 [b3d01f1fbf] Y Ateya (License 6693) +2015-09-17 16:34 +0000 [c94f46080f] Scott Griepentrog - * channels/chan_iax2: Add a configuration parameter for call token expiration + * CHAOS: avoid crash if string create fails - This patch adds a new configuration parameter, 'calltokenexpiration', that - controls how long before an authentication call token is expired. The default - maintains the RFC specified 10 seconds. Setting it to a higher value may be - useful in lossy networks. + Validate string buffer allocation before using them. - Review: https://reviewboard.asterisk.org/r/4588 + ASTERISK-25323 - ASTERISK-24939 #close - Reported by: Y Ateya - patches: - ctoken_configuration.diff submitted by Y Ateya (License 6693) + Change-Id: Ib9c338bdc1e53fb8b81366f0b39482b83ef56ce0 +2015-09-17 04:52 +0000 [b59c4d82b5] Walter Doekes - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434563 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_sip: Fix From header truncation for extremely long CALLERID(name). -2015-04-09 18:12 +0000 [ed6b6e3c03] gtjoseph + The CALLERID(num) and CALLERID(name) and other info are placed into the + `char from[256]` in initreqprep. If the name was too long, the addr-spec + and params wouldn't fit. - * res_pjsip_phoneprov_provider: Fix reference leak on unload + Code is moved around so the addr-spec with params is placed there first, + and then fitting in as much of the display-name as possible. - res_pjsip_phoneprov_provider was leaking references to phoneprov objects due to - a missing OBJ_NODATA in an ao2_callback in load_users(). Rather than adding the - OBJ_NODATA, I changed load_users to use a more straightforward ao2_iterator. - This plugged the leak but exposed an unload order issue between - res_pjsip_phoneprov_provider, res_phoneprov and res_pjsip. + ASTERISK-25396 #close - res_pjsip_phoneprov_provider unloads first, then res_phoneprov, then res_pjsip. - Since res_pjsip_phoneprov_provider uses res_pjsip's sorcery instance, when it - unloads, it's objects are still in the sorcery instance. When res_pjsip - unloads, it destroys all its objects including res_pjsip_phoneprov_provider's. - The phoneprov destructor then attempts to unregister the extension from - res_phoneprov but because res_phoneprov is already cleaned up, its users - container is gone and we get a FRACK. + Change-Id: I33632baf024f01b6a00f8c7f35c91e5f68c40260 - Simple solution, check for the NULL users container before attempting to remove - the entry. Duh. +2015-09-17 16:59 +0000 [4cc59533b9] Richard Mudgett - Ran tests/res_phoneprov/res_phoneprov_provider. No leaks in - res_pjsip_phoneprov_provider and no FRACKs. + * CHAOS: res_pjsip_diversion avoid crash if allocation fails - Reported-by: Corey Farrell - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4608/ - ASTERISK-24935 #close - ........ + Validate ast_malloc buffer returned before using it in + set_redirecting_value(). - Merged revisions 434545 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25323 + Change-Id: I15d2ed7cb0546818264c0bf251aa40adeae83253 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434547 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-17 16:47 +0000 [4fb95bbc4e] Kevin Harwell -2015-04-09 18:08 +0000 [9a63ada03a] gtjoseph + * app_queue: AgentComplete event has wrong reason - * loader/main: Don't set ast_fully_booted until deferred reloads are processed + When a queued caller transfers an agent to another extension sometimes the + raised AgentComplete event has a reason of "caller" and sometimes "transfer". + Since a transfer has taken place this should always be transfer. This occurs + because sometimes the stasis hangup event arrives before the transfer event + thus writing a different reason out. - Until we have a true module management facility it's sometimes necessary for one - module to force a reload on another before its own load is complete. If - Asterisk isn't fully booted yet, these reloads are deferred. The problem is - that asterisk reports fully booted before processing the deferred reloads which - means Asterisk really isn't quite ready when it says it is. + With this patch, when a hangup event is received during a transfer it will + check to see if the channel that is hanging up is part of a transfer. If so + it will return and let the subsequently received transfer event handler take + care of the cleanup. - This patch moves the report of fully booted after the processing of the deferred - reloads is complete. + ASTERISK-25399 #close - Since the pjsip stack has the most number of related modules, I ran the - channels/pjsip testsuite to make sure there aren't any issues. All tests - passed. + Change-Id: Ic63c49bd9a5ed463ea7a032fd2ea3d63bc81a50d - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4604/ - ........ +2015-09-17 13:09 +0000 [fb6b5c684b] Scott Griepentrog - Merged revisions 434544 from http://svn.asterisk.org/svn/asterisk/branches/13 + * PJSIP: avoid crash when getting rtp peer + Although unlikely, if the tech private is returned as + a NULL, chan_pjsip_get_rtp_peer() would crash. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434546 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25323 -2015-04-09 17:07 +0000 [520b9f2174] Kevin Harwell + Change-Id: Ie231369bfa7da926fb2b9fdaac228261a3152e6a - * res_pjsip: add CLI command to show global and system configuration +2015-09-17 11:31 +0000 [6409e7b11a] Kevin Harwell - Added a new CLI command for res_pjsip that shows both global and system - configuration settings: pjsip show settings + * app_queue: Crash when transferring - ASTERISK-24918 #close - Reported by: Scott Griepentrog - Review: https://reviewboard.asterisk.org/r/4597/ - ........ + During some transfer scenarios involving queues Asterisk would sometimes + crash when trying to obtain a channel snapshot (could happen on caller or + member channels). This occurred because the underlying channel had already + disappeared when trying to obtain the latest snapshot. - Merged revisions 434527 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch adds a reference to both the member and caller channels that + extends to the lifetime of the queue'd call, thus making sure the channels + will always exist when retrieving the latest snapshots. + ASTERISK-25185 #close + Reported by: Etienne Lessard - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434528 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ic397fa68fb4ff35fbc378e745da9246a7b552128 -2015-04-09 11:09 +0000 [b2b1f24af6] Richard Mudgett +2015-09-16 17:36 +0000 [fe5077b1f8] Mark Michelson - * chan_iax2.c: Fix ref leak in iax2_request(). + * res_pjsip_pubsub: Eliminate race during initial NOTIFY. - * Increased warning message format capability string buffer size in - iax2_request(). + There is a slim chance of a race condition occurring where two threads + can both attempt to manipulate the same area. - Review: https://reviewboard.asterisk.org/r/4601/ - ........ + Thread A can be handling an incoming initial SUBSCRIBE request. Thread A + lets the specific subscription handler know that the subscription has + been established. - Merged revisions 434510 from http://svn.asterisk.org/svn/asterisk/branches/13 + At this point, Thread B may detect a state change on the subscribed + resource and queue up a notification task on Thread C, the subscription + serializer thread. + Now Thread A attempts to generate the initial NOTIFY request to send to + the subscriber at the same time that Thread C attempts to generate a + state change NOTIFY request to send to the subscriber. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434511 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The result is that Threads A and C can step on the same memory area, + resulting in a crash. The crash has been observed as happening when + attempting to allocate more space to hold the body for the NOTIFY. -2015-04-09 11:05 +0000 [459171be12] Richard Mudgett + The solution presented here is to queue the subscription establishment + and initial NOTIFY generation onto the subscription serializer thread + (Thread C in the above scenario). This way, there is no way that a state + change notification can occur before the initial NOTIFY is sent, and if + there is a quick succession of NOTIFYs, we can guarantee that the two + NOTIFY requests will be sent in succession. - * bridge_native_rtp.c: Defer allocation and check if it fails in native_rtp_bridge_compatible(). + Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815 - Review: https://reviewboard.asterisk.org/r/4601/ - ........ +2015-08-28 15:42 +0000 [b88c54fa4b] Alexander Traud - Merged revisions 434508 from http://svn.asterisk.org/svn/asterisk/branches/13 + * translate: Fix transcoding while different in frame size. + When Asterisk translates between codecs, each with a different frame size (for + example between iLBC 30 and Speex-WB), too large frames were created by + ast_trans_frameout. Now, ast_trans_frameout is called with the correct frame + length, creating several frames when necessary. Affects all transcoding modules + which used ast_trans_frameout: GSM, iLBC, LPC10, and Speex. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434509 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25353 #close -2015-04-09 10:43 +0000 [3ef0a17b1f] yaron nahum (License 6676) + Change-Id: I2e229569d73191d66a4e43fef35432db24000212 - * res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests +2015-09-10 17:19 +0000 [5c713fdf18] Mark Michelson - This patch adds a new session supplement that handles in-dialog OPTIONS - requests. Said OPTIONS requests are sent a 200 OK, as an endpoint lookup - for the OPTIONS request would already have been done by the time the - session supplement receives the inbound request. + * scheduler: Use queue for allocating sched IDs. - ASTERISK-24862 #close - Reported by: yaron nahum - patches: - res_pjsip_dlg_options.c submitted by yaron nahum (License 6676) - ........ + It has been observed that on long-running busy systems, a scheduler + context can eventually hit INT_MAX for its assigned IDs and end up + overflowing into a very low negative number. When this occurs, this can + result in odd behaviors, because a negative return is interpreted by + callers as being a failure. However, the item actually was successfully + scheduled. The result may be that a freed item remains in the scheduler, + resulting in a crash at some point in the future. - Merged revisions 434506 from http://svn.asterisk.org/svn/asterisk/branches/13 + The scheduler can overflow because every time that an item is added to + the scheduler, a counter is bumped and that counter's current value is + assigned as the new item's ID. + This patch introduces a new method for assigning scheduler IDs. Instead + of assigning from a counter, a queue of available IDs is maintained. + When assigning a new ID, an ID is pulled from the queue. When a + scheduler item is released, its ID is pushed back onto the queue. This + way, IDs may be reused when they become available, and the growth of ID + numbers is directly related to concurrent activity within a scheduler + context rather than the uptime of the system. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434507 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2 -2015-04-09 09:58 +0000 [c08ebc6eeb] Mark Michelson +2015-08-21 21:50 +0000 [865377fc38] Rodrigo Ramírez Norambuena - * Reduce duplication of common DNS code. + * chan_sip.c: Validation on module reload - The NAPTR and SRV branches were worked on independently and - resulted in some code being duplicated in each. Since both - have been merged into trunk now, this patch reduces the - duplication by factoring out common code into its own - source files. + Change validation on reload module because now used the cli function for + reload. The sip_reload() function never fail and ever return NULL for this + reason on reload() now use the call the sip_reload() and return + AST_MODULE_LOAD_SUCCESS. + This problem is dectected on reload by PUT method on ARI, getting always + 404 http code when the module is reloaded. + ASTERISK-25325 #close + Reporte by: Rodrigo Ramírez Norambuena - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434490 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I41215877fb2cfc589e0d4d464000cf6825f4d7fb -2015-04-09 07:57 +0000 [ea0098724e] Diederik de Groot (License 6600) +2015-08-21 17:39 +0000 [e75aff53e6] Richard Mudgett - * clang compiler warnings: Fix autological comparisons + * res_pjsip_pubsub.c: Mark ast_sip_create_subscription() as not used. - This fixes autological comparison warnings in the following: - * chan_skinny: letohl may return a signed or unsigned value, depending on the - macro chosen - * func_curl: Provide a specific cast to CURLoption to prevent mismatch - * cel: Fix enum comparisons where the enum can never be negative - * enum: Fix comparison of return result of dn_expand, which returns a signed - int value - * event: Fix enum comparisons where the enum can never be negative - * indications: tone_data.freq1 and freq2 are unsigned, and hence can never be - negative - * presencestate: Use the actual enum value for INVALID state - * security_events: Fix enum comparisons where the enum can never be negative - * udptl: Don't bother to check if the return value from encode_length is less - than 0, as it returns an unsigned int - * translate: Since the parameters are unsigned int, don't bother checking - to see if they are negative. The cast to unsigned int would already blow - past the matrix bounds. - * res_pjsip_exten_state: Use a temporary value to cache the return of - ast_hint_presence_state - * res_stasis_playback: Fix enum comparisons where the enum can never be - negative - * res_stasis_recording: Add an enum value for the case where the recording - operation is in error; fix enum comparisons - * resource_bridges: Use enum value as opposed to -1 - * resource_channels: Use enum value as opposed to -1 + Change-Id: I2b8db18eac36c01a5c7eb9467699124e203fd093 - Review: https://reviewboard.asterisk.org/r/4533 - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4533.patch submitted by dkdegroot (License 6600) - ........ +2015-09-09 12:24 +0000 [4d91d01df1] Richard Mudgett - Merged revisions 434469 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip_pubsub.c: Add some notification comments. - Merged revisions 434470 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ie62ff1f4b7adc1a12fa0303f53926af249b25e20 +2015-08-21 18:01 +0000 [f36a9d1221] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434471 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_pubsub.c: Set dlg_status code instead of sending SIP response. -2015-04-08 21:05 +0000 [2201e27340] Stefan Engström (License 6691) + We should not try to send a SIP response message because we may be + restoring a persistent subscription where we are not responding to a SIP + request. - * apps/app_queue: Prevent possible crash when evaluating queue penalty rules + Change-Id: Id89167ef90320c5563f37e632db0dda6cb9e7dec - Although it only occurred once, a crash occurred when a queue attempted to - evaluate a queue penalty rule that appeared to have already been destroyed. - In many locations in app_queue, a test is done to see if qe->pr is NULL; - however, when we dispose of a queue's penalty rules, we don't set the pointer - to NULL after free'ing it. This patch does that to prevent any dangling - pointers from lingering on the queue object. +2015-08-21 17:40 +0000 [94582f8fab] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/4522 + * res_pjsip_pubsub.c: Fix off-nominal memory leak. - ASTERISK-23319 #close - Reported by: Vadim - patches: - rb4552.patch submitted by Stefan Engström (License 6691) - ........ + Fix off-nominal visited vector leak in build_resource_tree(). - Merged revisions 434448 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: If0399c7941c9c0b1038bcfb7b9a371760977831c - Merged revisions 434449 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-21 15:26 +0000 [8b3ed52239] Richard Mudgett + * res_pjsip_pubsub.c: Fix one byte buffer overrun error. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434450 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ast_sip_pubsub_register_body_generator() did not account for the null + terminator set by sprintf() in the allocated output buffer. -2015-04-08 13:32 +0000 [a759714101] Jonathan Rose + Change-Id: I388688a132e479bca6ad1c19275eae0070969ae2 - * res_pjsip_t38: Fix FAX failures when using PJSIP with authentication +2015-08-21 15:25 +0000 [4329bd1e4c] Richard Mudgett - Without this patch, if a PJSIP endpoint with udptl enabled and authentication - set attempted to use sendFax, the FAX session would fail during setup. This - was because the invite issued in response to being auth challenged would cause - the PJSIP channel performing the FAX to receive a second T38 framehook and - this would cause frames to be consumed in an inappropriate manner. + * res_pjsip_pubsub.c: Use ast_alloca() instead of alloca(). - ASTERISK-24933 #close - Reported by: Jonathan Rose - Review: https://reviewboard.asterisk.org/r/4577/ - ........ + Change-Id: Ia396096b4fedc2874649ca11137612c3f55e83e3 - Merged revisions 434425 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-21 11:04 +0000 [a456a20ecf] Richard Mudgett + * res_pjsip_pubsub.c: Add missing error return in load_module(). - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434431 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I15debd0f717f16ee2f78e7f56151c3b3b97b72fc -2015-04-08 13:20 +0000 [09df34d880] Richard Mudgett +2015-08-21 11:03 +0000 [f58f4c6e27] Richard Mudgett - * Bridging: Eliminate the unnecessary make channel compatible with bridge operation. + * res_pjsip/location.c: Use the builtin ao2_callback() match function instead. - When a channel enters the bridging system it is first made compatible with - the bridge and then the bridge technology makes the channel compatible - with the technology. For all but the DAHDI native and softmix bridge - technologies the make channel compatible with the bridge step is an - effective noop because the other technologies allow all audio formats. - For the DAHDI native bridge technology it doesn't matter because it is not - an initial bridge technology and chan_dahdi allows only one native format - per channel. For the softmix bridge technology, it is a noop at best and - harmful at worst because the wrong translation path could be setup if the - channel's native formats allow more than one audio format. + Change-Id: I364906d6d2bad3472929986704a0286b9a2cbe3f - This is an intermediate patch for a series of patches aimed at improving - translation path choices. +2015-09-10 09:49 +0000 [9d1f176e29] Mark Michelson - * Removed code dealing with the unnecessary step of making the channel - compatible with the bridge. + * res_pjsip: Copy default_from_user to avoid crash. - ASTERISK-24841 - Reported by: Matt Jordan + The default_from_user retrieval function was pulling the + default_from_user from the global configuration struct in an unsafe way. + If using a database as a backend configuration store, the global + configuration struct is short-lived, so grabbing a pointer from it + results in referencing freed memory. - Review: https://reviewboard.asterisk.org/r/4600/ - ........ + The fix here is to copy the default_from_user value out of the global + configuration struct. - Merged revisions 434424 from http://svn.asterisk.org/svn/asterisk/branches/13 + Thanks go to John Hardin for discovering this problem and proposing the + patch on which this fix is based. + ASTERISK-25390 #close + Reported by Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434430 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c -2015-04-08 11:49 +0000 [8ec9a82b9a] Maciej Szmigiero (license 6085) +2015-09-10 08:39 +0000 [1dd0e220bf] Matt Jordan - * Security/tcptls: MitM Attack potential from certificate with NULL byte in CN. + * res/res_pjsip_nat: Ignore REGISTER requests when looking for a Record-Route - When registering to a SIP server with TLS, Asterisk will accept CA signed - certificates with a common name that was signed for a domain other than the - one requested if it contains a null character in the common name portion of - the cert. This patch fixes that by checking that the common name length - matches the the length of the content we actually read from the common name - segment. Some certificate authorities automatically sign CA requests when - the requesting CN isn't already taken, so an attacker could potentially - register a CN with something like www.google.com\x00www.secretlyevil.net - and have their certificate signed and Asterisk would accept that certificate - as though it had been for www.google.com - this is a security fix and is - noted in AST-2015-003. + We will only rewrite the Contact header if there is no Record-Route header in + the received request. If a malfunctioning proxy places a Record-Route header + into a REGISTER request, we will decide that we shouldn't update the IP/port + in the Contact header, and we will end up storing a contact with an AoR that + contains the NAT'd IP address. - ASTERISK-24847 #close - Reported by: Maciej Szmigiero - Patches: - asterisk-null-in-cn.patch submitted by mhej (license 6085) - ........ + While it is nice to have the proxy *not* send a Record-Route in a REGISTER + request, it's also a good idea to not process the header in a non-dialog + message. This patch updates the code to explicitly ignore the Record-Route + header in REGISTER requests. - Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + ASTERISK-25387 #close - Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I4bd3bcccc4003d460cc354d986b0dea2e433ef3f - Merged revisions 434384 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-09-03 21:15 +0000 [4eedd9ef9d] Matt Jordan + * main/config_options: Check for existance of internal object before derefing - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434385 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Asterisk can load and register an object type while still having an invalid + sorcery mapping. This can cause an issue when a creation call is invoked. + For example, mis-configuring PJSIP's endpoint identifier by IP address mapping + in sorcery.conf will cause the sorcery mechanism to be invalidated; however, a + subsequent ARI invocation to create the object will cause a crash, as the + internal type may not be registered as sorcery expects. -2015-04-08 11:31 +0000 [2bd9e008a7] Richard Mudgett + Merely checking for a NULL pointer here solves the issue. - * format_cache.c: Add missing slin12 format to ast_format_cache_is_slinear(). - ........ + Change-Id: I54079fb94a1440992f4735a9a1bbf1abb1c601ac +2015-09-09 16:46 +0000 [71408df2b8] Alexander Anikin - Merged revisions 434357 from http://svn.asterisk.org/svn/asterisk/branches/13 + * chan_ooh323: Add ProgressIndicator IE with inband info available + Add ProgressIndicator IE with inband info present to Progress and + Alerting Q.931 message - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434383 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25227 #close + Reported by: Alexandr Dranchuk -2015-04-08 07:02 +0000 [3f54af689f] Matt Jordan + Change-Id: I326ad13cb1db9a72b3fd902bafed3c28a3684203 +2015-09-08 10:35 +0000 [f72f9ceefc] Scott Griepentrog - * chan_iax2: Fix compilation issue due to funky merge + * pjsip: avoid possible crash req_caps allocation failure - Don't mix declarations and code! + Make certain that the pjsip session has not failed to + allocate the format capabilities structure, which can + otherwise cause a crash when referenced. + ASTERISK-25323 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434294 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I602790ba12714741165e441cc64a3ecde4cb5750 -2015-04-08 07:00 +0000 [a9b6a62461] Jaco Kroon (License 5671) +2015-09-03 14:07 +0000 [fbf720db91] Jonathan Rose - * chan_iax2: Fix crash caused by unprotected access to iaxs[peer->callno] + * ParkAndAnnounce: Add variable inheritance - This patch fixes an access to the peer callnumber that is unprotected by a - corresponding mutex. The peer->callno value can be changed by multiple threads, - and all data inside the iaxs array must be procted by a corresponding lock - of iaxsl. + In Asterisk 11, the announcer channel would receive channel variables + from the channel being parked by means of normal channel inheritance. + This functionality was lost during the big res_parking project in + Asterisk 12. This patch restores that functionality. - The patch moves the unprotected access to a location where the mutex is - safely obtained. + ASTERISK-25369 #close + Review: https://gerrit.asterisk.org/#/c/1180/ - Review: https://reviewboard.asterisk.org/r/4599/ + Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e - ASTERISK-21211 #close - Reported by: Jaco Kroon - patches: - asterisk-11.2.1-iax2_poke-segfault.diff submitted by Jaco Kroon (License 5671) - ........ +2015-09-04 16:33 +0000 [695f26cbb7] David M. Lee - Merged revisions 434291 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_rtp_asterisk: Add more ICE debugging - Merged revisions 434292 from http://svn.asterisk.org/svn/asterisk/branches/13 + In working through a recent ICE negotiation bug, I found the debug + logging in res_rtp_asterisk to be lacking. This patch adds a number of + debug and warning statements that were helpful. + Change-Id: I950c6d8f13a41f14b3d6334b4cafe7d4e997be80 +2015-09-01 10:16 +0000 [4ed9c9a280] Guido Falsi - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434293 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Core/General: Add #ifdef needed on FreeBSD. -2015-04-08 06:54 +0000 [477536ef25] Valentin Vidić (License 6697) + pthread_attr_init() defaults to PTHREAD_EXPLICIT_SCHED on FreeBSD + too. - * chan_sip: Handle IPv4 mapped IPv6 clients when NAT is enabled + ASTERISK-25310 #close + Reported by: Guido Falsi - When udpbindaddr is set to the IPv6 bind all address of '::', Asterisk will - attempt to handle both IPv4 and IPv6 addresses, although the information will - be stored in a struct with an AF_INET6 address type. However, the current - NAT handling code won't handle the IPv4 mapped IPv6 addresses correctly. - This patch adds an additional check for the mapped address case, allowing - the NAT code to handle clients even when the address is IPv6. + Change-Id: Iae6befac9028b5b9795f86986a4a08a1ae6ab7c4 - Review: https://reviewboard.asterisk.org/r/4563/ +2015-09-08 07:21 +0000 [5469caa9dd] Joshua Colp - ASTERISK-18032 #close - Reported by: Christoph Timm - patches: - nat_with_ipv6.diff submitted by Valentin Vidić (License 6697) - ........ + * res_pjsip: Use hash for contact object identity instead of Contact URI. - Merged revisions 434288 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + In the wild it is possible for Contact URIs to be quite long as + parameters can exist on them. This can present a problem when storing + them in the AstDB as the URI is used as part of the object name and + there is a fixed length limit for the AstDB. This will cause + the contact to not get stored. - Merged revisions 434289 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change uses the MD5 hash of the Contact URI as part of the + object name instead. This has a fixed length which is guaranteed + to not exceed the AstDB length limit. + ASTERISK-25295 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434290 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ie8252a75331ca00b41b9f308f42cc1fbdf701a02 -2015-04-08 06:45 +0000 [b8fa8aa775] Diederik de Groot (License 6600) +2015-09-07 13:19 +0000 [480c443e26] Alexander Anikin - * clang compiler warnings: Fix pointer-bool-converesion warnings + * chan_ooh323: call ast_rtp_instance_stop on ooh323_destroy - This patch fixes several warnings pointed out by the clang compiler. - * chan_pjsip: Removed check for data->text, as it will always be non-NULL. - * app_minivm: Fixed evaluation of etemplate->locale, which will always - evaluate to 'true'. This patch changes the evaluation to use - ast_strlen_zero. - * app_queue: - - Fixed evaluation of qe->parent->monfmt, which always evaluates to - true. Instead, we just check to see if the dereferenced pointer - evaluates to true. - - Fixed evaluation of mem->state_interface, wrapping it with a call to - ast_strlen_zero. - * res_smdi: Wrapped search_msg->mesg_desk_term with calls to ast_strlen_zero. + Call ast_rtp_instance_stop on ooh323_destroy to free resources + allocated by rtp instance - Review: https://reviewboard.asterisk.org/r/4541 + ASTERISK-25299 #close + Report by: Alexandr Dranchuk - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4541.patch submitted by dkdegroot (License 6600) - ........ + Change-Id: I455096bd7da016b871afe90af86067c2c7c9f33f - Merged revisions 434285 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-09-07 11:15 +0000 [c3e6debdb9] Matt Jordan - Merged revisions 434286 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res/res_pjsip: Purge contacts when an AoR is deleted + When an AoR is deleted by an external mechanism, such as through ARI, we + currently do not remove dynamic contacts that were created for that AoR as a + result of a received REGISTER request. As a result, re-creating the AoR will + cause the dynamic contact to be interpreted as a persistent contact, leading + to some rather strange state being created for the contacts/endpoints. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434287 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch adds a sorcery observer for the 'aor' object. When a delete is + issued on the underlying sorcery object, the observer is called, and all + contacts created and persisted in sorcery for that AoR are also removed. Note + that we don't want to perform this action when an AO2 object that is an AoR is + destroyed, as the AoR can still exist in the backing storage (and we would + thus be removing valid contacts from an AoR that still "exists".) -2015-04-08 06:35 +0000 [016fba12e2] Rodrigo Ramirez Norambuena (License 6577) + ASTERISK-25381 #close - * cel_pgsl: Add support for GMT timestamps + Change-Id: I6697e51ef6b2858b5d63401f35dc378bb0f90328 - This patch adds a new option to cel_pgsl, "usegmtime", which causes timestamps - to be logged in GMT. +2015-09-05 14:58 +0000 [78d0b9d97e] Matt Jordan - Review: https://reviewboard.asterisk.org/r/4571/ + * channels/pjsip/dialplan_functions: Add an option for extracting the SIP call-id - ASTERISK-23186 #close - Reported by: Rodrigo Ramirez Norambuena - patches: - cel_pgsql.c_add_usegmtime2.patch submitted by Rodrigo Ramirez Norambuena (License 6577) + This patch adds a new option to the CHANNEL function that allows for the + extraction of the SIP call-id. It is used in conjunction with the 'pjsip' + option, and will return the Call-ID of the INVITE request that established + the PJSIP channel. + ASTERISK-25352 + Change-Id: I278d1f8bcfe3a53c5aa1dadebc14e92b0abd476a - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434284 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-04 16:06 +0000 [61c6c6aa6c] David M. Lee -2015-04-07 14:40 +0000 [d923ec80b9] Scott Griepentrog + * Fix when remote candidates exceed PJ_ICE_MAX_CAND - * pjsip: resolve compatibility problem with ast_sip_session + We were passing the wrong count into pj_ice_sess_create_check_list(), + causing the create to fail if we ever received more than PJ_ICE_MAX_CAND + candidates. - A change in r430179 inserted a variable near the top of a - structure caused a problem when running DPMA in a version - of Asterisk compiled across the change. This patch moves - the new variable to the end of the structure, eliminating - the problem. + Change-Id: I0303d8e1ecb20a8de9fe629a3209d216c4028378 - Review: https://reviewboard.asterisk.org/r/4574/ - ........ +2015-09-04 14:40 +0000 [ac62928d6b] Mark Michelson - Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13 - ........ + * res_pjsip: Change default from user value. - Merged revisions 434261 from http://svn.asterisk.org/svn/asterisk/branches/13 + When Asterisk sends an outbound SIP request, if there is no direct + reason to place a specific value for the username in the From header, + Asterisk would generate a UUID. For example, this would happen when + sending outbound OPTIONS requests when qualifying or when sending + outbound INVITE requests when originating (if no explicit caller ID were + provided). The issue is that some SIP providers reject these sorts of + requests with a "Name too long" error response. + This patch aims to fix this by changing the default outbound username in + From headers to "asterisk". This value can be overridden by changing the + default_from_user option in the global options if desired. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434263 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25377 #close + Reported by Mark Michelson -2015-04-07 11:42 +0000 [153c4044e4] Kevin Harwell + Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190 - * bridge.c: Hangup attended transfer target after it has been swapped out +2015-09-04 09:26 +0000 [6002472a62] Scott Griepentrog - After completing an attended transfer the transfer target channel (the one that - gets swapped out) was not being hung up after leaving the bridge. This resulted - in a channel possibly being left around. Added an explicit softhangup for the - channel in question after the transfer is successfully completed in order to - make sure the channel is hung up. + * endpoint snapshot: avoid second cleanup on alloc failure - ASTERISK-24782 #close - Reported by: John Bigelow - Review: https://reviewboard.asterisk.org/r/4575/ - ........ + In ast_endpoint_snapshot_create(), a failure to init the + string fields results in two attempts to ao2_cleanup the + same pointer. Removed RAII_VAR to eliminate problem. - Merged revisions 434240 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25375 #close + Reported by: Scott Griepentrog + Change-Id: If4d9dfb1bbe3836b623642ec690b6d49b25e8979 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434241 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-04 05:33 +0000 [d32e516c7c] Martin Tomec -2015-04-07 10:34 +0000 [1eba6abae5] Mark Michelson + * res/pjsip: Mark WSS transport as secure - * Do not queue message requests that we do not respond to. + Pjsip is refusing to use unsecure transport with "sips" in url. + WSS should be considered as secure transport. - If we receive a MESSAGE request that we cannot send a response - to, we should not send the incoming MESSAGE to the dialplan. + ASTERISK-24602 #comment Partially fixed by setting WSS as secure - This commit should help the bouncing message_retrans test to - pass consistently. - ........ + Change-Id: Iddac406c6deba6240c41a603b8859dfefe1a5353 - Merged revisions 434218 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-09-02 17:26 +0000 [ad9cb6c2ce] Mark Michelson + * res_pjsip: Fix contact refleak on stateful responses. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434219 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When sending a stateful response, creation of the transaction can fail, + most commonly because we are trying to create a transaction from a + retransmitted request. When creation of the transaction fails, we end up + leaking a reference to a contact that was bumped when the response was + created. -2015-04-07 10:22 +0000 [c2f50ba6f4] Matt Jordan + This patch adds the missing deref and fixes the reference leak. - * ARI: Add the ability to intercept hold and raise an event + Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07 - For some applications - such as SLA - a phone pressing hold should not behave - in the fashion that the Asterisk core would like it to. Instead, the hold - action has some application specific behaviour associated with it - such as - disconnecting the channel that initiated the hold; only playing MoH to channels - in the bridge if the channels are of a particular type, etc. +2015-09-02 12:41 +0000 [cc1363209e] Joshua Colp - One way of accomplishing this is to use a framehook to intercept the - hold/unhold frames, raise an event, and eat the frame. Tasty. This patch - accomplishes that using a new dialplan function, HOLD_INTERCEPT. + * pbx: Fix crash when issuing "core show hints" with long pattern match. - In addition, some general cleanup of raising hold/unhold Stasis messages was - done, including removing some RAII_VAR usage. + When issuing the "core show hints" CLI command a combination of both + the hint extension and context is created. This uses a fixed size + buffer expecting that the extension will not exceed maximum extension + length. When the extension is actually a pattern match this constraint + does not hold true, and the extension may exceed the maximum extension + length. In this case extra characters are written past the end of the + fixed size buffer. - Review: https://reviewboard.asterisk.org/r/4549/ + This change makes it so the construction of the combined hint extension + and context can not exceed the size of the buffer. - ASTERISK-24922 #close - ........ + ASTERISK-25367 #close - Merged revisions 434216 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499 +2015-09-01 09:05 +0000 [d58c8d73af] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434217 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_pubsub: re-re-fix persistent subscription storage. -2015-04-06 21:10 +0000 [af4d802773] Diederik de Groot (License 6600) + A recent change to res_pjsip_pubsub switched to using pjsip_msg_print as + a means of writing an appropriate packet to persistent storage. While + this partially solved the issue, it had its own problems. + pjsip_msg_print will always add a Content-Length header to the message + it prints. Frequent restarts of Asterisk can result in persistent + subscriptions being written with five or more Content-Length headers. In + addition, sometimes some apparent corruption of individual headers could + be seen. - * clang compiler warnings: Fix sometimes-initialized warning in func_math + This aims to fix the problem by not running a parsed message through an + interpreter but rather by taking the raw message and saving it. The + logic for what to save is going to be different depending on whether a + SUBSCRIBE was received from the wire or if it was pulled from + persistence. When receiving a packet from the wire, when using a + streaming transport, the rdata->pkt_info.packet may contain multiple SIP + messages or fragments. However, the rdata->msg_info.msg_buf will always + contain the current SIP message to be processed. When pulling from + persistence, though, the rdata->msg_info.msg_buf will be NULL since no + transport actually handled the packet. However, since we know that we + will always ever pull one SIP message from persistence, we are free to + save directly from rdata->pkt_info.packet instead. - This patch fixes a bug in a unit test in func_math where a variable could be - passed to ast_free that wasn't allocated. This patch corrects the issue and - ensures that we only attempt to free a variable if we previously allocated - it. + ASTERISK-25365 #close + Reported by Mark Michelson - Review: https://reviewboard.asterisk.org/r/4552 + Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4552.patch submitted by dkdegroot (License 6600) - ........ +2015-08-31 15:24 +0000 [03fe79f29e] Mark Michelson - Merged revisions 434190 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Fix deadlock on presence state changes. - Merged revisions 434191 from http://svn.asterisk.org/svn/asterisk/branches/13 + A deadlock was observed where three threads were competing for different + locks: + * One thread held the hints lock and was attempting to lock a specific + hint. + * One thread was holding the specific hint's lock and was attempting to + lock the contexts lock + * One thread was holding the contexts lock and attempting to lock the + hints lock. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434192 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Clearly the second thread was doing the wrong thing here. The fix for + this is to make sure that the hint's lock is not held on presence state + changes. Something similar is already done (and commented about) for + device state changes. -2015-04-06 21:03 +0000 [c1cfe3fae2] Diederik de Groot (License 6600) + ASTERISK-25362 #close + Reported by Mark Michelson - * clang compiler warnings: Fix non-literal-null-conversion warnings + Change-Id: I15ec2416b92978a4c0c08273b2d46cb21aff97e2 - Clang will flag errors when a char pointer is set to '\0', as opposed to a - value that the char pointer points to. This patch fixes this warning - in a variety of locations. +2015-08-29 10:36 +0000 [a676ba2aad] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4551 + * taskprocessor: Fix race condition between unreferencing and finding. - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4551.patch submitted by dkdegroot (License 6600) - ........ + When unreferencing a taskprocessor its reference count is checked + to determine if it should be unlinked from the taskprocessors + container and its listener shut down. In between the time when the + reference count is checked and unlinking it is possible for + another thread to jump in, find it, and get a reference to it. If + the thread then uses the taskprocessor it may find that it is not + in the state it expects. - Merged revisions 434187 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This change locks the taskprocessors container during almost the + entire unreference operation to ensure that any other thread which + may attempt to find the taskprocessor has to wait. - Merged revisions 434188 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25295 + Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434189 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-08-28 20:22 +0000 [1b1561f4c8] Joshua Colp -2015-04-06 16:54 +0000 [79fb8c32a6] Mark Michelson + * res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items. - * Uncomment test case. + The keepalive support in res_pjsip_sdp_rtp currently assumes + that a stream will only be negotiated once. This is false. + If the stream is replaced and later added back it can be + negotiated again causing multiple keepalive scheduled items + to exist. This change explicitly deletes the existing + keepalive scheduled item before adding the new one. + The res_pjsip_sdp_rtp module also does not stop RTP + keepalives or timeout timer if the stream has been + replaced. This change adds a callback to the session media + interface to allow a media stream to be stopped without + the resources being destroyed. This allows the scheduled + items and RTP to be stopped when the stream no longer + exists. + ASTERISK-25356 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434170 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de -2015-04-06 16:13 +0000 [fc314cb43f] Mark Michelson +2015-08-28 19:57 +0000 [85e1cb51b2] Joshua Colp - * Add missing DNS NAPTR test file. + * sched: ast_sched_del may return prematurely due to spurious wakeup + When deleting a scheduled item if the item in question is currently + executing the ast_sched_del function waits until it has completed. + This is accomplished using ast_cond_wait. Unfortunately the + ast_cond_wait function can suffer from spurious wakeups so the + predicate needs to be checked after it returns to make sure it has + really woken up as a result of being signaled. + This change adds a loop around the ast_cond_wait to make sure that + it only exits when the executing task has really completed. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434154 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25355 #close -2015-04-06 14:23 +0000 [87d7c90e4e] Kevin Harwell + Change-Id: I51198270eb0b637c956c61aa409f46283432be61 - * res_pjsip: config option 'timers' can't be set to 'no' +2015-08-27 12:26 +0000 [c2c7319082] Joshua Colp - When setting the configuration option 'timers' equal to 'no' the bit flag was - not properly negated. This patch clears all associated flags and only sets the - specified one. pjsip will handle any necessary flag combinations. Also went - ahead and did similar for the '100rel' option. + * res_pjsip_session: Don't invoke session supplements twice for BYE requests. - ASTERISK-24910 #close - Reported by: Ray Crumrine - Review: https://reviewboard.asterisk.org/r/4582/ - ........ + When a BYE request is received the PJSIP invite session implementation + creates and sends a 200 OK response before we are aware of it. This + causes the INVITE session state callback to be called into and ultimately + the session supplements run on the BYE request. Once this response has + been sent the normal transaction state callback is invoked which + invokes the session supplements on the BYE request again. This can + be problematic in particular with res_pjsip_rfc3326 as it may + attempt to update the hangup cause code on the channel while it is + in the process of being hung up. - Merged revisions 434131 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change makes it so the session supplements are only invoked + once by the INVITE session state callback. + ASTERISK-25318 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434132 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I69c17df55ccbb61ef779ac38cc8c6b411376c19a -2015-04-06 14:04 +0000 [e48f2e7897] gtjoseph +2015-08-26 15:26 +0000 [6862c2a167] Scott Griepentrog - * build: Fixes for gcc 5 compilation + * Chaos: handle failed allocation in get_media_encryption_type - These are fixes for compilation under gcc 5.0... + If the ast_strndup() call fails to allocate a copy of the + transport string for parsing, fail gracefully. - chan_sip.c: In parse_request needed to make 'lim' unsigned. - inline_api.h: Needed to add a check for '__GNUC_STDC_INLINE__' to detect C99 - inline semantics (same as clang). - ccss.c: In ast_cc_set_parm, needed to fix weird comparison. - dsp.c: Needed to work around a possible compiler bug. It was throwing - an array-bounds error but neither - sgriepentrog, rmudgett nor I could figure out why. - manager.c: In action_atxfer, needed to correct an array allocation. + ASTERISK-25323 + Reported by: Scott Griepentrog - This patch will go to 11, 13, trunk. + Change-Id: Ia4b905ce6d03da53fea526224455c1044b1a5a28 - Review: https://reviewboard.asterisk.org/r/4581/ - Reported-by: Jeffrey Ollie - Tested-by: George Joseph - ASTERISK-24932 #close - ........ +2015-08-26 14:25 +0000 [f1cd636658] Scott Griepentrog - Merged revisions 434113 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Chaos: make hangup NULL tolerant - Merged revisions 434114 from http://svn.asterisk.org/svn/asterisk/branches/13 + In chan_pjsip_new, if allocation of the pvt + structure fails, ast_hangup is called. But + it was written to assume pvt was valid, and + this change corrects that. + ASTERISK-25323 + Reported by: Scott Griepentrog - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434115 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I5f47860fe9cee4cd56abd3f79b108678ab72cc87 -2015-04-06 13:18 +0000 [0543879228] Diederik de Groot (License 6600) +2015-08-26 05:40 +0000 [c01111223f] Joshua Colp - * clang compiler warnings: Remove large chunks of unused code from extconf + * chan_sip: Allow call pickup to set the hangup cause. - This patch fixes a warning caught by clang, in which it detected that large - chunks of extconf were unused. Frankly, I wish we could pretend that all of - extconf was unused, but alas, that is not yet the case. + The call pickup implementation in chan_sip currently sets the channel + hangup cause to "normal clearing" if call pickup is successfully + performed. This action overwrites the "answered elsewhere" hangup cause + set by the call pickup code and can result in the SIP device in + question showing a missed call when it should not. - A few extraneous functions in the parking tests were removed as well, for - the same reason. + This change sets the hangup cause to "normal clearing" as a + default initially but allows the call pickup to change it as + needed. - Review: https://reviewboard.asterisk.org/r/4553 + ASTERISK-25346 #close - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4553.patch submitted by dkdegroot (License 6600) - ........ + Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff - Merged revisions 434093 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-08-25 07:17 +0000 [2a4eee0cd9] Joshua Colp - Merged revisions 434097 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip: Add common ast_sip_get_host_ip API. + Modules commonly used the pj_gethostip function for retrieving the + IP address of the host. This function does not cache the result and may + result in a DNS lookup occurring, or additional work. If the DNS + server is unreachable or network issues arise this can cause the + pj_gethostip function to block for a period of time. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434099 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change adds an ast_sip_get_host_ip and ast_sip_get_host_ip_string + function which does the same thing but caches the host IP address at + module load time. This results in no additional work being done each + time the local host IP address is needed. -2015-04-06 13:03 +0000 [e309a91e2d] Diederik de Groot (License 6600) + ASTERISK-25342 #close - * clang compiler warnings: Fix sometimes-uninitialized warning in pbx_config + Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e - This patch fixes a warning caught by clang, in which a char pointer could be - assigned to before it was initialized. The patch re-organizes the code to - ensure that the pointer is always initialized, even on off nominal paths. +2015-08-24 11:04 +0000 [7c4d0c3506] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4529 + * res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4529.patch submitted by dkdegroot (License 6600) - ........ + When recreating a subscription it is possible for a freed sub_tree + to be referenced when the initial NOTIFY fails to be created. - Merged revisions 434090 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788 - Merged revisions 434091 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-24 06:21 +0000 [6c2dab1e88] Joshua Colp + * bridge: Kick channel from bridge if hung up during action. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When executing an action in a bridge it is possible for the + channel to be hung up without the bridge becoming aware of it. + This is most easily reproducible by hanging up when the bridge + is streaming DTMF due to a feature timeout. This change makes + it so after action execution the channel is checked to determine + if it has been hung up and if it has it is kicked from the bridge. -2015-04-06 12:52 +0000 [ed3cf8761b] Diederik de Groot (License 6600) + ASTERISK-25341 #close - * clang compiler warnings: Fix format specified in framehook + Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062 - This patch fixes an invalid format specifier used in the formatting of an - ERROR message in the framehook code. The format specifier specifies a - type of 'unsigned short', but the argument passed to it is of type 'int'. - The patch changes the format specifier to 'i'. +2015-08-23 18:26 +0000 [bc6fe07f5c] Matt Jordan - Review: https://reviewboard.asterisk.org/r/4540 + * res_pjsip/pjsip_configuration: Disregard empty auth values - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4535.patch submitted by dkdegroot (License 6600) - ........ + When an endpoint is backed by a non-static conf file backend (such as + the AstDB or Realtime), the 'auth' object may be returned as being an + empty string. Currently, res_pjsip will interpret that as being a valid + auth object, and will attempt to authenticate inbound requests. This + isn't desired; is an auth value is empty (which the name of an auth + object cannot be), we should instead interpret that as being an invalid + auth object and skip it. - Merged revisions 434087 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-25339 #close - Merged revisions 434088 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ic32b0c6eb5575107d5164a8c40099e687cd722c7 +2015-08-19 12:10 +0000 [0582776f7f] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434089 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * ari/ari_websockets.c: Fix ast_debug parameter type mismatch. -2015-04-06 12:05 +0000 [0a26602b8c] Mark Michelson + This is a type mismatch fix of the debugging commit + c63316eec10e1990a88bf4712238d6deb375bfa9 made to find out why + a testsuite test was failing only on one of the continuous + integration build agents. - * Merge NAPTR support into trunk. + Change-Id: Iba34f6e87cec331f6ac80e4daff6476ea6f00a75 - This adds NAPTR record allocation and sorting, as well as - unit tests that verify that NAPTR records are parsed and - sorted correctly. +2015-08-19 10:30 +0000 [504213f542] Scott Griepentrog - Review: https://reviewboard.asterisk.org/r/4542 + * contrib: script install_prereq should install sqlite3 + Asterisk needs the sqlite 3 library, which is package + sqlite-devel in CentOS. By adding this package to the + script, a problem with configure failing is resolved. + ASTERISK-25331 #close + Reported by: Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434068 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I90efaf6a01914fea03f21e5cdbd91c348f44b0ec -2015-04-06 11:02 +0000 [edf9da4365] Mark Michelson +2015-08-18 16:06 +0000 [77518d5434] Richard Mudgett - * Ensure that a non-zero sample rate is returned for all formats. + * res_http_websocket.c: Fix some off nominal path cleanup. - Versions of Asterisk prior to 12 defaulted to 8000 as a sample rate - if one was not provided by a format. In Asterisk 13, this was removed. - The result was that some calculations which involve dividing by the - sample rate resulted in dividing by 0. The fix being put in place - here is to have the same default fallback that was present in previous - versions of Asterisk. + * Remove extraneous unlock on off-nominal path. + * Add missing HTTP error reply. - Asterisk-24914 #close - Reported by Marcello Ceschia - ........ + Change-Id: I1f402bfe448fba8696b507477cab5f060ccd9b2b - Merged revisions 434046 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-18 14:46 +0000 [c61547fee6] Richard Mudgett + * res_ari.c: Add missing off nominal unlock and remove a RAII_VAR(). - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434047 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I0c5e7b34057f26dadb39489c4dac3015c52f5dbf -2015-04-06 10:17 +0000 [ffd7319df3] Corey Farrell +2015-08-17 16:41 +0000 [bd867cd078] Richard Mudgett - * res_pjsip_phoneprov_provider: Revert 433996 / 433997. + * app_queue.c: Extract some functions for simpler code. - res_pjsip_phoneprov_provider is using ao2_callback with OBJ_MULTIPLE, then - ignoring the return. OBJ_NODATA flag was to prevent a reference leak, but - this caused the module to FRACK on unload. Revert change until this can - be investigated further. + * Extract set_queue_member_pause() from set_member_paused() for simpler + and more consistent code. - ASTERISK-24935 - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4578/ - ........ + * Extract set_queue_member_ringinuse() from + set_member_ringinuse_help_members() for simpler code. - Merged revisions 434025 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Iecc1f4119c63347341d7ea6b65f5fc4963706306 +2015-08-14 12:55 +0000 [e5f5b9f384] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434026 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * app_queue.c: Fix setting QUEUE_MEMBER 'paused' and 'ringinuse'. -2015-04-06 09:51 +0000 [53af579d4c] Mark Michelson (license #5049) + Setting the 'paused' and 'ringinuse' options on a queue member using the + dialplan function QUEUE_MEMBER did not behave the same way as the + equivalent dialplan applications or AMI actions. - * ParkedCall: Don't allow dialplan fallthrough after retrieving parked call. + * Made queue_function_mem_write() call the set_member_paused() and + set_member_value() for the 'paused' and 'ringinuse' options respectively. + A beneficial side effect is that the queue name is now optional and sets + the value in all queues the interface is a member. - This is a change to align behavior with that of Asterisk 11 and previous versions. - In those versions, if a parked call were retrieved, and the call ended, the parked - call retriever would be hung up after the ParkedCall application ran. Prior to this - patch, in Asterisk 13, the same situation would result in the parked call retriever - falling through to additional priorities in the extension where the ParkedCall - application was called. With this patch, the behavior between Asterisk 11 and 13 - aligns. + * Update QUEUE_MEMBER XML documentation. - ASTERISK-24899 #close - Reported by Malcolm Davenport - Patches: - ASTERISK-24899.patch uploaded by Mark Michelson(license #5049) - ........ + * Fix error checking in QUEUE_MEMBER() write. - Merged revisions 434022 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25215 #close + Reported by: Lorne Gaetz + Change-Id: I3a016be8dc94d63a9cc155295ff9c9afa5f707cb - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434023 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-08-17 13:34 +0000 [ded51e3d77] Richard Mudgett -2015-04-05 07:55 +0000 [e6f0410028] Corey Farrell + * app_queue.c: Fix error checking in QUEUE_MEMBER() read. - * res_pjsip_phoneprov_provider: Fix leaked OBJ_MULTIPLE iterator. + Change-Id: I7294e13d27875851c2f4ef6818adba507509d224 - res_pjsip_phoneprov_provider was using ao2_callback with OBJ_MULTIPLE, then - ignoring the return. Added OBJ_NODATA flag to prevent a reference leak. +2015-08-17 11:00 +0000 [ab373f2cef] Scott Griepentrog - ASTERISK-24935 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4578/ - ........ + * CHAOS: prevent sorcery object with null id - Merged revisions 433996 from http://svn.asterisk.org/svn/asterisk/branches/13 + When allocating a sorcery object, fail if the + id value was not allocated. + ASTERISK-25323 + Reported by: Scott Griepentrog - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433997 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I152133fb7545a4efcf7a0080ada77332d038669e -2015-04-03 16:54 +0000 [3439487a81] Mark Michelson +2015-08-14 15:46 +0000 [b719f56c72] Mark Michelson - * res_pjsip_messaging: Serialize outbound SIP MESSAGEs + * res_pjsip_sdp_rtp: Restore removed NULL check. - Outbound SIP MESSAGEs had the potential to be sent out - of order from how they were specified in a set of - dialplan steps. + When sending an RTP keepalive, we need to be sure we're not dealing with + a NULL RTP instance. There had been a NULL check, but the commit that + added the rtp_timeout and rtp_hold_timeout options removed the NULL + check. - This change creates a serializer for sending outbound - MESSAGE requests on. This ensures that the MESSAGEs are - sent by Asterisk in the same order that they were sent - from the dialplan. + Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64 - ASTERISK-24937 #close - Reported by Mark Michelson +2015-08-13 12:30 +0000 [cea5dc7b8a] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/4579 - ........ + * audiohook.c: Simplify variable usage in audiohook_read_frame_both(). - Merged revisions 433968 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I58bed58631a94295b267991c5b61a3a93c167f0c +2015-08-13 12:22 +0000 [b3a56bee83] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433969 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * audiohook.c: Fix MixMonitor crash when using the r() or t() options. -2015-04-02 09:56 +0000 [6e5efe04bd] Scott Griepentrog + The built frame format in audiohook_read_frame_both() is now set to a + signed linear format before the rx and tx frames are duplicated instead of + only for the mixed audio frame duplication. - * pjsip: resolve compatibility problem with ast_sip_session + ASTERISK-25322 #close + Reported by Sean Pimental - A change in r430179 inserted a variable near the top of a - structure caused a problem when running DPMA in a version - of Asterisk compiled across the change. This patch moves - the new variable to the end of the structure, eliminating - the problem. + Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538 - Review: https://reviewboard.asterisk.org/r/4574/ - ........ +2015-08-12 12:59 +0000 [25af2d71c8] Kevin Harwell - Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13 + * chan_sip.c: wrong peer searched in sip_report_security_event + In chan_sip, after handling an incoming invite a security event is raised + describing authorization (success, failure, etc...). However, it was doing + a lookup of the peer by extension. This is fine for register messages, but + in the case of an invite it may search and find the wrong peer, or a non + existent one (for instance, in the case of call pickup). Also, if the peers + are configured through realtime this may cause an unnecessary database lookup + when caching is enabled. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433945 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch makes it so that sip_report_security_event searches by IP address + when looking for a peer instead of by extension after an invite is processed. -2015-04-02 05:38 +0000 [154ba47766] Corey Farrell + ASTERISK-25320 #close - * Tell menuselect that MALLOC_DEBUG conflicts with DEBUG_CHAOS. + Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4 +2015-08-13 05:26 +0000 [e18c300550] Joshua Colp - DEBUG_CHAOS was marked as conflicting with MALLOC_DEBUG, but - for this to work correctly MALLOC_DEBUG must also be marked - as conflicting with DEBUG_CHAOS. + * res_http_websocket: When shutting down a session don't close closed socket - Review: https://reviewboard.asterisk.org/r/4557/ - ........ + Due to the use of ast_websocket_close in session termination it is + possible for the underlying socket to already be closed when the + session is terminated. This occurs when the close frame is attempted + to be written out but fails. - Merged revisions 433923 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b +2015-08-11 05:24 +0000 [b4e9416138] Joshua Colp + * res_http_websocket: Forcefully terminate on write errors. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433924 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The res_http_websocket module will currently attempt to close + the WebSocket connection if fatal cases occur, such as when + attempting to write out data and being unable to. When the + fatal cases occur the code attempts to write a WebSocket close + frame out to have the remote side close the connection. If + writing this fails then the connection is not terminated. -2015-04-01 11:30 +0000 [a217d2d1db] Ashley Sanders + This change forcefully terminates the connection if the + WebSocket is to be closed but is unable to send the close frame. - * stasis: set a channel variable on websocket disconnect error + ASTERISK-25312 #close - Resolve compile errors caused by r433863 by fixing the - documentation xml to comply with the schema. - ........ + Change-Id: I10973086671cc192a76424060d9ec8e688602845 - Merged revisions 433888 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-10 13:43 +0000 [256bc52b66] Richard Mudgett + * chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433891 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Pressing DTMF digits on a phone to go out on a DAHDI channel can result in + the digit not being recognized or even heard by the peer. -2015-04-01 11:27 +0000 [39824e3d01] Joshua Colp + Phone -> Asterisk -> DAHDI/channel - * dns: Add support for SRV record parsing and sorting. + Turns out the DAHDI behavior with DTMF generation (and any other generated + tones) is exposed by the "buffers=" setting in chan_dahdi.conf. When + Asterisk requests to start sending DTMF then DAHDI waits until its write + buffer is empty before generating any samples for the DTMF tones. When + Asterisk subsequently requests DAHDI to stop sending DTMF then DAHDI + immediately stops generating the DTMF samples. As a result, the more + samples there are in the DAHDI write buffer the shorter the time DTMF + actually gets sent on the wire. If there are more samples in the write + buffer than the time DTMF is supposed to be sent then no DTMF gets sent on + the wire. With the "buffers=12,half" setting and each buffer representing + 20 ms of samples then the DAHDI write buffer is going to contain around + 120 ms of samples. For DTMF to be recognized by the peer the actual sent + DTMF duration needs to be a minimum of 40 ms. Therefore, the intended + duration needs to be a minimum of 160 ms for the peer to receive the + minimum DTMF digit duration to recognize it. - This change adds support for parsing SRV records and consuming their values - in an easy fashion. It also adds automatic sorting of SRV records according - to RFC 2782. + A simple and effective solution to work around the DAHDI behavior is for + Asterisk to flush the DAHDI write buffer when sending DTMF so the full + duration of DTMF is actually sent on the wire. When someone is going to + send DTMF they are not likely to be talking before sending the tones so + the flushed write samples are expected to just contain silence. - Tests have also been included which cover parsing, sorting, and off-nominal - cases where the record is corrupted. + * Made dahdi_digit_begin() flush the DAHDI write buffer after requesting + to send a DTMF digit. - ASTERISK-24931 #close - Reported by: Joshua Colp + ASTERISK-25315 #close + Reported by John Hardin - Review: https://reviewboard.asterisk.org/r/4528/ + Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a +2015-08-05 14:21 +0000 [800e0ea48d] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433889 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_dahdi.c: Lock private struct for ast_write(). -2015-04-01 08:35 +0000 [da13d15425] Mark Michelson + There is a window of opportunity for DTMF to not go out if an audio frame + is in the process of being written to DAHDI while another thread starts + sending DTMF. The thread sending the audio frame could be past the + currently dialing check before being preempted by another thread starting + a DTMF generation request. When the thread sending the audio frame + resumes it will then cause DAHDI to stop the DTMF tone generation. The + result is no DTMF goes out. - * stasis: set a channel variable on websocket disconnect error + * Made dahdi_write() lock the private struct before writing to the DAHDI + file descriptor. - Resolve compile errors caused by r433839 by included the missing - header file, pbx.h. - ........ + ASTERISK-25315 + Reported by John Hardin - Merged revisions 433863 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb +2015-08-10 18:23 +0000 [c126afe18f] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message. -2015-03-31 17:49 +0000 [06578ef407] Ashley Sanders + If the saved SUBSCRIBE message is not parseable for whatever reason then + Asterisk could crash when libpjsip tries to parse the message and adds an + error message to the parse error list. - * stasis: set a channel variable on websocket disconnect error + * Made ast_sip_create_rdata() initialize the parse error rdata list. The + list is checked after parsing to see that it remains empty for the + function to return successful. - When an error occurs while writing to a web socket, the web socket is - disconnected and the event is logged. A side-effect of this, however, is that - any application on the other side waiting for a response from Stasis is left - hanging indefinitely (as there is no mechanism presently available for - notifying interested parties about web socket error states in Stasis). + ASTERISK-25306 + Reported by Mark Michelson - To remedy this scenario, this patch introduces a new channel variable: - STASISSTATUS. + Change-Id: Ie0677f69f707503b1a37df18723bd59418085256 - The possible values for STASISSTATUS are: - SUCCESS - The channel has exited Stasis without any failures - FAILED - Something caused Stasis to croak. Some (not all) possible - reasons for this: - - The app registry is not instantiated; - - The app requested is not registered; - - The app requested is not active; - - Stasis couldn't send a start message +2015-08-10 07:40 +0000 [f68c995bc9] Alexander Traud - ASTERISK-24802 - Reported By: Kevin Harwell - Review: https://reviewboard.asterisk.org/r/4519/ - ........ + * chan_sip: Fix negotiation of iLBC 30. - Merged revisions 433839 from http://svn.asterisk.org/svn/asterisk/branches/13 + iLBC 20 was advertised in a SIP/SDP negotiation. However, only iLBC 30 is + supported. Removes "a=fmtp:x mode=y" from SDP. Because of RFC 3952 section 5, + only iLBC 30 is negotiated now. + ASTERISK-25309 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433845 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I92d724600a183eec3114da0ac607b994b1a793da -2015-03-31 12:04 +0000 [2d28fa678e] Richard Mudgett +2015-08-09 18:42 +0000 [8e194047ac] Matt Jordan - * chan_sip: Fix expression in unit test /channels/chan_sip/test_sip_rtpqos. + * res/res_format_attr_silk: Expose format attributes to other modules - Fix misplaced parentheses in original fabs() expression. - ........ + This patch adds the .get callback to the format attribute module, such + that the Asterisk core or other third party modules can query for the + negotiated format attributes. - Merged revisions 433816 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Ia24f55cf9b661d651ce89b4f4b023d921380f19c - Merged revisions 433817 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-09 17:56 +0000 [a0f451c35e] Matt Jordan + * main/format: Add an API call for retrieving format attributes - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433818 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Some codecs that may be a third party library to Asterisk need to have + knowledge of the format attributes that were negotiated. Unfortunately, + when the great format migration of Asterisk 13 occurred, that ability + was lost. -2015-03-31 06:55 +0000 [076fc12afb] Corey Farrell + This patch adds an API call, ast_format_attribute_get, to the core + format API, along with updates to the unit test to check the new API + call. A new callback is also now available for format attribute modules, + such that they can provide the format attribute values they manage. - * Blocked revisions 433795 + Note that the API returns a void *. This is done as the format attribute + modules themselves may store format attributes in any particular manner + they like. Care should be taken by consumers of the API to check the + return value before casting and dereferencing. Consumers will obviously + need to have a priori knowledge of the type of the format attribute as + well. - ........ - Re-add _ast_mem_backtrace_buffer variable for ABI compatibility. + Change-Id: Ieec76883dfb46ecd7aff3dc81a52c81f4dc1b9e3 - Modules built prior to commit of r4502 expect to link at runtime - to the variable _ast_mem_backtrace_buffer. This change re-adds - the variable to the C file only. +2015-08-07 22:11 +0000 [26f0559a94] David M. Lee - Review: https://reviewboard.asterisk.org/r/4558/ + * Replace htobe64 with htonll + We don't have a compatability function to fill in a missing htobe64; but + we already have one for the identical htonll. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433796 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ic0a95db1c5b0041e14e6b127432fb533b97e4cac -2015-03-30 06:43 +0000 [8d12288d8a] Corey Farrell +2015-08-07 14:20 +0000 [df9ce36366] Scott Emidy - * Fix an ABI compatibility issue with ast_log_safe for modules. + * ARI: Retrieve existing log channels - Binary modules are sometimes built against the latest release of - Asterisk in each branch, and need to be compatible with all - releases of that branch. This change ensures that utils.h only - uses ast_log_safe from the core. For modules and utilities ast_log - is used instead. + An http request can be sent to get the existing Asterisk logs. - Review: https://reviewboard.asterisk.org/r/4548/ - ........ + The command "curl -v -u user:pass -X GET 'http://localhost:8088 + /ari/asterisk/logging'" can be run in the terminal to access the + newly implemented functionality. - Merged revisions 433772 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Retrieve all existing log channels - Merged revisions 433773 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25252 + Change-Id: I7bb08b93e3b938c991f3f56cc5d188654768a808 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433774 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-08-07 11:14 +0000 [e9f1bc08cb] Scott Emidy -2015-03-29 21:45 +0000 [7bc2345fb1] Diederik de Groot (License 6600) + * ARI: Creating log channels - * clang compiler warnings: Fix -Wabsolute-value warnings + An http request can be sent to create a log channel + in Asterisk. - This patch fixes several warnings caught by clang - in this case, usage of the - abs function on non-integer values. This patch uses labs and fabs, as - appropriate, in the various affected files. + The command "curl -v -u user:pass -X POST + 'http://localhost:088/ari/asterisk/logging/mylog? + configuration=notice,warning'" can be run in the terminal + to access the newly implemented functionality for ARI. - Review: https://reviewboard.asterisk.org/r/4525 + * Ability to create log channels using ARI - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4525.patch submitted by dkdegroot (License 6600) - ........ + ASTERISK-25252 - Merged revisions 433749 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I9a20e5c75716dfbb6b62fd3474faf55be20bd782 - Merged revisions 433750 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-06 15:18 +0000 [78364132ce] Scott Emidy + * ARI: Deleting log channels - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433751 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + An http request can be sent to delete a log channel + in Asterisk. -2015-03-29 21:39 +0000 [ce59fabd5c] Diederik de Groot (License 6600) + The command "curl -v -u user:pass -X DELETE 'http://localhost:8088 + /ari/asterisk/logging/mylog'" can be run in the terminal + to access the newly implemented functionally for ARI. - * clang compiler warnings: Fix invalid enum conversion + * Able to delete log channels using ARI - This patch fixes some invalid enum conversion warnings caught by clang. In - particular: - * chan_sip: Several functions mixed usage of the st_refresher_param - enum and st_refresher enum. This patch corrects the functions to use the - right enum. - * chan_pjsip: Fixed mixed usage of ast_sip_session_t38state and ast_t38_state. - * strings: Fixed incorrect usage of AO2 flags with strings container. - * res_stasis: Change a return enumeration to stasis_app_user_event_res. + ASTERISK-25252 - Review: https://reviewboard.asterisk.org/r/4535 + Change-Id: Id6eeb54ebcc511595f0418d586ff55914bc3aae6 - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4535.patch submitted by dkdegroot (License 6600) - ........ +2015-08-06 12:48 +0000 [e25569ef95] Mark Michelson - Merged revisions 433746 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip_pubsub: More accurately persist packet. - Merged revisions 433747 from http://svn.asterisk.org/svn/asterisk/branches/13 + The pjsip_rx_data structure has a pkt_info.packet field on it that is + the packet that was read from the transport. For datagram transports, + the packet read from the transport will correspond to the SIP message + that arrived. For streamed transports, however, it is possible to read + multiple SIP messages in one packet. + + In a recent case, Asterisk crashed on a system where TCP was being used. + This is because at some point, a read from the TCP socket resulted in a + 200 OK response as well as an incoming SUBSCRIBE request being stored in + rdata->pkt_info.packet. When the SUBSCRIBE was processed, the + combination 200 OK and SUBSCRIBE was saved in persistent storage. Later, + a restart of Asterisk resulted in the crash because the persistent + subscription recreation code ended up building the 200 OK response + instead of a SUBSCRIBE request, and we attempted to access + request-specific data. + The fix here is to use the pjsip_msg_print() function in order to + persist SUBSCRIBE requests. This way, rather than using the raw socket + data, we use the parsed SIP message that PJSIP has given us. If we + receive multiple SIP messages from a single read, we will be sure only + to save off the relevant SIP message. There also is a safeguard put in + place to make sure that if we do end up reconstructing a SIP response, + it will not cause a crash. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433748 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25306 #close + Reported by Mark Michelson -2015-03-29 21:29 +0000 [61577cbee6] Matt Jordan + Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2 - * main/stdtime/localtime: Fix warning introduced in r433720 +2015-08-04 16:12 +0000 [8521a86367] Joshua Colp - The patch in r433720 caused a warning to be kicked back by gcc. It occurred - due to this check in unistd.h: + * res_pjsip: Ensure sanitized XML is NULL terminated. - if (__nbytes > __bos0 (__buf)) - return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf)); + The ast_sip_sanitize_xml function is used to sanitize + a string for placement into XML. This is done by examining + an input string and then appending values to an output + buffer. The function used by its implementation, strncat, + has specific behavior that was not taken into account. + If the size of the input string exceeded the available + output buffer size it was possible for the sanitization + function to write past the output buffer itself causing + a crash. The crash would either occur because it was + writing into memory it shouldn't be or because the resulting + string was not NULL terminated. - That is, if __nbytes is greater than the result of GCC's built-in object size - for the struct, we'll kick back a warning. + This change keeps count of how much remaining space is + available in the output buffer for text and only allows + strncat to use that amount. - As it turns out, this is because there is an error in the code in the patch. - We are passing the address of the pointer to the struct, not iev, which is a - pointer to the struct. Hence, the number of bytes is probably going to be lot - larger than the number of bytes that make up a pointer! This patch changes - the code just read from the pointer to the struct - which fixes the warning. + Since this was exposed by the res_pjsip_pidf_digium_body_supplement + module attempting to send a large message the maximum allowed + message size has also been increased in it. - ASTERISK-24917 - ........ + A unit test has also been added which confirms that the + ast_sip_sanitize_xml function is providing NULL terminated + output even when the input length exceeds the output + buffer size. - Merged revisions 433743 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-25304 #close - Merged revisions 433744 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302 +2015-08-05 05:23 +0000 [9a12804e59] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433745 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_rtp_asterisk: Don't leak temporary key when enabling PFS. -2015-03-29 20:57 +0000 [072734692e] Diederik de Groot (License 6600) + A change recently went in which enabled perfect forward secrecy for + DTLS in res_rtp_asterisk. This was accomplished two different ways + depending on the availability of a feature in OpenSSL. The fallback + method created a temporary instance of a key but did not free it. + This change fixes that. - * clang compiler warnings: Ignore -Wunused-command-line-argument + ASTERISK-25265 - Asterisk's build system has a tendency to pass include directives for libraries - to everything compiled within a particular group of source files. This means - we pass the header for libxml2 to things that don't necessarily need it. As a - result, we ignore this particular warning. + Change-Id: Iadc031b67a91410bbefb17ffb4218d615d051396 +2015-08-04 09:47 +0000 [27dc2094e9] Mark Michelson - Review: https://reviewboard.asterisk.org/r/4545/ + * res_http_websocket: Debug write lengths. - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4545.patch submitted by dkdegroot (License 6600) - ........ + Commit 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee attempted to fix a + test failure observed on 32 bit test agents by ensuring that a cast from + a 32 bit unsigned integer to a 64 bit unsigned integer was happening in + a predictable place. As it turns out, this did not cause test runs to + succeed. - Merged revisions 433720 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This commit adds several redundant debug messages that print the payload + lengths of websocket frames. The idea here is that this commit will not + cause tests to succeed for the faulty test agent, but we might deduce + where the fault lies more easily this way by observing at what point the + expected value (537) changes to some ungangly huge number. - Merged revisions 433721 from http://svn.asterisk.org/svn/asterisk/branches/13 + If you are wondering why something like this is being committed to the + branch, keep in mind that in commit + 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee I noted that the observed test + failures only happen when automated tests are run. Attempts to run the + tests by hand manually on the test agent result in the tests passing. + + Change-Id: I14a65c19d8af40dadcdbd52348de3b0016e1ae8d +2015-08-03 11:06 +0000 [39cc28f6ea] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433722 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_http_websocket: Avoid passing strlen() to ast_websocket_write(). -2015-03-29 20:53 +0000 [1cf949c489] Diederik de Groot (License 6600) + We have seen a rash of test failures on a 32-bit build agent. Commit + 48698a5e21d7307f61b5fb2bd39fd593bc1423ca solved an obvious problem where + we were not encoding a 64-bit value correctly over the wire. This + commit, however, did not solve the test failures. - * clang compiler warnings: Fix warning for -Wgnu-variable-sized-type-not-at-end + In the failing tests, ARI is attempting to send a 537 byte text frame + over a websocket. When sending a frame this small, 16 bits are all that + is required in order to encode the payload length on the websocket + frame. However, ast_websocket_write() thinks that the payload length is + greater than 65535 and therefore writes out a 64 bit payload length. + Inspecting this payload length, the lower 32 bits are exactly what we + would expect it to be, 537 in hex. The upper 32 bits, are junk values + that are not expected to be there. - This patch fixes a warning caught by clang, wherein a variable sized struct is - not located at the end of a struct. While the code in question actually - expected this, this is a good warning to watch for. Hence, this patch refactors - the code in question to not have two variable length elements in the same - struct. + In the failure, we are passing the result of strlen() to a function that + expects a uint64_t parameter to be passed in. strlen() returns a size_t, + which on this 32-bit machine is 32 bits wide. Normally, passing a 32-bit + unsigned value to somewhere where a 64-bit unsigned value is expected + would cause no problems. In fact, in manual runs of failing tests, this + works just fine. However, ast_websocket_write() uses the Asterisk + optional API, which means that rather than a simple function call, there + are a series of macros that are used for its declaration and + implementation. These macros may be causing some sort of error to occur + when converting from a 32 bit quantity to a 64 bit quantity. - Review: https://reviewboard.asterisk.org/r/4530/ + This commit changes the logic by making existing ast_websocket_write() + calls use ast_websocket_write_string() instead. Within + ast_websocket_write_string(), the 64-bit converted strlen is saved in a + local variable, and that variable is passed to ast_websocket_write() + instead. - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4530.patch submitted by dkdegroot (License 6600) - ........ + Note that this commit message is full of speculation rather than + certainty. This is because the observed test failures, while always + present in automated test runs, never occur when tests are manually + attempted on the same test agent. The idea behind this commit is to fix + a theoretical issue by performing changes that should, at the least, + cause no harm. If it turns out that this change does not fix the failing + tests, then this commit should be reverted. - Merged revisions 433717 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I4458dd87d785ca322b89c152b223a540a3d23e67 - Merged revisions 433718 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-28 05:33 +0000 [aed068844c] Mark Duncan + * res/res_rtp_asterisk: Add ECDH support - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433719 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This will add ECDH support to Asterisk. It will + detect auto ECDH support in OpenSSL + (1.0.2b and above) during ./configure. If this is + available, it will use it, + otherwise it will fall back to prime256v1 (this + behavior is consistent with + other projects such as Apache and nginx). -2015-03-28 07:56 +0000 [d2776d4d45] Diederik de Groot (License 6600) + This fixes WebRTC being broken in Firefox 38+ due + to Firefox now only supporting + ciphers with perfect forward secrecy. - * clang compiler warnings: Fix a variety of "unused" warnings + ASTERISK-25265 #close - This patch fixes the -Wunused-value -Wunused-variable -Wunused-const-variable - errors caught by clang. Specifically: + Change-Id: I8c13b33a2a79c0bde2e69e4ba6afa5ab9351465b - * apps/app_queue.c: removed unused qpm_cmd_usage[], qum_cmd_usage[], - qsmp_cmd_usage[] - * cel/cel_sqlite3_custom.c: removed unused name[] = "cel_sqlite3_custom" - * channels/chan_pjsip.c: removed unused desc[] = "PJSIP Channel" - * codecs/gsm/src/gsm_create.c: removed unused ident[] = "$Header$" - * funcs/func_env.c:729: Fixed ast_str_append_substr. - * main/editline/np/strlcat.c: removed unused rcsid variable - * main/editline/np/strlcpy.c: removed unused rcsid variable - * main/security_events.c: removed unused TIMESTAMP_STR_LEN - * utils/conf2ael.c: removed unused cfextension_states - * utils/extconf.c: removed unused cfextension_states +2015-07-29 14:17 +0000 [1ae762634c] Benjamin Ford - Review: https://reviewboard.asterisk.org/r/4526 + * ARI: Rotate log channels. - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4526.patch submitted by dkdegroot (License 6600) - ........ + An http request can be sent to rotate a specified log channel. + If the channel does not exist, an error response will be + returned. - Merged revisions 433693 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + The command "curl -v -u user:pass -X PUT 'http://localhost:8088 + /ari/asterisk/logging/logChannelName/rotate'" can be run in the + terminal to access this new functionality. - Merged revisions 433694 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Added the ability to rotate log files through ARI + ASTERISK-25252 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433695 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Iaefa21cbbc1b29effb33004ee3d89c977e76ab01 -2015-03-28 07:48 +0000 [cb7b6bc4be] Diederik de Groot (License 6600) +2015-07-29 13:49 +0000 [aeeb170fc4] Richard Mudgett - * clang compiler warnings: Fix -Wself-assign + * rtp_engine.c: Fix performance issue with several channel drivers that use RTP. - Assigning a variable to itself isn't super useful. However, the WAV format - modules make use of this in order to perform byte endian checks. This patch - works around the warning by only performing the self assignment if we are - going to do more than just assign it to ourselves. Which is odd, but true. + ast_rtp_codecs_get_payload() gets called once or twice for every received + RTP frame so it would be nice to not allocate an ao2 object to then have + it destroyed shortly thereafter. The ao2 object gets allocated only if + the payload type is not set by the channel driver as a negotiated value. + The issue affects chan_skinny, chan_unistim, chan_rtp, and chan_ooh323. - Review: https://reviewboard.asterisk.org/r/4544/ + * Made static_RTP_PT[] an array of ao2 objects that + ast_rtp_codecs_get_payload() can return instead of an array of structs + that must be copied into a created ao2 object. - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4544.patch submitted by dkdegroot (License 6600) - ........ + ASTERISK-25296 #close + Reported by: Richard Mudgett - Merged revisions 433690 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Icb6de5cd90bfae07d44403a1352963db9109dac0 - Merged revisions 433691 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-29 17:00 +0000 [84262749d2] Richard Mudgett + * res_rtp_asterisk.c: Fix off-nominal crash potential. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433692 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25296 + Reported by: Richard Mudgett -2015-03-28 07:41 +0000 [e9520dbe0d] Diederik de Groot (License 6600) + Change-Id: I08549fb7c3ab40a559f41a3940f3732a4059b55b - * clang compiler warnings: Fix -Wparantheses-equality warnings +2015-07-29 13:48 +0000 [1519eb44a7] Richard Mudgett - Clang will treat ((a == b)) as a warning, as it reasonably expects that the - developer may have intended to write (a == b) or ((a = b)). This patch cleans - up all instances where equality, not assignment, was intended between two - parantheses. + * rtp_engine.c: Must protect mime_types_len with mime_types_lock. - Review: https://reviewboard.asterisk.org/r/4531/ + Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e - ASTERISK-24917 - Repoted by: dkdegroot - patches: - rb4531.patch submitted by dkdegroot (License 6600) - ........ +2015-07-24 18:42 +0000 [a93b7a927c] Richard Mudgett - Merged revisions 433687 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip_sdp_rtp.c: Fix processing wrong SDP media list. - Merged revisions 433688 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I7c076826c2d3c6ae8c923ca73b7a71980cca11f2 +2015-07-24 18:38 +0000 [741fa0d26d] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433689 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_sdp_rtp.c: Fixup some whitespace. -2015-03-28 07:33 +0000 [fd50e5bfb5] Diederik de Groot (License 6600) + Change-Id: Ib4eb7ef7dcaf93ddc26538f0a498aaf110d7a973 - * clang compiler warnings: Fix -Wbitfield-constant-conversion warning +2015-07-27 19:10 +0000 [89b21fd9a3] Richard Mudgett - In chan_iax2, we attempt to assign a -1 to a bitfield. This gets caught by - clang, as it will truncate the -1 to a 1 implicitly. + * rtp_engine.h: No sense allowing payload types larger than RFC allows. - Instead, we just assign the value a '1'. + * Tweaked add_static_payload() to not use magic numbers. - Review: https://reviewboard.asterisk.org/r/4537/ + Change-Id: I1719ff0f6d3ce537a91572501eae5bcd912a420b - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4537.patch submitted by dkdegroot (License 6600) - ........ +2015-07-23 14:04 +0000 [7427c7f13b] Richard Mudgett - Merged revisions 433683 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * rtp_engine.c: Minor tweaks. - Merged revisions 433684 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Fix off nominial ref leak of new_type in + ast_rtp_codecs_payloads_set_m_type(). + * No need to lock static_RTP_PT_lock in + ast_rtp_codecs_payloads_set_m_type() and + ast_rtp_codecs_payloads_set_rtpmap_type_rate() before the payload type + parameter sanity check. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433686 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * No need to create ast_rtp_payload_type ao2 objects with a lock since the + lock is not used. -2015-03-28 07:32 +0000 [c747b3b12a] Diederik de Groot (License 6600) + Change-Id: I64dd1bb4dfabdc7e981e3f61448beac9bb7504d4 - * clang compiler warnings: Fix -Winitializer-overrides +2015-07-23 12:41 +0000 [e20f435b60] Richard Mudgett - This patch fixes clange compiler warnings for initializer overrides. - Specifically: + * rtp_engine.h: Misc comment fixes. - res_pjsip/config_transport maps PJSIP_TLSV1_METHOD to the same enumeration - value as PJSIP_SSL_DEFAULT_METHOD. When initializing an array containing - those enum values, we therefore initialize the value twice to two different - values, "tlsv1" and "default". This patch changes it to just initialize - the index in the array to "tlsv1". + Change-Id: If98139264d5d97427b4685ecbdc54518f725bc43 - Review: https://reviewboard.asterisk.org/r/4539/ +2015-07-17 16:23 +0000 [bc5d7f9c37] Richard Mudgett - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4539.patch submitted by dkdegroot (License 6600) - ........ + * chan_sip.c: Tweak glue->update_peer() parameter nil value. - Merged revisions 433682 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change glue->update_peer() parameter from 0 to NULL to better indicate it + is a pointer. + Change-Id: I8ff2e5087f0e19f6998e3488a712a2470cc823bd - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433685 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-30 17:05 +0000 [13eb491e35] Richard Mudgett -2015-03-28 07:20 +0000 [d6173cd1d0] Diederik de Groot (License 6600) + * res_pjsip_session.c: Fix crashes seen when call cancelled. - * clang compiler warnings: Fix -Wunused-function; make inline function static + Two testsuite tests crashed in the same place as a result of an INVITE + being CANCELed. - This patch fixes clang compilers warnings for unused functions. Specifically: - * channels/chan_iax2: removed user_ref function - * main/dsp.c: removed goertzel_update function - * main/config.c: made variable_list_switch static + tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_unspecified + tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_tcp - Review: https://reviewboard.asterisk.org/r/4527 + The session pointer is no longer in the inv->mod_data[session_module.id] + location because the INVITE transaction has reached the terminated state. - ASTERISK-24917 - Reported by: dkdegroot - patches: - rb4527.patch submitted by dkdegroot (License 6600) - ........ + ASTERISK-25297 #close + Reported by: Richard Mudgett - Merged revisions 433678 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Idb75fdca0321f5447d5dac737a632a5f03614427 - Merged revisions 433680 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-29 14:35 +0000 [48698a5e21] Mark Michelson + * res_http_websocket: Properly encode 64 bit payload - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433681 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + A test agent was continuously failing all ARI tests when run against + Asterisk 13. As it turns out, the reason for this is that on those test + runs, for some reason we decided to use the super extended 64 bit + payload length for websocket text frames instead of the extended 16 bit + payload length. For 64-bit payloads, the expected byte order over the + network is -2015-03-27 17:26 +0000 [b56592e3ae] Jonathan Rose + 7, 6, 5, 4, 3, 2, 1, 0 - * SAC: Add conferencing extensions and configuration + However, we were sending the payload as - Review: https://reviewboard.asterisk.org/r/4504/ - ........ + 3, 2, 1, 0, 7, 6, 5, 4 - Merged revisions 433656 from http://svn.asterisk.org/svn/asterisk/branches/13 + This meant that we were saying to expect an absolutely MASSIVE payload + to arrive. Since we did not follow through on this expected payload + size, the client would sit patiently waiting for the rest of the payload + to arrive until the test would time out. + With this change, we use the htobe64() function instead of htonl() so + that a 64-bit byte-swap is performed instead of a 32 bit byte-swap. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433657 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ibcd8552392845fbcdd017a8c8c1043b7fe35964a -2015-03-27 16:21 +0000 [c21e2e45a8] Rusty Newton +2015-07-29 12:23 +0000 [10ba72a927] Mark Michelson - * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 2 + * Add a test event for inband ringing. - Example configuration files for a "basic PBX" deployment for the fictitious - Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4488/ - and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company + This event is necessary for the bridge_wait_e_options test to be able to + confirm that ringing is being played on the local channel that runs the + BridgeWait() application with the e(r) option. - Patch 4488 includes all functionality needed for SAC's outside connectivity - and some externally accessed features, as well as outbound dialing. + ASTERISK-25292 #close + Reported by Kevin Harwell - Reported by: Malcolm Davenport - Tested by: Rusty Newton + Change-Id: Ifd3d3d2bebc73344d4b5310d0d55c7675359d72e - Review: https://reviewboard.asterisk.org/r/4488/ - ........ +2015-07-16 12:16 +0000 [8458b8d441] Jonathan Rose - Merged revisions 433624 from http://svn.asterisk.org/svn/asterisk/branches/13 + * holding_bridge: ensure moh participants get frames + Currently, if a blank musiconhold.conf is used, musiconhold will fail + to start for a channel going into a holding bridge with an anticipation + of getting music on hold. That being the case, no frames will be written + to the channel and that can pose a problem for blind transfers in PJSIP + which may rely on frames being written to get past the REFER framehook. + This patch makes holding bridges start a silence generator if starting + music on hold fails and makes it so that if no music on hold functions + are installed that the ast_moh_start function will report a failure so + that consumers of that function will be able to respond appropriately. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433637 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25271 #close -2015-03-27 16:06 +0000 [2659e48d9d] Richard Mudgett + Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99 - * res_pjsip_registrar_expire.c: Made use ao2 container template routines and eliminated some RAII_VAR() usage. +2015-07-24 12:56 +0000 [f78a4b52b8] Matt Jordan - * Converted the contact_autoexpire container to use the ao2 template hash - and cmp functions. Also made use the OBJ_SEARCH_xxx names instead of the - deprecated names. + * Bump the ARI version to 1.8.0 - * Eliminates several unnecessary uses of RAII_VAR(). + Due to backwards compatible changes, the ARI version should be bumped to + 1.8.0 prior to the release of 13.5.0. Note that a previous patch already + bumped the version of AMI for this release. - Review: https://reviewboard.asterisk.org/r/4524/ - ........ + Change-Id: I419033bfbbc0d3533a29ccb32b2981f39e0883e7 - Merged revisions 433622 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-18 11:16 +0000 [2749721791] Joshua Colp + * pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change adds support for the 'rtp_timeout' and 'rtp_timeout_hold' + endpoint options. These allow the channel to be hung up if RTP + is not received from the remote endpoint for a specified number of + seconds. -2015-03-27 15:46 +0000 [0b62e41654] Mark Michelson + ASTERISK-25259 #close - * Add stateful PJSIP response API call, and use it for out-of-dialog responses. + Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9 - Asterisk had an issue where retransmissions of MESSAGE requests resulted in - Asterisk processing the retransmission as if it were a new MESSAGE request. +2015-07-24 09:46 +0000 [b4e19e414a] Mark Michelson - This patch fixes the issue by creating a transaction in PJSIP on the incoming - request. This way, if a retransmission arrives, the PJSIP transaction layer - will resend the response and Asterisk will not ever see the retransmission. + * res_pjsip: Add rtp_keepalive to sample config file. - ASTERISK-24920 #close - Reported by Mark Michelson + Change-Id: I5f62d0c5684f8b2335f9f8ac2d79ee04fbdafb19 - Review: https://reviewboard.asterisk.org/r/4532/ - ........ +2015-07-23 13:11 +0000 [f635520527] Mark Michelson - Merged revisions 433619 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Local channels: Alternate solution to ringback problem. + Commit 54b25c80c8387aea9eb20f9f4f077486cbdf3e5d solved an issue where a + specific scenario involving local channels and a native local RTP bridge + could result in ringback still being heard on a calling channel even + after the call is bridged. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433620 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + That commit caused many tests in the testsuite to fail with alarming + consequences, such as not sending DialBegin and DialEnd events, and + giving incorrect hangup causes during calls. -2015-03-27 15:23 +0000 [a18da4eaf2] Richard Mudgett + This commit reverts the previous commit and implements and alternate + solution. This new solution involves only passing AST_CONTROL_RINGING + frames across local channels if the local channel is in AST_STATE_RING. + Otherwise, the frame does not traverse the local channels. By doing + this, we can ensure that a playtones generator does not get started on + the calling channel but rather is started on the local channel on which + the ringing frame was initially indicated. - * res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown. + ASTERISK-25250 #close + Reported by Etienne Lessard - Contact expiration object refs were leaked when the module was unloaded. + Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39 - * Made empty the scheduler of entries before destroying it to release the - object ref held by the scheduler entry. +2015-07-22 12:24 +0000 [f509730cb9] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4523/ - ........ + * audiohook: Use manipulated frame instead of dropping it. - Merged revisions 433596 from http://svn.asterisk.org/svn/asterisk/branches/13 + Previous changes to sample rate support in audiohooks accidentally + removed code responsible for allowing the manipulate audiohooks + to work. Without this code the manipulated frame would be dropped + and not used. This change restores it. + ASTERISK-25253 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433617 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I3ff50664cd82faac8941f976fcdcb3918a50fe13 -2015-03-27 12:58 +0000 [cb1c639817] Richard Mudgett +2015-07-22 09:46 +0000 [54b25c80c8] Mark Michelson - * Add missing file. ASTERISK-24781 + * Local channels: Do not block control -1 payloads. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433597 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Control frames with a -1 payload are used as a special signal to stop + playtones generators on channels. This indication is sent both by + app_dial as well as by ast_answer() when a call is answered in case any + tones were being generated on a calling channel. -2015-03-27 09:41 +0000 [a024af1156] Justin T. Gibbs (License 6692) + This control frame type was made to stop traversing local channel pairs + as an optimization, because it was thought that it was unnecessary to + send these indications, and allowing such unnecessary control frames to + traverse the local channels would cause the local channels to optimize + away less quickly. - * res/res_timing_kqueue: Update the module to conform to current timer API + As it turns out, through some special magic dialplan code, it is + possible to have a tones being played on a non-local channel, and it is + important for the local channel to convey that the tones should be + stopped. The result of having tones continue to be played on the + non-local channel is that the tones play even once the channel has been + bridged. By not blocking the -1 control frame type, we can ensure that + this situation does not happen. - This patch updates the kqueue timing module to conform to current timer API. + ASTERISK-25250 #close + Reported by Etienne Lessard - This fixes issues with using the kqueue timing source on Asterisk 13 on - FreeBSD 10. These issues include: + Change-Id: I0bcaac3d70b619afdbd0ca8a8dd708f33fd2f815 - - Remove support for kevent64(). The values used to support Asterisk timers - fit within 32bits and so can be handled on all platforms via kevent(). +2015-07-22 05:16 +0000 [f1493f900e] Joshua Colp - - Provide debug logging for, but do not track, unacked events. This matches - the behavior of all other timer implementations. + * audiohook: Read the correct number of samples based on audiohook format. - - Implement continuous mode by triggering and leaving active, a user event. - This ensures that the file descriptor for the timer returns immediately from - poll(), without placing the load of a high speed timer on the kernel. + Due to changes in audiohooks to support different sample rates the + underlying storage of samples is in the format of the audiohook + itself and not of the format being requested. This means that if a + channel is using G722 the samples stored will be at 16kHz. If + something subsequently reads from the audiohook at a format which + is not the same sample rate as the audiohook the number of samples + needs to be adjusted. - - In kqueue_timer_get_max_rate(), don't overstate the capability of the timer. - On some platforms, UINT_MAX is greater than INTPTR_MAX, the largest integer - type kqueue supports for timers. + Given the following example: + 1. Channel writing into audiohook at 16kHz (as it is using G722). + 2. Chanspy reading from audiohook at 8kHz. - - In kqueue_timer_get_event(), assume the caller woke up from poll() and just - return the mode the timer is currently in. This matches all other timer - implementations. + The original code would read 160 samples from the audiohook for + each 20ms of audio. This is incorrect. Since the audio in the + audiohook is at 16kHz the actual number needing to be read is 320. + Failure to read this much would cause the audiohook to reset + itself constantly as the buffer became full. - - Adjust the test code now that unacked events are not tracked. + This change adjusts the requested number of samples by determining + the duration of audio requested and then calculating how many + samples that would be in the audiohook format. - Review: https://reviewboard.asterisk.org/r/4465/ + ASTERISK-25247 #close - ASTERISK-24857 #close - Reported by: scsiguy - Tested by: Ed Hynan - patches: - rb4465.patch submitted by scsiguy (License 6692) - ........ + Change-Id: Ia91ce516121882387a315fd8ee116b118b90653d - Merged revisions 433574 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-20 12:39 +0000 [62c64c3bd1] Rusty Newton + * Documentation: A couple of trivial fixes in sip.conf.sample and func_cdr.c - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433575 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * In sip.conf.sample fix sentence where we said that WS or WSS are supported + transports for use in an outbound register definition. They are not + supported in that case. + * In func_cdr.c made it clear that the Disable option for CDR_PROP can be used + to enable CDR on a channel. -2015-03-27 07:27 +0000 [10458d2878] Corey Farrell + ASTERISK-24867 #close + Reported by: Rusty Newton - * Fix link error for utils/aelparse. + ASTERISK-24853 #close + Reported by: PSDK - Use the standard ast_log instead of ast_log_safe for STANDALONE programs. + Change-Id: I3d698bc6302b9d00a0a995b5c4ad9a42d69b48ca - Review: https://reviewboard.asterisk.org/r/4538/ - ........ +2015-07-09 14:17 +0000 [d9094ddd73] Mark Michelson - Merged revisions 433549 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip: Add rtp_keepalive endpoint option. - Merged revisions 433550 from http://svn.asterisk.org/svn/asterisk/branches/13 + This adds an "rtp_keepalive" option for PJSIP endpoints. Similar to the + chan_sip option, this specifies an interval, in seconds, at which we + will send RTP comfort noise frames. This can be useful for keeping RTP + sessions alive as well as keeping NAT associations alive during lulls. + ASTERISK-25242 #close + Reported by Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433551 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I06660ba672c0a343814af4cec838e6025cafd54b -2015-03-27 02:12 +0000 [28e3bd0af7] Corey Farrell +2015-07-16 09:13 +0000 [a23adcca3d] Michael Cargile - * Improved and portable ast_log recursion avoidance + * res/res_musiconhold: Add a warning when MOH does not exist - This introduces a new logger routine ast_log_safe. This routine should be - used for all error messages in code that can be run as a result of ast_log. - ast_log_safe does nothing if run recursively. All error logging in - astobj2.c, strings.c and utils.h have been switched to ast_log_safe. + Change-Id: Ifdfbd0b97cf31478d29923ec30aabce28d01740b - This required adding support for raw threadstorage. This provides direct - access to the void* pointer in threadstorage. In ast_log_safe, NULL is used - to signify that this thread is not already running ast_log_safe, (void*)1 when - it is already running. This was done since it's critical that ast_log_safe - do nothing that could log during recursion checking. +2015-07-19 09:11 +0000 [03064daeb2] Matt Jordan - ASTERISK-24155 #close - Reported by: Timo Teräs - Review: https://reviewboard.asterisk.org/r/4502/ - ........ + * res/res_sorcery_config: Prevent crash from misconfigured sorcery.conf - Merged revisions 433522 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Misconfiguring sorcery.conf with a 'config' wizard with no extra data + will currently crash Asterisk on startup, as the wizard requires a comma + delineated list to parse. This patch updates res_sorcery_config to check + for the presence of the data before it starts manipulating it. - Merged revisions 433523 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I4c97512e8258bc82abe190627a9206c28f5d3847 +2015-07-16 09:46 +0000 [2c626ceb64] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433524 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_pjsip: Don't change formats when frame of unsupported format is received. -2015-03-26 18:09 +0000 [554eb74516] Corey Farrell + Receipt of an RTP packet currently causes the formats on an PJSIP channel to + change to the format of the RTP packet. In some off-nominal cases it's possible + for this to be a format that has not been configured or negotiated. This change + makes it so only formats explicitly configured on the endpoint are allowed. - * Fix compile errors caused by r4500 / r4501. + ASTERISK-25258 #close - * Add ast_register_cleanup to utils/clicompat.c to deal with - any utils that copy sources from main. - * Asterisk 13+: remove unused variables from core_local.c. + Change-Id: If93d641fb6418a285928839300d7854cab8c1020 - Review: https://reviewboard.asterisk.org/r/4534/ - ........ +2015-07-17 04:59 +0000 [abb14ac5b8] Patric Marschall - Merged revisions 433499 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * sig_pri.h: force_restart_unavailable_chans in wrong scope - Merged revisions 433500 from http://svn.asterisk.org/svn/asterisk/branches/13 + In channels/sig_pri.h, struct sig_pri_span, the field + force_restart_unavailable_chans is only defined if + #if defined(HAVE_PRI_MCID) is true. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433501 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + All other occurences of force_restart_unavailable_chans are outside of the -2015-03-26 17:24 +0000 [3ddd92902a] Corey Farrell + #if defined(HAVE_PRI_MCID) + endif - * Replace most uses of ast_register_atexit with ast_register_cleanup. + scope. - Since 'core stop now' and 'core restart now' do not stop modules, - it is unsafe for most of the core to run cleanups. Originally all - cleanups used ast_register_atexit, and were only changed when it - was shown to be unsafe. ast_register_atexit is now used only when - absolutely required to prevent corruption and close child processes. + ASTERISK-25257 #close + Reported by: Patric Marschall - Exceptions that need to use ast_register_atexit: - * CDR: Flush records. - * res_musiconhold: Kill external applications. - * AstDB: Close the DB. - * canary_exit: Kill canary process. + Change-Id: I071de89cc2cd0d85927a013036e235851f672549 +2015-07-14 16:55 +0000 [875aee4c09] Richard Mudgett - ASTERISK-24142 #close - Reported by: David Brillert + * pbx.c: Post AMI VarSet event if delete a non-empty dialplan variable. - ASTERISK-24683 #close - Reported by: Peter Katzmann + ASTERISK-25256 #close + Reported by: Richard Mudgett - ASTERISK-24805 #close - Reported by: Badalian Vyacheslav + Change-Id: I0b6be720b66fa956f6a798cd22ef8934eb0c0ff3 - ASTERISK-24881 #close - Reported by: Corey Farrell +2015-07-08 16:39 +0000 [8bcf6d2801] Matt Jordan - Review: https://reviewboard.asterisk.org/r/4500/ - Review: https://reviewboard.asterisk.org/r/4501/ - ........ + * ARI: Add support for push configuration of dynamic object + + This patch adds support for push configuration of dynamic, i.e., + sorcery, objects in Asterisk. It adds three new REST API calls to the + 'asterisk' resource: + * GET /asterisk/{configClass}/{objectType}/{id}: retrieve the current + object given its ID. This returns back a list of ConfigTuples, which + define the fields and their present values that make up the object. + * PUT /asterisk/{configClass}/{objectType}/{id}: create or update an + object. A body may be passed with the request that contains fields to + populate in the object. The same format as what is retrieved using + the GET operation is used for the body, save that we specify that the + list of fields to update are contained in the "fields" attribute. + * DELETE /asterisk/{configClass}/{objectType}/{id}: remove a dynamic + object from its backing storage. - Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Note that the success/failure of these operations is somewhat + configuration dependent, i.e., you must be using a sorcery wizard that + supports the operation in question. If a sorcery wizard does not support + the create or delete mechanisms, then the REST API call will fail with a + 403 forbidden. - Merged revisions 433497 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25238 #close + Change-Id: I28cd5c7bf6f67f8e9e437ff097f8fd171d30ff5c - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433498 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-15 15:40 +0000 [e31cb6b248] Richard Mudgett -2015-03-26 12:47 +0000 [d7fc85e69d] Corey Farrell + * strings.h: Fix issues with escape string functions. - * res_pjsip: Enable unload of all modules at shutdown. + Fixes for issues with the ASTERISK-24934 patch. - * Move most of res_pjsip:module_unload to unload_pjsip to resolve crashes - caused by running PJSIP functions from non-PJSIP threads. - * Remove call to pjsip_endpt_destroy(ast_pjsip_endpoint), it was causing - crashes in some cases. In theory pj_shutdown() should take care of this. - * Mark res_pjsip_keepalive and res_pjsip_session as allowed to unload at - shutdown. - * Resolve leaked config global in res_pjsip_notify. - * Unregister pubsub pjsip service module. - * Implement cleanup for res_pjsip_session. + * Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is + an empty string. If it were an empty string the functions returned NULL + as if there were a memory allocation failure. This failure caused the AMI + VarSet event to not get posted if the new value was an empty string. - ASTERISK-24731 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4498/ - ........ + * Fixed dest buffer overwrite potential in ast_escape() and + ast_escape_c(). If the dest buffer size is smaller than the space needed + by the escaped s parameter string then the dest buffer would be written + beyond the end by the nul string terminator. The num parameter was really + the dest buffer size parameter so I renamed it to size. - Merged revisions 433469 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Made nul terminate the dest buffer if the source string parameter s was + an empty string in ast_escape() and ast_escape_c(). + * Updated ast_escape() and ast_escape_c() doxygen function description + comments to reflect reality. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433470 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Added some more unit test cases to /main/strings/escape to cover the + empty source string issues. -2015-03-26 12:13 +0000 [ab674f67b5] Kevin Harwell + ASTERISK-25255 #close + Reported by: Richard Mudgett - * app_confbridge: file playback blocks dtmf + Change-Id: Id77fc704600ebcce81615c1200296f74de254104 - Attempting to execute DTMF in a confbridge while file playback (prompt, - announcement, etc) is occurring is not allowed. You have to wait until - the sound file has completed before entering DTMF. This patch fixes it - so that app_confbridge now monitors for dtmf key presses during menu - driven file playback. If a key is pressed playback stops and it executes - the matched menu option. +2015-07-14 14:29 +0000 [243c0d1609] Richard Mudgett - ASTERISK-24864 #close - Reported by: Steve Pitts - Review: https://reviewboard.asterisk.org/r/4510/ - ........ + * parking_applications.c: Fix ast_verb() line terminator. - Merged revisions 433445 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I8797238c71563e243c48c6145b4f1ae58f91f775 - Merged revisions 433446 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-14 14:36 +0000 [c782320c68] Richard Mudgett + * res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433447 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + setup_park_common_datastore() was assuming that a non-NULL string returned + for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty + strings. Things got crashy as a result. -2015-03-25 13:37 +0000 [e953d15223] Richard Mudgett + * Made setup_park_common_datastore() treat the channel variable values the + same whether they are NULL or empty for ATTENDEDTRANSFER and + BLINDTRANSFER. - * A couple minor cleanup tweaks. + ASTERISK-25254 #close + Reported by: Richard Mudgett - * In res/res_sorcery_realtime.c: Broke long line. + Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2 - * In main/bucket.c: Eliminated unnecessary NULL check as - ast_sorcery_unref() is NULL tolerant and set the global object to NULL - after unref in the system shutdown bucket_cleanup(). - ........ +2015-07-10 18:01 +0000 [2735dd5b2d] Richard Mudgett - Merged revisions 433420 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_session.c: Extract sip_session_defer_termination_stop_timer(). + Change-Id: I9e115dee74bd72e06081d0ee73ecdeb886caa5fb - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433421 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-10 10:42 +0000 [3d0ca343ca] Richard Mudgett -2015-03-25 10:31 +0000 [47156aab92] Simon Arlott (License 5756) + * res_pjsip_session.c: Add some helpful comments and minor tweaks. - * res_xmpp: Buddies are always auto-registered when processing the roster + Change-Id: I742aeeaf5f760593f323a00fb691affe22e35743 - Due to a quirk in the configuration handling of res_xmpp, the 'autoregister' - setting was never actually processed. This was due to not properly copying - over the global settings to the client settings when applying the - configuration to the run-time object. +2015-07-10 10:43 +0000 [8d08bb179c] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/4496/ + * res_pjsip_session.c: Fix off nominal crash potential in debug message. - ASTERISK-14233 - ASTERISK-24780 #close - Reported by: Simon Arlott - patches: - asterisk-13.1.0-24780 uploaded by Simon Arlott (License 5756) - ........ + Change-Id: I09928297927ee85f7655289acee3a586816466bc - Merged revisions 433395 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-07-15 10:31 +0000 [0a1a550593] Matt Jordan - Merged revisions 433396 from http://svn.asterisk.org/svn/asterisk/branches/13 + * apps/app_dictate: Fix typo in attribution + Last time I checked, it's "Sangoma", not "Samgoma". Thanks to Brian + (GameGamer43) for pointing that out. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433397 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I43d7b196f6d7a2b2517b84915e3a8dfbc2894106 -2015-03-25 07:32 +0000 [abf3e40902] Joshua Colp +2015-07-15 10:28 +0000 [3384e64ef6] Benjamin Ford - * dns: Add core DNS API + unit tests and res_resolver_unbound module + unit tests. + * ARI: Fixed unload mode for unload module. - This change adds an abstracted core DNS API which resembles the API described - here[1]. The API provides a pluggable mechanism for resolvers and also a - consistent view for records. Both synchronous and asynchronous queries are - supported. + Changed the unload mode to AST_FORCE_SOFT from AST_FORCE_FIRM, + which would unload a module even if it was in use. - This change also adds a res_resolver_unbound module which uses the libunbound - library to provide resolution. + * Changed unload mode to proper mode - Unit tests have also been written for all of the above to confirm the API and - functionality. + ASTERISK-25173 - ASTERISK-24834 #close - Reported by: Matt Jordan + Change-Id: If2402487b5bce05d9770f25f65f5c8e292ad5533 - ASTERISK-24836 #close - Reported by: Matt Jordan +2015-07-08 16:38 +0000 [0b6ff77afb] Matt Jordan - Review: https://reviewboard.asterisk.org/r/4474/ - Review: https://reviewboard.asterisk.org/r/4512/ + * res/res_sorcery_astdb: Add a debugging message for when retrieval by ID fails - [1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+DNS+API + Having a debug message tell us that we attempted to look up an item but + failed is nice in circumstances when it isn't clear if the wizard was + queried correctly or not. + Change-Id: I2600c3bbea87f252196358f62e73f4c7da8632f7 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433370 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-08 16:37 +0000 [2f0d6d346c] Matt Jordan -2015-03-24 14:41 +0000 [4c2fc5b811] Richard Mudgett + * res/res_pjsip_outbound_registration: Fix WARNING message - * chan_pjsip: Add "rpid_immediate" option to prevent unnecessary "180 Ringing" messages. + Newlines are nice. - Incoming PJSIP call legs that have not been answered yet send unnecessary - "180 Ringing" or "183 Progress" messages every time a connected line - update happens. If the outgoing channel is also PJSIP then the incoming - channel will always send a "180 Ringing" or "183 Progress" message when - the outgoing channel sends the INVITE. + Change-Id: Icf0d915db02882e47cd9077ed9009f5d44140d42 - Consequences of these unnecessary messages: +2015-07-08 16:35 +0000 [cd2213f1ae] Matt Jordan - * The caller can start hearing ringback before the far end even gets the - call. + * res_pjsip/configuration: Fix a variety of default value problems - * Many phones tend to grab the first connected line information and refuse - to update the display if it changes. The first information is not likely - to be correct if the call goes to an endpoint not under the control of the - first Asterisk box. + This patch fixes some bad default value handling in the following + settings: - When connected line first went into Asterisk in v1.8, chan_sip received an - undocumented option "rpid_immediate" that defaults to disabled. When - enabled, the option immediately passes connected line update information - to the caller in "180 Ringing" or "183 Progress" messages as described - above. + * The 'message_context' and 'accountcode' settings are not mandatory. As + such, we can allow their stringfield values to be empty. + * The 'media_encryption' setting applies a default value of 'none' to + the setting, which it then can't parse or understand. Since the value + is documented to be 'no', this will now apply that as the default + value. - * Added "rpid_immediate" option to prevent unnecessary "180 Ringing" or - "183 Progress" messages. The default is "no" to disable sending the - unnecessary messages. + Change-Id: Ib9be7f97a7a5b9bc7aee868edf5acf38774cff83 - ASTERISK-24781 #close - Reported by: Richard Mudgett +2015-07-08 16:32 +0000 [2e4bdbd78a] Matt Jordan - Review: https://reviewboard.asterisk.org/r/4473/ - ........ + * main/sorcery: Provide log messages when a wizard does not support an operation - Merged revisions 433338 from http://svn.asterisk.org/svn/asterisk/branches/13 + If a sorcery wizard does not support one of the 'optional' CRUD + operations (namely the CUD), log a WARNING message so we are aware of + why the operation failed. This also removes an assert in this case, as + the CUD operation may have been triggered by an external system, in + which case it is not a programming error but a configuration error. + Change-Id: Ifecd9df946d9deaa86235257b49c6e5e24423b53 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433339 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-10 18:17 +0000 [653f2087e0] Richard Mudgett -2015-03-22 19:05 +0000 [60f01520e7] snuffy (License 5024) + * res_pjsip_session.c: Fix crash on call disconnect. - * Fix compilations errors on 64-bit OpenBSD systems + The crash fix for ASTERISK-25183 backported some code from master to try + to make sure that a BYE response is processed by the same serializer used + by the BYE request. The identified race condition causing that backport + was the BYE request code had not finished processing after sending the BYE + before the BYE response came in for processing under a different thread. + Unfortunately, there is still a race condition. Now the race condition is + between destroying the call session's serializer in + ast_taskprocessor_unreference() and using ast_taskprocessor_get() to get a + reference to the serializer for a BYE response. Even worse, the new race + condition is a design limitation of the taskprocessor implementation that + didn't matter in versions before v12. Back then, taskprocessors were only + destroyed when a module unloaded. Now res_pjsip can destroy them when a + call ends. - In versiong 5.5, OpenBSD went to 64-bit time values. This requires a cast to - (long) when printing members of certain time structs. + However, as noted on the ASTERISK-25183 commit, + session_inv_on_state_changed() is disassociating the dialog from the + session when the invite dialog state becomes PJSIP_INV_STATE_DISCONNECTED. + This is a tad too soon because our BYE request transaction has not + completed yet. - Review: https://reviewboard.asterisk.org/r/4507 + * Split session_end() that is called by session_inv_on_state_changed() to + hold off session destruction until the BYE transaction timeout occurs or a + failed initial INVITE transaction timeout occurs in + session_inv_on_tsx_state_changed(). - ASTERISK-24879 #close - Reported by: snuffy - Tested by: snuffy - patches: - openbsd-time64.diff uploaded by snuffy (License 5024) - ........ + ASTERISK-25201 #close + Reported by: Matt Jordan - Merged revisions 433268 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Iaf8dc8485fd8392a2a3ee4ad3b7f7f04a0dcc961 - Merged revisions 433269 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-14 13:12 +0000 [1aafadf814] Benjamin Ford + * ARI: Added new functionality to reload a single module. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433270 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + An http request can be sent to reload an Asterisk module. If the + module can not be reloaded or is not already loaded, an error + response will be returned. -2015-03-22 18:11 +0000 [66670f02e6] snuffy (License 5024) + The command "curl -v -u user:pass -X PUT 'http://localhost:8088 + /ari/asterisk/modules/{moduleName}'" (or something similar, based + on configuration) can be run in the terminal to access this new + functionality. - * Fix compilation issues for OpenBSD + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource - This patch addresses compilation issues for OpenBSD. Specifically, it - addresses: - * It allows including in asterisk.c - * Provides a needed (size_t) cast in xmldoc.c + * Added new ARI functionality + * Asterisk modules can be reloaded through http requests - In 13+, it also addresses a conditional inclusion in loader.c. + ASTERISK-25173 - Review: https://reviewboard.asterisk.org/r/4506 + Change-Id: I289188bcae182b2083bdbd9ebfffd50b62f58ae1 - ASTERISK-24880 #close - Reported by: snuffy - Tested by: snuffy - patches: - misc-openbsd.diff uploaded by snuffy (License 5024) - ........ +2015-07-14 08:55 +0000 [9dcae23cfc] Benjamin Ford - Merged revisions 433245 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * ARI: Added new functionality to unload a single module. - Merged revisions 433247 from http://svn.asterisk.org/svn/asterisk/branches/13 + An http request can be sent to unload an Asterisk module. If the + module can not be unloaded or is already unloaded, an error response + will be returned. + The command "curl -v -u user:pass -X DELETE 'http://localhost:8088 + /ari/asterisk/modules/{moduleName}'" (or something similar, depending + on configuration) can be run in the terminal to access this new + functionality. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433248 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource -2015-03-20 14:54 +0000 [7e097bce86] Richard Mudgett + * Added new ARI functionality + * Asterisk modules can be unloaded through http requests - * Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks. + ASTERISK-25173 - Valgrind found some memory leaks associated with - ast_pjsip_rdata_get_endpoint(). The leaks would manifest when sending - responses to OPTIONS requests, processing MESSAGE requests, and - res_pjsip supplements implementing the incoming_request callback. + Change-Id: I535a95f5676deb02651522761ecbdc0b00b5ac57 - * Fix ast_pjsip_rdata_get_endpoint() endpoint ref leaks in - res/res_pjsip.c:supplement_on_rx_request(), - res/res_pjsip/pjsip_options.c:send_options_response(), - res/res_pjsip_messaging.c:rx_data_to_ast_msg(), and - res/res_pjsip_messaging.c:send_response(). +2015-07-13 16:00 +0000 [c219a98d2b] Benjamin Ford - * Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in - res/res_pjsip_nat.c:nat_on_rx_message(). + * ARI: Added new functionality to load a single module. - * Fixed inconsistent but benign return value in - res/res_pjsip/pjsip_options.c:options_on_rx_request(). + An http request can be sent to load an Asterisk module. If the + module can not be loaded or is loaded already, an error response + will be returned. - Review: https://reviewboard.asterisk.org/r/4511/ - ........ + The command curl -v -u user:pass -X POST 'http://localhost:8088/ari + /asterisk/modules/{moduleName}'" (or something similar, depending on + configuration) can be run in the terminal to access this new + functionality. - Merged revisions 433222 from http://svn.asterisk.org/svn/asterisk/branches/13 + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource + * Added new ARI functionality + * Asterisk modules can be loaded through http requests - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433223 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25173 -2015-03-20 13:27 +0000 [148e8799fe] Richard Mudgett + Change-Id: I9e05d5b8c5c666ecfef341504f9edc1aa84fda33 - * res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively. +2015-07-13 10:54 +0000 [73e35d20de] Benjamin Ford - Valgrind found a memory leak and invalid access. + * ARI: Added new functionality to get information on a single module. - * Fix invalid access by sscanf() being fed a non-nul terminated string of - digits in res/res_pjsip_sdp_rtp.c:get_codecs(). + An http request can be sent to retrieve information on a single + module, including the resource name, description, use count, status, + and support level. - * Fix memory leak in main/sorcery.c:sorcery_object_field_destructor(). + The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari + /asterisk/modules/{moduleName}'" (or something similar, depending on + configuration) can be run in the terminal to access this new + functionality. - * Fix potential NULL pointer dereference in - main/xmldoc.c:xmldoc_get_syntax_config_option(). + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource - Review: https://reviewboard.asterisk.org/r/4513/ - ........ + * Added new ARI functionality + * Information on a single module can now be retrieved - Merged revisions 433199 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25173 + Change-Id: Ibce5a94e70ecdf4e90329cf0ba66c33a62d37463 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433200 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-08 14:56 +0000 [97ee0ee6c6] Kevin Harwell -2015-03-19 14:20 +0000 [627cc16a8d] Matt Jordan + * bridge.c: Fixed race condition during attended transfer - * funcs/func_env: Fix regression caused in FILE read operation + During an attended transfer a thread is started that handles imparting the + bridge channel. From the start of the thread to when the bridge channel is + ready exists a gap that can potentially cause problems (for instance, the + channel being swapped is hung up before the replacement channel enters the + bridge thus stopping the transfer). This patch adds a condition that waits + for the impart thread to get to a point of acceptable readiness before + allowing the initiating thread to continue. - When r432935 was merged, it did correctly fix a situation where a FILE read - operation on the middle of a file buffer would not read the requested length - in the parameters passed to the FILE function. Unfortunately, it would also - allow the FILE function to append more bytes than what was available in the - buffer if the length exceeded the end of the buffer length. + ASTERISK-24782 + Reported by: John Bigelow - This patch takes the minimum of the remaining bytes in the buffer along with - the calculated length to append provided by the original patch, and uses - that as the length to append in the return result. This patch also updates - the unit tests with the scenarios that were originally pointed out in - ASTERISK-21765 that the original implementation treated incorrectly. + Change-Id: I08fe33a2560da924e676df55b181e46fca604577 - ASTERISK-21765 - ........ +2015-07-08 16:28 +0000 [bb76b88baf] Matt Jordan - Merged revisions 433173 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * main/sorcery: Don't fail object set creation from JSON if field fails - Merged revisions 433174 from http://svn.asterisk.org/svn/asterisk/branches/13 + Some individual fields may fail their conversion due to their default + values being invalid for their custom handlers. In particular, + configuration values that depend on others being enabled (and thus have + an empty default value) are notorious for tripping this routine up. An + example of this are any of the DTLS options for endpoints. Any of the + DTLS options will fail to be applied (as DTLS is not enabled), causing + the entire object set to be aborted. + This patch makes it so that we log a debug message when skipping a + field, and rumble on anyway. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433175 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25238 -2015-03-19 10:27 +0000 [79a81fed59] Kevin Harwell + Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76 - * alemebic scripts: endpoint identifier order option +2015-07-08 16:21 +0000 [5f13c2226a] Matt Jordan - The script was added in 13, but when committed to trunk it caused a branch to - occur due to some trunk only alemebic changes. This fixes it so that the new - 'add_pjsip_endpoint_identifier_order script points to the correct down revision. + * main/format_cap: Parse capabilities generated by ast_format_cap_get_names + We have a strange relationship between the parsing of format + capabilities from a string and their representation as a string. We + expect the format capabilities to be expressed as a string in the + following format: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433152 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + allow = !all,ulaw,alaw + disallow = g722 -2015-03-19 05:21 +0000 [3aa0a869c2] Corey Farrell + While we would generate the string representation of those formats as: - * logger: Apply default console logging when configuration cannot be loaded. + allow = (ulaw|alaw) + disallow = (ulaw|alaw|g729...) - When logger.conf is missing or invalid enable console logging and display - an error message. + When the configuration framework needs to store values as a string, it + generates the format capabilities using the second representation; this + representation however cannot be parsed when the entry is rehydrated. + This patch fixes that by updating + ast_format_cap_update_by_allow_disallow to parse an entry as if it were + in the generated format if it has a leading '(' and a trailing ')'. - ASTERISK-24817 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4497/ - ........ + ASTERISK-25238 - Merged revisions 433122 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I904d43caf4cf45af06f6aee0c9e58556eb91d6ca - Merged revisions 433126 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-06-27 17:53 +0000 [2325b106fd] Matt Jordan + * tests/test_devicestate: Add additional tests for the device state API - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433130 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch adds more tests that exercise the device state API. This includes: -2015-03-19 04:57 +0000 [d486659502] Corey Farrell + * Tests that cover adding a device state provider, as well as deleting a + device state provider. This also verifies that you cannot add an + already added device state provider, and cannot delete an already + deleted device state provider. + * A test that covers changing device state and receiving said updates + from a device state subscriber. This also covers hitting both the + device state cache as well as a custom device state provider. + * A test that covers converting device state to channel state and device + state values to a string representation and back. + * A test that covers obtaining device state from an active channel and a + channel driver that provides its own device state. - * chan_sip: Simplify dialog/peer references, improve REF_DEBUG output. + Change-Id: I2adca67ffb405cd8625a5d6df1e3f9b3d945c08d - * Replace functions for ref/undef of dialogs and peers with macro's - to call ao2_t_bump/ao2_t_cleanup. - * Enable passthough of REF_DEBUG caller information to sip_alloc and - find_call. +2015-06-27 17:51 +0000 [328f0be806] Matt Jordan - ASTERISK-24882 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4189/ - ........ + * main/devicestate: Prevent duplicate registration of device state providers - Merged revisions 433115 from http://svn.asterisk.org/svn/asterisk/branches/13 + Currently, the device state provider API will allow you to register a + device state provider with the same case insensitive name more than + once. This could cause strange issues, as the duplicate device state + providers will not be queried when a device's state has to be polled. + This patch updates the API such that a device state provider with the + same name as one that has already registered will be rejected. + Change-Id: I4a418a12280b7b6e4960bd44f302e27cd036ceb2 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433116 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-10 22:25 +0000 [bee41eec62] Matt Jordan -2015-03-19 04:46 +0000 [2c83ac4364] Corey Farrell + * res/res_sorcery_memory_cache: Fix test registration issues - * chan_sip: Fix dialog reference leaked to scheduler for reinvite_timeout. + Again, tests now need to not end with a newline. This patch makes it so + the tests can register again, unit tests will actually pass, and we can + stop wasting time trying to figure out why builds are failing when they + really aren't failing. - Release the scheduler reference to the dialog for reinvite timeout during - dialog_unlink_all. + Change-Id: Ide519fbeba89f413c733446c5ff7b224fc4ce840 - ASTERISK-24876 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4491/ - ........ +2015-07-10 21:42 +0000 [4d738e9026] Matt Jordan - Merged revisions 433112 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * tests/test_sorcery_memory_cache_thrash: Fix test loading problems - Merged revisions 433113 from http://svn.asterisk.org/svn/asterisk/branches/13 + Because unit tests now want descriptions to not end with a newline, the + sorcery memory cache thrash tests failed to register. This patch + corrects their descriptions. + Change-Id: Id004b1becfdeed8ee3c846f49beab76a5c0f68b6 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433114 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-06-26 10:57 +0000 [47ea312b24] Benjamin Ford -2015-03-17 21:42 +0000 [e0ea490a11] Richard Mudgett + * ARI: Added new functionality to get all module information. - * res_pjsip_session: Fix off-nominal extra unref of session. - ........ + An http request can be sent to retrieve a list of all existing modules, + including the resource name, description, use count, status, and + support level. - Merged revisions 433088 from http://svn.asterisk.org/svn/asterisk/branches/13 + The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari/ + asterisk/modules" (or something similar, depending on configuration) + can be run in the terminal to access this new functionality. + For more information, see: + https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433089 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Added new ARI functionality + * Information on modules can now be retrieved -2015-03-17 17:15 +0000 [8c65c9167e] Scott Griepentrog + Change-Id: I63cbbf0ec0c3544cc45ed2a588dceabe91c5e0b0 - * Various: bugfixes found via chaos +2015-07-09 09:18 +0000 [d558b00c85] Joshua Colp - Using DEBUG_CHAOS several instances of a null - pointer crash, and one uninitialized variable - were uncovered and fixed. Also added details - on why Asterisk failed to initialize. + * bridge_native_rtp.c: Don't start native RTP bridging after attended transfer. - Review: https://reviewboard.asterisk.org/r/4468/ - ........ + The bridge_native_rtp module adds a frame hook to channels which are in + a native RTP bridge. This frame hook is used to intercept when a hold + or unhold frame traverses the bridge so native RTP can be stopped or + started as appropriate. This is expected but exposes a specific bug + when attended transfers are involved. - Merged revisions 433064 from http://svn.asterisk.org/svn/asterisk/branches/13 + Upon completion of an attended transfer an unhold frame is queued up + to take one of the channels involved off hold. After this is done + the channel is moved between bridges. + When the frame hook is involved in this case for the unhold it + releases the channel lock and acquires the bridge lock. This + allows the bridge core to step in and move the channel + (potentially changing the bridging techology) from another thread. + Once completed the bridge lock is released by the bridge core. + The frame hook is then able to acquire the bridge lock and + wrongfully starts native RTP again, despite the channel no longer + being in the bridge or needing to start native RTP. In fact at + this point the frame hook is no longer attached to the channel. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433065 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change makes it so the native RTP bridge data is available to + the frame hook when it is invoked. Whether the frame hook has + been detached or not is stored on the native RTP bridge data and + is checked by the frame hook before starting or stopping native + RTP bridging. If the frame hook has been detached it does nothing. -2015-03-17 17:03 +0000 [f25b265329] Scott Griepentrog + ASTERISK-25240 #close - * core: Introduce chaos into memory allocations + Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2 - Locate potential crashes by exercising seldom - used code paths. This patch introduces a new - define DEBUG_CHAOS, and mechanism to randomly - return an error condition from functions that - will seldom do so. Functions that handle the - allocation of memory get the first treatment. +2015-05-16 17:02 +0000 [b74b071369] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4463/ - ........ + * res_sorcery_memory_cache: Backport to 13 - Merged revisions 433060 from http://svn.asterisk.org/svn/asterisk/branches/13 + Gerrit is complaining of conflicts when trying to create a patch series + of all of the cherry-picked master commits, so I have instead squashed + it all into one commit. + ASTERISK-25067 #close + Reported by: Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433063 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I6dda90343fae24a75dc5beec84980024e8d61eb9 -2015-03-17 17:03 +0000 [62cf2a2c02] Scott Griepentrog +2015-07-08 04:21 +0000 [7ff1ac8797] Joshua Colp - * Reverting accidental ci of wrong change in r433061 + * res_rtp_asterisk: Ensure DTLS timeout timer is -1 if DTLS is not used. + This change fixes a bug where the DTLS timeout timer would be + initialized to 0 if DTLS was not used for an RTP session. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433062 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25103 -2015-03-17 17:00 +0000 [cb6c7eecfd] Scott Griepentrog + Change-Id: If8d26bb054f1d300838850da5b8db9044c2fe2ac - * various: cleanup issues found during leak hunt +2015-07-01 07:55 +0000 [05e8e14982] Joshua Colp - In this collection of small patches to prevent - Valgrind errors are: fixes for reference leaks - in config hooks, evaluating a parameter beyond - bounds, and accessing a structure after a lock - where it could have been already free'd. + * res_rtp_asterisk: Prevent simultaneous access to DTLS SSL context. - Review: https://reviewboard.asterisk.org/r/4407/ - ........ + This change moves logic for setting up the DTLS SSL contexts to + when the SDP is done being processed instead of when ICE negotiation + completes. It also stops handshakes from being initiated when we + are acting as a server. - Merged revisions 431583 from http://svn.asterisk.org/svn/asterisk/branches/13 + Manipulating the SSL context when ICE negotiation has completed + is problematic as the SSL context is not protected and if acting + as a client the remote side may have started DTLS negotiation + already. + The retransmission timeout timer code has also been split up + and simplified some. Both RTP and RTCP now have their own timers + and the points at which the timer is stopped and started is now + more specific. When a packet is sent the timer is started. When + a response is received but before it is processed the timer is + stopped. This provides a guarantee that the timeout is not + occurring while the response is processed. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433061 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-22805 #close + ASTERISK-24550 #close + ASTERISK-24651 #close + ASTERISK-24832 #close + ASTERISK-25103 #close + ASTERISK-25127 #close -2015-03-17 16:52 +0000 [c41dd32b94] Richard Mudgett + Change-Id: Ib75ea2546f29d6efc3d2d37c58df6986c7bd9b91 - * Audit ast_sockaddr_resolve() usage for memory leaks. +2015-06-26 16:10 +0000 [38bace4fbb] Richard Mudgett - Valgrind found some memory leaks associated with ast_sockaddr_resolve(). - Most of the leaks had already been fixed by earlier memory leak hunt - patches. This patch performs an audit of ast_sockaddr_resolve() and found - one more. + * res_pjsip_t38.c: Fix always false if test. - * Fix ast_sockaddr_resolve() memory leak in - apps/app_externalivr.c:app_exec(). + Calling t38_change_state() sets the t38 state so it makes little sense to + then check the state right after the call for something else. - * Made main/netsock2.c:ast_sockaddr_resolve() always set the addrs - parameter for safety so the pointer will never be uninitialized on return. - The same goes for res/res_pjsip_acl.c:extract_contact_addr(). + * Made the code in t38_interpret_parameters() reject or exit T.38 mode as + intended but not implemented. - * Made functions that call ast_sockaddr_resolve() with RAII_VAR() - controlling the addrs variable use ast_free instead of ast_free_ptr to - provide better MALLOC_DEBUG information. + Change-Id: Ib281263a6ed44da9448132c4e6df1e183b8a3df2 - Review: https://reviewboard.asterisk.org/r/4509/ - ........ +2015-06-30 11:17 +0000 [2f7688c788] Richard Mudgett - Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip_mwi.c: Use safer loop coding in mwi_subscription_mailboxes_str(). - Merged revisions 433057 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I6f39d809a6d1b47b35bb32b298f5a12f35d6f907 +2015-06-30 11:14 +0000 [74be3a50d7] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433058 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_mwi.c: Eliminate a simple RAII_VAR. -2015-03-17 13:35 +0000 [803a916334] Kevin Harwell + Change-Id: Ib1843f81e826a6c760c424c88eb70c350d9d61da - * res_pjsip: Allow configuration of endpoint identifier query order +2015-06-30 11:11 +0000 [589e93617a] Richard Mudgett - Updated some documentation stating that endpoint identifiers registered without - a name are place at the front of the lookup list. Also renamed register method - 'ast_sip_register_endpoint_identifier_by_name' to - 'ast_sip_register_endpoint_identifier_with_name' + * res_pjsip_mwi.c: Fix mid-line log message line breaks. - ASTERISK-24840 - Reported by: Mark Michelson - ........ + * Add create_mwi_subscriptions_for_endpoint() doxygen comment. - Merged revisions 433031 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I3c3f921f4ec749fb65b62d2f6fa0d4d1888b94e2 +2015-06-26 18:48 +0000 [0d67e04359] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433032 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_mwi.c: Fix MWI subscription memory corruption crash. -2015-03-17 13:22 +0000 [aef7278af6] Kevin Harwell + MWI subscriptions can crash or corrupt memory when using the subscription + datastore to access the MWI subscription object because the datastore is + not holding a reference to the object. - * res_pjsip: Allow configuration of endpoint identifier query order + * Give the subscription datastore a ref to the MWI subscription object. + It is unfortunate that the ref causes a circular ref chain that must be + explicitly broken to allow the memory to get released. The loop is broken + when the subscription is shutdown and if the subscription setup fails. - This patch fixes previously reverted code that caused binary incompatibility - problems with some modules. And like the original patch it makes sure that - no matter what order the endpoint identifier modules were loaded, priority is - given based on the ones specified in the new global 'endpoint_identifier_order' - option. + ASTERISK-25168 #close + Reported by: Carl Fortin - ASTERISK-24840 - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4489/ - ........ + Change-Id: Ice4fa823f138ff10a6c74d280699c41a82836d4f - Merged revisions 433028 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-02 14:51 +0000 [0422433f47] Richard Mudgett + * PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433029 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When res_pjsip body generator modules were generating XML or XPIDF + response bodies, there was a chance that the generated body would be the + exact size of the supplied buffer. Adding the nul string terminator would + then write beyond the end of the buffer and potentially corrupt memory. -2015-03-17 11:11 +0000 [259e833e88] Richard Mudgett + * Fix MALLOC_DEBUG high fence violations caused by adding a nul string + terminator on the end of a buffer for XML or XPIDF response bodies. - * res_pjsip: Add reason comment. - ........ + * Made calls to pj_xml_print() safer if the XML prolog is requested. Due + to a bug in pjproject, the return value could be -1 _or_ + AST_PJSIP_XML_PROLOG_LEN if the supplied buffer is not large enough. - Merged revisions 433005 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Updated the doxygen comment of AST_PJSIP_XML_PROLOG_LEN to describe the + return value of pj_xml_print() when the supplied buffer is not large + enough. + ASTERISK-25168 + Reported by: Carl Fortin - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433006 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de -2015-03-13 21:29 +0000 [e89f83b3ad] Matt Jordan +2015-06-26 10:36 +0000 [8ea214aed7] Richard Mudgett - * main/frame: Don't report empty disallow values as an error + * PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences. - In realtime, it is normal to have a database with both 'allow' and 'disallow' - columns in the schema. It is perfectly valid to have an 'allow' value of - '!all,g722,ulaw,alaw' and no 'disallow' value. Unlike in static conf files, - you can't *not* provide the disallow value. Thus, the empty disallow value - causes a spurious WARNING message, which is kind of annoying. + When a caller calls a FAX number and then hangs up right after the call is + answered then the T.38 re-INVITE automatic reject timer may still be + running after the channel goes away. - This patch makes it so that a 'disallow' value with no ... value ... is - ignored. Granted, you can still screw this up as well, as technically - specifying 'disallow=all,!ulaw' allows only ulaw, and then you would have no - 'allow' value in your database. But really, why would you do that? WHY? + * Added session NULL channel checks on the code paths that get executed by + t38_automatic_reject() to prevent a crash when the T.38 re-INVITE + automatic reject timer expires. - ASTERISK-16779 #close - Reported by: Atis Lezdins - ........ + ASTERISK-25168 + Reported by: Carl Fortin - Merged revisions 432970 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403 - Merged revisions 432971 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-06-05 15:37 +0000 [ada7346792] Richard Mudgett + * res_pjsip: Need to use the same serializer for a pjproject SIP transaction. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432972 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + All send/receive processing for a SIP transaction needs to be done under + the same threadpool serializer to prevent reentrancy problems inside + pjproject and res_pjsip. -2015-03-13 21:01 +0000 [0d52907d2b] Joshua Colp + * Add threadpool API call to get the current serializer associated with + the worker thread. - * func_curl: Don't hold exclusive lock when performing HTTP request. + * Pick a serializer from a pool of default serializers if the caller of + res_pjsip.c:ast_sip_push_task() does not provide one. - This code originally kept a lock held when performing the HTTP - request to ensure that the options provided to curl remain valid. - This doesn't seem to be necessary these days and holding the lock - caused requests to happen sequentially instead of in parallel. + This is a simple way to ensure that all outgoing SIP request messages are + processed under a serializer. Otherwise, any place where a pushed task is + done that would result in an outgoing out-of-dialog request would need to + be modified to supply a serializer. Serializers from the default + serializer pool are picked in a round robin sequence for simplicity. - ASTERISK-18708 #close - Reported by: Dave Cabot - ........ + A side effect is that the default serializer pool will limit the growth of + the thread pool from random tasks. This is not necessarily a bad thing. - Merged revisions 432948 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Made pjsip_distributor.c save the thread's serializer name on the + outgoing request tdata struct so the response can be processed under the + same serializer. - Merged revisions 432949 from http://svn.asterisk.org/svn/asterisk/branches/13 + This is a cherry-pick from master. + **** ASTERISK-25115 Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432950 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + NOTE: session_inv_on_state_changed() is disassociating the dialog from the + session when the invite dialog becomes PJSIP_INV_STATE_DISCONNECTED. + Unfortunately this is a tad too soon because our BYE request transaction + has not completed yet. -2015-03-13 20:53 +0000 [ac1214d9d4] Jan Juergens (License 6538) + ASTERISK-25183 #close + Reported by: Matt Jordan - * apps/app_sms: Add an option to prevent SMS content from being logged + Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a - In some countries, privacy laws specify that SMS content cannot be saved by a - provider. This patch adds a new option to the SMS application, 'n', which - prevents the SMS content from being written to the SMS log. +2015-07-04 18:22 +0000 [55137c3d12] Joshua Colp - ASTERISK-22591 #close - Reported by: Jan Juergens - patches: - DisableSmsContentLoggingByParam.patch uploaded by Jan Juergens (License 6538) + * res/res_http_websocket: Don't send HTTP response fragmented. + This change makes it so that when accepting a WebSocket + connection the HTTP response is sent as one packet instead of + fragmented. Browsers don't like it when you send it fragmented. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432947 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25103 -2015-03-13 20:37 +0000 [b3fa35786f] Joshua Colp + Change-Id: I9b82c4ec2949b0bce692ad0bf6f7cea9709e7f69 - * core: Fix tab completion of "core set debug channel" CLI command. +2015-06-27 18:47 +0000 [49f81ddb85] Matt Jordan - The "core set debug channel" CLI command mistakenly had source filenames - added to its tab completion. This occurred because the CLI generator fell back - to the "core set debug" command which permits setting debug at a source - filename level. + * Makefile: Remove coverage files on 'make clean' - ASTERISK-21038 #close - Reported by: Richard Kenner - ........ + This patch updates a variety of Makefiles in Asterisk's build system to + remove .gcda and .gcno files when 'make clean' is executed. These files + are generated when '--enable-coverage' is passed to the Asterisk + configure script. - Merged revisions 432944 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Ib70b41eea2ee2908885bff02e80faf9f40c84602 - Merged revisions 432945 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-02 09:08 +0000 [e0f565663b] Walter Doekes + * chan_sip: Fix early call pickup channel leak. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432946 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When handle_invite_replaces() was called, and either ast_bridge_impart() + failed or there was no bridge (because the channel we're picking up was + still ringing), chan_sip would leak a channel. -2015-03-13 20:22 +0000 [b4cc056067] Di-Shi Sun (License 5076) + Thanks Matt and Corey for checking the bridge path. - * FILE: fix retrieval of file contents when offset is specified + ASTERISK-25226 #close - The loop that reads in a file was not correctly using the offset when - determining what bytes to append to the output. This patch corrects - the logic such that the correct portion of the file is extracted when an - offset is specified. + Change-Id: Ie736bb182170a73eef5bcef0ab0376f645c260c8 - ASTERISK-21765 - Reported by: John Zhong - Tested by: Matt Jordan, Di-Shi Sun - patches: - file_read_390821.patch uploaded by Di-Shi Sun (License 5076) - ........ +2015-07-02 06:19 +0000 [a5a262be78] Walter Doekes - Merged revisions 432935 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * chan_mgcp: Don't call close on fd -1. - Merged revisions 432938 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25220 #close + Change-Id: Ic48f3a82f51ada87f2fb0e016c9efe0ad56f1ee3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432940 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-07-02 06:10 +0000 [b835312b4c] Walter Doekes -2015-03-13 19:24 +0000 [dc752f515b] Matt Jordan + * rtp_engine: Skip useless self-assignment in ast_rtp_engine_unload_format. - * apps/app_amd: Document maximum_word_length option; fix AMDCAUSE documentation + When running valgrind on Asterisk, it complained about: - This patch corrects the documentation for the AMD application. Specifically: - * It documents the maximum_word_length option, which limits the maximum allowed - length of a single utterance. - * It clarifies the AMDCAUSE values MAXWORDS and MAXWORDLENGTH. MAXWORDLENGTH - was documented as MAXWORDS, while MAXWORDS was undocumented. + ==32423== Source and destination overlap in memcpy(0x85a920, 0x85a920, 304) + ==32423== at 0x4C2F71C: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/...) + ==32423== by 0x55BA91: ast_rtp_engine_unload_format (rtp_engine.c:2292) + ==32423== by 0x4EEFB7: ast_format_attr_unreg_interface (format.c:1437) - Thanks to the issue reporter, Frank DiGennaro, for pointing out the issues. + The code in question is a struct assignment, which may be performed by + memcpy as a compiler optimization. It is changed to only copy the struct + contents if source and destination are different. - ASTERISK-19470 #close - Reported by: Frank DiGennaro - ........ + ASTERISK-25219 #close - Merged revisions 432918 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I6d3546c326b03378ca8e9b8cefd41c16e0088b9a - Merged revisions 432920 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-02 05:16 +0000 [6551e16e03] Walter Doekes + * astfd: Fix buffer overflow in DEBUG_FD_LEAKS. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432921 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + If DEBUG_FD_LEAKS was used and more file descriptors than the default of + 1024 were available, some DEBUG_FD_LEAKS-patched functions would + overwrite memory past the fixed-size (1024) fdleaks buffer. -2015-03-13 12:06 +0000 [c52adca396] Richard Mudgett + This change: + - adds bounds checks to __ast_fdleak_fopen and __ast_fdleak_pipe + - consistently uses ARRAY_LEN() instead of sizeof() or 1023 or 1024 + - stores pointers to constants instead of copying the contents + - reorders the fdleaks struct for possibly tighter packing + - adds a tiny bit of documentation - * chan_pjsip: AMI action PJSIPShowEndpoint closes AMI connection on error. + ASTERISK-25212 #close - Also fixed similar problem with AMI action PJSIPShowEndpoints. + Change-Id: Iacb69e7701c0f0a113786bd946cea5b6335a85e5 - ASTERISK-24872 #close - Reported by: Dmitriy Serov +2015-07-02 04:57 +0000 [f4dd9560cf] Walter Doekes - Review: https://reviewboard.asterisk.org/r/4487/ - ........ + * res_timing: Don't close FD 0 when out of open files. - Merged revisions 432894 from http://svn.asterisk.org/svn/asterisk/branches/13 + This fixes so a failure to get a timer file descriptor does not cascade + to closing FD 0. + On error, both res_timing_kqueue and res_timing_timerfd would call the + destructor before setting the file handle. The file handle had been + initialized to 0, causing FD 0 to be closed. This in turn, resulted in + floods of "CLI>" messages and an unusable terminal. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432895 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-19277 #close + Reported by: Barry Chern -2015-03-13 11:37 +0000 [636d82f4d8] Richard Mudgett + For the 13 branch, this was already fixed. This patch only ensures that + we do not attempt to close a negative file descriptor. - * chan_pjsip/res_pjsip_callerid: Make Party ID handling simpler and consistent. + Change-Id: I147d7e33726c6e5a2751928d56561494f5800350 - The res_pjsip modules were manually checking both name and number - presentation values when there is a function that determines the combined - presentation for a party ID struct. The function takes into account if - the name or number components are valid while the manual code rarely - checked if the data was even valid. +2015-07-01 17:25 +0000 [78a1f4aa46] Richard Mudgett - * Made use ast_party_id_presentation() rather than manually checking party - ID presentation values. + * chan_vpb.cc: Fix compiler warning Jenkins found. - * Ensure that set_id_from_pai() and set_id_from_rpid() will not return - presentation values other than what is pulled out of the SIP headers. It - is best if the code doesn't assume that AST_PRES_ALLOWED and - AST_PRES_USER_NUMBER_UNSCREENED are zero. + Change-Id: I0ec7fd10d56d90d5a60b12b5a7d6807f265ac5e0 - * Fixed copy paste error in add_privacy_params() dealing with RPID - privacy. +2015-07-01 13:34 +0000 [6b16fbfc22] Scott Griepentrog - * Pulled the id->number.valid test from add_privacy_header() and - add_privacy_params() up into the parent function add_id_headers() to skip - adding PAI/RPID headers earlier. + * Channel alert pipe: improve diagnostic error return - * Made update_connected_line_information() not send out connected line - updates if the connected line number is invalid. Lower level code would - not add the party ID information and thus the sent message would be - unnecessary. + When a frame is queued on a channel, any failure in + ast_channel_alert_write is logged along with errno. - * Eliminated RAII_VAR usage in send_direct_media_request(). + This change improves the diagnostic message through + aligning the errno value with actual failure cases. - Review: https://reviewboard.asterisk.org/r/4472/ - ........ + ASTERISK-25224 + Reported by: Andrey Biglari - Merged revisions 432892 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I1bf7b3337ad392789a9f02c650589cd065d20b5b +2015-07-01 16:04 +0000 [8e07ab145d] Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432893 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * sorcery/realtime: Add a bit of debug and warning messages for bad configs -2015-03-13 09:55 +0000 [d42c6adb1a] Kevin Harwell + When a mapping does not exist between a sorcery.conf defined object and + a realtime mapping in extconf, currently, the user will receive a slew + of ERROR messages that don't really tell what is happening. Some ERROR + messages may even be misleading, as they occur after the sorcery API has + already given up on the attempt to load and create the sorcery object. - * Revert - res_pjsip: Allow configuration of endpoint identifier query order + This patch adds a bit of debug and a useful WARNING message for when a + wizard's open callback fails for a particular object type. In the bad + configurations that resulted in this patch, this provided a 'root cause' + WARNING message that pointed in the right direction of the configuration + problem. - Due to a break in binary compatibility with some other modules these changes - are being reverted until the issue can be resolved. + Change-Id: I1cc7344f2b015b8b9c85a7e6ebc8cb4753a8f80b +2015-06-29 12:45 +0000 [156395e743] Mark Michelson - ASTERISK-24840 - Reported by: Mark Michelson - ........ + * res_sorcery_realtime: Fix leak of sorcery object type. - Merged revisions 432868 from http://svn.asterisk.org/svn/asterisk/branches/13 + This prevents a leak of a sorcery object type when realtime sorcery + objects are retrieved by fields or when multiple objects are retrieved. + The extent of this leak is that sorcery object types would be leaked. + These are allocated whenever an object type is registered with sorcery, + meaning that on module shutdown, these objects would be leaked. This + could be problematic if many reloads were performed, but it is not as + severe as if every sorcery object retrieved from realtime were being + leaked. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432869 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25165 #close + Reported by Corey Farrell -2015-03-12 21:10 +0000 [f2c21ead1f] Corey Farrell + Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8 - * Logger: Fix MALLOC_DEBUG build error. +2015-06-26 22:02 +0000 [a5e9c4e9b2] Matt Jordan - Revision 432834 introduced a build error when MALLOC_DEBUG - is used. Switch callid threadstorage to simple - AST_THREADSTORAGE since we no longer need custom cleanup. + * res/res_corosync: Always decline module load, instead of failing - Reported by: Corey Farrell + Returns a 'failure' from the module load routine indicates to Asterisk + that it should abort loading completely. This is rarely - in fact, + really, never - a good option. Aborting load of Asterisk from a dynamic + module implies that the core, and the rest of the dynamic modules, don't + matter: we should abandon all processing. + res_corosync is really not that important. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432851 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch updates the module such that, if it fails to load, it + politely declines (emitting ERROR messages along the way), and allows + Asterisk to continue to function. -2015-03-12 20:12 +0000 [c08fd275bf] Corey Farrell + Note that this issue was keeping Asterisk unit tests from running on + certain build agents. - * Logger: Convert 'struct ast_callid' to unsigned int. + Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f - Switch logger callid's from AO2 objects to simple integers. - This helps in two ways. Copying integers is faster than - referencing AO2 objects, so this will result in a small - reduction in logger overhead. This also erases the possibility - of an infinate loop caused by an invalid callid in - threadstorage. +2015-06-26 20:38 +0000 [399cd8bcd9] Matt Jordan - ASTERISK-24833 #comment Committed callid conversion to trunk. - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4466/ + * main/pbx: Resolve case sensitivity regression in PBX hints + When 8297136f was merged for ASTERISK-25040, a regression was introduced + surrounding the case sensitivity of device names within hints. + Previously, device names - such as 'sip/foo' - were compared in a case + insensitive fashion. Thus, 'sip/foo' was equivalent to 'SIP/foo'. After + that patch, only the case sensitive name would match, i.e., 'SIP/foo'. + As a result, some dialplan hints stopped working. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432834 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch re-introduces case insensitive matching for device names in + hints. -2015-03-12 07:58 +0000 [38ee441ea7] Matt Jordan + ASTERISK-25040 - * main/audiohook: Update internal sample rate on reads + ASTERISK-25202 #close - When an audiohook is created (which is used by the various Spy applications - and Snoop channel in Asterisk 13+), it initially is given a sample rate of - 8kHz. It is expected, however, that this rate may change based on the media - that passes through the audiohook. However, the read/write operations on the - audiohook behave very differently. + Change-Id: If5046a7d14097e1e3c12b63092b9584bb1e9cb4c + (cherry picked from commit 96bbcf495a1da9e607d9b04a44b5c4f49e83cc03) - When a frame is written to the audiohook, the format of the frame is checked - against the internal sample rate. If the rate of the format does not match - the internal sample rate, the internal sample rate is updated and a new SLIN - format is chosen based on that sample rate. This works just fine. +2015-06-26 16:12 +0000 [24eec5a10b] Mark Michelson - When a frame is read, however, we do something quite different. If the format - rate matches the internal sample rate, all is fine. However, if the rates - don't match, the audiohook attempts to "fix up" the number of samples that - were requested. This can result in some seriously large number of samples - being requested from the read/write factories. + * res_pjsip_nat: Adjust when contact should be rewritten. - Consider the worst case - 192kHz SLIN. If we attempt to read 20ms worth of - audio produced at that rate, we'd request 3840 samples (192000 / (1000 / 20)). - However, if the audiohook is still expecting an internal sample rate of 8000, - we'll attempt to "fix up" the requested samples to: + A previous change made the contact only get rewritten if the dialog's + route set was not marked frozen. Unfortunately, while the intent of this + is correct, the dialog's route set actually gets marked as frozen + earlier than expected, especially for UAS dialogs. - samples_converted = samples * (ast_format_get_sample_rate(format) / - (float) audiohook->hook_internal_samp_rate); + Instead, the idea is that the contact needs to not be rewritten if there + is a pre-existing route set on the dialog. This is now accomplished by + checking the dialog's route set list instead of checking if the route + set is frozen. - which is: + Doing this causes some broken tests to begin passing again. - 92160 = 3840 * (192000 / 8000) + ASTERISK-25196 + Reported by Mark Michelson - This results in us attempting to read 92160 samples from our factories, as - opposed to the 3840 that we actually wanted. On a 64-bit machine, this - miraculously survives - despite allocating up to two buffers of length 92160 - on the stack. The 32-bit machines aren't quite so lucky. Even in the case where - this works, we will either (a) get way more samples than we wanted; or (b) get - about 3840 samples, assuming the timing is pretty good on the machine. + Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e - Either way, the calculation being performed is wrong, based on the API users - expectations. +2015-06-19 18:27 +0000 [0ec461a637] Richard Mudgett - My first inclination was to allocate the buffers on the heap. As it is, - however, there's at least two drawbacks with doing this: - (1) It's a bit complicated, as the size of the buffers may change during the - lifetime of the audiohook (ew). - (2) The stack is faster (yay); the heap is slower (boo). + * res_pjsip_outbound_registration.c: Add a serializer shutdown group. - Since our calculation is flat out wrong in the first place, this patch fixes - this issue by instead updating the internal sample rate based on the format - passed into the read operation. This causes us to read the correct number of - samples, and has the added benefit of setting the audihook with the right - SLIN format. + The client_state objects contain a serializer used to send the outbound + REGISTER messages. Once all those message transactions are complete then + the module can shutdown. - Note that this issue was caught by the Asterisk Test Suite as a result of - r432195 in the 13 branch. Because this issue is also theoretically possible - in Asterisk 11, the change is being made here as well. + ASTERISK-24907 #close + Reported by: Kevin Harwell - Review: https://reviewboard.asterisk.org/r/4475/ - ........ + Change-Id: Ibb2fe558f98190f2a06da830e0fadfa25516f547 - Merged revisions 432810 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-06-26 10:41 +0000 [05a2cc1293] Mark Michelson - Merged revisions 432811 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_refer: Prevent sending duplicate headers. + res_pjsip_refer will attempt to add Referred-By or Replaces headers to + outbound INVITEs at times. If the INVITE gets challenged for + authentication, then we will resend the INVITE. Prior to this patch, the + Referred-By or Replaces header would be re-added to the outbound INVITE, + resulting in duplicated headers. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432812 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25204 #close + Reported by Mark Michelson -2015-03-12 07:40 +0000 [29304d10a0] Diederik de Groot (License 6600) + Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d - * Add support for the clang compiler; update RAII_VAR to use BlocksRuntime +2015-06-23 17:43 +0000 [028fa54620] Mark Michelson - RAII_VAR, which is used extensively in Asterisk to manage reference counted - resources, uses a GCC extension to automatically invoke a cleanup function - when a variable loses scope. While this functionality is incredibly useful - and has prevented a large number of memory leaks, it also prevents Asterisk - from being compiled with clang. + * res_pjsip_nat: Rewrite route set when required. - This patch updates the RAII_VAR macro such that it can be compiled with clang. - It makes use of the BlocksRuntime, which allows for a closure to be created - that performs the actual cleanup. + When performing some provider testing, the rewrite_contact option was + interfering with proper construction of a route set when sending an ACK + after receiving a 200 OK response to an INVITE. - Note that this does not attempt to address the numerous warnings that the clang - compiler catches in Asterisk. + The initial INVITE was sent to address sip:foo. The 200 OK had a Contact + header with URI sip:bar. In addition, the 200 OK had Record-Route + headers for sip:baz and sip:foo, in that order. Since the Record-Route + headers had the lr parameter, the result should have been: - Much thanks for this patch goes to: - * The folks on StackOverflow who asked this question and Leushenko for - providing the answer that formed the basis of this code: - http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang - * Diederik de Groot, who has been extremely patient in working on getting this - patch into Asterisk. + * Set R-URI of the ACK to sip:bar. + * Add Route headers for sip:foo and sip:baz, in that order. - Review: https://reviewboard.asterisk.org/r/4370/ + However, the rewrite_contact option resulted in our rewriting the + Contact header on the 200 OK to sip:foo. The result was: - ASTERISK-24133 - ASTERISK-23666 - ASTERISK-20399 - ASTERISK-20850 #close - Reported by: Diederik de Groot - patches: - RAII_CLANG.patch uploaded by Diederik de Groot (License 6600) - ........ + * R-URI remained sip:foo. + * We added Route headers for sip:foo and sip:baz, in that order. - Merged revisions 432807 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + The result was that sip:bar was not indicated in the ACK at all, so the + far end never received our ACK. The call eventually dropped. - Merged revisions 432808 from http://svn.asterisk.org/svn/asterisk/branches/13 + The intention of rewrite_contact is to rewrite the most immediate + destination of our SIP request to be the same address on which we + received a request or response. In the case of processing a SIP response + with Record-Route headers, this means that instead of rewriting the + Contact header, we should instead rewrite the bottom-most Record-Route + header. In the case of processing a SIP request with Record-Route + headers, this means we rewrite the top-most Record-route header. + Like when we rewrite the Contact header, we also ensure to update + the dialog's route set if it exists. + ASTERISK-25196 #close + Reported by Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432809 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f +2015-06-19 16:16 +0000 [84c12f9e0c] Richard Mudgett -2015-03-11 11:39 +0000 [4115e327ac] Richard Mudgett + * threadpool, res_pjsip: Add serializer group shutdown API calls. - * res_pjsip: Move internal init/destroy prototypes to private header file. + A module trying to unload needs to wait for all serializers it creates and + uses to complete processing before unloading. - Done as a separate commit from a finding in - https://reviewboard.asterisk.org/r/4467/ - ........ + ASTERISK-24907 + Reported by: Kevin Harwell - Merged revisions 432787 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I8c80b90f2f82754e8dbb02ddf3c9121e5e966059 +2015-06-16 15:06 +0000 [602c4b74b5] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432788 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_outbound_registration.c: Fix handle_client_state_destruction() refs -2015-03-11 10:26 +0000 [89b65f5dda] Richard Mudgett + * handle_client_state_destruction() must always be passed a ref to + client_state because it will always unref client_state. + handle_registration_response() was not passing a client_state ref. - * res_pjsip: Fix pjsip.conf type=global object default value handling. + * Made the final un-REGISTER message get sent normally using the pjproject + register control structure in handle_client_state_destruction(). The + previous code attempted to short circuit the response handling for the + module to unload. That doesn't work for a couple reasons. One, + pjsip_regc_send() may call the registered callback before it returns and + unbalance the client_state ref count. Two, the registered callback + handles any authentication for the un-REGISTER message. - When a type=global section is not defined in pjsip.conf the global - defaults are not applied. As a result the mandatory Max-Forwards header - is not added to SIP messages for res_pjsip/chan_pjsip. + * Made the distinction between internal registration state and external + registration status with sip_outbound_registration_status_str(). This is + necessary to avoid altering documented AMI messages with internal + changes. - The handling of pjsip.conf type=global objects has several problems: + * Removed references to client_state->client outside of the serializer + thread. When handle_client_state_destruction() destroys the pjproject + register control structure that memory is freed and cannot be referenced + anymore. These accesses were to provide information for debug and + off-nominal warning messages. - 1) If the global object is missing the defaults are not applied. + * In sip_outbound_registration_timer_cb() you should not access entry->id + after unrefing client_state because the passed in entry is normally + pointing to the timer entry in the client_state object. - 2) If the global object is missing the default_outbound_endpoint's default - value is not returned by ast_sip_global_default_outbound_endpoint(). + ASTERISK-24907 + Reported by: Kevin Harwell - 3) Defines are needed so default values only need to be changed in one - place. + Change-Id: Ia7b446d8644b6b4550ef5bea49527671de65183f - * Added a sorcery instance observer callback to check if there were any - type=global sections loaded. If there were more than one then issue an - error message. If there were none then apply the global defaults. +2015-06-15 15:28 +0000 [8c6a95a9ac] Richard Mudgett - * Fixed ast_sip_global_default_outbound_endpoint() to return the - documented default when no type=global object is defined. + * res_pjsip_outbound_registration.c: Use ast_sorcery_object_unregister() API - * Made defines for the global default values. + The sorcery pjsip 'registration' config object needs to be destroyed on + module unload. Otherwise, a reload of res_pjsip could try to use + callbacks for a previously unloaded instance of the module provided by + ast_sorcery_object_register() or one of the variants. Also, if + res_pjsip_outbound_registration were subsequently reloaded, the sorcery + config field objects would be registered in sorcery twice. - * Increased the default_useragent[] size because SVN version strings can - get lengthy and 128 characters may not be enough. + ASTERISK-24907 + Reported by: Kevin Harwell - * Fixed an off-nominal code path ref leak in global_alloc() if the string - fields fail to initialize. + Change-Id: I304fad13dece2604af48353f6c6d9d5c7b064697 - * Eliminated RAII_VAR in get_global_cfg() and - ast_sip_global_default_outbound_endpoint(). +2015-06-25 06:42 +0000 [e4a2ef9e4e] Joshua Colp - ASTERISK-24807 #close - Reported by: Anatoli + * channel: Remove ignore of answer on non-outgoing channels. - Review: https://reviewboard.asterisk.org/r/4467/ - ........ + Due to the way that channels can now be moved around inside of + Asterisk it is possible for the outgoing flag of a channel to get + cleared before it has been answered. This results in the bridge + not receiving notification that the outgoing leg has been answered. - Merged revisions 432766 from http://svn.asterisk.org/svn/asterisk/branches/13 + This most easily exhibits itself with DTMF based blond transfers. + Since the answer of the outgoing leg is ignored the other party + continues to receive both a locally generated ringing and the + media stream of the outgoing leg upon its answer. This results + in no media being heard. + This change removes the ignore of the answer and allows it + to pass through. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432767 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25171 #close -2015-03-11 10:22 +0000 [185d2e082a] Richard Mudgett + Change-Id: I82aedcec4f89f34a2e5472086dfc9a6c775bca8e - * res_pjsip: Fixed invalid empty Server and User-Agent SIP headers. +2015-06-15 15:28 +0000 [20f3d77ab9] Richard Mudgett - Setting pjsip.conf useragent to an empty string results in an empty SIP - header being sent. + * sorcery: Add ast_sorcery_object_unregister() API call. - * Made not add an empty SIP header item to the global SIP headers list. + Find and unlink the specified sorcery object type to complement + ast_sorcery_object_register(). Without this function you cannot + completely unload individual modules that use sorcery for configuration. - Review: https://reviewboard.asterisk.org/r/4467/ - ........ + ASTERISK-24907 + Reported by: Kevin Harwell - Merged revisions 432764 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I1c04634fe9a90921bf676725c7d6bb2aeaab1c88 +2015-06-15 13:38 +0000 [4313f32969] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432765 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_outbound_registration.c: Reorder load_module() and unload_module(). -2015-03-10 18:09 +0000 [2889f074a0] Joshua Colp + It is best if the loading code creates and initializes the module's + infrastructure before letting the system know of its existence. The + unloading code needs to reverse the actions of the loading code and in the + reverse order. - * core: Don't create snapshots with locks. + ASTERISK-24907 + Reported by: Kevin Harwell - Snapshots are immutable and are never changed. Allocating them - with a lock is wasteful. + Change-Id: I5d151383e9787b5b60aa5e1627b10f040acdded4 - Review: https://reviewboard.asterisk.org/r/4469/ - ........ +2015-06-23 14:34 +0000 [890c923786] Richard Mudgett - Merged revisions 432742 from http://svn.asterisk.org/svn/asterisk/branches/13 + * AMI: Add Linkedid to the standard channel snapshot AMI event headers. + * The AMI version is bumped to 2.8.0. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432743 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25189 #close + Reported by: John Hardin -2015-03-10 16:33 +0000 [15d266bf85] Javier Acosta (License 6690) + Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac - * res/res_config_odbc: Fix improper escaping of backslashes with MySQL +2015-06-24 14:30 +0000 [2602a7484b] Richard Mudgett - When escaping backslashes with MySQL, the proper way to escape the characters - in a LIKE clause is to escape the '\' four times, i.e., '\\\\'. To quote the - MySQL manual: + * test.c: Add unit test registration checks for summary and description. - "Because MySQL uses C escape syntax in strings (for example, “\n” to represent - a newline character), you must double any “\” that you use in LIKE strings. - For example, to search for “\n”, specify it as “\\n”. To search for “\”, - specify it as “\\\\”; this is because the backslashes are stripped once by the - parser and again when the pattern match is made, leaving a single backslash to - be matched against." + Added checks when a unit test is registered to see that the summary and + description strings do not end with a new-line '\n' for consistency. - ASTERISK-24808 #close - Reported by: Javier Acosta - patches: - res_config_odbc.diff uploaded by Javier Acosta (License 6690) - ........ + The check generates a warning message and will cause the + /main/test/registrations unit test to fail. - Merged revisions 432720 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Updated struct ast_test_info member doxygen comments. - Merged revisions 432721 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I295909b6bc013ed9b6882e85c05287082497534d +2015-06-24 14:39 +0000 [2b0482d699] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432722 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Unit tests: Fix unit test description strings. -2015-03-10 13:13 +0000 [ab6e2c93f3] Graham Barnett (License 6685) + Analyzing the code shows that the unit test summary and description + strings should not end with a new-line character. Where these strings are + used in the code a new-line is provided for output. - * app_voicemail: Fix crash with IMAP backends when greetings aren't present + Change-Id: I129284f5e7ca93d82532334076da4c462d3d9fba - When an IMAP backend is in use and greetings are set to be used, but aren't - present for a user in their IMAP folder, Asterisk will crash. This occurs - due to the mailstream being set to the 'greetings' folder and being left - in that particular state, regardless of the success/failure of the attempt - to access the folder the mailstream points to. Later access of the mailstream - assumes that it points to the 'INBOX' (or some other folder), resulting in - either a crash (if the greetings folder didn't exist and the mailstream is - invalid) or an inability to read messages from the 'INBOX' folder. +2015-06-23 11:21 +0000 [e99e654d75] Joshua Colp - This patch restores the mailstream to its correct state after accessing the - greetings. This fixes the crash, and sets the mailstream to the state that - VoiceMailMain expects. + * app_dial: Hold reference to calling channel formats when dialing outbound. - Note that while ASTERISK-23390 also contained a patch for this issue, the - patch on ASTERISK-24786 is the one being merged here. + Currently when requesting a channel the native formats of the + calling channel are provided to the core for usage when dialing + the outbound channel. This occurs without holding the channel lock + or keeping a reference to the formats. This is problematic as + the channel driver may end up changing the formats during this time. + In the case of chan_sip this happens when an SDP negotiation + completes. - Review: https://reviewboard.asterisk.org/r/4459/ + This change makes it so app_dial keeps a reference to the native + formats of the calling channel which guarantees that they will + remain valid for the period of time needed. - ASTERISK-23390 #close - Reported by: Ben Smithurst + ASTERISK-25172 #close - ASTERISK-24786 #close - Reported by: Graham Barnett - Tested by: Graham Barnett - patches: - app_voicemail.c.patch.SIGSEGV3rev2 uploaded by Graham Barnett (License 6685) - ........ + Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db +2015-06-17 05:04 +0000 [80e82dc97f] Joshua Colp - Merged revisions 432695 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip_mwi: Set up unsolicited MWI upon registration. - Merged revisions 432696 from http://svn.asterisk.org/svn/asterisk/branches/13 + The res_pjsip_mwi previously required a reload to set up the proper + subscriptions to allow unsolicited MWI to work. This change + makes it so the act of registering will also cause this to occur. + This is particularly useful if realtime is involved as no reload + needs to occur within Asterisk to cause the MWI information + to get sent. + ASTERISK-25180 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432697 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252 -2015-03-10 13:05 +0000 [79e9b37ad0] Ed Hynan (Licnese 6680) +2015-06-22 15:11 +0000 [35a99b6394] Kevin Harwell - * localtime: Fix file descriptor leak on kqueue(2) systems + * bridge.c: Hangup attended transfer target if bridged - The localtime management in the Asterisk core contains a thread that watches - for changes in the local timezone. On systems where the directory containing - /etc/localtime is modified frequently, the thread monitoring the changes will - be woken up to determine if any changes in timezone have occurred. When using - kqueue(2), this can cause a leak of file descriptors due to some improper - management of resources. + After completing an attended transfer the transfer target channel was not being + hung up after leaving the bridge. Added an explicit softhangup to hangup said + channel, but only if it was previously bridged. - This patch updates the kqueue(2) handling in localtime, such that is no longer - leaks resources. + ASTERISK-24782 #close + Reported by: John Bigelow - Review: https://reviewboard.asterisk.org/r/4450/ + Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada - ASTERISK-24739 #close - Reported by: Ed Hynan - patches: - 11.15.0-u.diff uploaded by Ed Hynan (Licnese 6680) - 11.7.0-u.diff uploaded by Ed Hynan (License 6680) - svn-trunk-Jan-26-2015-u.diff uploaded by Ed Hynan (License 6680) - ........ +2015-06-17 16:23 +0000 [036bc0012f] Richard Mudgett - Merged revisions 432691 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip_outbound_registration.c: Add missing line endings to CLI commands - Merged revisions 432693 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I39ae612746d892d2dbe86f3ff2d7027fa1da57f7 +2015-06-12 14:29 +0000 [bec7435945] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432694 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_outbound_registration.c: Eliminate simple RAII_VAR() usage. -2015-03-10 11:08 +0000 [e7ee83ea90] Richard Mudgett + Change-Id: I399cb9d61bbba706b48c98e0bf75e98984cd9a9e - * res_pjsip_refer: Fix occasional unexpected BYE sent after receiving a REFER. +2015-06-12 13:33 +0000 [c2519fdf1c] Richard Mudgett - A race condition happened between initiating a transfer and requesting - that a dialog termination be delayed. Occasionally, the transferrer - channels would exit the bridge and hangup before the dialog termination - delay was requested. + * res_pjsip_outbound_registration.c: Misc code cleanups. - * Made request dialog termination delay before initiating the transfer - action. If the transfer fails then cancel the delayed dialog termination - request. + * Break some long lines. - ASTERISK-24755 #close - Reported by: John Bigelow + * Fix doxygen comment. - Review: https://reviewboard.asterisk.org/r/4460/ - ........ + Change-Id: I8f12ba6822f84d5e7bb575280270cd7e2fefb305 - Merged revisions 432668 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-06-22 09:26 +0000 [a419c69def] Alexander Traud (License 6520) + * chan_sip: Reload peer without its old capabilities. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432669 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + On reload, previously allowed codecs were not removed. Therefore, it was not + possible to remove codecs while Asterisk was running. Furthermore, newly added + codecs got appended behind the previous codecs. Therefore, it was not possible + to add a codec with a priority of #1. This change removes the old capabilities + before the current ones are added. -2015-03-09 11:13 +0000 [1ce529d30e] Kevin Harwell + ASTERISK-25182 #close + Reported by: Alexander Traud + patches: + asterisk_13_allow_codec_reload.patch uploaded by Alexander Traud (License 6520) - * res_pjsip: allow configuration of endpoint identifier query order + Change-Id: I62a06bcf15e08e8c54a35612195f97179ebe5802 - It's possible to have a scenario that will create a conflict between endpoint - identifiers. For instance an incoming call could be identified by two different - endpoint identifiers and the one chosen depended upon which identifier module - loaded first. This of course causes problems when, for example, the incoming - call is expected to be identified by username, but instead is identified by ip. - This patch adds a new 'global' option to res_pjsip called - 'endpoint_identifier_order'. It is a comma separated list of endpoint - identifier names that specifies the order by which identifiers are processed - and checked. +2015-06-20 19:38 +0000 [74616ae43d] Joshua Colp - ASTERISK-24840 #close - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4455/ - ........ + * chan_sip: Destroy peers without holding peers container lock. - Merged revisions 432638 from http://svn.asterisk.org/svn/asterisk/branches/13 + Due to the use of stasis_unsubscribe_and_join in the peer destructor + it is possible for a deadlock to occur when an event callback is + occurring at the same time. + This happens because the peer may be destroyed while holding the + peers container lock. If this occurs the event callback will never + be able to acquire the container lock and the unsubscribe will + never complete. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432639 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change makes it so the peers that have been removed from the + peers container are not destroyed with the container lock held. -2015-03-07 19:47 +0000 [a5f80f1781] Joshua Colp + ASTERISK-25163 #close - * res_rtp_asterisk: Fix wrongful use of USE_PJPROJECT define. + Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33 - As pjproject is now used as a shared library a different define, - HAVE_PJPROJECT, is used to specify if pjproject is present. +2015-06-18 13:16 +0000 [9015bb4c8c] Mark Michelson - ASTERISK-24830 #close - Reported by: Stefan Engström - ........ + * Resolve race conditions involving Stasis bridges. - Merged revisions 432614 from http://svn.asterisk.org/svn/asterisk/branches/13 + This resolves two observed race conditions. + First, a bit of background on what the Stasis application does: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432615 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + 1a Creates a stasis_app_control structure. This structure is linked into + a global container and can be looked up using a channel's unique ID. + 2a Puts the channel in an event loop. The event loop can exit either + because the stasis_app_control structure has been marked done, or + because of some other factor, such as a hangup. In the event loop, the + stasis_app_control determines if any specific ARI commands need to be + run on the channel and will run them from this thread. + 3a Checks if the channel is bridged. If the channel is bridged, then + ast_bridge_depart() is called since channels that are added to Stasis + bridges are always imparted as departable. + 4a Unlink the stasis_app_control from the container. -2015-03-06 16:59 +0000 [affcf1d766] Richard Mudgett + When an ARI command is received by Asterisk, the following occurs + 1b A thread is spawned to handle the HTTP request + 2b The stasis_app_control(s) that corresponds to the channel(s) in the + request is/are retrieved. If the stasis_app_control cannot be + retrieved, then it is assumed that the channel in question has exited + the Stasis app or perhaps was never in Stasis in the first place. + 3b A command is queued onto the stasis_app_control, and the channel's + event loop thread is signaled to run the command. + 4b While most ARI commands do nothing further, some, such as adding or + removing channels from a bridge, will block until the command they + issued has been completed by the channel's event loop. - * res_pjsip_refer: Make safely get the context for a blind transfer. + The first race condition that is solved by this patch involves a crash + that can occur due to faulty detection of the channel's bridged status + in step 3a. What can happen is that in step 2a, the event loop may run + the ast_bridge_impart() function to asynchronously place the channel + into a bridge, then immediately exit the event loop because the channel + has hung up. In step 3a, we would detect that the channel was not + bridged and would not call ast_bridge_depart(). The reason that the + channel did not appear to be bridged was that the depart_thread that is + spawned by ast_bridge_impart() had not yet started. That is the thread + where the channel is marked as being bridged. Since we did not call + ast_bridge_depart(), the Stasis application would exit, and then the + channel would be destroyed Then the depart_thread would start up and + try to manipulate the destroyed channel, causing a crash. - Made safely get the TRANSFER_CONTEXT channel value while the channel is - locked in refer_incoming_attended_request() and - refer_incoming_blind_request(). The pointer returned by - pbx_builtin_getvar_helper() is only valid while the channel is locked. - ........ + The fix for this is to switch from using ast_channel_is_bridged() to + checking the NULLity of ast_channel_internal_bridge_channel() to + determine if ast_bridge_depart() needs to be called. The channel's + internal bridge_channel is set when ast_bridge_impart() is called and + is NULLed by the call to ast_bridge_depart(). If the channel's internal + bridge_channel is non-NULL, then the channel must have been imparted + into the bridge and needs to be departed, even if the actual bridging + operation has not yet started. By departing the channel when necessary, + the thread that is running the Stasis application will block until the + bridge gives the okay that the depart_thread has exited. - Merged revisions 432594 from http://svn.asterisk.org/svn/asterisk/branches/13 + The second race condition that is solved by this patch involves a leak + of HTTP handler threads. The problem was that step 2b would successfully + retrieve a stasis_app_control structure. Then step 2a would exit the + channel from the event loop due to a hangup. Steps 3a and 4a would + execute, and then finally steps 3b and 4b would. The problem is that at + step 4b, when attempting to add a channel to a bridge, the thread would + block forever since the channel would never execute the queued command + since it was finished with the event loop. This meant that the HTTP + handling thread would be leaked, along with any references that thread + may have owned (in my case, I was seeing bridges leaked). + The fix for this is to hone in better on when the channel has exited the + event loop. The stasis_app_control structure has an is_done field that + is now set at each point where the channel may exit the event loop. If + step 2b retrieves a valid stasis_app_control structure but the control + is marked as done, then the attempted operation exits immediately since + there will be nothing to service the attempted command. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432595 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25091 #close + Reported by Ilya Trikoz -2015-03-06 16:18 +0000 [090ab1735b] Richard Mudgett + Change-Id: If66265b73b4c9f8f58599124d777fedc54576628 +2015-06-16 11:13 +0000 [723a9d4225] Mark Michelson - * res_pjsip_refer: Made refer_attended_alloc() not create the ao2 object with a lock. + * Parking: Add documentation for AMI ParkedCallSwap event. - The lock is unused. - ........ + This event was added some time ago in order to clarify when a channel + took the place of another channel in a parking lot. However, there was + no XML documentation added for the event. This patch adds the XML + documentation. - Merged revisions 432574 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24900 #close + Reported by Rusty Newton + Change-Id: I4cfe7777c4b94bbff91c9221c6096a7a02a92eac +2015-06-15 16:40 +0000 [79bf56c78a] Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432579 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * func_pjsip_aor: Fix leaked contact from iterator. -2015-03-06 15:38 +0000 [b85cb7ea1b] Jonathan Rose + ASTERISK-25162 #close - * app: Add functions to swap voicemail function table for testing purposes - ........ + Change-Id: Id79aa3c6fe490016ee98efc97ac4c1d3f461f97e - Merged revisions 432556 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-06-12 16:58 +0000 [31c77b157b] Kevin Harwell + * res_pjsip: Add option to force G.726 to be treated as AAL2 packed. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Some phones send g.726 audio packed for AAL2, which differs from what is + recommended by RFC 3351. If Asterisk receives audio formatted as such when + negotiating g.726 then it sounds a bit distorted. Added an option to + res_pjsip_endpoint that allows g.726 negotiated audio to be treated as g.726 + AAL2 packed. -2015-03-06 14:24 +0000 [c7cc1b3059] Richard Mudgett + ASTERISK-25158 #close + Reported by: Steve Pitts - * chan_dahdi/sig_analog: Fix distinctive ring detection to suck less. + Change-Id: Ie7e21f75493d7fe53e75e12c971e72f5afa33615 - The distinctive ring feature interferes with detecting Caller ID and - appears to have been broken for years. What happens is if you have a - ring-ring cadence as used in the UK you get too many DAHDI events for the - distinctive ring pattern array and Caller ID detection is aborted. I - think when Zapata/DAHDI added the ring begin event it broke distinctive - ring. More events happen than before and the code does no filtering of - which event times are recorded in the pattern array. +2015-06-14 19:48 +0000 [de8c7f46ed] Matt Jordan - * Made distinctive ring only record the ringt count when the ring ends - instead of on just any DAHDI event. Distinctive ring can be ring, - ring-ring, ring-ring-ring, or different ring durations for the up to three - rings. + * main/cdr: Carry over the disable flag when 'disable all' is specified - * Fixed the distinctive ring detection enable (chan_dahdi.conf option - usedistinctiveringdetection) to be per port instead of somewhat per port - and somewhat global. This has been broken since v1.8. + The CDR_PROP function (as well as the NoCDR application) set the + 'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This + flag is supposed to be applied to all CDRs that are currently in the + chain, as well as all CDRs that may be created in the future. Currently, + however, the flag is only applied to the existing CDRs in the chain; new + CDRs do not receive the 'disable all' flag. In particular, this affects + parallel dials, which generate new CDRs for each pair of channels in + the dial attempt. - * Fixed using the default distinctive ring context when the detected - pattern does not match any configured dringX patterns. The default - context did not get set when the previous call was a matched distinctive - ring pattern and the current call is not matched. This has been broken - since v1.8. + This patch carries over the 'disable all' flag when it is specified on a + CDR and a new CDR is generated for the chain. - * Made distinctive ring have no effect on Caller ID detection when it is - disabled. Caller ID detection just monitors for 10 seconds before giving - up. + ASTERISK-24344 #close - * Fixed leak of struct callerid_state memory when a polarity reversal - during Caller ID detection causes the incoming call to be aborted. + Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e +2015-06-12 14:28 +0000 [78ea356e78] Matt Jordan - DAHDI-1143 - AST-1545 - ASTERISK-24825 #close - Reported by: Richard Mudgett + * main/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines - ASTERISK-17588 - Reported by: Daniel Flounders + When a parallel dial occurs, a new CDR will be created for each dial + attempt that is made. In most circumstances, the act of creating each + CDR in the chain will include a step that updates the Party A snapshot, + which causes the context/extension of the Party A to be copied onto the + CDR object. - Review: https://reviewboard.asterisk.org/r/4444/ - ........ + However, when the Party A is in a subroutine, we explicitly do *not* + copy the context/extension onto the CDR. This prevents the Macro or + GoSub routine name from blowing away the context/extension that the + channel was originally executing in. For the original CDR, this is not a + problem: the original CDR already recorded the last known 'good' state + of the channel just prior to it going into the subroutine. However, for + newly generated CDRs in a chain, there is no context/extension set on + them. Since we are in a subroutine, we will never set the Party A's + context/extension on the CDR, and we end up with a CDR with no + destination recorded on it. - Merged revisions 432530 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This patch updates the creation of a chained CDR such that it copies + over the original CDR's context/extension. This is the last known "good" + state of the CDR, and is a reasonable starting point for the newly + generated CDR. In the case where we are not in a subroutine, subsequent + code will update the location of the CDR from the Party A information; + in the case where we are in a subroutine, the context/extension on the + original CDR is the correct information. - Merged revisions 432534 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24443 #close + Change-Id: I6a3ef0d6e458d3b9b30572feaec70f2964f3bc2a - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432551 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-06-11 08:18 +0000 [3f57f3f8ec] Damian Ivereigh -2015-03-06 13:34 +0000 [f1ab2c5e8b] Richard Mudgett + * chan_sip.c: Update dialog fromtag after request with auth - * chan_sip: Fix realtime locking inversion when poking a just built peer. + If a client sends and INVITE which is 401 rejected, then subsequently + sends a new INVITE with the auth info and uses a different fromtag + from the first INVITE, Asterisk will accept the new INVITE as part of + the original dialog - match_req_to_dialog() specifically ignores the + fromtag. However it does not update the stored dialog with the new + fromtag. - When a realtime peer is built it can cause a locking inversion when the - just built peer is poked. If the CLI command "sip show channels" is - periodically executed then a deadlock can happen because of the locking - inversion. + This results in Asterisk being unable to match future packets that are + part of this dialog (such as the ACK to the OK or the OK to the BYE), + and the call is dropped. - * Push the peer poke off onto the scheduler thread to avoid the locking - inversion of the just built realtime peer. + This problem was originally found when using an NEC-i SV8100-GE (NEC SIP + Card). - AST-1540 - ASTERISK-24838 #close - Reported by: Richard Mudgett + * After a successful match of a packet to the dialog, if the packet is + not a SIP_RESPONSE, authentication is present and the fromtags are + different, the stored fromtag is updated with the one from the recent + INVITE. - Review: https://reviewboard.asterisk.org/r/4454/ - ........ + ASTERISK-25154 #close + Reported by: Damian Ivereigh + Tested by: Damian Ivereigh - Merged revisions 432526 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e - Merged revisions 432528 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-06-11 18:52 +0000 [30a0f2d9ac] Matt Jordan + * chan_pjsip: Set the context and extension on the channel when created - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432529 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Prior to this patch, chan_pjsip was failing to pass the endpoint's + context and the desired extension to the ast_channel_alloc_* routine. + This caused a new channel snapshot to be issued without a context and + extension, which can cause some reporting issues for users of AMI, CEL, + and other APIs. The channel driver would later set the context and + extension on the channel such that the channel would start in the + correct location in the dialplan, but the information reported in the + initial event would be incorrect. -2015-03-05 10:40 +0000 [5c3e33b3ca] gtjoseph + This patch modifies the channel driver such that it now passes the + context and extension directly into the allocation routine. This + provides the information in the new channel snapshot published over + Stasis. - * app_voicemail: Fix compile breaking in app_voicemail with IMAP_STORAGE. + ASTERISK-25156 #close + Reported by: cloos - There is a leftover "assert" in app_voicemail/__messagecount that references - variables that don't exist. This causes the compile to fail when - --enable-dev-mode and IMAP_STORAGE are selected. + Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e - This patch removes the assert. +2015-06-10 18:28 +0000 [dbb067279e] Joshua Colp - Tested-by: George Joseph + * bridge: When performing a blonde transfer update connected line information. - Review: https://reviewboard.asterisk.org/r/4461/ - ........ + When performing a blonde transfer the code uses the old masquerade + mechanism to move a channel around. As a result of this certain information, + such as connected line, is moved between the channels involved. Upon + completion of the move a frame is queued which is supposed to update the + connected line information on the channel. This does not occur as the + code considers it a redundant update since the masquerade operation + updated the channel (but did not inform it of the new connected line + information). The code also does not queue a connected line update + to be handled by the thread handling the channel. Without this any + other channel that may be loosely involved does not know it is + talking to a different caller. - Merged revisions 432484 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This change does the following to resolve this: - Merged revisions 432485 from http://svn.asterisk.org/svn/asterisk/branches/13 + 1. The indicated connected line information is cleared upon + completion of the masquerade operation when doing a blonde transfer. + This prevents the connected line update from being considered + redundant. + 2. A connected line update frame is now queued upon the completion + of the masquerade operation so any other channel loosely involved + knows that there is a different caller. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432486 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25157 #close + Reported by: Joshua Colp -2015-03-04 12:55 +0000 [41ba8fd7c0] Matt Jordan + Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20 - * translate: Prevent invalid memory accesses on fast shutdown +2015-06-11 14:39 +0000 [a2f4d03c87] Richard Mudgett - When a 'core restart now' or 'core stop now' is executed and a channel is - currently in a media operation, the translator matrix can be destroyed while a - channel is currently blocked on getting the best translation choice - (see ast_translator_best_choice). When the channel gets the mutex, the - translation matrix now has invalid memory, and Asterisk crashes. + * app_directory: Fix crash when using the alias option 'a'. - This patch does two things: - (1) We now only clean up the translation matrix on a graceful shutdown. In that - case, there are no channels, and so there is no risk of this occurring. - (2) We also now set the __matrix and __indextable to NULL. In some initial - backtraces when this occurred, it looked as if there was a memory corruption - occurring, and it wasn't until we determined that something had restarted - Asterisk that the issue became clear. By setting these to NULL on shutdown, - it becomes a bit easier to determine why a crash is occurring. + The voicemail.conf mailbox key/value pair is defined as: + =[[,[,[,[,]]]]] + Where all fields in the value including the field values are optional. - Note that we could litter the code with NULL checks on the __matrix, but the - act of making the translation matrix cleaned up on shutdown should preclude - this issue from occurring in the first place, and this part of the code needs - to be as fast as possible. + Since the parsing code for the mailbox key/value pair is sloppy, this + patch tightens the parsing for the directory information. - Review: https://reviewboard.asterisk.org/r/4457/ - ........ + * Renamed the 'pos' and 'bufptr' variables to 'name' and 'options' + respectively in search_directory_sub(). Those names make more sense. - Merged revisions 432453 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Made sure that search_directory_sub() is dealing with the voicemail.conf + mailbox options field if it even exists when looking for the 'hidefromdir' + and 'alias' options. + * Fix crash if a voicemail.conf mailbox is just + =, when the 'a' option is used. If there were no + fields after the name then the 'options' pointer was not checked for NULL. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432455 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fix users.conf alias processing if the 'a' option is used. The wrong + variable was used. -2015-03-02 13:15 +0000 [278ea2f468] Matt Jordan + ASTERISK-25087 #close + Reported by: Chet Stevens - * res/res_pjsip_sdp_rtp: Revert portion of r432195 + Change-Id: I86052ea77307beddddba5279824d39dc0d593374 - Unfortunately, while initial testing with ConfBridge did not reproduce the - audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing - did show that bridge_softmix and/or ConfBridge has a severe problem bridging - two or more participants at different sampling rates. Sometimes, it even picks - odd sampling rates that cause hideous audio problems. +2015-06-09 15:31 +0000 [a2b718f4f6] Richard Mudgett - This patch backs out the offending portion of the code until the issues in - the affected bridging modules can be more properly analyzed. + * res_pjsip.h: Fix some doxygen comments. - ASTERISK-24841 - ........ + Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976 - Merged revisions 432423 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-06-05 13:46 +0000 [32ddf6d86b] Richard Mudgett + * taskprocessor.c: Remove extra unref from off-nominal path. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432425 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Iee3bd8c8a528776056972066698fe735f0f6cf60 -2015-02-27 12:31 +0000 [9e841e4fb6] Richard Mudgett +2015-04-20 16:00 +0000 [cf98c744d5] Yousf Ateya - * ARI: Fix crash if integer values used in JSON payload 'variables' object. + * chan_iax2: Prevent deadlock between hangup and sending lagrq/ping - Sending the following ARI commands caused Asterisk to crash if the JSON - body 'variables' object passes values of types other than strings. + channels/chan_iax.c: Prevent the deadlock between iax2_hangup and send_lagrq/ + send_ping. This deadlock happens because the scheduled task send_lagrq(or + send_ping) starts execution after the call hangup procedure starts but before + it deletes the tasks in the scheduler. - POST /ari/channels - POST /ari/channels/{channelid} - PUT /ari/endpoints/sendMessage - PUT /ari/endpoints/{tech}/{resource}/sendMessage + The solution is to delete scheduled lagrq (and ping) task asynchronously + (i.e. schedule AST_SCHED_DEL for these tasks); By this, AST_SCHED_DEL will + be called in a new context (doesn't have callno locked). - * Eliminated RAII_VAR usage in ast_ari_channels_originate_with_id(), - ast_ari_channels_originate(), ast_ari_endpoints_send_message(), and - ast_ari_endpoints_send_message_to_endpoint(). + This commit also cleans up the procedure of sending LAGRQ and PING. - ASTERISK-24751 #close - Reported by: jeffrey putnam + main/sched.c: Do not assert when deleting non existant entry from scheduler. + This assert seems to be the reason for a lot of awkward code to avoid it. - Review: https://reviewboard.asterisk.org/r/4447/ - ........ + ASTERISK-24983 #close + Reported by: Y Ateya - Merged revisions 432404 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I03bec1fc8faacb89630269e935fa667c6d6c080c +2015-05-31 12:37 +0000 [8af6c9cf6b] Ivan Poddubny - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432405 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_transport_websocket: Fix use-after-free bugs. -2015-02-26 12:53 +0000 [d79670b269] Scott Griepentrog + This patch fixes use-after-free bugs caught by AddressSanitizer. - * Dial API: add self destruct option when complete + 1. PJSIP transport manager may decide to destroy transport on its own. + For example, when the contact registered via websocket has not renewed + its registration in time. The transport was destoyed, but the websocket + listener thread was still active until the socket closes, and then tried + to call transport_shutdown on transport that has been freed. - This patch adds a self-destruction option to the - dial api. The usefulness of this is mostly when - using async mode to spawn a separate thread used - to handle the new call, while the calling thread - is allowed to go on about other business. + Also, the transport destructor accessed wstransport->rdata.tp_info.pool + right after freeing memory that contained wstransport itself. - The only alternative to this option would be the - calling thread spawning a new thread, or hanging - around itself waiting to destroy the dial struct - after completion. + This patch converts transport to an ao2 object, allowing it to be + refcounted, so that it is available until both websocket listener and + pjsip transport manager are finished with it. - Example of use (minus error checking): + 2. The websocket listener deletes the last reference on websocket session + when the tcp connection is closed, and it gets destroyed, but + the transport manager may still use it, for example when disconnect + happens in the middle of a SIP transaction. - struct ast_dial *dial = ast_dial_create(); + A new reference to websocket session has been added that is released + with the transport to prevent this. - ast_dial_append(dial, "PJSIP", "200", NULL); + ASTERISK-25096 #close + Reported by: Josh Kitchens - ast_dial_option_global_enable(dial, AST_DIAL_OPTION_ANSWER_EXEC, "Echo"); - ast_dial_option_global_enable(dial, AST_DIAL_OPTION_SELF_DESTROY, NULL); + ASTERISK-24963 #close + Reported by: Badalian Vyacheslav - ast_dial_run(dial, NULL, 1); + Change-Id: Idc0b63eb6e459c1ddfb2430127d34b3c4d8d373b - The dial_run call will return almost immediately - after spawning the new thread to run and monitor - the dial. If the call is answered, it is placed - into the echo app. When completed, it will call - ast_dial_destroy() on the dial structure. +2015-06-09 13:41 +0000 [3046bc17ed] ibercom - Note that any allocations made to pass values to - ast_dial_set_user_data() or dial options must be - free'd in a state callback function on any of: - AST_DIAL_RESULT_UNASWERED, - AST_DIAL_RESULT_ANSWERED, - AST_DIAL_RESULT_HANGUP, or - AST_DIAL_RESULT_TIMEOUT. + * weakref attribute detection broken with gcc 4.6 and higher - Review: https://reviewboard.asterisk.org/r/4443/ - ........ + GCC 4.7 Manual: + http://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Function-Attributes.html - Merged revisions 432385 from http://svn.asterisk.org/svn/asterisk/branches/13 + weakref ("target") + A weak reference is an alias that does not by itself require a definition + to be given for the target symbol. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432386 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-22559 #close + Reported by: Ibercom -2015-02-26 11:12 +0000 [d04fbb0f9d] Kevin Harwell + Change-Id: I36a136cae947b65187a697533416f9ff9a0b8cdf - * app_chanspy, channel: fix frame leaks +2015-06-08 10:09 +0000 [55c8daf88b] Corey Farrell - Fixed a couple of frame leaks that were found during testing. + * Fix unsafe uses of ast_context pointers. - ASTERISK-24828 #close - Reported by: John Hardin - Review: https://reviewboard.asterisk.org/r/4445/ - ........ + Although ast_context_find, ast_context_find_or_create and + ast_context_destroy perform locking of the contexts table, + any context pointer can become invalid at any time that the + contexts table is unlocked. This change adds locking around + all complete operations involving these functions. - Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Places where ast_context_find was followed by ast_context_destroy + have been replaced with calls ast_context_destroy_by_name. - Merged revisions 432363 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25094 #close + Reported by: Corey Farrell + Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432364 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-06-04 07:14 +0000 [e0090216db] ibercom -2015-02-25 22:58 +0000 [8a16c2f0c2] Matt Jordan + * CLI: Cosmetic issue - core show uptime - * make: Remove 'res_features' from libraries to link against with cygwin/mingw32 + Show uptime information ends with an unnecessary space. - Both the apps and channels Makefiles still listed 'res_features' as modules to - link against when compiling for cygwin or mingw32. This module hasn't existed - for quite some time. + Now NEEDCOMMA is better defined. - ASTERISK-18105 #close - Reported by: feyfre - ........ + Change-Id: I11b360504a0703309ff51772ff8f672287f3c5a1 - Merged revisions 432341 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-06-03 17:41 +0000 [88212ccb7f] Mark Michelson - Merged revisions 432342 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip: Prevent access of NULL channels. + It is possible to receive incoming requests or responses after the channel + on an ast_sip_session has been destroyed and NULLed out. Handlers of these + sorts of requests or responses need to be prepared for the possibility + that the channel is NULL or else they could cause a crash. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432343 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + While several places have been amended to deal with NULL channels, there + were still a couple of places that needed updating. -2015-02-25 21:03 +0000 [3725173b9e] Makoto Dei (License 5027) + res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to + return early if there is no channel on the session. - * channels/chan_sip: Don't send a BYE after final response when PBX thread fails + res_pjsip_session.c: When handling a 302 response, we need to stop the + redirecting attempt if there is no channel on the session. - When Asterisk fails to start a PBX thread for a new channel - for example, when - the maxcalls setting in asterisk.conf is exceeded - we currently send a final - response, and then attempt to send a BYE request to the UA. Since that's all - sorts of wrong, this patch fixes that by setting sipalreadygone on the sip_pvt - such that we don't get stuck sending BYE requests to something that does not - want it. + ASTERISK-25148 #close + reported by Mark Michelson - Note that this patch is a slight modification of the one on ASTERISK-15434. - For clarity, it explicitly calls sipalreadygone with the calls to transmit a - final response. + Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9 - ASTERISK-21845 - ASTERISK-15434 #close - Reported by: Makoto Dei - Tested by: Matt Jordan - patches: - sip-pbxstart-failed.patch uploaded by Makoto Dei (License 5027) - ........ +2015-06-01 11:45 +0000 [f5d5aa67dc] Kevin Harwell - Merged revisions 432320 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * AMI: Escape string values. - Merged revisions 432321 from http://svn.asterisk.org/svn/asterisk/branches/13 + So this issue is a bit complicated. Since it is possible to pass values to AMI + that contain a '\r\n' (or other similar sequences) these values need to be + escaped. One way to solve this is to escape the values and then pass the escaped + values to the AMI variable parameter string building function. However, this + puts the onus on the pre-build function to escape all string values. This + potentially requires a fair amount of changes along with a lot of string + allocations/freeing for all values. + Surely there is a way to push this complexity down a level into the string + building function itself? This of course is possible, but ends up requiring a + way to distinguish between strings that need to be escaped and those that don't. + The best way to handle this is by introducing a new format specifier in the + format string. For instance a %s (no escape) and %S (escape). However, that is + a bit weird and unexpected. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432322 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + So faced with those possibilities this patch implements a limited version of the + first option. Instead of attempting to escape all string values this patch only + escapes those values that make sense. This approach limits the number of changes + and doesn't suffer from the odd format specifier problem. -2015-02-25 17:49 +0000 [e484140aed] Rusty Newton + ASTERISK-24934 #close + Reported by: warren smith - * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 1 + Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0 - Example configuration files for a "basic PBX" deployment for the fictitious - Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4379/ - and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company +2015-06-03 13:17 +0000 [5dc9fb4198] gtjoseph - Reported by: Malcolm Davenport - Tested by: Rusty Newton + * res_pjsip/location: Fix ref leak in contact_apply_handler - Review: https://reviewboard.asterisk.org/r/4379/ - ........ + contact_apply_handler calls ast_res_pjsip_find_or_create_contact_status + to force the creation of a contact_status object whenever a new + contact is added but it didn't unref the returned object. - Merged revisions 432301 from http://svn.asterisk.org/svn/asterisk/branches/13 + Added an ao2_cleanup(status) to plug the leak. + ASTERISK-25141 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432302 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40 + Reported-by: Corey Farrell -2015-02-25 17:09 +0000 [ced84d7e62] Matt Jordan +2015-06-02 15:07 +0000 [d908272b7e] David M. Lee - * configure: Promote SQLite3 "not installed" warning to error + * Fixes for OS X - Since Asterisk won't build without the library, not having it is definitely - an error. Thanks to Kyle Kurz for pointing this out. - ........ + * Add some type casting so tv_usec can really be a long, instead of + some strange platform specific type. - Merged revisions 432280 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Add some .dylib style files to .gitignore. - Merged revisions 432281 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer + versions of GCC, when compiling the Homebrew formula for Asterisk, + are not properly passing the -Xlinker options to the linker. Given + that -Wl, does exactly the [same thing][], and does it properly, this + patch changes the -Xlinker options to use -Wl, instead. + [reasons unknown]: http://bit.ly/1SUbEYx + [same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432282 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd -2015-02-25 17:05 +0000 [4b63da7f7d] Matt Jordan +2015-05-30 20:22 +0000 [9e7827e3ac] Corey Farrell - * channels/chan_sip: Clarify WARNING message in mismatched SRTP scenario + * pjsip_configuration: Fix leak in persistent_endpoint_update_state. - When we receive an SDP as part of an offer/answer for a peer/friend has been - configured to require encryption, and that SDP offer/answer failed to provide - acceptable crypto attributes, we currently issue a WARNING that uses the phrase - "we" and "requested". In this case, both of those terms are ambiguous - the - user will probably think "we" is Asterisk (it most likely isn't) and it may - not be a "request", so much as an SDP that was received in some fashion. + The loop to find the first available contact of an endpoint grabbed + contact from the iterator, then checked for offline state. This + caused the first contact after the state was found to leak a reference. - This patch makes the WARNING messages slightly less bad and a bit more - accurate as well. + ASTERISK-25141 - ASTERISK-23214 #close - Reported by: Rusty Newton - ........ + Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08 +2015-05-31 11:33 +0000 [888bb49618] Ivan Poddubny - Merged revisions 432277 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Fix buffer overflow in slin sample frames generation. - Merged revisions 432278 from http://svn.asterisk.org/svn/asterisk/branches/13 + The length of frames retured by sample functions was twice as large as + real, what caused global buffer overflow caught by AddressSanitizer. + ASTERISK-24717 #close + Reported by: Badalian Vyacheslav - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432279 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Iec2fe682aef13e556684912f906bedf7c18229c6 -2015-02-25 15:42 +0000 [d68012d1a3] Olle Johansson (License 5267) +2015-05-29 16:19 +0000 [857166b5e5] gtjoseph - * channels/sip/sdp_crypto: Handle SRTP keys negotiated with key lifetime/MKI + * res_pjsip/location: Fix memory leak in permanent_uri_handler - Prior to this patch, SDP offers negotiating SDES-SRTP crypto attributes would - be rejected if those crypto attributes contained either a key lifetime or a - MKI parameter. While from a theoretical point of view this was defensible - - Asterisk does not support key lifetimes or multiple crypto keys - from a - practical point of view, this is quite a problem. A large number of endpoints - offer lifetimes/MKI, which Asterisk can tolerate so long as it doesn't actually - have to support anything more than a single key or refresh the key. - In reality, this is (so far as we've seen) always the case. + When permanent_uri_handler was creating the contact status + object for each contact, it wasn't unreffing it at the + end of the loop. - This patch is a forward port of Olle's work in the lingon-srtp-key-lifetime-1.8 - branch. To quote Olle from ASTERISK-17721, it handles lifetime/MKI parameters - in the following fashion: + ASTERISK-25141 #close + Reported-by: Corey Farrell - > The Lingon branch now handle lifetime and MKI parameters. - > - > We only accept lifetimes up to max for the crypto and higher than 10 hours - > for packetization of 20 ms (50 pps). - > - > We only handle MKI with index 1. - > - > We do not really bother with counting packets and reinviting at end of - > lifetime, so the min of 10 hours kind of takes care of most calls. If there - > are longer ones, we rely on the other side for re-invites. - > - > It's still not perfect, but I personally think this is an improvement. A - > configuration option for minimum lifetime accepted could be added. + Change-Id: I7bb127994677bb3d459f87952f8425c9b9967b12 - When the patch was ported forward, I decided against adding a configuration - option as Olle's handling was more than sufficient for every case I've seen - come through the issue tracker or through interoperability testing. We can - revisit that decision if it proves to be false. +2015-05-29 14:52 +0000 [1558a89129] gtjoseph - A few small other tweaks were made to the surrounding code to reduce - indentation and provide better type safety for the 'tag' parameter. + * Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change" - Review: https://reviewboard.asterisk.org/r/4419/ - Review: https://reviewboard.asterisk.org/r/4418/ + This reverts commit 35c699086ae2fd81b2473307ccb2ae79ad32375a. - ASTERISK-17721 #close - Reported by: Terry Wilson + Change-Id: Ia98c2b4820cf579a5b9bb75e9e05d7a233205fb7 - ASTERISK-17899 #close - Reported by: Dwayne Hubbard - patches: - lingon-srtp-key-lifetime-1.8.diff uploaded by oej (License 5267) +2015-05-27 13:22 +0000 [35c699086a] gtjoseph - ASTERISK-20233 - Reported by: tootai + * endpoint/stasis: Eliminate duplicate events on endpoint status change - ASTERISK-22748 - Reported by: Alejandro Mejia - ........ + When an endpoint was created, it's messages were being forwarded to + both the tech endpoint topic and the all endpoints topic. Since + the tech topic was also forwarded to all, this was resulting in + duplicate messages whenever an endpoint published. This patch + causes the endpoint to only forward to the tech topic and lets + the tech topic forward to all. - Merged revisions 432239 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + To accomplish this, the existing stasis_cp_single_create function + (which both creates and forwards) was cloned and split into 2 + functions, one that creates the topic and one that sets up the + forwarding. This allows endpoint_internal_create to create + the topic from the endpoint_all cache without forwarding it there, + then allows it to do the forward to the tech's topic. - Merged revisions 432258 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25137 #close + Reported-by: Vitezslav Novy + ASTERISK-25116 #close + Reported-by: George Joseph + Tested-by: George Joseph + Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432259 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-05-26 13:56 +0000 [fe21f2e52f] Richard Mudgett -2015-02-25 14:47 +0000 [ff642289f4] David M. Lee + * res_pjsip_session: Fix in-dialog authentication. - * Increase WebSocket frame size and improve large read handling + When the remote peer requires authentication for in-dialog requests then + re-INVITEs to the peer cause the call to be disconnected and other + in-dialog requests to the peer like MESSAGE just don't go through. - Some WebSocket applications, like [chan_respoke][], require a larger - frame size than the default 8k; this patch bumps the default to 16k. - This patch also fixes some problems exacerbated by large frames. + * Made session_inv_on_tsx_state_changed() handle in-dialog authentication + for re-INVITEs and other methods. Initial INVITEs cannot be handled here + because the INVITE transaction must be restarted earlier. - The sanity counter was decremented on every fread attempt in - ws_safe_read(), regardless of whether data was read from the socket or - not. For large frames, this could result in loss of sanity prior to - reading the entire frame. (16k frame / 1448 bytes per segment = 12 - segments). + * Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in + preparation for removing the file. The generic outbound authentication + code did not work as well as anticipated. - This patch changes the sanity counter so that it only decrements when - fread() doesn't read any bytes. This more closely matches the original - intention of ws_safe_read(), given that the error message is - "Websocket seems unresponsive". + * Created outbound_invite_auth() to only handle initial outbound INVITEs. + Re-INVITEs cannot be handled here. The re-INVITE transaction is still in + progress and the PJSIP library cannot handle the overlapping INVITE + transactions. Other method types should not be handled here as this code + only works on outgoing calls and we need to handle incoming and outgoing + calls. - This patch also properly logs EOF conditions, so disconnects are no - longer confused with unresponsive connections. + ASTERISK-25131 #close + Reported by: Richard Mudgett - [chan_respoke]: https://github.com/respoke/chan_respoke + Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0 - Review: https://reviewboard.asterisk.org/r/4431/ - ........ +2015-05-21 17:21 +0000 [262d590819] gtjoseph - Merged revisions 432236 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip: Add AMI events for chan_pjsip contact lifecycle changes - Merged revisions 432237 from http://svn.asterisk.org/svn/asterisk/branches/13 + Add a new ContactStatus AMI event. + Publish the following status/state changes: + Created + Removed + Reachable + Unreachable + Unknown + Contact URI, new status/state, aor and endpoint names, and the + last qualify rtt result are included in the event. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432238 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25114 #close -2015-02-24 17:00 +0000 [57525c3cf2] Richard Mudgett + Change-Id: Id25aae5f7122facba183273efb3e8f36c20fb61e + Reported-by: George Joseph + Tested-by: George Joseph - * config.h: Use real parameter names for ast_variable_new() define. +2015-05-26 07:44 +0000 [5a42397018] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432220 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * sorcery: Fix cache creation callback. -2015-02-24 16:14 +0000 [8574c4d197] Matt Jordan + The cache creation callback function expects to receive a sorcery_details + structure and not just a standalone object. - * channels/chan_sip: Fix crash when transmitting packet after thread shutdown + Change-Id: I3e4a5a137cb25292eb52d7a14cbb6daa09213450 - When the monitor thread is stopped, its pthread ID is set to a specific value - (AST_PTHREADT_STOP) so that later portions of the code can determine whether - or not it is safe to manipulate the thread. Unfortunately, __sip_reliable_xmit - failed to check for that value, checking instead only for AST_PTHREAD_STOP. - Passing the invalid yet very specific value to pthread_kill causes a crash. +2015-05-24 13:47 +0000 [97a6ce1717] Ivan Poddubny - This patch adds a check for AST_PTHREADT_STOP in __sip_reliable_xmit such that - it doesn't attempt to poke the thread if the thread has already been stopped. + * Astobj2: Correctly treat hash_fn returning INT_MIN - ASTERISK-24800 #close - Reported by: JoshE - ........ + The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0. + However, abs(INT_MIN) = INT_MIN and is still negative, as well as + abs(INT_MIN) % num_buckets, and as a result this led to a crash. - Merged revisions 432198 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + One way to trigger the bug is using host=::80 or 0.0.0.128 in peer + configuration section in chan_sip or chan_iax. - Merged revisions 432199 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch takes the remainder before applying abs, so that bucket + number is always in range. + ASTERISK-25100 #close + Reported by: Mark Petersen - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432200 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899 +2015-05-23 04:36 +0000 [554bd1e39c] Ivan Poddubny -2015-02-24 16:00 +0000 [a528dfc9a7] Matt Jordan + * res_pjsip_transport_websocket: Fix crash on receiving large SIP packets - * ARI/PJSIP: Apply requesting channel's format cap to created channels + Incoming SIP packets larger than PJSIP_MAX_PKT_LEN were themselves + truncated before passing to pjsip_tpmgr_receive_packet, but the length + was passed unaltered, thus causing memory corruption and segfault. - This patch addresses the following problems: - * ari/resource_channels: In ARI, we currently create a format capability - structure of SLIN and apply it to the new channel being created. This was - originally done when the PBX core was used to create the channel, as there - was a condition where a newly created channel could be created without any - formats. Unfortunately, now that the Dial API is being used, this has two - drawbacks: - (a) SLIN, while it will ensure audio will flows, can cause a lot of - needless transcodings to occur, particularly when a Local channel is - created to the dialplan. When no format capabilities are available, the - Dial API handles this better by handing all audio formats to the requsted - channels. As such, we defer to that API to provide the format - capabilities. - (b) If a channel (requester) is causing this channel to be created, we - currently don't use its format capabilities as we are passing in our own. - However, the Dial API will use the requester channel's formats if none - are passed into it, and the requester channel exists and has format - capabilities. This is the "best" scenario, as it is the most likely to - create a media path that minimizes transcoding. - Fixing this simply entails removing the providing of the format capabilities - structure to the Dial API. + ASTERISK-25122 #close - * chan_pjsip: Rather than blindly picking the first format in the format - capability structure - which actually *can* be a video or text format - we - select an audio format, and only pick the first format if that fails. That - minimizes the weird scenario where we attempt to transcode between video/audio. + Change-Id: I608a6b6b7f229eacc33a0a7d771d18e27e5b08ab - * res_pjsip_sdp_rtp: Applied the joint capapbilites to the format structure. - Since ast_request already limits us down to one format capability once the - format capabilities are passed along, there's no reason to squelch it here. +2015-05-22 21:50 +0000 [0d266cbe02] Corey Farrell - * channel: Fixed a comment. The reason we have to minimize our requested - format capabilities down to a single format is due to Asterisk's inability - to convey the format to be used back "up" a channel chain. Consider the - following: + * Stasis: Fix unsafe use of stasis_unsubscribe in modules. - PJSIP/A => L;1 <=> L;2 => PJSIP/B - g,u,a g,u,a g,u,a u + Many uses of stasis_unsubscribe in modules can be reached through unload. + These have been switched to stasis_unsubscribe_and_join. - That is, we have PJSIP/A dialing a Local channel, where the Local;2 dials - PJSIP/B. PJSIP/A has native format capabilities g722,ulaw,alaw; the Local - channel has inherited those format capabilities down the line; PJSIP/B - supports only ulaw. According to these format capabilities, ulaw is - acceptable and should be selected across all the channels, and no - transcoding should occur. However, there is no way to convey this: when L;2 - and PJSIP/B are put into a bridge, we will select ulaw, but that is not - conveyed to PJSIP/A and L;1. Thus, we end up with: + Some subscription callbacks do nothing, for these I've created a noop + callback function in stasis.c. This is used by some modules that monitor + MWI topics in order to enable cache, since the callback does not become + invalid after dlclose it is safe to use stasis_unsubscribe on these, even + during module unload. - PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B - g g X u u + ASTERISK-25121 #close - Which causes g722 to be written to PJSIP/B. + Change-Id: Ifc2549fbd8eef7d703c222978e8f452e2972189c - Even if we can convey the 'ulaw' choice back up the chain (which through - some severe hacking in Local channels was accomplished), such that the chain - looks like: +2015-05-22 12:22 +0000 [51ffed5e61] Matt Jordan - PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B - u u u u + * res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS - We have no way to tell PJSIP/A's *channel driver* to Answer in the SDP back - with only 'ulaw'. This results in all the channel structures being set up - correctly, but PJSIP/A *still* sending g722 and causing the chain to fall - apart. + In addition to specifying lists of 'presence' and 'message-summary', + users can also create lists of type 'dialog'. These should be treated in + the same fashion as 'presence'. - There's a lot of difficulty just in setting this up, as there are numerous - race conditions in the act of bridging, and no clean mechanism to pass the - selected format backwards down an established channel chain. As such, the - best that can be done at this point in time is clarifying the comment. + Change-Id: I583bb69cd9f88b0b29bf09ddaddeac4e84189f6e - Review: https://reviewboard.asterisk.org/r/4434/ +2015-05-22 12:18 +0000 [7950b65e4f] Matt Jordan - ASTERISK-24812 #close - Reported by: Matt Jordan - ........ + * res/res_pjsip_exten_state: Fix confusing NOTICE message - Merged revisions 432195 from http://svn.asterisk.org/svn/asterisk/branches/13 + When a SUBSCRIBE request is made to a dialplan hint that doesn't exist, + the current NOTICE message informing users of this swaps the context and + extension parameters. This can cause a bit of confusion. + Thanks to CptBurger in #asterisk for helping to point this out. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432196 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ie584d1a58ae217385c87a450ca25b55ca0e36e43 -2015-02-24 12:38 +0000 [91733b5d15] Kevin Harwell +2015-05-17 20:36 +0000 [5ac65ddfb4] Matt Jordan - * bridge_softmix: G.729 codec license held + * res/ari: Register Stasis application on WebSocket attempt - When more than one call using the same codec type enters into a softmix bridge - and no audio is present for a channel the bridge optimizes the out frame by - using the same one for all channels with the same codec type. Unfortunately, - when that number (channels with same codec type) dropped to <= 1 the codec - was not dereferenced. At least not until all parties left the bridge. Thus in - the case of G.729 the license was not released. This patch ensures that the - codec is dereferenced immediately when the optimization no longer applies. + Prior to this patch, when a WebSocket connection is made, ARI would not + be informed of the connection until after the WebSocket layer had + accepted the connection. This created a brief race condition where the + ARI client would be notified that it was connected, a channel would be + sent into the Stasis dialplan application, but ARI would not yet have + registered the Stasis application presented in the HTTP request that + established the WebSocket. - ASTERISK-24797 #close - Reported by: Luke Hulsey - Review: https://reviewboard.asterisk.org/r/4429/ - ........ + This patch resolves this issue by doing the following: + * When a WebSocket attempt is made, a callback is made into the ARI + application layer, which verifies and registers the apps presented in + the HTTP request. Because we do not yet have a WebSocket, we cannot + have an event session for the corresponding applications. Some + defensive checks were thus added to make the application objects + tolerant to a NULL event session. + * When a WebSocket connection is made, the registered application is + updated with the newly created event session that wraps the WebSocket + connection. - Merged revisions 432174 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-24988 #close + Reported by: Joshua Colp - Merged revisions 432175 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636 +2015-05-20 11:11 +0000 [60e2fbfe62] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432176 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: Refactor endpt_send_transaction (qualify_timeout) -2015-02-21 14:48 +0000 [bedf51b2ce] Joshua Colp + This patch refactors the transaction timeout processing to eliminate + calling the lower level public pjsip functions and reverts to calling + pjsip_endpt_send_request again. This is the result of me noticing + a possible incompatibility with pjproject-2.4 which was causing + contact status flapping. - * res_ari_channels: Return a 404 response when a requested channel variable does not exist. + The original version of this feature used the lower level calls to + get access to the tsx structure in order to cancel the transaction + when our own timer expires. Since we no longer have that access, + if our own timer expires before the pjsip timer, we call the callbacks + and just let the pjsip transaction take it's own course. When the + transaction ends, it discovers the callbacks have already been run + and just cleans itself up. - This change makes it so that if a channel variable is requested and it does not exist - a 404 response will be returned instead of an allocation failed response. This makes - it easier to debug and figure out what is going on for a user. + A few messages in pjsip_configuration were also added/cleaned up. - ASTERISK-24677 #close - Reported by: Joshua Colp - ........ + ASTERISK-25105 #close - Merged revisions 432154 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I0810f3999cf63f3a72607bbecac36af0a957f33e + Reported-by: George Joseph + Tested-by: George Joseph +2015-05-20 00:45 +0000 [42476e6633] demon-ru + * res_pjsip_outbound_registration: Check request URI for line. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432155 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When an inbound call is received the To header is checked + for the "line" option. Some remote servers will place this + in the request URI instead. This adds an additional check for + the option in the request URI. -2015-02-21 13:28 +0000 [87b7060f36] Joshua Colp + ASTERISK-25072 #close + Reported by: Dmitriy Serov - * res_pjsip_registrar: Add Expires header to 200 OK if present in REGISTER. + Change-Id: Id4e44debbb80baad623b914a88574371575353c8 - Some implementations don't pay attention to the expires for individual contacts. - In this case they may consider the lack of an Expires header in the 200 OK as - unregistered. This change makes it so if an Expires header is present in the REGISTER - we will add one in the 200 OK. +2015-05-21 17:51 +0000 [e7edb59db6] Corey Farrell - ASTERISK-24785 #close - Reported by: Ross Beer - ........ + * res_mwi_external_ami: Use module version of AMI registration. - Merged revisions 432136 from http://svn.asterisk.org/svn/asterisk/branches/13 + Use ast_manager_register_xml for res_mwi_external_ami manager + actions. This ensures the module is held open while any of + the actions are being run. + ASTERISK-25117 #close + Reported by: Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432137 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Iececfdc2da498b2c32b9e09042f5f12292007ac7 +2015-05-21 13:05 +0000 [9d8a462356] Matt Jordan -2015-02-21 12:53 +0000 [283bb15c16] Joshua Colp + * ARI: Update version to 1.7.0 - * res_pjsip: Add a log message when creating a UAC dialog to a target URI that is invalid. + This patch updates the version of ARI to 1.7.0 to reflect the backwards + compatible changes that will be introduced in 13.4.0. - ASTERISK-24499 #close - Reported by: Rusty Newton - ........ + Change-Id: I6c36e6144da426412f25828a868e4df916bff60a - Merged revisions 432118 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-05-20 20:53 +0000 [9b6e228419] Corey Farrell + * Logger: Reset defaults before processing config. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432119 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Reset options to default values before reloading config. This ensures + that if a setting is removed or commented out of the configuration file + it is unset on reload. -2015-02-21 11:36 +0000 [b3c1ad5d73] Graham Barnett (License 6685) + ASTERISK-25112 #close + Reported by: Corey Farrell - * apps/app_voicemail: Demote an ERROR message to a WARNING message + Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd - When using IMAP voicemail with FreePBX, you will often get ERROR messages - complaining about not being able to find a mailbox. This is due to how FreePBX - handles voicemail mailboxes. Unfortunately, app_voicemail has to consider this - a configuration error, as in any other system it would be indicative of - someone misconfiguring their system. +2015-05-20 19:05 +0000 [7fcf0a97b8] gtjoseph - Regardless, a misconfiguration is a WARNING, and not an ERROR. This patch - demotes the message so that system administrators can hopefully reduce some - of the noise in their log files. + * app_playback: Suppress warnings on playback if channel hung up - Note that in the original patch this was made into a NOTICE, but that's a - too forgiving. + If a channel hangs up while an audio file is playing, there's + no need to clutter up the logs with a warning so suppress it + if ast_check_hangup returns true. - ASTERISK-24790 #close - Reported by: Graham Barnett - patches: - app_voicemail.c.patch_noise uploaded by Graham Barnett (License 6685) - ........ + Also, change warning to debug/2 in file.c if writing a frame + fails. Same reasoning. - Merged revisions 432098 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I2e66191af3c5b6e951c98e8f1c3fe3cf2cf7ed89 + Reported-by: George Joseph + Tested-by: George Joseph - Merged revisions 432099 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-05-14 15:21 +0000 [b1e8c0b9eb] Kevin Harwell + * audiohook.c: Difference in read/write rates caused continuous buffer resets - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432100 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Currently, everytime a sample rate change occurs (on read or write) the + associated factory buffers are reset. If the requested sample rate on a + read differed from that of a write then the buffers are continually reset + on every read and write. This has the side effect of emptying the buffer, + thus there being no data to read and then write to a file in the case of + call recording. -2015-02-21 08:06 +0000 [2ea7ccbf70] Joshua Colp + This patch fixes it so that an audiohook_list's rate always maintains the + maximum sample rate among hooks and formats. Audiohook sample rates are + only overwritten by this value when slin native compatibility is turned on. + Also, the audiohook sample rate can only overwrite the list's sample rate + when its rate is greater than that of the list or if compatibility is + turned off. This keeps the rate from constantly switching/resetting. - * http: Add missing html tag to 'httpstatus' functionality. + ASTERISK-24944 #close + Reported by: Ronald Raikes - ASTERISK-24724 #close - Reported by: Ashley Sanders - ........ + Change-Id: Idab4dfef068a7922c09cc631dda27bc920a6c76f - Merged revisions 432078 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-05-19 13:01 +0000 [17d6ede337] Corey Edwards - Merged revisions 432079 from http://svn.asterisk.org/svn/asterisk/branches/13 + * main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits + ASTERISK-24887 #close + Reported by: Makoto Dei + Tested by: tensai - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432080 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I6a96f572adb17f76b3acafe503a01c48eb5dd9bf -2015-02-20 20:58 +0000 [e66b874f5d] Corey Farrell +2015-05-13 09:55 +0000 [31cc24aad6] Matt Jordan - * Allow shutdown to unload modules that register bucket scheme's or codec's. + * res/res_http_websocket: Add a pre-session established callback - * Change __ast_module_shutdown_ref to be NULL safe (11+). - * Allow modules that call ast_bucket_scheme_register or ast_codec_register - to be unloaded during graceful shutdown only (13+ only). + This patch updates http_websocket and its corresponding implementation + with a pre-session established callback. This callback allows for + WebSocket server consumers to be notified when a WebSocket connection is + attempted, but before we accept it. Consumers can choose to reject the + connection, if their application specific logic allows for it. - ASTERISK-24796 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4428/ - ........ + As a result, this patch pulls out the previously private + websocket_protocol struct and makes it public, as + ast_websocket_protocol. In order to preserve backwards compatibility + with existing modules, the existing APIs were left as-is, and new APIs + were added for the creation of the ast_websocket_protocol as well as for + adding a sub-protocol to a WebSocket server. - Merged revisions 432058 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + In particular, the following new API calls were added: + * ast_websocket_add_protocol2 - add a protocol to the core WebSocket + server + * ast_websocket_server_add_protocol2 - add a protocol to a specific + WebSocket server + * ast_websocket_sub_protocol_alloc - allocate a sub-protocol object. + Consumers can populate this with whatever callbacks they wish to + support, then add it to the core server or a specified server. - Merged revisions 432059 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24988 + Reported by: Joshua Colp + Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432060 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-05-14 22:05 +0000 [f9114179e6] snuffy -2015-02-20 20:51 +0000 [bb71672a47] Corey Farrell + * chan_pjsip: Fix crash during off-nominal when no endpoint specified. - * main/asterisk.c: Reverse #if statement in listener() to fix code folding. + Add missing return -1 when no endpoint name is specified. - listener() opens the same code block in two places (#if and #else). This - confuses some folding editors causing it to think that an extra code block - was opened. Folding in 'geany' causes all code after listener() to be - folded as if it were part of that procedure. + ASTERISK-25086 #close + Reported by: snuffy - ASTERISK-24813 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4435/ + Change-Id: I9de76c2935a1f4e3f0cffe97a670106f5605e89e +2015-05-14 18:01 +0000 [dd78ab42e4] gtjoseph + * res_pjsip_config_wizard/config: Fix template processing - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432057 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The config wizard was always pulling the first occurrence of + a variable from an ast_variable list but this gets the template + value from the list instead of any overridden value. This patch + creates ast_variable_find_last_in_list() in config.c and updates + res_pjsip_config_wizard to use it instead of + ast_variable_find_in_list. Now the overridden values, where they + exist, are used instead of template variables. -2015-02-20 20:47 +0000 [ce50fa314a] Corey Farrell + Updated test_config to test the new API. - * asterisk/lock.h: Fix syntax errors for non-gcc OSX with 64-bit integers. + ASTERISK-25089 #close - Add a couple of missing closing brackets / parenthesis. + Reported-by: George Joseph + Tested-by: George Joseph + Change-Id: Ifa7ddefc956a463923ee6839dd1ebe021c299de4 - ASTERISK-24814 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4436/ - ........ +2015-05-15 01:54 +0000 [091b436007] snuffy - Merged revisions 432054 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * cdr: Fix 'core show channel' CDR variable truncation. - Merged revisions 432055 from http://svn.asterisk.org/svn/asterisk/branches/13 + When the new Bridging API was implemented, the workspace variable + changed to a malloc'd string, causing sizeof() to always be 8 (char). + Revert back to stored on stack string for workspace. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432056 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25090 #close -2015-02-20 11:55 +0000 [bb06603d5f] Richard Mudgett + Change-Id: I51e610ae87371df771ce7693a955510efb90f8f7 +2015-05-14 00:06 +0000 [6b7282ca40] Corey Farrell - * chan_dahdi/sig_analog: Put log message strings on one line. + * Fix potential crash after unload of func_periodic_hook or test_message. - With the log messages on one line, you can search for the log message seen - in the log and expect to find it. - ........ + These modules save a pointer to the context they create on load, and + use that pointer to destroy the context at unload. It is not safe + to save this pointer, it is replaced during load of pbx_config, + pbx_lua or pbx_ael. - Merged revisions 432032 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This change causes the modules to pass NULL to ast_context_destroy, + a safer way to perform the unregistration since it does not use + a pointer that could become invalid. - Merged revisions 432034 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25085 #close + Reported by: Corey Farrell + Change-Id: I6a00ec8e38046058f97dc703e1adcde9bf517835 +2015-05-13 15:41 +0000 [02c5130589] Jonathan Rose - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432036 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Message.c: Clear message channel frames on cleanup -2015-02-20 11:53 +0000 [340818ad12] Matt Hoskins (license 6688) + The message channel is a special channel that doesn't actually process frames. + However, certain actions can cause frames to be placed in the channel's read + queue including the Hangup application which is called on the channel after + each message is processed. Since the channel will continually be reused for + many messages, it's necessary to flush these frames at some point. - * ASTERISK-24811: Add ast_sorcery_apply_config() to res_pjsip_publish_asterisk. + ASTERISK-25083 #close + Reported by: Jonathan Rose - Matt Hoskins reported that res_pjsip_publish_asterisk wouldn't pull config from - realtime. Turns out it was just missing a call ast_sorcery_apply_config(). + Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f - res_pjsip_acl was missing it as well, so I added it. The other pjsip modules - looked OK. +2015-05-12 17:45 +0000 [d49d64b79c] Jonathan Rose - ASTERISK-24811 #close - Reported-by: Matt Hoskins - Tested-by: George Joseph - Tested-by: Matt Hoskins - patches: - res_pjsip_publish_asterisk.c.patch submitted by Matt Hoskins (license 6688) + * app_voicemail: fix moving when old messages full - Review: https://reviewboard.asterisk.org/r/4433/ - ........ + When completing voicemail playback of a message in the 'INBOX', the + message gets moved to the 'Old' messages folder. Without this patch, if + the 'Old' folder is already at its set limit, then the 'INBOX' message will + simply be deleted. With this patch, the flag to delete the message will be + removed if the save_to_folder function indicates that the message could + not be moved due to a full folder. - Merged revisions 432033 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25082 #close + Reported by: Jonathan Rose + Review: https://gerrit.asterisk.org/#/c/448/ + Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f +2015-05-04 20:11 +0000 [9b13536fed] Rodrigo Ramírez Norambuena - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432035 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * main/manager.c: Bugfix sort action_manager by alphabetically -2015-02-20 09:47 +0000 [4dab71831f] Graham Barnett (License 6685) + Fix the alphabetic order added on ast_manager_register_struct. The order + for struct manager_action added is not working, this change fixes the + problem. - * apps/app_voicemail: Fix IMAP header compatibility issue with Microsoft Exchange + Change-Id: I149da0cd06c3c4445d7516cc303358e9f26f8b4b - When interfacing with Microsoft Exchange, custom headers will be returned as - all lower case. Currently, the IMAP header code will fail to parse the returned - custom headers, as it will be performing a case sensitive comparison. This can - cause playback of messages to fail, as needed information - such as origtime - - will not be present. +2015-05-08 18:01 +0000 [e67e8d5c7f] Alexandre Fournier - This patch updates app_voicemail's header parsing code to perform a case - insensitive lookup for the requested custom headers. Since the headers are - specific to Asterisk, e.g., 'x-asterisk-vm-orig-time', and headers should be - unique in an IMAP message, this should cause no issues with other systems. + * res_config_mysql: Fix broken column type checking - ASTERISK-24787 #close - Reported by: Graham Barnett - patches: - app_voicemail.c.patch_MSExchange uploaded by Graham Barnett (License 6685) - ........ + MySQL configuration engine contains a bug in require_mysql(). This + function is used for column type checking in tables. This bug only + affects DATETIME, DATE and FLOAT types. - Merged revisions 432012 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + It came from mixing the first condition (switch-case-like + if/then/else), to check the expected column type, with the second + condition, to check the actual column type against the expected column + type. Both conditions must be checked separately in order to avoid the + execution of the wrong block. - Merged revisions 432013 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-18252 #comment This patch might fix the issue + Reported by: Gareth Blades + ASTERISK-25041 #close + Reported by: Alexandre Fournier + Tested by: Alexandre Fournier - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432014 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I0b8bf7e68ab938be8e6525a249260cb648cb0bfa -2015-02-19 15:26 +0000 [05cc6d6d55] Richard Mudgett +2015-05-10 07:37 +0000 [16f602f5c2] Yousf Ateya - * chan_dahdi: Remove some dead code. - ........ + * res_rtp_asterisk: Correction for the limit which detects that a packet is DTLS. - Merged revisions 431992 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + First byte of DTLS packet shall be in range 20-63, not 20-64. Refer to RFC + https://tools.ietf.org/html/rfc5764#section-5.1.2 for correct values. - Merged revisions 431993 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Iae6fa0d72b37c36a27fe40686e0ae6fba3afec31 +2015-05-12 17:34 +0000 [c780b6e431] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431994 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision. -2015-02-19 12:26 +0000 [252aee4228] Richard Mudgett + If an ISDN call is hungup by both sides at the same time a crash could + happen. - * ISDN AOC: Fix crash from an AOC-E message that doesn't have a channel association. + * Added missing NULL checks for the owner channel after calling + pri_queue_pvt_cause_data() in two places. Code after those calls need to + check the owner channel pointer for NULL before use because + pri_queue_pvt_cause_data() needs to do deadlock avoidance to lock the + owner and the owner may get hung up. - Processing an AOC-E event that does not or no longer has a channel - association causes a crash. + ASTERISK-21893 #close + Reported by: Alexandr Gordeev - The problem with posting AOC events to the channel topic is that AOC-E - events don't always have a channel association and posting the event to - the all channels topic is just wrong. AOC-E events do however have their - own charging association method to refer to the agreement with the - charging entity. + Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a - * Changed the AOC events to post to the AMI manager topic instead of the - channel topics. If a channel is associated with the event then channel - snapshot information is supplied with the AMI event. +2015-05-10 02:26 +0000 [6627de830b] Sebastian Kemper - * Eliminated RAII_VAR() usage in aoc_to_ami() and ast_aoc_manager_event(). + * General: Fix recent menuselect-related cross compile regression - This patch supercedes the patch on Review: https://reviewboard.asterisk.org/r/4427/ + MAKE_MENUSELECT currently sets CC to CC, which is the compiler for the + target platform. But menuselect is to be run on the build system, so + BUILD_CC needs to be used instead - like it was in the past, before the + recent changes (https://reviewboard.asterisk.org/r/4370/). This is the + patch for ASTERISK-25074. - ASTERISK-22670 #close - Reported by: klaus3000 + ASTERISK-25074 #close + Reported by: Sebastian Kemper + Tested by: Sebastian Kemper - ASTERISK-24689 #close - Reported by: Marcel Manz + Change-Id: I8a2b1fc5deb6ad2b80f49baca35b1b13d468ebf8 - ASTERISK-24740 #close - Reported by: Panos Gkikakis +2015-05-05 15:32 +0000 [637c8f065e] gtjoseph - Review: https://reviewboard.asterisk.org/r/4430/ - ........ + * sorcery: Add API to insert/remove a wizard to/from an object type's list - Merged revisions 431974 from http://svn.asterisk.org/svn/asterisk/branches/13 + Currently you can 'apply' a wizard to an object type but the wizard + always goes at the end of the object type's wizard list. This patch + adds a new ast_sorcery_insert_wizard_mapping function that allows + you to insert a wizard anyplace in the list. I.E. You could + add a caching wizard to an object type and place it before all + wizards. + ast_sorcery_get_wizard_mapping_count and + ast_sorcery_get_wizard_mapping were added to allow examination + of the mapping list. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431975 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ast_sorcery_remove_mapping was added to remove a mapping by name. -2015-02-19 11:37 +0000 [6992b2e8fa] Richard Mudgett + As part of this patch, the object type's wizard list was converted + from an ao2_container to an AST_VECTOR_RW. - * res_pjsip_refer: Handle INVITE with Replaces failure after answer. + A new test was added to test_sorcery for this capability. - * Fixed hangup handling of the session->channel after answer if the - ast_channel_move() or ast_bridge_impart() fails. We are still the thread - controlling the session->channel so we need to call ast_hangup() to kill - the channel. + ASTERISK-25044 #close - * Fixed debug messages in refer_incoming_invite_request() referencing - incorrect channnels on success. Code comments now say why the - session->channel cannot be used. + Change-Id: I9d2469a9296b2698082c0989e25e6848dc403b57 - Review: https://reviewboard.asterisk.org/r/4422/ - ........ +2015-05-12 01:31 +0000 [3cdb7950f0] Corey Farrell - Merged revisions 431956 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Fix processing of asterisk.conf debug=yes. + The code which reads asterisk.conf supports processing the debug + option with ast_true, but ast_true returns -1. This causes debug + to still be off, convert to 1 so debug will be on as requested. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431957 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25042 + Reported by: Corey Farrell -2015-02-19 09:28 +0000 [e3fd826cdb] Alexander Traud (License 6520) + Change-Id: I3c898b7d082d914b057e111b9357fde46bad9ed6 - * tcptls: Handle new OpenSSL compile time option to disable SSLv3 +2015-05-01 23:43 +0000 [6553a00770] Rodrigo Ramírez Norambuena - Some distributions are going to disable SSLv3 at compile time. This option can - be checked using the directive OPENSSL_NO_SSL3_METHOD. This patch updates the - TCP/TLS handling in Asterisk to look for that directive before attempting to - use the SSLv3 specific methods. + * cdr_pgsql: Use PQescapeStringConn for escaping names. - ASTERISK-24799 #close - Reported by: Alexander Traud - patches: - no-ssl3-method.patch uploaded by Alexander Traud (License 6520) - ........ + Use function PQescapeStringConn for escaping the name + of the table and schema instead of doing it manually. - Merged revisions 431936 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I6709165e2d00463e9c813d24f17830ad4910b599 - Merged revisions 431937 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-05-09 16:58 +0000 [ea917fefaf] gtjoseph + * vector: Add REMOVE, ADD_SORTED and RESET macros - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431938 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Based on feedback from Corey Farrell and Y Ateya, a few new + macros have been added... -2015-02-18 20:03 +0000 [a4774ceaa5] Corey Farrell + AST_VECTOR_REMOVE which takes a parameter to indicate if + order should be preserved. - * Create work around for scheduler leaks during shutdown. + AST_VECTOR_ADD_SORTED which adds an element to + a sorted vector. - * Added ast_sched_clean_by_callback for cleanup of scheduled events - that have not yet fired. - * Run all pending peercnt_remove_cb and replace_callno events in chan_iax2. - Cleanup of replace_callno events is only run 11, since it no longer - releases any references or allocations in 13+. + AST_VECTOR_RESET which cleans all elements from the vector + leaving the storage intact. - ASTERISK-24451 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4425/ - ........ + Change-Id: I41d32dbdf7137e0557134efeff9f9f1064b58d14 - Merged revisions 431916 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-05-11 07:07 +0000 [d5864a358c] Ivan Poddubny - Merged revisions 431917 from http://svn.asterisk.org/svn/asterisk/branches/13 + * pbx/pbx_spool: Fix issue when call files were executed too early + pbx_spool used to delete/move the call file upon successful outgoing + call completion, but did not delete it from in-memory list of files + (dirlist, used only when compiled with inotify/kqueue support). + That resulted in an extra attempt to process that filename after + retrytime seconds. + Then, if a new file with the same name appears that is scheduled + in future further than the completed one plus its retrytime, + then it gets executed earlier than expected. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431918 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch fixes remove_from_queue function to also remove the entry + from the dirlist. -2015-02-17 09:34 +0000 [09bfe4b208] Richard Mudgett + ASTERISK-17069 #close + Reported by: Jeremy Kister - * res_pjsip_refer: Fix crash from a REFER and BYE collision. + ASTERISK-24442 #close + Reported by: tootai - Analyzing a one-off crash on a busy system showed that processing a REFER - request had a NULL session channel pointer. The only way I can think of - that could cause this is if an outgoing BYE transaction overlapped the - incoming REFER transaction in a collision. Asterisk sends a BYE while the - phone sends a REFER to complete an attended transfer. + Change-Id: If9ec9b88073661ce485d6b008fd0b2612e49a28b - * Made check the session channel pointer before processing an incoming - REFER request in res_pjsip_refer. +2015-05-08 14:47 +0000 [4dbd4021c9] Rusty Newton - * Fixed similar crash potential for res_pjsip supplement incoming request - processing for res_pjsip_sdp_rtp INFO, res_pjsip_caller_id INVITE/UPDATE, - res_pjsip_messaging MESSAGE, and res_pjsip_send_to_voicemail REFER - messages. + * configs/basic-pbx: Modified main IVR to play new Allison prompt. - * Made res_pjsip_messaging respond to a message body too large with a 413 - instead of ignoring it. + The main IVR was playing demo-congrats. I've switched it over to the + basic-pbx-ivr-main file that we added in core sounds 1.4.27. This prompt + has Allison prompting the user with the actual IVR menu. - ASTERISK-24700 #close - Reported by: Zane Conkle + ASTERISK-24892 #close - Review: https://reviewboard.asterisk.org/r/4417/ - ........ + Change-Id: Ifb749616ff8e156a1031ddaddfcc9244767a095d - Merged revisions 431898 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-05-08 10:39 +0000 [613a461c3d] Sean Bright + * res_rtp_asterisk: Issue ERROR if res_srtp is not found. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431899 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + While trying to get WebRTC working with chan_pjsip, I was running + into the following error: -2015-02-16 15:29 +0000 [d808eace5c] Matt Jordan + Attempted to set an invalid DTLS-SRTP configuration on RTP + instance... - * res/res_rtp_asterisk: Fix crash in debug from RTCP reports without report block + Josh helpfully pointed out that res_srtp.so might not be loaded, and + sure enough, it wasn't. This patch adds a ERROR indiciating as much + to hopefully help others having a similar problem. - When RTCP debugging was enabled, an RTCP report without a report block would - cause a crash. This was due to the verbose output not checking to see if the - report_block pointer was NULl before dereferencing it. + Change-Id: I13aa477b47b299876728a21b130998a0ea6cd19f - This patch adds the necessary check to prevent printing any verbose output - if the far side hasn't provided us the information they should have. +2015-05-07 17:49 +0000 [394fcb5eab] Rusty Newton - ASTERISK-24791 #close - Reported by: JoshE - Tested by: JoshE - ........ + * sounds: Add Swedish sounds to Makefile and XML - Merged revisions 431879 from http://svn.asterisk.org/svn/asterisk/branches/13 + Added the necessary lines to the Makefile and sounds.xml so we'll have the + Swedish sounds in all available formats in menuselect. + See also: Swedish sounds were added into the core sounds release 1.4.27. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431880 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24744 #close -2015-02-15 13:01 +0000 [55eb8fc068] Joshua Colp + Reported by: Tove Hjelm + Tested by: Rusty Newton - * pjsip: Remove "contact" type from pjsip.conf.sample + Change-Id: Ib6f4fd177afd1667b2402735034001d4d055a908 - The "contact" object is not meant to be configured from the pjsip.conf - configuration file. It is meant to be created as a result of a registration - and stored elsewhere. +2015-05-05 11:35 +0000 [2115f11b54] Alexander Traud (License 6520) - ASTERISK-24085 #close - Reported by: Rusty Newton - ........ + * tcptls: Avoiding ERR_remove_state in OpenSSL. - Merged revisions 431860 from http://svn.asterisk.org/svn/asterisk/branches/13 + ERR_remove_state was deprecated with OpenSSL 1.0.0 and was replaced by + ERR_remove_thread_state. ERR_load_SSL_strings and ERR_load_BIO_strings were + called by SSL_load_error_strings already and got removed. These changes allow + OpenSSL forks like BoringSSL to be used with Asterisk. + ASTERISK-25043 #close + Reported by: Alexander Traud + patches: + asterisk_with_BoringSSL.patch uploaded by Alexander Traud (License 6520) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431861 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: If1c0871ece21a7e0763fafbd2fa023ae49d4d629 + (cherry picked from commit 247fef66537b59649e7571d64e2c574a106dbd65) -2015-02-15 12:00 +0000 [55709bc1f7] Joshua Colp +2015-05-07 14:54 +0000 [5392e970d0] gtjoseph - * install_prereq: Tweak flags when configuring pjproject. + * doc: Make progdocs play nice with git - This change does two things: - 1. Disables debugging so assertions which can return an error do, - instead of asserting. - 2. Enables IPv6 support. + Moved contrib/asterisk-ng-doxygen to doc/asterisk-ng-doxygen.in - ASTERISK-24632 #close - Reported by: Rusty Newton - ........ + Changed /Makefile to copy asterisk-ng-doxygen.in to + asterisk-ng-doxygen then modify it with version instead of + modifying asterisk-ng-doxygen directly. Updated clean + targets as well. - Merged revisions 431843 from http://svn.asterisk.org/svn/asterisk/branches/13 + Updated /.gitignore and doc/.gitignore. + Change-Id: I38712d3e334fa4baec19d30d05de8c6f28137622 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431844 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-05-04 14:43 +0000 [608f0a94ee] Ivan Poddubny -2015-02-15 11:43 +0000 [e78dd39885] Joshua Colp + * contrib/editors: Fix vim syntax highlighting of comments in config files - * res_sorcery_config: Improve object lookup times. + * Added a lookbehind to one-line comment matcher to skip escaped + semicolons. + * Added support for block comments. - The res_sorcery_config module currently uses a fixed bucket - size of 53. This means that depending on the number of objects - you either end up with excess buckets or a lot of collisions. - Due to the way that res_sorcery_config is implemented it's actually - possible to make the bucket size dynamic based on the number of - objects. This is due to the fact that each loading of the config file - produces a new container and does not modify the existing one. - This change uses the number of expected objects and finds a prime - number near it. In practice depending on the number of objects this - can speed up lookups anywhere from 2X to 15X. This change also removes - the lock from the container as it is not needed. + Change-Id: Id17dfaeda8ed4be572e8107a0c010066584aaee7 - Review: https://reviewboard.asterisk.org/r/4423/ - ........ +2015-05-06 13:24 +0000 [d649d682c4] Joshua Colp - Merged revisions 431841 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination + The res_pjsip_exten_state module currently has a race condition between + processing the extension state callback from the PBX core and processing + the subscription shutdown callback from res_pjsip_pubsub. There is currently + no synchronization between the two. This can present a problem as while + the SIP subscription will remain valid the tree it points to may not. + This is in particular a problem as a task to send a NOTIFY may get queued + which will try to use the tree that may no longer be valid. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431842 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change does the following to fix this problem: -2015-02-15 10:01 +0000 [e6fe69b76c] Joshua Colp + 1. All access to the subscription tree is done within the task that + sends the NOTIFY to ensure that no other thread is modifying or + destroying the tree. This task executes on the serializer for the + subscriptions. - * res_pjsip: Add "pjsip show version" CLI command. + 2. A reference to the subscription serializer is kept to ensure it + remains valid for the lifetime of the extension state subscription. - When debugging things it can be useful to know absolutely what - version of pjproject res_pjsip is running against. This change - adds a "pjsip show version" CLI command which can be used to - query for this. + 3. The NOTIFY task has been changed so it will no longer attempt + to send a NOTIFY if the subscription has already been terminated. - ASTERISK-24685 #close - Reported by: Joshua Colp + ASTERISK-25057 #close + Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4424/ - ........ + Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643 - Merged revisions 431824 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-05-05 20:22 +0000 [5f9aea8e3c] gtjoseph + * vector: Additional enhancements and fixes - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431825 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + After using the new vector stuff for real I found... -2015-02-15 06:41 +0000 [17f9e0cacc] Matthias Urlichs (license 5508) + A bug in AST_VECTOR_INSERT_AT that could cause a seg fault. - * res_timing_pthread: Fix leaky pipes. + The callbacks needed to be closer to ao2_callback in behavior + WRT to CMP_MATCH and CMP_STOP behavior and the ability to return + a vector of matched entries. - During some refactoring the way private information for timers - was stored was changed. As a result of this the action which normally - removed the timer upon closure in res_timing_pthread was also removed - causing the timer to remain after it should using up resources. - This change ensures that the timer is removed upon closure. + A pre-existing issue with APPEND and REPLACE was also fixed. - ASTERISK-24768 #close - Reported by: Matthias Urlichs - patches: - timer.patch submitted by Matthias Urlichs (license 5508) - ........ + I also added a new macro to test.h that acts like ast_test_validate + but also accepts a return code variable and a cleanup label. As well + as printing the error, it sets the rc variable to AST_TEST_FAIL and + does a goto to the specified label on error. I had a local version + of this in test_vector so I just moved it. - Merged revisions 431807 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25045 + Change-Id: I05e5e47fd02f61964be13b7e8942bab5d61b29cc - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431808 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-05-04 17:28 +0000 [68513e00f7] Kevin Harwell -2015-02-14 18:33 +0000 [d1bd8b091b] Matt Jordan + * res_stasis_snoop: Spying on a single direction continually increases CPU - * apps/app_mixmonitor: Move Test Event for MIXMONITOR_END to after it finishes + Creating a snoop channel in ARI and spying only on a single direction (in or + out) results in CPU utilization continually increasing until the CPU is fully + consumed. This occurs because frames are being put in the opposing direction's + slin factory queue, but not being removed. - The Test Event for MIXMONITOR_END - which signals that a MixMonitor has - completed - technically fired before the filestream was closed. If a test - used this to trigger a condition to verify that the file was written, it - could result in a race condition where the file size would not be what the - test expected. + Fixed the problem by always reading and disposing of frames from the opposite + queue of the direction selected. - Luckily, no tests were using this (although they should have been). Since the - test event needed to be moved after the point where the MixMonitor autochan has - been destroyed, the test event no longer emits the channel name. Luckily, - nothing needs it. - ........ + ASTERISK-24938 #closes - Merged revisions 431788 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I935bfd15f1db958f364d9d6b3b45582c0113dd60 +2015-05-06 16:00 +0000 [904f5d98f6] Richard Mudgett - Merged revisions 431789 from http://svn.asterisk.org/svn/asterisk/branches/13 + * chan_dahdi: Improve force_restart_unavailable_chans option description. + ASTERISK-25034 + Reported by: Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431790 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I1ff8f02124d2f4abd632a050da52c64285bb7f30 -2015-02-14 13:46 +0000 [455a98a2f8] Joshua Colp +2015-05-05 18:17 +0000 [be1260a35f] Richard Mudgett - * sorcery: Output an error message if a wizard is specified for an object type and it isn't found. + * features: Fix crash when transferee hangs up during DTMF attended transfer. - ASTERISK-24612 #close - Reported by: Joshua Colp - ........ + A crash happens with this sequence of steps: + 1) Party A is connected to party B. + 2) Party B starts a DTMF attended transfer. + 3) Party A hangs up while party B is dialing party C. - Merged revisions 431771 from http://svn.asterisk.org/svn/asterisk/branches/13 + When party A hangs up the bridge that party A and party B are in is + dissolved and party B is kicked out of the bridge. When party B finishes + dialing party C he attempts to move to the new bridge with party C. Since + party B is no longer in a bridge the attempted move dereferences a NULL + bridge_channel pointer and crashes. + * Made the hold(), unhold(), ringing(), and the bridge_move() functions + tolerant of the channel not being in a bridge. The assertion that party B + is always in a bridge is not true if the bridged peer of party B hangs up + and dissolves the bridge. Being tolerant of not being in a bridge allows + the peer hangup stimulus to be processed by the FSM. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431772 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Made the bridge_move() function return void since where the return value + for a failed move was checked generated a FSM coding ERROR message for a + normal off-nominal condition. -2015-02-14 12:31 +0000 [fae6bf8ace] Joshua Colp + * Eliminated most uses of RAII_VAR in bridge_basic.c. - * res_pjsip_exten_state: Improve log message when a subscription is attempted to a non-existent extension. + ASTERISK-25003 #close + Reported by: Artem Volodin - ASTERISK-24716 #close - Reported by: Rusty Newton - ........ + Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada - Merged revisions 431754 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-05-05 15:40 +0000 [8b0f85ac06] gtjoseph + * test_vector: Fix build breakage caused by ASTERISK_REGISTER_FILE - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431755 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + My 13 version of test_vector had an ASTERISK_REGISTER_FILE() macro + call at the top which is only supported in master. Once removed + builds are successful. -2015-02-14 12:21 +0000 [cc96e4a7ef] Joshua Colp + Change-Id: I7cac8b669bed6de543bbf4e2eec3cffc9741acdd - * Multiple revisions 431751-431752 +2015-05-05 14:48 +0000 [87263b47b5] Ivan Poddubny - ........ - r431751 | file | 2015-02-14 14:19:07 -0400 (Sat, 14 Feb 2015) | 5 lines - - chan_pjsip: Fix crash when CHANNEL dialplan function is invoked with pjsip argument and no type. - - ASTERISK-24771 #close - Reported by: Niklas Larsson - ........ - r431752 | file | 2015-02-14 14:20:27 -0400 (Sat, 14 Feb 2015) | 2 lines - - 'information' ends with an 'n'. - ........ + * app_queue: Fix queue_log EXITWITHTIMEOUT containing only 1 parameter - Merged revisions 431751-431752 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch fixes EXITWITHTIMEOUT queue_log entry to always come with 3 + parameters: position, original position and waiting time. + ASTERISK-25038 #close + Reported by: Etienne Lessard - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431753 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I0c62045922e26bee2125e93aee1dee17eee79618 -2015-02-13 11:24 +0000 [f00ebf0a2d] Richard Mudgett +2015-05-05 09:47 +0000 [366ea63438] Corey Farrell - * res_pjsip_session: Fix double re-INVITE collision crash. + * res_ari_bridges: Add missing dependencies. - A multi-asterisk box setup with direct media enabled would occasionally - crash when two re-INVITE collisions on a call leg happen in a row. + Missed this module in the previous commit. res_ari_bridges uses symbols + from res_stasis_playback and res_stasis_recording. - The re-INVITE logic only had one timer struct to defer the re-INVITE. - When the second collision happens the timer struct is overwritten and put - into the timer heap again. Resources for the first timer are leaked and - the heap has two positions occupied by the same timer struct. Now the - heap ordering is potentially corrupted, the timer will fire twice, and any - resources allocated for the second timer will be released twice. + ASTERISK-25027 #close + Reported by: Corey Farrell - * The solution is to put the collided re-INVITE into the delayed requests - queue with all the other delayed requests and cherry pick the next request - that can come off the queue when an event happens. + Change-Id: I90bf756abd25adfc4920d2869ebe7feb636b8c5f - * Changed to put delayed BYE requests at the head of the delayed queue. - There is no sense in processing delayed UPDATEs and re-INVITEs when a BYE - has been requested. +2015-05-05 09:27 +0000 [69ae8cf0a4] Corey Farrell - * Made the start of a BYE request flush the delayed requests queue to - prevent a delayed request from overlapping the BYE transaction. I saw a - few cases where a delayed re-INVITE got started after the BYE transaction - started. + * pbx_config: Register manager actions with module version of macro. - * Changed the delayed_request struct to use an enum instead of a string - for the request method. Cherry picking the queue is easier with an enum - than string comparisons and the compiler can warn if a switch statement - does not cover all defined enum values. + Switch manager actions in pbx_config to use the registration macro that + passes the module pointer, allowing pbx_config reference to be bumped + while the manager actions run. - * Improved the debug output to give more information. It helps to know - which channel is involved with an endpoint. Trunks can have many channels - associated with the endpoint at the same time. + ASTERISK-25061 #close + Reported by: Corey Farrell - ASTERISK-24727 #close - Reported by: Mark Michelson + Change-Id: I422c50dd74814616ac10c5e9c6598a0b1bc2c44e - Review: https://reviewboard.asterisk.org/r/4414/ - ........ +2015-05-04 12:16 +0000 [181ae3b8d9] Joshua Colp - Merged revisions 431734 from http://svn.asterisk.org/svn/asterisk/branches/13 + * stasis: Fix dial masquerade datastore lifetime + A recent change went into Asterisk which added reference counts to the + channels stored in a dial masquerade datastore. Unfortunately this + included a reference to the caller in a dialing operation. While all + of the dialed targets have the datastore removed from them upon dialing + completion this did not occur for the caller, causing it to have a + reference to itself that could go never go away (as it depended on + the destruction of the datastore which only happened when the channel + was destroyed). This resulted in the caller channel remaining on the + system despite it having hung up. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431735 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change does the following to fix this issue: -2015-02-12 14:34 +0000 [29f66b0429] Matt Jordan + 1. The dial masquerade datastore is now removed from the caller upon + dialing completion, just like the dialed targets. + 2. Upon destruction of the caller all the dialed targets are also + removed from the dial masquerade datastore (just in case). + 3. The reference to the caller has been removed as it should not be + possible for the datastore to now be valid/useful after the lifetime + of the caller has ended. - * ARI/PJSIP: Add the ability to redirect (transfer) a channel in a Stasis app + ASTERISK-25025 #close - This patch adds a new feature to ARI to redirect a channel to another server, - and fixes a few bugs in PJSIP's handling of the Transfer dialplan - application/ARI redirect capability. + Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f - *New Feature* - A new operation has been added to the ARI channels resource, redirect. With - this, a channel in a Stasis application can be redirected to another endpoint - of the same underlying channel technology. +2015-05-01 19:25 +0000 [7a7e9733c2] gtjoseph - *Bug fixes* - In the process of writing this new feature, two bugs were fixed in the PJSIP - stack: - (1) The existing .transfer channel callback had the limitation that it could - only transfer channels to a SIP URI, i.e., you had to pass - 'PJSIP/sip:foo@my_provider.com' to the dialplan application. While this is - still supported, it is somewhat unintuitive - particularly in a world full - of endpoints. As such, we now also support specifying the PJSIP endpoint to - transfer to. - (2) res_pjsip_multihomed was, unfortunately, trying to 'help' a 302 redirect by - updating its Contact header. Alas, that resulted in the forwarding - destination set by the dialplan application/ARI resource/whatever being - rewritten with very incorrect information. Hence, we now don't bother - updating an outgoing response if it is a 302. Since this took a looong time - to find, some additional debug statements have been added to those modules - that update the Contact headers. + * vector: Traversal, retrieval, insert and locking enhancements - Review: https://reviewboard.asterisk.org/r/4316/ + Renamed AST_VECTOR_INSERT to AST_VECTOR_REPLACE because it really + does replace not insert. The few users of AST_VECTOR_INSERT were + refactored. Because these are macros, there should be no ABI + compatibility issues. - ASTERISK-24015 #close - Reported by: Private Name + Added AST_VECTOR_INSERT_AT that actually inserts an element into the + vector at a specific index pushing existing elements to the right. - ASTERISK-24703 #close - Reported by: Matt Jordan - ........ + Added AST_VECTOR_GET_CMP that can retrieve from the vector based + on a user-provided compare function. - Merged revisions 431717 from http://svn.asterisk.org/svn/asterisk/branches/13 + Added AST_VECTOR_CALLBACK function that will execute a function + for each element in the vector. Similar to ao2_callback and + ao2_callback_data functions although the vector callback can take + a variable number of arguments. This should allow easy migration + to a vector where a container might be too heavy. + Added read/write locked vector and lock manipulation macros. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431718 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Added unit tests. -2015-02-11 12:03 +0000 [9d081ed06c] Kevin Harwell + ASTERISK-25045 #close - * res_pjsip: dtls_handler causes Asterisk to crash + Change-Id: I2e07ecc709d2f5f91bcab8904e5e9340609b00e0 - There have been a couple of times where a crash occurred in the dtls_handler - section of the code for res_pjsip. Unfortunately, in working this issue the - problem was unable to be reproduced. After looking at the backtraces and - through the code the current best guess as to why this happened might be due - to a reentrance problem and the strtok function. So, the current fix is to - convert the strtok function into the reentrant version of the function, - strtok_r. +2015-05-03 13:55 +0000 [040d2f8558] Corey Farrell - ASTERISK-24741 #close - Reported by: Zane Conkle - Review: https://reviewboard.asterisk.org/r/4409/ - ........ + * main/test.c: Add test to verify there were no registration errors. - Merged revisions 431698 from http://svn.asterisk.org/svn/asterisk/branches/13 + This adds a test that will fail if any test failed to register. Also fail + if any test registration produced a warning about missing a leading or + trailing slash. + ASTERISK-25053 #close + Reported by: Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431699 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I93e50b8fcbcfa7f1f5b41b2c44a51685c09529c3 -2015-02-11 11:45 +0000 [cc85e55d88] Kevin Harwell +2015-04-21 11:52 +0000 [3dcec04ab5] Martin Tomec - * ari_websockets: removed extra check on websocket session read + * res_odbc: Use negative connection cache for all connections - When merging the websocket timeout issue (ASTERISK-24701) an extra, almost - duplicate, check was left in the code that should not have been. This removes - it. + Apply the negative connection cache setting to all connections, + even those that are not pooled. This ensures that the connection + will not be re-established before the negative connection cache + time is met. - ASTERISK-24701 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4412/ - ........ + ASTERISK-22708 #close - Merged revisions 431693 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I431cc2e8584ab0b6908b3523d0a0e18c9a527271 +2015-05-03 21:03 +0000 [f38066fcad] Corey Farrell + * Format Interfaces: Prevent unload except by shutdown. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431695 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Format interfaces cannot be unregistered, so the modules that provide them + need to be held open except by shutdown. -2015-02-11 11:39 +0000 [e2d3215b83] Richard Mudgett + ASTERISK-25054 #close + Reported by: Corey Farrell - * HTTP: Stop accepting requests on final system shutdown. + Change-Id: Iadbd9675bf0d30b8fded5a739b163db3ea2db8f3 - There are three CLI commands to stop and restart Asterisk each. +2015-05-03 20:28 +0000 [e76a6a97bf] Matt Jordan - 1) core stop/restart now - Hangup all calls and stop or restart Asterisk. - New channels are prevented while the shutdown request is pending. + * contrib/ast-db-manage: Add Postgres ENUM type support in auto DTMF mode update - 2) core stop/restart gracefully - Stop or restart Asterisk when there are - no calls remaining in the system. New channels are prevented while the - shutdown request is pending. + The upgrade script for auto DTMF mode (31cd4f4891ec) added in 88b0fa7755 + failed to add ENUM support for Postgres databases. This requires a + specific import from the sqlalchemy.dialects.postgresql package. This + patch corrects this error, which allows for Postgres update scripts to + be generated. - 3) core stop/restart when convenient - Stop or restart Asterisk when there - are no calls in the system. New calls are not prevented while the - shutdown request is pending. + ASTERISK-24706 - ARI has made stopping/restarting Asterisk more problematic. While a - shutdown request is pending it is desirable to continue to process ARI - HTTP requests for current calls. To handle the current calls while a - shutdown request is pending, a new committed to shutdown phase is needed - so ARI applications can deal with the calls until the system is fully - committed to shutdown. + Change-Id: I4742ac8efa533cd6f18e0bdd907b339a9aedf015 - * Added a new shutdown committed phase so ARI applications can deal with - calls until the final committed to shutdown phase is reached. +2015-05-01 19:50 +0000 [92120247e9] D Tucny - * Made refuse new HTTP requests when the system has reached the final - system shutdown phase. Starting anything while the system is actively - releasing resources and unloading modules is not a good thing. + * term: send proper reset sequence when black background is forced - * Split the bridging framework shutdown to not cleanup the global bridging - containers when shutting down in a hurry. This is similar to how other - modules prevent crashes on rapid system shutdown. + When using the force black background command-line option or configuration + option an invalid reset sequence is sent following a coloured output item + in the CLI, the result is that the colour is not 'turned off' and continues + until the next non-default coloured text output. - * Moved ast_begin_shutdown(), ast_cancel_shutdown(), and - ast_shutting_down(). You should not have to include channel.h just to - access these system functions. + A reset sequence is already defined in term.c, but the ast_term_reset + function doesn't use it, instead building it's own invalid sequence and + returning that. - ASTERISK-24752 #close - Reported by: Matthew Jordan + This patch changes that behaviour, removing the building of a reset sequence + and instead using the pre-built constant 'enddata' which is a suitable reset + sequence for this purpose. - Review: https://reviewboard.asterisk.org/r/4399/ - ........ + ASTERISK-24896 #close + Reported by: Dan Tucny - Merged revisions 431692 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I56323899123ae3264900389cae1f5b252aa3bf43 +2015-05-02 18:58 +0000 [ad6ea29697] Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431694 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Remove unneeded uses of optional_api providers. -2015-02-11 11:13 +0000 [5a17ed7a38] Richard Miller (License 5685) + A few cases exist where headers of optional_api provders are included but + not needed. This causes unneeded calls to ast_optional_api_use. - * channels/chan_sip: Fix RealTime error during SIP unregistration with MariaDB + * Don't include optional_api.h from sip_api.h. + * Move 'struct ast_channel_monitor' to channel.h. + * Don't include monitor.h from chan_sip.c, channel.c or features.c. - When a SIP device that has its registration stored in RealTime unregisters, - the entry for that device is updated with blank values, i.e., "", indicating - that it is no longer registered. Unfortunately, one of those values that is - 'blanked' is the device's port. If the column type for the port is not a - string datatype (the recommended type is integer), an ODBC or database error - will be thrown. MariaDB does not coerce empty strings to a valid integer value. + The move of struct ast_channel_monitor is needed since channel.c depends on + it. This has no effect on users of monitor.h since channel.h is included + from monitor.h. - This patch updates the query run from chan_sip such that it replaces the port - value with a value of '0', as opposed to a blank value. This is the value that - other database backends coerce the empty string ("") to already, and the - handling of reading a RealTime registration value from a backend already - anticipates receiving a port of '0' from the backends. + ASTERISK-25051 #close + Reported by: Corey Farrell - ASTERISK-24772 #close - Reported by: Richard Miller - patches: - chan_sip.diff uploaded by Richard Miller (License 5685) - ........ + Change-Id: I53ea65a9fc9693c89f8bcfd6120649bfcfbc3478 - Merged revisions 431673 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-04-30 02:07 +0000 [525c8c8689] Rodrigo Ramírez Norambuena - Merged revisions 431674 from http://svn.asterisk.org/svn/asterisk/branches/13 + * include/asterisk/channel.h: Fix typo + Change-Id: Ie584b85e16a94c255e60d0b1732ef9686464fef3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431675 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-05-02 02:15 +0000 [63196a8256] Corey Farrell -2015-02-11 11:03 +0000 [8cc50b1ebc] Corey Farrell + * res_pjsip_dlg_options: Fix MODULEINFO section. - * Enable REF_DEBUG for ast_module_ref / ast_module_unref. + Removed the extra space before "MODULEINFO" in res_pjsip_dlg_options. + This extra space prevented any of the dependencies from being seen by + menuselect, so building with default options would fail if PJSIP was + not installed. - Add ast_module_shutdown_ref for use by modules that can - only be unloaded during graceful shutdown. + This also makes the tool that extracts information for menuselect + tolerant of multiple spaces in the future. - When REF_DEBUG is enabled: - * Add an empty ao2 object to struct ast_module. - * Allocate ao2 object when the module is loaded. - * Perform an ao2_ref in each place where mod->usecount is manipulated. - * ao2_cleanup on module unload. + ASTERISK-25033 #close + Reported by: Peter Whisker - ASTERISK-24479 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4141/ - ........ + Change-Id: Iccd54846f70c4a7a50cb5bf70b7bb5cb4bab3698 - Merged revisions 431662 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-04-29 03:03 +0000 [ac1f0090eb] Corey Farrell - Merged revisions 431663 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Build System: Prevent unneeded changes to asterisk/buildopts.h. + * Add AST_DEVMODE to BUILDOPTS + * Remove CFLAGS that do not effect ABI from BUILDOPTS. + * Use BUILDOPTS to generate AST_BUILDOPT_SUM. + * Remove loop that defined AST_MODULE_* - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431672 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + These changes ensure that only ABI effecting options are considered for + AST_BUILDOPT_SUM. This also reduces unneeded full system rebuilds caused + by enabling or disabling one module that another is dependent on. -2015-02-11 10:52 +0000 [137c4b0778] Kevin Harwell + ASTERISK-25028 + Reported by: Corey Farrell - * res_http_websocket: websocket write timeout fails to fully disconnect + Change-Id: I2c516d93df9f6aaa09ae079a8168c887a6ff93a2 - When writing to a websocket if a timeout occurred the underlying socket did not - get closed/disconnected. This patch makes sure the websocket gets disconnected - on a write timeout. Also a notice is logged stating that the websocket was - disconnected. +2015-05-01 13:22 +0000 [5875bf183c] Corey Farrell - ASTERISK-24701 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4412/ - ........ + * Astobj2: Fix initialization order of refdebug and AO2_DEBUG. - Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This ensures that refdebug is initialized before AO2_DEBUG if + both are enabled, since AO2_DEBUG allocates a container. - Merged revisions 431670 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change also makes AO2_DEBUG initialization critical, a + failure will abort Asterisk startup. This is needed since + the failure would be caused by reg_containers allocation + failure, and that would result in a segmentation fault by + ao2_container_register later in startup. + ASTERISK-25048 #close + Reported by: Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431671 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244 -2015-02-10 17:17 +0000 [49161d8df8] gtjoseph +2015-04-29 14:49 +0000 [1b19c15f17] Matt Jordan - * res_pjsip_config_wizard: Add ability to auto-create hints. + * main/pbx: Improve performance of dialplan reloads with a large number of hints - Looking at the Super Awesome Company sample reminded me that creating hints is - just plain gruntwork. So you can now have the pjsip conifg wizard auto-create - them for you. + The PBX core maintains two hash tables for hints: a container of the + actual hints (hints), along with a container of devices that are watching that + hint (hintdevices). When a dialplan reload occurs, each hint in the hints + container is destroyed; this requires a lookup in the container of devices to + find the device => hint mapping object. In the current code, this performs an + ao2_callback, iterating over each of the device to hint objects in the + hintdevices container. For a large number of hints, this is extremely + expensive: dialplan reloads with 20000 hints could take several minutes + in just this phase. - Specifying 'hint_exten' in the wizard will create - 'exten => ,hint/PJSIP/' - in whatever is specified for 'hint_context'. + This patch improves the performance of this step in the dialplan reloads + by caching which devices are watching a hint on the hint object itself. + Since we don't want to create a circular reference, we just cache the + name of the device. This allows us to perform a smarter ao2_callback on + the hintdevices container during hint removal, hashing on the name of the + device and returning an iterator to the matching names. The overall + performance improvement is rather large, taking this step down to a number of + seconds as opposed to minutes. - Specifying 'hint_application' in the wizard will create - 'exten => ,1,' - in whatever is specified for 'hint_context'. + In addition, this patch also registers the hint containers in the PBX + core with the astobj2 library. This allows for reasonable debugging to + hash collisions in those containers. - The default for 'hint_context' is the endpoint's context. - There's no default for 'hint_application'. If not specified, no app is added. - There's no default for 'hint_exten'. If not specified, neither the hint itself - nor the application will be created. + ASTERISK-25040 #close + Reported by: Matt Jordan - Some may think this is the slippery slope to users.conf but hints are a basic - necessity for phones unlike voicemail, manager, etc that users.conf creates. + Change-Id: Iedfc97a69d21070c50fca42275d7b3e714e59360 - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4383/ - ........ +2015-04-30 15:54 +0000 [3efe0df044] Corey Farrell - Merged revisions 431643 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Sample Configs: Fix syntax error in pjsip.conf + The sample pjsip.conf has a few comment lines that are missing the + semicolons at the start of the comment, causing the config to fail + load. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431644 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I776a38c916a7df7ee3e072fd0b21dbf4cc457352 -2015-02-08 21:12 +0000 [858e825568] Ben Merrills (License 6678) +2015-04-30 15:20 +0000 [077979618b] Mark Michelson - * res/ari/resource_channels: Add missing 'no_answer' reason to DELETE /channels + * Prevent potential crash on blond transfer. - One of the canonical reasons for hanging up a channel is because the far end - failed to answer - or because someone else answered, and we want to get rid of - this channel. This patch adds the missing value to the 'reason' query parameter - for the DELETE /channels operation. + Scenario: + Alice calls Bob. Bob performs a blond transfer to Carol. Carol rejects + the incoming call (or some other immediate circumstance causes Carol not + to answer the call) - Review: https://reviewboard.asterisk.org/r/4400 + What occurs in this case is that when the bridge between Alice and Bob + breaks, Alice is told to masquerade into Bob's channel that had placed + the call to Carol. The actual masquerade goes down without a hitch. + However, a channel fixup callback that attempts to publish dial events + over Stasis has a crash. The reason for this crash is that the datastore + on Bob's channel that placed the outbound call to Carol only had a bare + pointer to Carol's channel. Since Carol rejected the incoming call, + Carol's channel has been hung up and freed, meaning accessing her + channel results in a crash. - ASTERISK-24745 #close - Reported by: Ben Merrills - patches: - add_no_answer_ari_hangup_cause.diff uploaded by Ben Merrills (License 6678) - ........ + The fix here is simple. The dial fixup code has been altered to hold + references to the involved channels and to drop those references when + freeing data. - Merged revisions 431622 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25025 #close + Reported by Chet Stevens + Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-30 14:09 +0000 [4b8cddfb36] Mark Michelson -2015-02-08 20:35 +0000 [17247daae6] ibercom (License 6599) + * res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback. - * res/res_odbc: Remove unneeded queries when determining if a table exists + The Asterisk 13 version of the fix for outbound registration was missing + a key component that set the outbound authenticator's callback that + creates an authenticated request based on an old request. This was + picked up by some outbound registration tests failing in the testsuite. - This patch modifies the ast_odbc_find_table function such that it only performs - a lookup of the requested table if the table is not already known. Prior to - this patch, a queries would be executed against the database even if the table - was already known and cached. + Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3 +2015-04-30 13:42 +0000 [415a0d0745] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4405/ + * res_ari_device_states: Fix dependency on res_stasis_device_state. - ASTERISK-24742 #close - Reported by: ibercom - patches: - patch.diff uploaded by ibercom (License 6599) - ........ + The res_ari_device_states module depends on res_stasis_device_state, + not res_stasis_device_states. - Merged revisions 431617 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I26e02ad37f9e36bcc859867e2fad1b90452ec3de - Merged revisions 431618 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-29 14:29 +0000 [d3c310a28c] Richard Mudgett + * chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431619 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Some telco switches occasionally ignore ISDN RESTART requests. The fix + for ASTERISK-19608 added an escape clause for B channels in the restarting + state if the telco ignores a RESTART request. If the telco fails to + acknowledge the RESTART then Asterisk will assume the telco acknowledged + the RESTART on the second call attempt requesting the B channel by the + telco. The escape clause is good for dealing with RESTART requests in + general but it does cause the next call for the restarting B channel to be + rejected if the telco insists the call must go on that B channel. -2015-02-08 11:24 +0000 [2ebe811d80] Matt Jordan + chan_dahdi doesn't really need to issue a RESTART request in response to + receiving a cause 44 (Requested channel not available) code. Sending the + RESTART in such a situation is not required (nor prohibited) by the + standards. I think chan_dahdi does this for historical reasons to deal + with buggy peers to get channels unstuck in a similar fashion as the + chan_dahdi.conf resetinterval option. - * res/res_pjsip_sdp_rtp: Fix leak of local ICE candidates when applying to SDP + * Add the chan_dahdi.conf force_restart_unavailable_chans compatability + option that when disabled will prevent chan_dahdi from trying to RESTART + the channel in response to a cause 44 code. - When an SDP is created for an outgoing request/response, the ICE candidates - obtained from the RTP instance are currently leaked. This causes the ao2 - container that holds the candidates to never properly be reclaimed when the - RTP instance is destroyed. + ASTERISK-25034 #close + Reported by: Richard Mudgett - This patch properly decrements the ICE candidates' container if it is - successfully obtained. + Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65 +2015-04-30 06:38 +0000 [7f611fa0e8] Rodrigo Ramírez Norambuena - ASTERISK-24769 #close - Reported by: Matt Jordan - ........ + * cdr/cdr_csv.c: Add a new option to enable columns added in Asterisk 1.8 - Merged revisions 431600 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch adds a new option to cdr.conf, 'newcdrcolumns', that will handle CDR + columns added in Asterisk 1.8. The columns are: + * peeraccount + * linkedid + * sequence + When enabled, the columns in the database entry will be populated with the data + from the CDR. + ASTERISK-24976 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431601 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I51a57063f4ae5e194a9d933a8df45dc8a4534f0b -2015-02-06 15:26 +0000 [7ca1a0da04] Scott Griepentrog +2015-04-30 06:04 +0000 [e332c7ed5e] Joshua Colp - * various: cleanup issues found during leak hunt + * res_pjsip_outbound_registration: Fix double unref on error return. - In this collection of small patches to prevent - Valgrind errors are: fixes for reference leaks - in config hooks, evaluating a parameter beyond - bounds, and accessing a structure after a lock - where it could have been already free'd. + When the PJSIP pjsip_regc_send function is invoked and an error + status returned the caller currently decrements the reference count + of the client state that it just incremented, assuming the + registration callback would not have been invoked. In practice + this is not correct. If the failure happens after the transaction + has been set up the callback will still be invoked. This will + cause the reference count to be incorrectly decremented twice, once + by the registration callback and second by the caller of + pjsip_regc_send. - Review: https://reviewboard.asterisk.org/r/4407/ - ........ + This change makes it so that whether the callback is invoked or + not is known by the caller of pjsip_regc_send. Depending on + this it can know whether it is responsible for decrementing the + reference count of the client state or not. - Merged revisions 431583 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25037 #close + Reported by: Joshua Colp + Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431584 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-20 13:03 +0000 [9c3ed42875] Diederik de Groot -2015-02-03 19:27 +0000 [a79c920aa1] Joshua Colp + * Update configure.ac/Makefile for clang - * res_pjsip_keepalive: Don't crash if PJSIP module is not loaded. - ........ + Created autoconf/ast_check_raii.m4: contains AST_CHECK_RAII which + checks compiler requirements for RAII: + gcc: -fnested-functions support + clang: -fblocks (and if required -lBlocksRuntime) + The original check was implemented in configure.ac and now has it's + own file. This function also sets C_COMPILER_FAMILY to either gcc or + clang for use by makefile - Merged revisions 431555 from http://svn.asterisk.org/svn/asterisk/branches/13 + Created autoconf/ast_check_strsep_array_bounds.m4 (contains + AST_CHECK_STRSEP_ARRAY_BOUNDS): + which checks if clang is able to handle the optimized strsep & strcmp + functions (linux). If not, the standard libc implementation should be + used instead. Clang + the optimized macro's work with: + strsep(char *, char []), but not with strsepo(char *, char *). + Instead of replacing all the occurences throughout the source code, + not using the optimized macro version seemed easier + See 'define __strcmp_gc(s1, s2, l2) in bits/string2.h': + llvm-comment: Normally, this array-bounds warning are suppressed for + macros, so that unused paths like the one that accesses __s1[3] are + not warned about. But if you preprocess manually, and feed the + result to another instance of clang, it will warn about all the + possible forks of this particular if statement. Instead of switching + of this optimization, another solution would be to run the preproces- + sing step with -frewrite-includes, which should preserve enough + information so that clang should still be able to suppress the diag- + nostic at the compile step later on. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431556 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + See also "https://llvm.org/bugs/show_bug.cgi?id=20144" + See also "https://llvm.org/bugs/show_bug.cgi?id=11536" -2015-02-03 18:59 +0000 [03ce56d6c5] Joshua Colp + Makefile.rules: If C_COMPILER_FAMILY=clang then add two warning + suppressions: + -Wno-unused-value + -Wno-parentheses-equality + In an earlier review (reviewboard: 4550 and 4554), they were deemed a + nuisace and less than benefitial. - * sorcery: Don't try to load object types which haven't been defined. + configure.ac: + Added AST_CHECK_RAII() see earlier + Added AST_CHECK_STRSEP_ARRAY_BOUNDS() see earlier + Removed moved content - The act of defining wizards for an object type in sorcery.conf will - create a minimal object type. This can cause a problem when a module - has multiple sorcery instances (which all get the wizards from sorcery.conf - applied) but the sorcery instances do not all contain full information - about the object types. Upon loading errors will occur stating that - the objects can not be created. This is confusing and is actually - perfectly fine. + ASTERISK-24917 + Change-Id: I12ea29d3bda2254ad3908e279b7effbbac6a97cb - This change makes it so that only object types which have been fully - defined will be loaded. +2015-04-29 16:15 +0000 [d4e207e27e] Matt Jordan - ASTERISK-24748 #close - Reported by: Joshua Colp - ........ + * main/rtp_engine: Fix DTLS double-free introduced by 0b6410c4f8 - Merged revisions 431538 from http://svn.asterisk.org/svn/asterisk/branches/13 + The patch in 0b6410c4f8 did correctly fix a memory leak of the DTLS + structures in the RTP engine. However, when a 'core reload' is issued, a + double free of the memory pointed to by the char *'s in the DTLS + configuration struct can occur, as ast_rtp_dtls_cfg_free does not set + the pointers to NULL when they are freed. + This patch sets those pointers to NULL, preventing a second call to + ast_rtp_dtls_cfg_free from corrupting memory. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431539 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25022 -2015-01-31 10:28 +0000 [14a57782a6] Joshua Colp + Change-Id: I820471e6070a37e3c26f760118c86770e12f6115 - * res_format_attr_h264: Fix crash when determining joint capability. +2015-04-29 13:05 +0000 [3fb6daeb55] Kevin Harwell - The res_format_attr_h264 module currently incorrectly attempts to - copy SPS and PPS information from the wrong attribute. This change - fixes that. + * res_fax: allow 2400 transmission rate according to v.27ter standard - ASTERISK-24616 #close - Reported by: Yura Kocyuba + A previous set of patches (see: ASTERISK-22790 & ASTERISK-23231) made it so + a v.27 modem was not allowed to have a minimum transmission rate of 2400 bits + per second. This reverts all or some of those patches since according to the + v.27ter standard a rate of 2400 bits per second is also supported. - Review: https://reviewboard.asterisk.org/r/4392/ - ........ + One of the original patches also added 9600 bits per second support for v.27. + This patch also removes that since v.27ter only supports 2400/4800 bits per + second. - Merged revisions 431521 from http://svn.asterisk.org/svn/asterisk/branches/13 + Also, since Asterisk specifically supports v.27ter the enum was renamed to + better reflect this. + ASTERISK-24955 #close + Reported by: Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431522 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I4b9dfb6bf7eff08463ab47ee1a74224f27cae733 -2015-01-30 11:49 +0000 [23bb5f6a73] Richard Mudgett +2015-04-29 10:46 +0000 [49ef81c15c] Joshua Colp - * app_agent_pool: Fix initial module load agent device state reporting. + * res_sorcery_config: Fix build issue due to syntax error. - When the app_agent_pool module initially loads there is a race condition - between the thread loading agents.conf and the device state internal - processing thread. If the device state internal processing thread handles - the agent creation state updates before the thread that loaded agents.conf - registers the device state provider callback then the cached agent state - is "Invalid". When a consumer module like app_queue asks for the agent state - it gets the cached "Invalid" state instead of the real state from the provider. + Change-Id: Ic8322f04e37842848ad72cf2871bd0378f67c4ac - * Moved loading the agents.conf configuration to the last thing setup by - app_agent_pool in load_module(). Now the device state provider callback - is registered before the config is loaded so the agent creation state - updates are guaranteed to get the initial device state. +2015-04-28 00:29 +0000 [3278fe5327] Ashley Sanders - * Removed some now redundant config cleanup on error in load_config(). + * chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR + Sections Exist in pjsip.conf - * Added lock protection when accessing the device state in - agent_pvt_devstate_get() and eliminated the RAII_VAR() usage. + This patch modifies the current loading strategy of the pjsip configuration. If + duplicate sections (e.g. sections containing the same [id/type]) are defined in + [pjsip.conf], the loader will consider the configuration for the given type as + invalid when the duplicate section is encountered. The entire configuration + (including what was previously loaded) for the duplicate [id/type] sections + will be rejected and destroyed, an error message is logged and the load + processing for the given stops. - ASTERISK-24737 #close - Reported by: Steve Pitts + ASTERISK-24996 + Reported By: Ashley Sanders - Review: https://reviewboard.asterisk.org/r/4390/ - ........ + Change-Id: I35090ca4cd40f1f34881dfe701a329145c347aef - Merged revisions 431492 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-11-04 06:03 +0000 [89f6719f7a] Joshua Colp + * res_pjsip_outbound_registration: Add virtual line support. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431493 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Virtual line support establishes a relationship between messages + related to an outbound registration and a local endpoint. This is + accomplished by attaching a parameter to the Contact of the outbound + registration and looking for it on any received requests. If the + parameter exists and can be matched to an outbound registration + the configured endpoint is associated with the request. -2015-01-30 11:41 +0000 [5c9f1b3f51] Kevin Harwell + ASTERISK-24949 #close + Reported by: Joshua Colp - * res_pjsip_outbound_publish: eventually crashes when no response is ever received + Change-Id: I7df909d2625479110a83fdd354c21ac539e8615d - When Asterisk attempts to send SIP outbound publish information and no response - is ever received (no 200 okay, 412, 423) the system eventually crashes. A - response is never received because the system Asterisk is attempting to send - publish information to is not available. The underlying pjsip framework attempts - to send publish information. After several attempts it calls back into the - Asterisk outbound publish code. At this point if the "client->queue" is empty - Asterisk attempts to schedule a refresh which utilizes "rdata" and since no - response was received the given "rdata" struture is NULL. Attempting to - dereference a NULL object of course results in a crash. +2015-04-29 06:39 +0000 [d61f03c4f9] Corey Farrell - The fix here removes the dependency on rdata for schedule_publish_refresh. - Instead param->expiration is now passed to it as this is set to -1 if no - response is received. Also added a notification when no response is received. + * ARI: Fix missing dependencies. - ASTERISK-24635 #close - Reported by: Marco Paland - Review: https://reviewboard.asterisk.org/r/4384/ - ........ + ARI modules that are generated by 'make ari-stubs' are all dependent on + res_ari_model. Additionally some of the same modules depend on one or more + res_stasis_* modules. - Merged revisions 431490 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25027 #close + Reported by: Corey Farrell + Change-Id: I8e07fe7e81fedacb87232f2b6f8b5f47927b4153 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431491 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-29 06:26 +0000 [3e4624ad21] Corey Farrell -2015-01-30 11:21 +0000 [6a76740b83] Ashley Sanders + * res_pjsip: Remove incorrect MODULEINFO from presence_xml.c. - * HTTP: For httpd server, need option to define server name for security purposes + Remove incorrect MODULEINFO block and unneeded header includes + from presence_xml.c. - Added a new config property [servername] to the http.conf file; updated the http server to use the new property when sending responses, for showing http status through the CLI and when reporting status through the 'httpstatus' webpage. In this version, [servername] is uncommented by default. + ASTERISK-25027 + Reported by: Corey Farrell - ASTERISK-24316 #close - Reported By: Andrew Nagy - Review: https://reviewboard.asterisk.org/r/4374/ - ........ + Change-Id: I977c609ab9d1fe05373027c4138900f6985990eb - Merged revisions 431471 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-29 06:17 +0000 [fed9faab8d] Corey Farrell + * Git Migration: Create doc/rest-api when needed. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431484 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Create the directory './doc/rest-api' at the start of 'make ari-stubs' + to prevent an error when documentation is generated. The directory is + also added to git ignores. -2015-01-30 10:49 +0000 [bd0bdf1e41] Mark Michelson + ASTERISK-25027 + Reported by: Corey Farrell - * Fix some memory leaks. + Change-Id: Iaccc7f0138501c23aa78feaca2f3cce9e68cbc1b - These memory leaks were found and fixed by John Hardin. I'm just - committing them for him. +2015-04-29 05:17 +0000 [df23c8a86b] Joshua Colp - ASTERISK-24736 #close - Reported by Mark Michelson + * res_pjsip_outbound_registration: Fix build due to removal of transaction. - Review: https://reviewboard.asterisk.org/r/4389 - ........ + Change-Id: I7a8a7beec3334cec304943f2dd7597eabe2e3150 - Merged revisions 431468 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-27 16:56 +0000 [e39bd6ba46] Mark Michelson + * res_pjsip_outbound_registration: Don't fail on delayed processing: 13. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431469 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This is the Asterisk 13 version of a change to master that allows for + registration responses to be processed successfully potentially after + the original transaction has timed out. The main difference between this + and the master change is that the master version has API changes that + are unacceptable for 13. For 13, this is worked around by adding a new + API call that the outbound registration code uses instead. -2015-01-29 17:03 +0000 [388d691f34] Scott Griepentrog + The following is the text from the master version of this commit: - * stasis transfer: fix stasis bridge push race part two + Odd behaviors have been observed during outbound registrations. The most + common problem witnessed has been one where a request with + authentication credentials cannot be created after receiving a 401 + response. Other behaviors include apparently processing an incorrect SIP + response. - When swapping a Local channel in place of one already - in a bridge (to complete a bridge attended transfer), - the channel that was swapped out can actually be hung - up before the stasis bridge push callback executes on - the independant transfer thread. This results in the - stasis app loop dropping out and removing the control - that has the the app name which the local replacement - channel needs so it can re-enter stasis. + Inspecting the code led to an apparent issue with regards to how we + handle transactions in outbound registration code. When a response to a + REGISTER arrives, we save a pointer to the transaction and then push a + task onto the registration serializer. Between the time that we save the + pointer and push the task, it's possible for the transaction to be + destroyed due to a timeout. It's also possible for the address to be + reused by the transaction layer for a new transaction. - To avoid this race condition a new push_peek callback - has been added, and called from the ast_bridge_impart - thread before it launches the independant thread that - will complete the transfer. Now the stasis push_peek - callback can copy the stasis app name before the swap - channel can hang up. + To allow for authentication of a REGISTER request to be authenticated + after the transaction has timed out, we now also hold a reference to the + original REGISTER request instead of the transaction. The function for + creating a request with authentication has been altered to take the + original request instead of the transaction where the original request + was sent. - ASTERISK-24649 - Review: https://reviewboard.asterisk.org/r/4382/ - ........ + ASTERISK-25020 + Reported by Mark Michelson - Merged revisions 431450 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: If1ee5f601be839479a219424f0358a229f358f7c +2015-04-27 14:44 +0000 [1bf008fc76] Mark Michelson + * res_pjsip_outbound_registration: Add debugging messages. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431451 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When problems occur regarding outbound registrations, it currently + is difficult to debug. Most off-nominal paths had warning messages, + but sometimes we want to know what's going on before hitting the + off-nominal path. This patch adds lots of debugging output that + should give a clearer picture of what is happening with regards + to outbound registrations. -2015-01-29 15:20 +0000 [f61c80a8f7] Mark Michelson + ASTERISK-25020 + Reported by Mark Michelson - * Allow disabling of 100rel support on PJSIP endpoints. + Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45 - Due to an inversion error, setting 100rel=no would not actually - change the current value of the setting (which defaulted to "yes"). - With this fix, the inversion is corrected. - ........ +2015-04-28 05:38 +0000 [0b6410c4f8] Steve Davies - Merged revisions 431420 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_rtp_asterisk: Resolve 2 discrete memory leaks in DTLS + ao2 ref leak in res_rtp_asterisk.c when a DTLS policy is created. + The resources are linked into a table, but the original alloc refs + are never released. ast_strdup leak in rtp_engine.c. If + ast_rtp_dtls_cfg_copy() is called twice on the same destination struct, + a pointer to an alloc'd string is overwritten before the string is free'd. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431436 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25022 + Reported by: one47 -2015-01-29 15:02 +0000 [034798e37e] Mark Michelson + Change-Id: I62a8ceb8679709f6c3769136dc6aa9a68202ff9b - * Use SIPS URIs in Contact headers when appropriate. +2015-04-27 12:11 +0000 [99fb87ae13] gtjoseph - RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific - scenarios when we are required to use SIPS URIs in Contact - headers. Asterisk's non-compliance with this could actually - cause calls to get dropped when communicating with clients - that are strict about checking the Contact header. + * res_pjsip: Fix SEGV on pending-qualify contacts - Both of the SIP stacks in Asterisk suffered from this issue. - This changeset corrects the behavior in res_pjsip/chan_pjsip.c + Permanent contacts that hadn't been qualified yet were missing + their contact_status entries causing SEGVs when running CLI + commands. - Review: https://reviewboard.asterisk.org/r/4345 - ........ + This patch makes sure that contact_statuses are created for + both dynamic and permanent contacts when they are created. + It also adds checks in the CLI code to make sure there's a + contact_status, just in case. - Merged revisions 431426 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25018 #close + Reported-by: Ivan Poddubny + Tested-by: Ivan Poddubny + Tested-by: George Joseph + Change-Id: I3cc13e5cedcafb24c400368b515b02d7fb81e029 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431427 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-15 18:55 +0000 [d5dd43856e] Rodrigo Ramírez Norambuena -2015-01-29 14:54 +0000 [fe76d4829f] Mark Michelson + * cdr/cdr_odbc.c: Added to record new columns add on CDR 1.8 Asterisk Version - * Use SIPS URIs in Contact headers when appropriate. + Add new column to INSERT new columns added in cdr 1.8 version. The columns are: + * peeraccount + * linkedid + * sequence + This feature is configurable in cdr_odbc.conf using a new configuration + option, 'newcdrcolumns'. - RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific - scenarios when we are required to use SIPS URIs in Contact - headers. Asterisk's non-compliance with this could actually - cause calls to get dropped when communicating with clients - that are strict about checking the Contact header. + ASTERISK-24976 #close - Both of the SIP stacks in Asterisk suffered from this issue. - This changeset corrects the behavior in chan_sip. + Change-Id: Ibe0c7540a88305c6012786f438a0813ad8b19127 +2015-04-26 17:21 +0000 [e9788056e9] Matt Jordan - ASTERISK-24646 #close - Reported by Stephan Eisvogel + * channels/chan_skinny: Fix compilation error introduced in f8e21a1adf - Review: https://reviewboard.asterisk.org/r/4346 - ........ + A typo in commit f8e21a1adf resulted in a compilation error in + chan_skinny. This patch fixes the typo. - Merged revisions 431423 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-24917 - Merged revisions 431424 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Id7f4ad1fe948eb2408622e80c27936ce4516c33c +2015-04-23 15:11 +0000 [7e5056b393] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431425 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * app_confbridge: Default the template option to a compatible default profile. -2015-01-29 10:47 +0000 [8357ffab9c] gtjoseph + Confbridge dynamic profiles did not have a default profile unless you + explicitly used Set(CONFBRIDGE(bridge,template)=default_bridge). If a + template was not set prior to the bridge being created then some + options were left with no default values set. This patch makes it so + the default templates are set to the default bridge and user profiles. - * res_pjsip_exten_state: Reduce log clutter... change a WARNING to a VERBOSE/2 + ASTERISK-24749 #close + Reported by: philippebolduc - Reduce log clutter by changing the "Watcher for hint %s (removed|deactivated)" - message from WARNING to VERBOSE/2. + Change-Id: I1bd6e94b38701ac2112d842db68de63d46f60e0a - Tested-by: George Joseph +2015-04-24 09:17 +0000 [1da9ec969d] Mark Michelson - Review: https://reviewboard.asterisk.org/r/4387/ - ........ + * res_pjsip_outbound_authenticator: Increase CSeq on authed requests. - Merged revisions 431403 from http://svn.asterisk.org/svn/asterisk/branches/13 + The way PJSIP generates an authenticated request is to use a previous + request as a template. This means that the authenticated request will + have the same Call-ID, From header (including tag), and CSeq as the + original request. PJSIP generates a new branch on the Via header to + indicate that this is a new transaction, though. + There are some SIP implementations, though, that do not notice the + change in the branch and therefore will match the authed request to the + original request's transaction. Since the CSeq is the same, the server + will repeat the response it sent to the original request. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431404 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch aids interoperability by increasing the CSeq of the authed + request by one. -2015-01-29 06:09 +0000 [9893ba7ffb] Joshua Colp + ASTERISK-24845 #close + Reported by: Carl Fortin + Tested by: Carl Fortin - * res_rtp_asterisk: Fix DTLS when used with OpenSSL 1.0.1k + Change-Id: I39c4ca52e688a9f83bcc1878371334becdc5be01 - A recent security fix for OpenSSL broke DTLS negotiation for many - applications. This was caused by read ahead not being enabled when it - should be. While a commit has gone into OpenSSL to force read ahead - on for DTLS it may take some time for a release to be made and the - change to be present in distributions (if at all). As enabling read - ahead is a simple one line change this commit does that and fixes - the issue. +2015-04-20 13:06 +0000 [cb318f3960] Diederik de Groot - ASTERISK-24711 #close - Reported by: Jared Biel - ........ + * Example script for scan-build (the llvm static analyzer) - Merged revisions 431384 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + - Added Pre-amble (Options / Flags / Usage Example / GNU License) + - Extended Configurability + - Made Executable - Merged revisions 431385 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24917 + Change-Id: I70405fe54e4be7dbfbcb62e291690069b88617a8 +2015-04-23 12:54 +0000 [eabf3b5a3c] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431386 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX. -2015-01-28 11:42 +0000 [b3ff43a4e8] Mark Michelson + When Asterisk originates a channel to an application, the channel is + hung up once the application finishes executing. When the application + in question is SendFax, the Asterisk PJSIP code will attempt to reinvite + the T.38 session to audio after the FAX completes. The hangup of the + channel happens in the midst of this reinvite transaction. In most + circumstances, this works out okay because the BYE is delayed until the + reinvite transaction can complete. - * Fix file descriptor leak in RTP code. + However, if the reinvite that Asterisk sends receives a 401/407 + response, then Asterisk's attempt to re-send the reinvite with + authentication will fail. This is because the session supplement in + res_pjsip_t38 makes the assumption that the channel on the session will + always be non-NULL. Since the channel has been hung up, though, the + channel is now NULL. Attempting to operate on the channel causes a + crash. - SIP requests that offered codecs incompatible with configured values - could result in the allocation of RTP and RTCP ports that would not get - reclaimed later. + This patch fixes the issue by ensuring that the channel on the session + is not NULL before attempting to mess with the T.38 framehook. - ASTERISK-24666 #close - Reported by Y Ateya + This patch also contains some corrections for comments that were + incorrect and really confused me when I first started looking at the + code. - Review: https://reviewboard.asterisk.org/r/4323 + ASTERISK-25004 #close + Reported by Mark Michelson - AST-2015-001 - ........ + Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0 +2015-04-23 09:16 +0000 [f70d21b2cf] gtjoseph - Merged revisions 431300 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip: Validate that contact uris start with sip: or sips: - Merged revisions 431303 from http://svn.asterisk.org/svn/asterisk/branches/13 + Currently we use pjsip_parse_hdr to validate contact uris but it + appears that it allows uris without a scheme if there's a port + supplied. I.E myexample.com will fail but myexample.com:5060 will + pass even though it has no scheme. This causes SEGVs later on + whenever the uri is used. + To prevent this, permanent_contact_validate has been updated to check + that the scheme is either 'sip' or 'sips'. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431304 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + 2 uses of possibly-null endpoint have also been fixed in + create_out_of_dialog_request. -2015-01-28 11:34 +0000 [3cccfac399] Mark Michelson + ASTERISK-24999 - * Multiple revisions 431297-431298 + Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2 + Reported-by: Brad Latus - ........ - r431297 | mmichelson | 2015-01-28 11:05:26 -0600 (Wed, 28 Jan 2015) | 17 lines - - Mitigate possible HTTP injection attacks using CURL() function in Asterisk. - - CVE-2014-8150 disclosed a vulnerability in libcURL where HTTP request injection - can be performed given properly-crafted URLs. - - Since Asterisk makes use of libcURL, and it is possible that users of Asterisk may - get cURL URLs from user input or remote sources, we have made a patch to Asterisk - to prevent such HTTP injection attacks from originating from Asterisk. - - ASTERISK-24676 #close - Reported by Matt Jordan - - Review: https://reviewboard.asterisk.org/r/4364 - - AST-2015-002 - ........ - r431298 | mmichelson | 2015-01-28 11:12:49 -0600 (Wed, 28 Jan 2015) | 3 lines - - Fix compilation error from previous patch. - ........ +2015-04-23 08:00 +0000 [1bb16bedc7] Diederik de Groot - Merged revisions 431297-431298 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Clang: change previous tautological-compare fixes. - Merged revisions 431299 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + clang can warn about a so called tautological-compare, when it finds + comparisons which are logically always true, and are therefor deemed + unnecessary. - Merged revisions 431301 from http://svn.asterisk.org/svn/asterisk/branches/13 + Exanple: + unsigned int x = 4; + if (x > 0) // x is always going to be bigger than 0 + Enum Case: + Each enumeration is its own type. Enums are an integer type but they + do not have to be *signed*. C leaves it up to the compiler as an + implementation option what to consider the integer type of a particu- + lar enumeration is. Gcc treats an enum without negative values as + an int while clang treats this enum as an unsigned int. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431302 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + rmudgett & mmichelson: cast the enum to (unsigned int) in assert. + The cast does have an effect. For gcc, which seems to treat all enums + as int, the cast to unsigned int will eliminate the possibility of + negative values being allowed. For clang, which seems to treat enums + without any negative members as unsigned int, the cast will have no + effect. If for some reason in the future a negative value is ever + added to the enum the assert will still catch the negative value. -2015-01-28 06:19 +0000 [f080ca6536] Sean Bright + ASTERISK-24917 - * media formats: update res_format_attr_opus & silk + Change-Id: I0557ae0154a0b7de68883848a609309cdf0aee6a - In r419044, we changed how formats were handled, but the return value - of the format_parse_sdp_fmtp functions in res_format_attr_opus and - res_format_attr_silk were not updated, causing calls to fail. Ran - into this when getting codec_opus working with Asterisk 13. +2015-04-22 16:22 +0000 [1474bb05f6] gtjoseph - Once the return value was corrected, we were crashing in opus_getjoint - because of NULL format attributes. I've fixed this as well in this - patch. + * res_corosync: Add check for config file before calling corosync apis - Review: https://reviewboard.asterisk.org/r/4371/ - ........ + On some systems, res_corosync isn't compatible with the installed version of + corosync so corosync_cfg_initialize fails, load_module returns LOAD_FAILURE, + and Asterisk terminates. The work around has been to remember to add + res_corosync as a noload in modules.conf. A better solution though is to have + res_corosync check for its config file before attempting to call corosync apis + and return LOAD_DECLINE if there's no config file. This lets Asterisk loading + continue. - Merged revisions 431267 from http://svn.asterisk.org/svn/asterisk/branches/13 + If you have a res_corosync.conf file and res_corosync fails, you get the same + behavior as today and the fatal error tells you something is wrong with the + install. + ASTERISK-24998 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431268 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Iaf94a9431a4922ec4ec994003f02135acfdd3889 +2015-04-22 15:17 +0000 [73efb093b8] Corey Farrell -2015-01-27 22:29 +0000 [69e107b24e] Richard Mudgett + * Astobj2: Ensure all calls to __adjust_lock pass a valid object. - * res_pjsip_outbound_registration: Fix reload race condition. + __adjust_lock doesn't check for invalid objects, and doesn't have an + appropriate return value for invalid objects. Most callers of + __adjust_lock pass objects that have already been confirmed valid, + this change adds checks before the remaining calls. - Performing a CLI "module reload" command when there are new pjsip.conf - registration objects defined frequently failed to load them correctly. + ASTERISK-24997 #close + Reported by: Corey Farrell - What happens is a race condition between res_pjsip pushing its reload into - an asynchronous task processor task and the thread that does the rest of - the reloads when it gets to reloading the res_pjsip_outbound_registration - module. A similar race condition happens between a reload and the CLI/AMI - show registrations commands. The reload updates the current_states - container and the CLI/AMI commands call get_registrations() which builds a - new current_states container. + Change-Id: I669100f87937cc3f867cec56a27ae9c01292908f - * Made res_pjsip.c reload_module() use ast_sip_push_task_synchronous() - instead of ast_sip_push_task() to eliminate two threads processing config - reloads at the same time. +2015-04-22 16:32 +0000 [b0e929219b] gtjoseph - * Made get_registrations() not replace the global current_states container - so the CLI/AMI show registrations command cannot interfere with reloading. - You could never add/remove objects in the container without the - possibility of the container being replaced out from under you by - get_registrations(). + * .gitignore: Add .gcno and .gcda - * Added a registration loaded sorcery instance observer to purge any dead - registration objects since get_registrations() cannot do this job anymore. - The struct ast_sorcery_instance_observer callbacks must be used because - the callback happens inline with the load process. The struct - ast_sorcery_observer callbacks are pushed to a different thread. + Products of --enable-coverage - * Added some global current_states NULL pointer checks in case the - container disappears because of unload_module(). + Change-Id: Ie20882d64b60692e2c941ea8872ab82a86ce77a3 - * Made sorcery's struct ast_sorcery_instance_observer.object_type_loaded - callbacks guaranteed to be called before any struct - ast_sorcery_observer.loaded callbacks will be called. +2015-04-22 04:17 +0000 [d6dfc85666] Diederik de Groot - * Moved the check for non-reloadable objects to before the sorcery - instance loading callbacks happen to short circuit unnecessary work. - Previously with non-reloadable objects, the sorcery instance - loading/loaded callbacks would always happen, the individual wizard - loading/loaded would be prevented, and the non-reloadable type logging - message would be logged for each associated wizard. + * Clang: Fix some more tautological-compare warnings. - ASTERISK-24729 #close - Review: https://reviewboard.asterisk.org/r/4381/ - ........ + clang can warn about a so called tautological-compare, when it finds + comparisons which are logically always true, and are therefor deemed + unnecessary. - Merged revisions 431243 from http://svn.asterisk.org/svn/asterisk/branches/13 + Exanple: + unsigned int x = 4; + if (x > 0) // x is always going to be bigger than 0 + Enum Case: + Each enumeration is its own type. Enums are an integer type but they + do not have to be *signed*. C leaves it up to the compiler as an + implementation option what to consider the integer type of a particu- + lar enumeration is. Gcc treats an enum without negative values as + an int while clang treats this enum as an unsigned int. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431251 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + rmudgett & mmichelson: cast the enum to (unsigned int) in assert. + The cast does have an effect. For gcc, which seems to treat all enums + as int, the cast to unsigned int will eliminate the possibility of + negative values being allowed. For clang, which seems to treat enums + without any negative members as unsigned int, the cast will have no + effect. If for some reason in the future a negative value is ever + added to the enum the assert will still catch the negative value. -2015-01-27 16:58 +0000 [c7591ef6bc] Kevin Harwell + ASTERISK-24917 + Change-Id: Ief23ef68916192b9b72dabe702b543ecfeca0b62 - * tcptls: Bad file descriptor error when reloading chan_sip +2015-04-14 14:04 +0000 [7b57116833] Joshua Colp - While running through some scenarios using chan_sip and tcp a problem would - occur that resulted in a flood of bad file descriptor messages on the cli: + * res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers. - tcptls.c:712 ast_tcptls_server_root: Accept failed: Bad file descriptor + Currently the res_pjsip_mwi module only sends an unsolicited MWI NOTIFY upon + a mailbox state change (such as a new message being left, or one being deleted). + In practice this is not sufficient to keep clients aware of the current MWI status. - The message is received because the underlying socket has been closed, so is - valid. This is probably happening because unloading of chan_sip is not atomic. - That however is outside the scope of this patch. This patch simply stops the - logging of multiple occurrences of that message. + This change makes the module send unsolicited MWI NOTIFY on startup so that + clients are guaranteed to have the most up to date MWI information. It also makes + clients receive an unsolicited MWI NOTIFY upon registration so if they are unaware + of the current MWI status they receive it. - ASTERISK-24728 #close - Reported by: Thomas Thompson - Review: https://reviewboard.asterisk.org/r/4380/ - ........ + ASTERISK-24982 #close + Reported by: Joshua Colp - Merged revisions 431218 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58 - Merged revisions 431219 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-21 15:17 +0000 [ad1a118632] Corey Farrell + * Check for ao2_alloc failure in __ast_channel_internal_alloc. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431220 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Fix a crash that could occur in __ast_channel_internal_alloc if + ao2_alloc fails. -2015-01-27 13:31 +0000 [e826cb8a26] Jonathan Rose + ASTERISK-24991 #close - * Manager: Fix Manager Action ModuleLoad to give correct response when reloading + Change-Id: I4ca89189eb22f907408cb87d0a1645cfe1314a90 - Prior to this patch, ModuleLoad would respond with an error indicating that - the requested module wasn't found in spite of finding and reloading the - module. +2015-04-20 14:30 +0000 [3327560cb2] Mark Michelson - Review: https://reviewboard.asterisk.org/r/4373/ - ASTERISK-24721 #close - ........ + * res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs. - Merged revisions 431153 from http://svn.asterisk.org/svn/asterisk/branches/13 + When SUBSCRIBE dialogs were established, we never associated + the endpoint that created the subscription with the dialog + we end up creating. In most cases, this ended up not causing + any problems. + The actual bug that was observed was that when a device that + was behind NAT established a subscription with Asterisk, Asterisk + would end up sending in-dialog NOTIFY requests to the device's + private IP addres instead of the public address of the NAT router. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When Asterisk receives the initial SUBSCRIBE from the device, + res_pjsip_nat rewrites the contact to the public address on which the + SUBSCRIBE was received. This allows for the dialog to have its target + address set to the proper public address. Asterisk then would send a 200 + OK response to the SUBSCRIBE, then a NOTIFY with the initial + subscription state. The device would then send a 200 OK response to + Asterisk's NOTIFY. -2015-01-27 13:22 +0000 [3b0f03ef7b] Kevin Harwell + Here's where things went wrong. When the 200 OK arrived, res_pjsip_nat + did not rewrite the address in the Contact header. Then, when the PJSIP + dialog layer processed the 200 OK, PJSIP would perform a comparison + between the IP address in the Contact header and its saved target + address for the dialog. Since they differed, PJSIP would update the + target dialog address to be the address in the Contact header. From this + point, if Asterisk needed to send a NOTIFY to the device, the result was + that the NOTIFY would be sent to the private address that the device + placed in the Contact header. - * chan_sip: stale nonce causes failure + The reason why res_pjsip_nat did not rewrite the address when it + received the 200 OK response was that it could not associate the + incoming response with a configured endpoint. This is because on a + response, the only way to associate the response to an endpoint is by + finding the dialog that the response is associated with and then finding + the endpoint that is associated with that dialog. We do not perform + endpoint lookups on responses. res_pjsip_pubsub skipped the step of + associating the endpoint with the dialog we created, so res_pjsip_nat + could not find the associated endpoint and therefore couldn't rewrite + the contact. - When refreshing (with a small expiration) a registration that was sent to - chan_sip the nonce would be considered stale and reject the registration. - What was happening was that the initial registration's "dialog" still existed - in the dialogs container and upon refresh the dialog match algorithm would - choose that as the "dialog" instead of the newly created one. This occurred - because the algorithm did not check to see if the from tag matched if - authentication info was available after the 401. So, it ended up assuming - the original "dialog" was a match and stopped the search. The old "dialog" - of course had an old nonce, thus the stale nonce message. + This commit message is like 50x longer than the actual fix. - This fix attempts to leave the original functionality alone except in the case - of a REGISTER. If a REGISTER is received if searches for an existing "dialog" - matching only on the callid. If the expires value is low enough it will reuse - dialog that is there, otherwise it will create a new one. + ASTERISK 24981 #close + Reported by Mark Michelson - ASTERISK-24715 #close - Reported by: John Bigelow - Review: https://reviewboard.asterisk.org/r/4367/ - ........ + Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd +2015-04-20 18:00 +0000 [d08446ec36] Richard Mudgett - Merged revisions 431187 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * chan_dahdi/sig_pri: Make post AMI HangupRequest events on PRI channels. - Merged revisions 431194 from http://svn.asterisk.org/svn/asterisk/branches/13 + The chan_dahdi channel driver is a very old driver. The ability for it to + support ISDN was added well after the initial analog support. Setting the + softhangup flags is a carry over from the original analog code. The + driver was not updated to call ast_queue_hangup() which will post the AMI + HangupRequest event. + * Changed sig_pri.c to call ast_queue_hangup() instead of setting the + softhangup flag when the remote party initiates a hangup. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24895 #close + Reported by: Andrew Zherdin -2015-01-27 13:12 +0000 [e62bd46511] Corey Farrell (license 5909) + Change-Id: I5fe2e48556507785fd8ab8e1c960683fd5d20325 - * res_pjsip: make it unloadable (take 2) +2015-04-20 13:01 +0000 [2be9cc2643] Diederik de Groot - Due to the original patch causing memory corruptions it was removed until the - problem could be resolved. This patch is the original patch plus some added - locking around stasis router subcription that was needed to avoid the memory - corruption. + * Fix/Update clang-RAII macro implementation - Description of the original problem and patch (still applicable): + - When you need to refer to 'variable XXX' outside a block, it needs + to be declared as '__block XXX', otherwise it will not be available with- + in the block, making updating that variable hard to do, and ast_free + lead to issues. - The res_pjsip module was previously unloadable. With this patch it can now - be unloaded. + - Removed the #error message + because it creates complications when compiling external projects + against asterisk For example when using a different compiler than the + one used to compile asterisk. The warning/error should be generated + during the configure process not the compilation process - This patch is based off the original patch on the issue (listed below) by Corey - Farrell with a few modifications. Namely, removed a few changes not required to - make the module unloadable and also fixed a bug that would cause asterisk to - crash on unloading. + ASTERISK-24917 + Change-Id: I12091228090e90831bf2b498293858f46ea7a8c2 +2015-04-20 09:53 +0000 [b74b2cdcda] gtjoseph - This patch is the first step (should hopefully be followed by another/others at - some point) in allowing res_pjsip and the modules that depend on it to be - unloadable. At this time, res_pjsip and some of the modules that depend on - res_pjsip cannot be unloaded without causing problems of some sort. + * pjsip_options: Fix format specifier for int64_t rtt. - The goal of this patch is to get res_pjsip and only res_pjsip to be able to - unload successfully and/or shutdown without incident (crashes, leaks, etc...). - Other dependent modules may still cause problems on unload. + Contact status rtt is an int64_t and needs the PRId64 macro to + properly create the format specifier on 32-bit systems. - Basically made sure, with the patch applied, that res_pjsip (with no other - dependent modules loaded) could be succesfully unloaded and Asterisk could - shutdown without any leaks or crashes that pertained directly to res_pjsip. + Change-Id: I4b8ab958fc1e9a179556a9b4ffa49673ba9fdec7 - ASTERISK-24485 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4363/ - patches: - pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909) - ........ +2015-04-18 13:36 +0000 [63169e00ff] gtjoseph - Merged revisions 431179 from http://svn.asterisk.org/svn/asterisk/branches/13 + * pjsip_options: Fix non-qualified contacts showing as unavailable + The "Add qualify_timeout processing and eventing" patch introduced + an issue where contacts that had qualify_frequency set to 0 were + showing Unavailable instead Unknown. This patch checks for + qualify_frequency=0 and create an "Unknown" contact_status + with an RTT = 0. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431180 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Previously, the lack of contact_status implied Unknown but since + we're now changing endpoint state based on contact_status, I've + had to add new UNKNOWN status so that changes could trigger the + appropriate contact_status observers. -2015-01-27 11:48 +0000 [94eebd5ba5] Richard Mudgett + ASTERISK-24977: #close - * app_confbridge: Repeatedly starting and stopping recording ref leaks the recording channel. + Change-Id: Ifcbc01533ce57f0e4e584b89a395326e098b8fe7 - Starting and stopping conference recording more than once causes the - recording channels to be leaked. For v13 the channels also show up in the - CLI "core show channels" output. +2015-04-19 15:49 +0000 [f0c82a173a] Matt Jordan - * Reworked and simplified the recording channel code to use - ast_bridge_impart() instead of managing the recording thread in the - ConfBridge code. The recording channel's ref handling easily falls into - place and other off nominal code paths get handled better as a result. + * main/pbx: Don't attempt to destroy a previously destroyed exten/priority tuple - ASTERISK-24719 #close - Reported by: John Bigelow + When a PBX registrar is unloaded, it will fail to remove its extension from + the context root_table if a dialplan application used by that extension is + still loaded. This can be the case for AGI, which can be unloaded after several + of the standard PBX providers. Often, this is harmless; however, if the + extension's priorities are removed during the failed unloading *and* the + dialplan application later unregisters, it leaves a ticking timebomb for the + next PBX provider that attempts to iterate over the extensions. When that + occurs, the peer_table pointer on the extension will already be set to NULL. + The current code does not check to see if the pointer is NULL before passing + it to a hashtab function this is not NULL tolerant. - Review: https://reviewboard.asterisk.org/r/4368/ - Review: https://reviewboard.asterisk.org/r/4369/ - ........ + Since it is possible for the peer_table to be NULL when we normally would not + expect that to be the case, the solution in this patch is to simply skip over + processing an extension's priorities if peer_table is NULL. - Merged revisions 431135 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Prior to this patch, the tests/pbx/callerid_match test would crash during + module unload. With this patch, the test no longer crashes after running. - Merged revisions 431160 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24774 #close + Reported by: Corey Farrell + Change-Id: I2bbeecb7e0f77bac303a1b9135e4cdb4db6d4c40 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431161 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-17 18:05 +0000 [82bc0fd3ad] Richard Mudgett -2015-01-27 11:34 +0000 [a43d24a9d3] Joshua Colp + * res_fax: Fix latent bug exposed by ASTERISK-24841 changes. - * bridge / res_pjsip_sdp_rtp: Fix issues with media not being reinvited during direct media. + Three fax related tests started failing as a result of changes made for + ASTERISK-24841: + tests/fax/pjsip/gateway_t38_g711 + tests/fax/sip/gateway_mix1 + tests/fax/sip/gateway_mix3 - This change fixes two issues: + Historically, ast_channel_make_compatible() did nothing if the channels + were already "compatible" even if they had a sub-optimal translation path + already setup. With the changes from ASTERISK-24841 this is no longer + true in order to allow the best translation paths to always be picked. In + res_fax.c:fax_gateway_framehook() code manually setup the channels to go + through slin and then called ast_channel_make_compatible(). With the + previous version of ast_channel_make_compatible() this was always a + no-operation. - 1. During a swap operation bridging added the new channel before having the swap channel - leave. This was not handled in bridge_native_rtp and could result in a channel not getting - reinvited back to Asterisk. After this change the swap channel will leave first and the - new channel will then join. + * Remove call to ast_channel_make_compatible() in fax_gateway_framehook() + that now undoes what was just setup when the framehook is attached. - 2. If a re-invite was received after a session had been established any upstream elements - (such as bridge_native_rtp) were not notified that they may want to re-evaluate things. - After this change an UPDATE_RTP_PEER control frame is queued when this situation occurs - and upstream can react. + * Fixed locking around saving the channel formats in + fax_gateway_framehook() to ensure that the formats that are saved are + consistent. - AST-1524 #close + * Fix copy pasta errors in fax_gateway_framehook() that confuses read and + write when dealing with saved channel formats. - Review: https://reviewboard.asterisk.org/r/4378/ - ........ + ASTERISK-24841 + Reported by: Matt Jordan - Merged revisions 431157 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I6fda0877104a370af586a5e8cf9e161a484da78d +2015-04-17 16:19 +0000 [c59a800707] Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431158 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled. -2015-01-27 11:21 +0000 [fb8a2e0399] Matt Jordan + When DEBUG_THREADLOCALS is enabled it causes the threadlocal cleanup to be + called as a function. This causes a compile error with raw threadstorage as + it uses NULL for cleanup. This fix uses a macro that provides NULL when + DEBUG_THREADLOCALS is disabled, and replaces the call to "c_cleanup(data);" + with "{};" when DEBUG_THREADLOCALS is enabled. - * ARI: Improve wiki documentation + ASTERISK-24975 #close + Reported by: Ashley Sanders - This patch improves the documentation of ARI on the wiki. Specifically, it - addresses the following: - * Allowed values and allowed ranges weren't documented. This was particularly - frustrating, as Asterisk would reject query parameters with disallowed values - - but we didn't tell anyone what the allowed values were. - * The /play/id operation on /channels and /bridges failed to document all of - the added media resource types. - * Documentation for creating a channel into a Stasis application failed to - note when it occurred, and that creating a channel into Stasis conflicts with - creating a channel into the dialplan. - * Some other minor tweaks in the mustache templates, including italicizing the - parameter type, putting the default value on its own sub-bullet, and some - other nicities. + Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402 - Review: https://reviewboard.asterisk.org/r/4351 - ........ +2015-04-15 10:38 +0000 [4f1a8dbe92] Mark Michelson - Merged revisions 431145 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Detect potential forwarding loops based on count. + A potential problem that can arise is the following: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431148 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Bob's phone is programmed to automatically forward to Carol. + * Carol's phone is programmed to automatically forward to Bob. + * Alice calls Bob. -2015-01-27 11:16 +0000 [aa8fd7d1b9] Matt Jordan + If left unchecked, this results in an endless loops of call forwards + that would eventually result in some sort of fiery crash. - * app_confbridge: Restore user's menu name to CLI output of 'confbridge list' + Asterisk's method of solving this issue was to track which interfaces + had been dialed. If a destination were dialed a second time, then + the attempt to call that destination would fail since a loop was + detected. - When issuing a 'confbridge list XXXX' CLI command, the resulting output no - longer displays the menu associated with a ConfBridge participant. + The problem with this method is that call forwarding has evolved. Some + SIP phones allow for a user to manually forward an incoming call to an + ad-hoc destination. This can mean that: - The issue was caused by ASTERISK-22760. When that patch was done, it removed - the copying of the menu name associated with the user from the actual user - profile. + * There are legitimate use cases where a device may be dialed multiple + times, or + * There can be human error when forwarding calls. - This patch fixes the issue by copying the menu name over to the user profile - when the menu hooks are applied to the user. Since that function now does a - little bit more than just apply the hooks, the name of the function has been - changed to cover the copying of the menu name over as well. + This change removes the old method of detecting forwarding loops in + favor of keeping a count of the number of destinations a channel has + dialed on a particular branch of a call. If the number exceeds the + set number of max forwards, then the call fails. This approach has + the following advantages over the old: - In addition, there is a disparity between the menu name length as it is stored - on the conf_menu structure and the confbridge_user structure; this patch makes - the lengths match so that a strcpy can be used. + * It is much simpler. + * It can detect loops involving local channels. + * It is user configurable. - Review: https://reviewboard.asterisk.org/r/4372/ + The only disadvantage it has is that in the case where there is a + legitimate forwarding loop present, it takes longer to detect it. + However, the forwarding loop is still properly detected and the + call is cleaned up as it should be. - ASTERISK-24723 #close - Reported by: Steve Pitts - ........ + Address review feedback on gerrit. - Merged revisions 431134 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Correct "mfgium" to "Digium" + * Decrement max forwards by one in the case where allocation of the + max forwards datastore is required. + * Remove irrelevant code change from pjsip_global_headers.c + ASTERISK-24958 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431136 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23 +2015-04-11 16:56 +0000 [674b18bdf0] gtjoseph -2015-01-27 05:47 +0000 [2504f97b01] Joshua Colp + * pjsip_options: Add qualify_timeout processing and eventing - * res_parking: Fix crash due to race condition when unloading. + This is the second follow-on to https://reviewboard.asterisk.org/r/4572/ and the + discussion at + http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html - There is currently a race condition when unloading the res_parking - module. Depending on the will of the universe the subscription - invocation may occur AFTER the module is unloaded. This is because - the module does NOT use stasis_unsubscribe_and_join when terminating - the subscription. It merely uses stasis_unsubscribe. + The basic issues are that changes in contact status don't cause events to be + emitted for the associated endpoint. Only dynamic contact add/delete actions + update the endpoint. Also, the qualify timeout is fixed by pjsip at 32 seconds + which is a long time. - This change makes it use stasis_unsubscribe_and_join which is documented - for usage in this exact scenario. + This patch makes use of the new transaction timeout feature in r4585 and + provides the following capabilities... - AST-1520 #close + 1. A new aor/contact variable 'qualify_timeout' has been added that allows the + user to specify the maximum time in milliseconds to wait for a response to an + OPTIONS message. The default is 3000ms. When the timer expires, the contact is + marked unavailable. - Review: https://reviewboard.asterisk.org/r/4375/ - ........ + 2. Contact status changes are now propagated up to the endpoint as follows... + When any contact is 'Available', the endpoint is marked as 'Reachable'. When + all contacts are 'Unavailable', the endpoint is marked as 'Unreachable'. The + existing endpoint events are generated appropriately. - Merged revisions 431114 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24863 #close + Change-Id: Id0ce0528e58014da1324856ea537e7765466044a + Tested-by: Dmitriy Serov + Tested-by: George Joseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431115 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-16 10:51 +0000 [b56c1914fa] Kevin Harwell -2015-01-26 08:50 +0000 [965777ccfc] David M. Lee + * bridge.c: NULL app causes crash during attended transfer - * Various fixes for OS X + Due to a race condition there was a chance that during an attended transfer the + channel's application would return NULL. This, of course, would cause a crash + when attempting to access the memory. This patch retrieves the channel's app + at an earlier time in processing in hopes that the app name is available. + However, if it is not then "unknown" is used instead. Since some string value + is now always present the crash can no longer occur. - This patch addresses compilation errors on OS X. It's been a while, so - there's quite a few things. + ASTERISK-24869 #close + Reported by: viniciusfontes + Review: - * Fixed __attribute__ decls in route.h to be portable. - * Fixed htonll and ntohll to work when they are defined as macros. - * Replaced sem_t usage with our ast_sem wrapper. - * Added ast_sem_timedwait to our ast_sem wrapper. - * Fixed some GCC 4.9 warnings using sig*set() functions. - * Fixed some format strings for portability. - * Fixed compilation issues with res_timing_kqueue (although tests still fail - on OS X). - * Fixed menuconfig /sbin/launchd detection, which disables res_timing_kqueue - on OS X). + Change-Id: I5134b84c4524906d8148817719d76ffb306488ac - ASTERISK-24539 #close - Reported by: George Joseph +2015-04-16 13:20 +0000 [8d4ce7cc2b] Scott Griepentrog - ASTERISK-24544 #close - Reported by: George Joseph + * res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced - Review: https://reviewboard.asterisk.org/r/4327/ - ........ + This change makes the send_notify of the sub_tree + not happen when the sub_tree has been deleted due + to the notify call failing, which avoids a crash. - Merged revisions 431092 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24970 #close + Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf +2015-04-11 16:39 +0000 [bf46799f0e] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431093 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: Refactor endpt_send_request to include transaction timeout -2015-01-25 07:43 +0000 [a8ae5a7bcb] Matt Jordan + This is the first follow-on to https://reviewboard.asterisk.org/r/4572/ and the + discussion at + http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html - * dynamic realtime: Updates fail to work due to update fields being passed over + Since we currently have no control over pjproject transaction timeout, this + patch pulls the pjsip_endpt_send_request function out of pjproject and into + res_pjsip/endpt_send_transaction in order to implement that capability. - When a crash was fixed due to usage of the REALTIME function in r423003, a - regression was introduced into ast_update2_realtime where the update fields - passed to the function would be skipped and the lookup field processed twice. + Now when the transaction is initiated, we also schedule our own pj_timer with + our own desired timeout. - The use of this function is a bit interesting: A variable argument list is - used with two sentinel values - the first marks the end of the lookup - fields/values; the second marks the end of the update fields/values. - Unfortunately, ast_update2_realtime parses over the lookup fields twice, as - opposed to parsing over the update fields. This causes the lookups to succeed, - but the updates itself to have no effect. + If the transaction completes before either timeout, pjproject cancels its timer, + and calls our tsx callback where we cancel our timer and run the app callback. - Note that the most common instance of this problem occurred in app_voicemail - during the updating of a mailbox password. + If the pjproject timer times out first, pjproject calls our tsx callback where + we cancel our timer and run the app callback. - Thanks to the issue reporter, Paddy Grice, for pointing out the problem. + If our timer times out first, we terminate the transaction which causes + pjproject to cancel its timer and call our tsx callback where we run the app + callback. - Review: https://reviewboard.asterisk.org/r/4356/ + Regardless of the scenario, pjproject is calling the tsx callback inside the + group_lock and there are checks in the callback to make sure it doesn't run + twice. - ASTERISK-24231 + As part of this patch ast_sip_send_out_of_dialog_request was created to replace + its similarly named private function. It takes a new timeout argument in + milliseconds (<= 0 to disable the timeout). - ASTERISK-24626 #close - Reported by: Paddy Grice - ........ + ASTERISK-24863 #close + Reported-by: George Joseph + Tested-by: George Joseph - Merged revisions 431072 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I0778dc730d9689c5147a444a04aee3c1026bf747 +2015-04-11 17:04 +0000 [1b6f6ff841] gtjoseph + * res_pjsip: Add global option to limit the maximum time for initial qualifies - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431073 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Currently when Asterisk starts initial qualifies of contacts are spread out + randomly between 0 and qualify_timeout to prevent network and system overload. + If a contact's qualify_frequency is 5 minutes however, that contact may be + unavailable to accept calls for the entire 5 minutes after startup. So while + staggering the initial qualifies is a good idea, basing the time on + qualify_timeout could leave contacts unavailable for too long. -2015-01-23 14:17 +0000 [b69b0d12ee] Richard Mudgett + This patch adds a new global parameter "max_initial_qualify_time" that sets the + maximum time for the initial qualifies. This way you could make sure that all + your contacts are initialy, randomly qualified within say 30 seconds but still + have the contact's ongoing qualifies at a 5 minute interval. - * app_confbridge: Shorten CBRec channel names to CBRec/- + If max_initial_qualify_time is > 0, the formula is initial_interval = + min(max_initial_interval, qualify_timeout * random(). If not set, + qualify_timeout is used. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431055 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The default is "0" (disabled). -2015-01-23 14:14 +0000 [c780223507] Richard Mudgett + ASTERISK-24863 #close - * app_confbridge: Make CBRec channel names more unique. + Change-Id: Ib80498aa1ea9923277bef51d6a9015c9c79740f4 + Tested-by: George Joseph - Channel names should be different from other channels in the system while - the channel exists. +2015-04-15 16:08 +0000 [5d218cde87] gtjoseph - * Use a sequence number for CBRec channels instead of a random number - because the same random number could be picked again for the next CBRec - channel. - ........ + * More .gitignore updates - Merged revisions 431052 from http://svn.asterisk.org/svn/asterisk/branches/13 + Added .pyc and .sha1 to the top-level .gitignore. + Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a + Tested-by: George Joseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431053 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-14 13:16 +0000 [abd56db3e0] Rodrigo Ramírez Norambuena -2015-01-23 13:51 +0000 [b38be992b1] Richard Mudgett + * cel_pgsql: Fix name string for log on unable allocate memory. - * app_confbridge: Whitespace + The LOG_ERROR has reference to CDR instead of CEL for LENGTHEN_BUF1 and + LENGTHEN_BUF2. - Because there is sometimes no sence to any whitespace. - ........ + ASTERISK-24965 #close + Reported by: Rodrigo Ramirez Norambuena - Merged revisions 431049 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Icc818697d7d66d34bfe3048cdd15ca2b06c89744 +2015-04-14 13:48 +0000 [222fbe1d9a] Corey Farrell - Merged revisions 431050 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Build System: Replace comment about setting menuselect defaults. + The Makefile claims that you can set default menuselect options by creating + ~/.asterisk.makeopts or /etc/asterisk.makeopts, but those files have never + been respected in Asterisk 11 or 13. This changes the comment to accurately + reflect that these files are not automatically used by the build system. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431051 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-13721 #close + Reported by: pj -2015-01-23 12:46 +0000 [89610adda5] David M. Lee + Change-Id: Ibde804ff196283def49ccb9432fbf224a22586e2 - * Add depend on pjproject to res_pjsip_config_wizard.c - ........ +2015-04-12 09:08 +0000 [07e729cc7b] Rodrigo Ramírez Norambuena - Merged revisions 431030 from http://svn.asterisk.org/svn/asterisk/branches/13 + * cdr_pgsql: Fix CLI "cdr show pgsql status" command. + The command always showed the usage information. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fix the error in command validation for CLI_SHOWUSAGE. -2015-01-23 09:21 +0000 [ca02121ef7] Kevin Harwell + ASTERISK-24959 #close + Reported by: Rodrigo Ramirez Norambuena - * Investigate and fix memory leaks in Asterisk + Change-Id: I584f0936bb01001336a468a55c1d05d79fe795d5 + (cherry picked from commit 23a180cade51e84b9def65b05759c3cb9feba225) - Fixed memory leaks that were found in Asterisk. +2015-04-13 19:06 +0000 [7d43d85bea] gtjoseph - ASTERISK-24693 #close - Reported by: Kevin Harwell - Review: https://reviewboard.asterisk.org/r/4347/ - ........ + * .gitignore updates for master/13 - Merged revisions 430999 from http://svn.asterisk.org/svn/asterisk/branches/13 + Added products of ./bootstrap + Added nmenuselect and gmenuselect to menuselect/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431010 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35 -2015-01-23 09:13 +0000 [49cbfa7de6] Walter Doekes +2015-04-13 14:41 +0000 [3d27c223a5] David M. Lee - * Fix typo's (retrieve, specified, address). - ........ + * Fixing extconf compile - Merged revisions 430996 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + During the mass code deletion for clang support, a stray backslash was + left behind that was causing utils to fail to compile. - Merged revisions 430998 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I60e5fa58c9a5b248bde23aaada79ff663f87a2a1 +2015-04-13 09:54 +0000 [e996d8f728] Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431000 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * build_tools/make_version: Update version parsing for Git migration -2015-01-23 08:39 +0000 [874cb5615d] HZMI8gkCvPpom0tM (License 6658) + External systems - such as the Asterisk Test Suite - require knowledge of the + upstream branch. Unfortunately, after moving to Git, the Asterisk version + currently consists of only a 'GIT" prefix followed by an object blob, + e.g., GIT-as08d7. This makes it difficult for such systems to know what + features are available in a particular check out of Asterisk. - * chan_sip: Case insensitive comparison of "defaultuser" parameter. + This patch fixes this by hardcoding the branch in a variable in the + make_version script. Since the mainline branches are not changed often - + typically only once a year - this is a reasonable approach to solving + the problem, and is more reliable than parsing the output of 'git branch + -vv'. Branches that track off of an upstream primary branch will then get the + benefit of knowing which mainline branch they are currently based off + of. - All the other configuration options are case insensitive, so this one - should be too. + ASTERISK-24954 #close - ASTERISK-24355 #close - Reported by: HZMI8gkCvPpom0tM - patches: - ast.patch uploaded by HZMI8gkCvPpom0tM (License 6658) - ........ + Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799 - Merged revisions 430993 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-04-12 12:59 +0000 [d1a6f1a9f9] Matt Jordan - Merged revisions 430994 from http://svn.asterisk.org/svn/asterisk/branches/13 + * git migration: Remove support for file versions + Git does not support the ability to replace a token with a version + string during check-in. While it does have support for replacing a + token on clone, this is somewhat sub-optimal: the token is replaced + with the object hash, which is not particularly easy for human + consumption. What's more, in practice, the source file version was often + not terribly useful. Generally, when triaging bugs, the overall version + of Asterisk is far more useful than an individual SVN version of a file. + As a result, this patch removes Asterisk's support for showing source file + versions. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430995 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Specifically, it does the following: + * main/asterisk: + - Refactor the file_version structure to reflect that it no longer + tracks a version field. + - Alter the "core show file version" CLI command such that it always + reports the version of Asterisk. The file version is no longer + available. -2015-01-22 13:30 +0000 [9bff4eeca3] Richard Mudgett + * main/manager: The Version key now always reports the Asterisk version. - * Bridge core: Pass a ref with the swap channel when joining a bridge. + * UPGRADE: Add notes for: + - Modification to the ModuleCheck AMI Action. + - Modification of the "core show file version" CLI command. - When code imparts a channel into a bridge to swap with another channel, a - ref needs to be held on the swap channel to ensure that it cannot - dissapear before finding it in the bridge. + Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28 - * The ast_bridge_join() swap channel parameter now always steals a ref for - the swap channel. This is the only change to the bridge framework's - public API semantics. +2015-04-13 06:19 +0000 [0e4b997cd7] Corey Farrell - * bridge_channel_internal_join() now requires the bridge_channel->swap - channel to pass in a ref. + * res_monitor: Add dependency on func_periodic_hook. - ASTERISK-24649 - Reported by: John Bigelow + OPTIONAL_API has conditionals to define AST_OPTIONAL_API and + AST_OPTIONAL_API_ATTR differently based on if AST_API_MODULE is defined. + Unfortunately this is inside the include protection block, so only the + first status of AST_API_MODULE is respected. For example res_monitor + is an optional API provider, but uses func_periodic_hook. This makes + func_periodic_hook non-optional to res_monitor. - Review: https://reviewboard.asterisk.org/r/4354/ - ........ + ASTERISK-17608 #close + Reported by: Warren Selby - Merged revisions 430975 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I8fcf2a5e7b481893e17484ecde4f172c9ffb5679 +2015-04-12 06:12 +0000 [a77c31b99c] Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430976 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * main/editline: Add .gitignore. -2015-01-22 13:14 +0000 [e67ca431ee] Richard Mudgett + This patch adds a .gitignore for main/editline to ignore all build results. - * res_pjsip_outbound_registration.c: Minor code cleanup. + Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d - * Add an allocation failure check and assert in - sip_outbound_registration_response_cb(). +2015-04-11 23:22 +0000 [d918c3b78e] Matt Jordan - * Made sip_outbound_registration_state_destroy() handle partially created - state objects from sip_outbound_registration_state_alloc(). + * .gitignore: Ignore tarballs (*.gz) - Review: https://reviewboard.asterisk.org/r/4366/ - ........ + This patch updates the root .gitignore file to ignore files with a .gz + extension. This will cause git to ignore downloaded sound tarballs in + the the sounds/ directory. - Merged revisions 430957 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I1e42fbfa02a8884231507b683e8e49ac3e278aaa +2015-04-11 13:20 +0000 [555b5f5d30] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430958 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Add .gitignore and .gitreview files -2015-01-22 12:10 +0000 [49f405fe4c] Scott Griepentrog + Add the .gitignore and .gitreview files to the asterisk repo. - * stasis transfer: fix a race condition on stasis bridge push + NB: You can add local ignores to the .git/info/exclude file + without having to do a commit. - After a bridge transfer completes where a local replacement - channel is used, a stasis transfer message with the details - of the transfer is sent. This is processed by stasis which - then sets the stasis app name and replaced channel snapshot - on the replacement channel. + Common ignore patterns are in the top-level .gitignore file. + Subdirectory-specific ignore patterns are in their own .gitignore + files. - However, since a separate thread was already started to run - stasis on the new replacement channel, a race was on to see - if the message processing would be completed before the app - name was needed, otherwise the channel would be hung up. + Change-Id: I4c8af3b8e3739957db545f7368ac53f38e99f696 + Tested-by: George Joseph - This change moves the calls used to set the stasis app name - and the replace snapshot to the bridge_stasis_push function - callback from the bridge transfer logic, allowing the steps - to be completed earlier and more deterministically, and the - race elimianted. +2015-04-11 10:35 +0000 [5807ca519c] Matt Jordan - NOTE: the swap channel parameter to bridge_stasis_push (and - thus all bridge push callbacks) must always be present when - performing a swap with another channel. + * Blocked revisions 434708 - ASTERISK-24649 #close - Reported by: John Bigelow - Review: https://reviewboard.asterisk.org/r/4341/ ........ + main/event: Remove unnecessary assignment of negative value to enum - Merged revisions 430939 from http://svn.asterisk.org/svn/asterisk/branches/13 + When cleaning up some clang compiler warnings, the comparison of a negative + value to an unsigned enum was removed. However, the initial assignment of a + negative value to said enum remained in the variable declaration. This patch + removes that assignment. + Thanks to ibercom in #asterisk-bugs for pointing it out. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430940 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-22 08:23 +0000 [7fcc9ce8bc] Gareth Palmer (License 5169) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434709 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * apps/app_voicemail: Trigger MWI notification with MixMonitor m() option +2015-04-11 10:26 +0000 [d0d78d5732] Diederik de Groot (License 6600) - The MixMonitor m() option allows a recording to be pushed to a specific - voicemail mailbox. If the message is delivered to the mailbox's INBOX, however, - no MWI notification is currently raised. + * clang compiler warnings: Fix various warnings for tests - This patch corrects the issue by properly calling notify_new_state from the - msg_create_from_file function. This will cause MWI to be triggered if the - message was placed in the mailbox's INBOX. + This patch fixes a variety of clang compiler warnings for unit tests. This + includes autological comparison issues, ignored return values, and + interestingly enough, one embedded function. Fun! - ASTERISK-24709 #close - Reported by: Gareth Palmer + Review: https://reviewboard.asterisk.org/r/4555 + + ASTERISK-24917 + Reported by: dkdegroot patches: - app_voicemail-430919.patch uploaded by Gareth Palmer (License 5169) + rb4555.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430920 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 434705 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 430921 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434706 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430922 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-11 10:10 +0000 [4cf7d0bf01] Juergen Spies (License 6698) -2015-01-21 15:57 +0000 [38738a7316] Richard Mudgett + * res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram - * res_pjsip_outbound_registration.c: Move unref to a better place. + Prior to this patch, the far_max_datagram value on the UDPTL structure would + remain -1 if the remote endpoint fails to provide the SDP media attribute + T38FaxMaxDatagram. This can result in the INVITE request being rejected. With + this patch, we will now properly initialize the value with either the default + value or with the value provided by pjsip.conf's t38_udptl_maxdatagram + parameter. - Move an unconditional unref of client_state so it doesn't look like it - could be used after the last ref has destroyed it. - ........ + Review: https://reviewboard.asterisk.org/r/4589 - Merged revisions 430902 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24928 #close + Reported by: Juergen Spies + Tested by: Juergen Spies + patches: + pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430903 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-21 07:36 +0000 [5835bf7a7f] Matt Jordan +2015-04-10 18:29 +0000 [13cd99682d] Richard Mudgett - * channels/chan_sip: Fix registration leak during reload + * chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices. - When the SIP registrations were migrated to using ao2 in what was then trunk, - the explicit destruction of the registrations on module reload was removed and - not replaced with an ao2 equivalent. Debugging done by Stefan Engström, the - issue reporter, on ASTERISK-24673 confirmed that the reference in the - registry_list container was being leaked. + With this patch, chan_pjsip/res_pjsip now sets the native formats to the + codecs negotiated by a call. - Since the purpose of cleanup_all_regs is to prep a registration for - destruction, this function now calls an ao2_callback function callback with the - OBJ_MULTIPLE | OBJ_NODATA | OBJ_UNLINK flags used to remove the registrations. - This cleans up each registration, and also removes it from the registration - container registry_list. + * The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native + formats to include all the negotiated audio codecs instead of only the + initial preferred audio codec and later the currently received audio + codec. - Review: https://reviewboard.asterisk.org/r/4355/ + * The audio frame handling in channel.c:ast_read() is more streamlined and + will automatically adjust to changes in received frame formats. The new + policy is to remove translation and pass the new frame format to the + receiver except if the translation was to a signed linear format. A more + long winded version is commented in ast_read() along with some caveats. - ASTERISK-24640 #close - Reported by: Max Man + * The audio frame handling in channel.c:ast_write() is more streamlined + and will automatically adjust any needed translation to changes in the + frame formats sent. Frame formats sent can change for many reasons such + as a recording is being played back or the bridged peer changed the format + it sends. Since it is a normal expectation that sent formats can change, + the codec mismatch warning message is demoted to a debug message. - ASTERISK-24673 #close - Reported by: Stefan Engström - Tested by: Stefan Engström - ........ + * Removed the short circuit check in + channel.c:ast_channel_make_compatible_helper(). Two party bridges need to + make channels compatible with each other. However, transfers and moving + channels among bridges can result in otherwise compatible channels having + sub-optimal translation paths if the make compatible check is short + circuited. A result of forcing the reevaluation of channel compatibility + is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc + options take effect consistently now. It is unfortunate that these two + options are enabled by default and negate some of the benefits to the + changes in channel.c:ast_read() by forcing translation through signed + linear on a two party bridge. - Merged revisions 430864 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Improved the softmix bridge technology to better control the translation + of frames to the bridge. All of the incoming translation is now normally + handled by ast_read() instead of splitting any translation steps between + ast_read() and the slin factory. If any frame comes in with an unexpected + format then the translation path in ast_read() is updated for the next + frame and the slin factory handles the current frame translation. + This is the final patch in a series of patches aimed at improving + translation path choices. The other patches are on the following reviews: + https://reviewboard.asterisk.org/r/4600/ + https://reviewboard.asterisk.org/r/4605/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430866 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24841 #close + Reported by: Matt Jordan -2015-01-21 07:27 +0000 [958a41a884] Matt Jordan + Review: https://reviewboard.asterisk.org/r/4609/ - * AMI: Add documentation for the missing Cdr/CEL events. - This patch adds AMI event documentation for the Cdr and CEL AMI events. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434671 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Note that while these events do share fields with each other and with other - channel related events, they do not contain all of the fields in a standard - channel snapshot, nor is the description of the fields identical. As such, - the patch opts for documentation for each field, for each event. +2015-04-10 16:03 +0000 [af458e2e60] Kevin Harwell - Review: https://reviewboard.asterisk.org/r/4350/ + * chan_sip: make progressinband default to no - ASTERISK-24671 #close - Reported by: Dan Jenkins - ........ + After the "progressinband" value setting of "never" was updated to never send a + 183 this separated its use from the "no" value. Since "never" was the default, + but most users probably expect "no" this patch updates the default for the + "progressinband" setting to "no." - Merged revisions 430862 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24835 #close + Reported by: Andrew Nagy + Review: https://reviewboard.asterisk.org/r/4606/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430863 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434654 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-21 07:12 +0000 [4740ef50f4] Matt Jordan +2015-04-10 12:53 +0000 [88b0fa7755] yaron nahum (License 6676) - * apps/app_dial: Don't publish DialEnd twice on unexpected GoSub/Macro values + * res_pjsip: Add an 'auto' option for DTMF Mode - The Dial application has some interesting options with the mid-call Macro (M) - and GoSub (U) options. If the MACRO_RESULT/GOSUB_RESULT returns specific - values, the Dial application will take some action upon the channels involved - in the dial operation (such as hanging up a particular party, etc.) The Dial - application ensures that a Stasis message is published in the event that - MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial operation, so - that there is a corresponding DialEnd event published in AMI/ARI for the - DialBegin event that preceeded it. + This patch adds support for automatically detecting the type of DTMF that a + PJSIP endpoint supports. When the 'dtmf_mode' endpoint option is set to 'auto', + the channel created for an endpoint will attempt to determine if RFC 4733 + DTMF is supported. If so, it will use that DTMF type. If not, the DTMF type + for the channel will be set to inband. - A bug exists where that same DialEnd event will be published on Stasis even if - the value returned in MACRO_RESULT/GOSUB_RESULT is not one that the Dial - application cares about. This causes two DialEnd events to be published - one - with the MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is all - sorts of wrong. + Review: https://reviewboard.asterisk.org/r/4438 - This patch fixes the bug by ensuring that we only publish a DialEnd message to - Stasis if the Dial application's mid-call Macro/GoSub returns something that - Dial cares about. + ASTERISK-24706 #close + Reported by: yaron nahum + patches: + yaron_patch_3_Feb.diff submitted by yaron nahum (License 6676) - Review: https://reviewboard.asterisk.org/r/4336 - ASTERISK-24682 #close - Reported by: Matt Jordan - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434637 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430842 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-10 11:59 +0000 [16afee4651] gtjoseph + * res_pjsip_config_wizard: Cleanup load unload - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430844 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + While investigating other unload issues I realized that the load/unload process + for the config wizard was pretty ugly so I've refactored it as follows... -2015-01-21 07:06 +0000 [228fdb3f4e] Matt Jordan + When the res_pjsip sorcery instance is created the config_wizard bumps it's own + module reference to prevent it from unloading while the sorcery instance is + still active. When res_pjsip unloads and it's sorcery instance is destroyed, + the config wizard unrefs itself which then allows itself to unload cleanly. + Since the config wizard now can't load after res_pjsip or unload before it + (which should have been the correct behavior all along), I was able to remove + the chunks of code in both load_module and unload_module that handled that case. - * main/rtp_engine: Format NTP timestamps as unsigned longs + Ran the testsuite tests to insure there were no functional changes and REF_DEBUG + to insure that Asterisk was shutting down cleanly with no FRACKs or leaks. - When the RTCP reports are created, the NTP timestamps are stored as strings, - as JSON does not have an integer type long enough to store the value. However, - on 32-bit systems, a signed long may overflow for some portion of the - timestamp. + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4610/ - This patch corrects the overflow by formatting the timestamps as unsigned - longs. - ........ - Merged revisions 430840 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430841 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434619 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-20 11:15 +0000 [804ab70f9d] Ashley Sanders +2015-04-10 11:37 +0000 [125acc52fe] Richard Mudgett - * ARI: Fixed crash that occurred when updating a bridge when the optional query parameter 'name' was not supplied. + * bridge_softmix.c,channel.c: Minor code simplification and cleanup. - Prior to this changeset, posting to the: /ari/bridges/{bridgeId} endpoint without specifying a value for the [name] query parameter, would crash Asterisk if the bridge you are attempting to create (or update) had the same ID as an existing bridge. The internal mechanism of the POST operation interpreted a null value for name, thus resulting in an error condition that crashed Asterisk. + * Made code easier to follow in bridge_softmix.c:analyse_softmix_stats() + and made some debug messages more helpful. - ASTERISK-24560 #close - Reported By: Kinsey Moore + * Made some debug and warning messages more helpful in + channel.c:set_format(). - Review: https://reviewboard.asterisk.org/r/4349/ - ........ + Review: https://reviewboard.asterisk.org/r/4607/ - Merged revisions 430818 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434617 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430820 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-10 11:28 +0000 [a63f7ad04a] Richard Mudgett -2015-01-20 10:59 +0000 [e4738a59eb] Richard Mudgett + * translate.c: Only select audio codecs to determine the best translation choice. - * CHANNEL(peer), chan_iax2, res_fax, SNMP agent: Fix deadlock from reaching across a bridge. + Given a source capability of h264 and ulaw, a destination capability of + h264 and g722 then ast_translator_best_choice() would pick h264 as the + best choice even though h264 is a video codec and Asterisk only supports + translation of audio codecs. When the audio starts flowing, there are + warnings about a codec mismatch when the channel tries to write a frame to + the peer. - Calling ast_channel_bridge_peer() cannot be done while holding any channel - locks. The reported issue hit the deadlock in chan_iax2, but an audit of - the ast_channel_bridge_peer() calls found three more locations where the - same deadlock can occur. + * Made ast_translator_best_choice() only select audio codecs. - * Made CHANNEL(peer), res_fax, and the SNMP agent not call - ast_channel_bridge_peer() with any channel locked. For CHANNEL(peer) I - had to rework the logic to not hold the channel lock. + * Restore a check in channel.c:set_format() lost after v1.8 to prevent + trying to set a non-audio codec. - * Made chan_iax2 no longer call ast_channel_bridge_peer(). It was done - for legacy reasons that no longer apply. + This is an intermediate patch for a series of patches aimed at improving + translation path choices for ASTERISK-24841. - * Removed the iax.conf forcejitterbuffer option. It is now always enabled - when the jitterbuffer option is enabled. If you put a jitter buffer on a - channel it will be on the channel. + This patch is a complete enough fix for ASTERISK-21777 as the v11 version + of ast_translator_best_choice() does the same thing. However, chan_sip.c + still somehow tries to call ast_codec_choose() which then calls + ast_best_codec() with a capability set that doesn't contain any audio + formats for the incoming call. The remaining warning message seems to be + a benign transient. - ASTERISK-24600 #close - Reported by: Jeff Collell + ASTERISK-21777 #close + Reported by: Nick Ruggles - Review: https://reviewboard.asterisk.org/r/4342/ + ASTERISK-24380 #close + Reported by: Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4605/ ........ - Merged revisions 430817 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 434614 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430819 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434615 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-19 20:41 +0000 [14b8e03dad] Ben Klang (License 5876) +2015-04-10 09:55 +0000 [c9791dba1f] Matt Jordan - * contrib/scripts/install_prereq: Don't install 32-bit packages on 64-bit hosts + * res/ari: Fix model validation for ChannelHold event - On Debian based systems, the install_prereq tool uses a search command on - Debian that results in selecting both 64-bit and 32-bit packages. Besides the - waste of disk space, this can actually cause aptitude use 100% of memory on a - VM with 1GB of RAM as it tried to work out all of the 32-bit package - dependencies. + When the ChannelHold event was added, the 'musicclass' parameter was + erroneously removed. This caused the ChannelHold events to be rejected as + they failed model validation. This patch updates the Swagger schema such that + it now properly reflects the event that is being created. - This patch filters out the 32-bit packages on a 64-bit machine, and leaves - 32-bit machines alone. + Hooray for tests that catch things like this. - ASTERISK-24048 #close - Reported by: Ben Klang - Tested by: Ben Klang, Matt Jordan - patches: - install_prereq_64-bit_compat.patch uploaded by Ben Klang (License 5876) - ........ - Merged revisions 430798 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434597 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430799 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-10 07:39 +0000 [c39faa4729] Y Ateya (License 6693) + * channels/chan_iax2: Improve POKE expiration time calculation for lossy networks - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430800 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + POKE is used to check for peer availability; however, in networks with packet + loss, the current calculations may result in POKE expiration times that are too + short. This patch alters the expiration/retry time logic to take into account + the last known qualify round trip time, as opposed to always using a static + value for each peer. -2015-01-19 20:33 +0000 [112bf1597e] LEI FU (License 6640) + Review: https://reviewboard.asterisk.org/r/4536 - * app_voicemail: Temp message left after review/hangup with ODBC/IMAP backend + ASTERISK-22352 #close + Reported by: Frederic Van Espen - When using ODBC or IMAP storage, temporary files created on the file system - must be disposed of using the DISPOSE macro. The DELETE macro will map to a - deletion function for the backend storage, but does not clean up any local - files created as a result of the operation. + ASTERISK-24894 #close + Reported by: Y Ateya + patches: + poke_noanswer_duration.diff submitted by Y Ateya (License 6693) + ........ - When using voicemail with the operator and review options enabled, pressing - 0 to enter the menu, followed by 1 to save the message, followed by any - other DTMF press to delete the message, will result in the temporary file - lingering on the file system. + Merged revisions 434564 from http://svn.asterisk.org/svn/asterisk/branches/11 - This patch properly calls DISPOSE after the DELETE. This causes the local - file to be disposed of. - ASTERISK-24288 #close - Reported by: LEI FU - patches: - voicemail_odbc_review_fix.diff uploaded by LEI FU (License 6640) - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434565 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430795 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-04-09 17:35 +0000 [75c2c85962] gtjoseph - Merged revisions 430796 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_phoneprov_provider: Fix reference leak on unload + + res_pjsip_phoneprov_provider was leaking references to phoneprov objects due to + a missing OBJ_NODATA in an ao2_callback in load_users(). Rather than adding the + OBJ_NODATA, I changed load_users to use a more straightforward ao2_iterator. + This plugged the leak but exposed an unload order issue between + res_pjsip_phoneprov_provider, res_phoneprov and res_pjsip. + res_pjsip_phoneprov_provider unloads first, then res_phoneprov, then res_pjsip. + Since res_pjsip_phoneprov_provider uses res_pjsip's sorcery instance, when it + unloads, it's objects are still in the sorcery instance. When res_pjsip + unloads, it destroys all its objects including res_pjsip_phoneprov_provider's. + The phoneprov destructor then attempts to unregister the extension from + res_phoneprov but because res_phoneprov is already cleaned up, its users + container is gone and we get a FRACK. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430797 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Simple solution, check for the NULL users container before attempting to remove + the entry. Duh. -2015-01-19 12:15 +0000 [7dc784ffa9] Mark Michelson + Ran tests/res_phoneprov/res_phoneprov_provider. No leaks in + res_pjsip_phoneprov_provider and no FRACKs. - * Call extension state callbacks at hint creation. + Reported-by: Corey Farrell + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4608/ + ASTERISK-24935 #close - When a hint gets created, any subsequent device or presence - state changes result in extension status events getting sent - out to interested parties. However, at the time of hint creation, - no such event gets sent out, so watchers of extension state are - potentially left in the dark until the first state change after - hint creation. - Patch contributed by John Hardin (License #6512) - ........ - Merged revisions 430776 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434545 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-09 17:31 +0000 [73c286a393] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430777 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * loader/main: Don't set ast_fully_booted until deferred reloads are processed -2015-01-19 07:19 +0000 [e43912f3f3] Joshua Colp + Until we have a true module management facility it's sometimes necessary for one + module to force a reload on another before its own load is complete. If + Asterisk isn't fully booted yet, these reloads are deferred. The problem is + that asterisk reports fully booted before processing the deferred reloads which + means Asterisk really isn't quite ready when it says it is. - * res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions. + This patch moves the report of fully booted after the processing of the deferred + reloads is complete. - The first thing this patch fixes is UAS dialogs. Previously if a transport was - configured on an endpoint and an inbound session was created there was no guarantee - that requests sent on the dialog would use the correct transport and address - information. This has now been fixed so an explicitly configured transport - is taken into account. + Since the pjsip stack has the most number of related modules, I ran the + channels/pjsip testsuite to make sure there aren't any issues. All tests + passed. - The second thing this patch fixes is res_pjsip_multihomed. The res_pjsip_multihomed - module attempts to determine what transport a message should go out on and what - addressing information should go into the message itself. In a scenario where - multiple transports exist bound to the same IP address but a different port the - code would incorrectly alter the transport and change the message to the wrong - transport. This change makes the res_pjsip_multihomed module smarter so it will - only change the transport and address information in the message when it is - possible and makes sense. + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4604/ - ASTERISK-24615 #close - Reported by: David Justl - Review: https://reviewboard.asterisk.org/r/4331/ - ........ - Merged revisions 430755 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434544 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-09 17:03 +0000 [5737650a67] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430756 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: add CLI command to show global and system configuration -2015-01-16 18:35 +0000 [07e2a48ab1] Kevin Harwell + Added a new CLI command for res_pjsip that shows both global and system + configuration settings: pjsip show settings - * REVERTING res_pjsip: make it unloadable + ASTERISK-24918 #close + Reported by: Scott Griepentrog + Review: https://reviewboard.asterisk.org/r/4597/ - Due to the original patch causing memory corruptions the patch is - being removed until the problem can be resolved. - ........ - Merged revisions 430734 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434527 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-09 11:07 +0000 [1695a5b85f] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430735 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_iax2.c: Fix ref leak in iax2_request(). -2015-01-16 16:14 +0000 [1111944afb] Mark Michelson + * Increased warning message format capability string buffer size in + iax2_request(). - * Change PJProject version requirement for ca_list_path transport option in CHANGES file. - ........ + Review: https://reviewboard.asterisk.org/r/4601/ - Merged revisions 430716 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434510 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430717 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-09 10:54 +0000 [92c1688edb] Richard Mudgett -2015-01-16 16:13 +0000 [831acba826] Mark Michelson + * bridge_native_rtp.c: Defer allocation and check if it fails in native_rtp_bridge_compatible(). - * Fix problem where a hung channel could occur on a failed blind transfer. + Review: https://reviewboard.asterisk.org/r/4601/ - Different clients react differently to being told that a blind transfer - has failed. Some will simply send a BYE and be done with it. Others will - attempt to reinvite themselves back onto the call. - In the latter case, we were creating a new channel and then leaving it to - sit forever doing nothing. With this code change, that new channel will - not be created and the dialog with the transferring channel will be cleaned - up properly. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434508 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24624 #close - Reported by Zane Conkle +2015-04-09 10:42 +0000 [2679d0100a] yaron nahum (License 6676) - Review: https://reviewboard.asterisk.org/r/4339 - ........ + * res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests - Merged revisions 430714 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch adds a new session supplement that handles in-dialog OPTIONS + requests. Said OPTIONS requests are sent a 200 OK, as an endpoint lookup + for the OPTIONS request would already have been done by the time the + session supplement receives the inbound request. + ASTERISK-24862 #close + Reported by: yaron nahum + patches: + res_pjsip_dlg_options.c submitted by yaron nahum (License 6676) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430715 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-16 15:46 +0000 [023fa0f9e8] cloos (License #5956) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434506 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Add support for the ca_list_path option for PJSIP transports. +2015-04-09 07:56 +0000 [6ba6e3dffd] Diederik de Groot (License 6600) - This allows for a path to be specified that has a collection of CA - certificates in it. + * clang compiler warnings: Fix autological comparisons - ASTERISK-24575 #close - Reported by cloos - Patches: - pj-ca-path-trunk.diff uploaded by cloos (License #5956) + This fixes autological comparison warnings in the following: + * chan_skinny: letohl may return a signed or unsigned value, depending on the + macro chosen + * func_curl: Provide a specific cast to CURLoption to prevent mismatch + * cel: Fix enum comparisons where the enum can never be negative + * enum: Fix comparison of return result of dn_expand, which returns a signed + int value + * event: Fix enum comparisons where the enum can never be negative + * indications: tone_data.freq1 and freq2 are unsigned, and hence can never be + negative + * presencestate: Use the actual enum value for INVALID state + * security_events: Fix enum comparisons where the enum can never be negative + * udptl: Don't bother to check if the return value from encode_length is less + than 0, as it returns an unsigned int + * translate: Since the parameters are unsigned int, don't bother checking + to see if they are negative. The cast to unsigned int would already blow + past the matrix bounds. + * res_pjsip_exten_state: Use a temporary value to cache the return of + ast_hint_presence_state + * res_stasis_playback: Fix enum comparisons where the enum can never be + negative + * res_stasis_recording: Add an enum value for the case where the recording + operation is in error; fix enum comparisons + * resource_bridges: Use enum value as opposed to -1 + * resource_channels: Use enum value as opposed to -1 - Review: https://reviewboard.asterisk.org/r/4344 + Review: https://reviewboard.asterisk.org/r/4533 + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4533.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430709 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 434469 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430713 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434470 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-15 11:36 +0000 [a8ea2f9287] Richard Mudgett +2015-04-08 21:05 +0000 [e05c8ae68e] Stefan Engström (License 6691) - * res_fax.c, res_fax_spandsp.c: Remove redundant locking. + * apps/app_queue: Prevent possible crash when evaluating queue penalty rules - When FAX was developed, apparently the faxregistry.container used to be a - linked list that was converted to an ao2 container. Some of the - replacement ao2 container operations still had explicit lock/unlocks - around them. + Although it only occurred once, a crash occurred when a queue attempted to + evaluate a queue penalty rule that appeared to have already been destroyed. + In many locations in app_queue, a test is done to see if qe->pr is NULL; + however, when we dispose of a queue's penalty rules, we don't set the pointer + to NULL after free'ing it. This patch does that to prevent any dangling + pointers from lingering on the queue object. - Three off nominal code paths in res_fax.c and res_fax_spandsp.c unlock the - channel even though the routine did not lock the channel and other code - paths in the routine do not unlock the channel. + Review: https://reviewboard.asterisk.org/r/4522 - Review: https://reviewboard.asterisk.org/r/4340/ + ASTERISK-23319 #close + Reported by: Vadim + patches: + rb4552.patch submitted by Stefan Engström (License 6691) ........ - Merged revisions 430687 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 434448 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434449 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-15 11:28 +0000 [9b1c36d3fa] Richard Mudgett +2015-04-08 13:15 +0000 [f21b45db49] Jonathan Rose - * res_fax.c, res_fax_spandsp.c: Fix some curlies on the end of function definitions. - ........ + * res_pjsip_t38: Fix FAX failures when using PJSIP with authentication - Merged revisions 430685 from http://svn.asterisk.org/svn/asterisk/branches/13 + Without this patch, if a PJSIP endpoint with udptl enabled and authentication + set attempted to use sendFax, the FAX session would fail during setup. This + was because the invite issued in response to being auth challenged would cause + the PJSIP channel performing the FAX to receive a second T38 framehook and + this would cause frames to be consumed in an inappropriate manner. + ASTERISK-24933 #close + Reported by: Jonathan Rose + Review: https://reviewboard.asterisk.org/r/4577/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430686 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-15 06:10 +0000 [1e605d950b] Joshua Colp + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434425 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_pjsip_outbound_registration: Fix race condition when reloading and listing registrations. +2015-04-08 13:14 +0000 [4441bb6a25] Richard Mudgett - Due to the split of outbound registration state from configuration it is possible during - a reload for a "pjsip show registrations" CLI command to be executed which gets an older - snapshot of the configuration. This configuration may include outbound registrations which - have been removed due to a reload operation occurring at the same time. The code for - printing the outbound registration did not take this into account but now it does. + * Bridging: Eliminate the unnecessary make channel compatible with bridge operation. - AST-1506 #close + When a channel enters the bridging system it is first made compatible with + the bridge and then the bridge technology makes the channel compatible + with the technology. For all but the DAHDI native and softmix bridge + technologies the make channel compatible with the bridge step is an + effective noop because the other technologies allow all audio formats. + For the DAHDI native bridge technology it doesn't matter because it is not + an initial bridge technology and chan_dahdi allows only one native format + per channel. For the softmix bridge technology, it is a noop at best and + harmful at worst because the wrong translation path could be setup if the + channel's native formats allow more than one audio format. - Review: https://reviewboard.asterisk.org/r/4338/ - ........ + This is an intermediate patch for a series of patches aimed at improving + translation path choices. - Merged revisions 430664 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Removed code dealing with the unnecessary step of making the channel + compatible with the bridge. + ASTERISK-24841 + Reported by: Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430665 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4600/ -2015-01-14 20:19 +0000 [f11fb76205] abelbeck (License 5903) - * configure: If cross-compiling, assume we have working semaphores + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - The Asterisk 13 configure.ac checks for HAS_WORKING_SEMAPHORE but does not have - an option for cross-compiling so it fails with an exit. Since we're cross- - compiling, we can't exactly go looking for the header. The semaphore.h header - is relatively common: - * It's part of the POSIX standard - * It's part of GNU C Library - As such, we assume that it will be present when cross-compiling. +2015-04-08 11:40 +0000 [f767440906] Maciej Szmigiero (license 6085) - As such, this patch defaults "HAS_WORKING_SEMAPHORE" to "1" if cross-compiling - is detected. + * Security/tcptls: MitM Attack potential from certificate with NULL byte in CN. - If you're cross-compiling to a platform that doesn't support this, then make - sure you re-define this to 0. + When registering to a SIP server with TLS, Asterisk will accept CA signed + certificates with a common name that was signed for a domain other than the + one requested if it contains a null character in the common name portion of + the cert. This patch fixes that by checking that the common name length + matches the the length of the content we actually read from the common name + segment. Some certificate authorities automatically sign CA requests when + the requesting CN isn't already taken, so an attacker could potentially + register a CN with something like www.google.com\x00www.secretlyevil.net + and have their certificate signed and Asterisk would accept that certificate + as though it had been for www.google.com - this is a security fix and is + noted in AST-2015-003. - ASTERISK-24663 #close - Reported by: abelbeck - patches: - asterisk-13-anonymous-semaphores.patch uploaded by abelbeck (License 5903) + ASTERISK-24847 #close + Reported by: Maciej Szmigiero + Patches: + asterisk-null-in-cn.patch submitted by mhej (license 6085) ........ - Merged revisions 430646 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430647 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ........ -2015-01-14 17:15 +0000 [49542a794b] Corey Farrell (license 5909) + Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11 - * res_pjsip: make it unloadable - The res_pjsip module was previously unloadable. With this patch it can now - be unloaded. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434384 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This patch is based off the original patch on the issue (listed below) by Corey - Farrell with a few modifications. Namely, removed a few changes not required to - make the module unloadable and also fixed a bug that would cause asterisk to - crash on unloading. +2015-04-08 11:23 +0000 [1712d16825] Richard Mudgett - This patch is the first step (should hopefully be followed by another/others at - some point) in allowing res_pjsip and the modules that depend on it to be - unloadable. At this time, res_pjsip and some of the modules that depend on - res_pjsip cannot be unloaded without causing problems of some sort. + * format_cache.c: Add missing slin12 format to ast_format_cache_is_slinear(). - The goal of this patch is to get res_pjsip and only res_pjsip to be able to - unload successfully and/or shutdown without incident (crashes, leaks, etc...). - Other dependent modules may still cause problems on unload. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434357 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Basically made sure, with the patch applied, that res_pjsip (with no other - dependent modules loaded) could be succesfully unloaded and Asterisk could - shutdown without any leaks or crashes that pertained directly to res_pjsip. +2015-04-08 07:33 +0000 [ae39dd1f46] Matt Jordan - ASTERISK-24485 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4311/ - patches: - pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909) - ........ + * chan_iax2: Fix compilation issue due to funky merge - Merged revisions 430628 from http://svn.asterisk.org/svn/asterisk/branches/13 + Don't mix declarations and code - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430629 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434314 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-14 14:39 +0000 [67234b3ee2] Mark Michelson +2015-04-08 07:00 +0000 [05397ad01e] Jaco Kroon (License 5671) - * Prevent slow graceful shutdown when outbound publications never started. + * chan_iax2: Fix crash caused by unprotected access to iaxs[peer->callno] - The code was missing the case for explicitly destroying an outbound publication - when Asterisk had never actually published anything. The result was that Asterisk - would hang for a while on a graceful shutdown. + This patch fixes an access to the peer callnumber that is unprotected by a + corresponding mutex. The peer->callno value can be changed by multiple threads, + and all data inside the iaxs array must be procted by a corresponding lock + of iaxsl. - With this change, the case is taken into account, and on a graceful shutdown, these - publications are destroyed without the need to actually send a PUBLISH request. + The patch moves the unprotected access to a location where the mutex is + safely obtained. - ASTERISK-24655 #close - Reported by Kevin Harwell + Review: https://reviewboard.asterisk.org/r/4599/ - Review: https://reviewboard.asterisk.org/r/4325 + ASTERISK-21211 #close + Reported by: Jaco Kroon + patches: + asterisk-11.2.1-iax2_poke-segfault.diff submitted by Jaco Kroon (License 5671) ........ - Merged revisions 430608 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430609 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 434291 from http://svn.asterisk.org/svn/asterisk/branches/11 -2015-01-14 09:40 +0000 [3eec8e4c44] Diederik de Groot (License 6600) - * build_tools/mkpkgconfig: Fix Cflags concatenation error in asterisk.pc + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434292 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - The mkpkgconfig script incorrectly concatenates Cflags options together. As an - example, the following: - Cflags: -I/usr/include/libxml2 -g3 +2015-04-08 06:53 +0000 [be13c72142] Valentin Vidić (License 6697) - Is instead generated as: - Cflags: -I/usr/include/libxml2-g3 + * chan_sip: Handle IPv4 mapped IPv6 clients when NAT is enabled - This patch corrects the generation of Cflags in mkpkgconfig such that the - Cflags options are output correctly. + When udpbindaddr is set to the IPv6 bind all address of '::', Asterisk will + attempt to handle both IPv4 and IPv6 addresses, although the information will + be stored in a struct with an AF_INET6 address type. However, the current + NAT handling code won't handle the IPv4 mapped IPv6 addresses correctly. + This patch adds an additional check for the mapped address case, allowing + the NAT code to handle clients even when the address is IPv6. - Review: https://reviewboard.asterisk.org/r/3707/ + Review: https://reviewboard.asterisk.org/r/4563/ - ASTERISK-23991 #close - Reported by: Diederik de Groot + ASTERISK-18032 #close + Reported by: Christoph Timm patches: - fix_mkpkgconfig.diff uploaded by Diederik de Groot (License 6600) - ........ - - Merged revisions 430589 from http://svn.asterisk.org/svn/asterisk/branches/11 + nat_with_ipv6.diff submitted by Valentin Vidić (License 6697) ........ - Merged revisions 430590 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 434288 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430591 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434289 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-13 12:17 +0000 [1780de95e4] Richard Mudgett +2015-04-08 06:44 +0000 [f324870dab] Diederik de Groot (License 6600) - * app_macro: Don't restore the calling location on a channel redirect. + * clang compiler warnings: Fix pointer-bool-converesion warnings - v11: If a channel redirect to a macro exten of a macro that is active - happens, the redirect location doesn't get executed. Instead the original - macro location is restored and gets reexecuted. + This patch fixes several warnings pointed out by the clang compiler. + * chan_pjsip: Removed check for data->text, as it will always be non-NULL. + * app_minivm: Fixed evaluation of etemplate->locale, which will always + evaluate to 'true'. This patch changes the evaluation to use + ast_strlen_zero. + * app_queue: + - Fixed evaluation of qe->parent->monfmt, which always evaluates to + true. Instead, we just check to see if the dereferenced pointer + evaluates to true. + - Fixed evaluation of mem->state_interface, wrapping it with a call to + ast_strlen_zero. + * res_smdi: Wrapped search_msg->mesg_desk_term with calls to ast_strlen_zero. - v13: An additional effect happens if a parked call times out to an - extension in the macro that parked the call then the macro is reexecuted - instead of the expected park return location. + Review: https://reviewboard.asterisk.org/r/4541 - * Made not restore the macro calling location on an - AST_SOFTHANGUP_ASYNCGOTO. + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4541.patch submitted by dkdegroot (License 6600) + ........ - * Increased the locked channel range when setting up the macro execution - environment to cover things that should be done while the channel is - locked. + Merged revisions 434285 from http://svn.asterisk.org/svn/asterisk/branches/11 - * Removed unnecessary NULL tests before calling ast_free() in - _macro_exec(). - ASTERISK-23850 #close - Reported by: Andrew Nagy + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434286 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4292/ - ........ +2015-04-07 14:38 +0000 [a6aed7f6f6] Scott Griepentrog - Merged revisions 430564 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Revert accidental change in r434261 - Merged revisions 430565 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434262 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430567 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-07 14:35 +0000 [0584e29300] Scott Griepentrog -2015-01-13 06:09 +0000 [0e631a541d] Joshua Colp + * pjsip: resolve compatibility problem with ast_sip_session - * chan_pjsip: Add configure check for 'pjsip_get_dest_info' function. + A change in r430179 inserted a variable near the top of a + structure caused a problem when running DPMA in a version + of Asterisk compiled across the change. This patch moves + the new variable to the end of the structure, eliminating + the problem. - The 'pjsip_get_dest_info' function is used to determine if the signaling transport - of the dialog is secure or not. This function was added in PJSIP 2.3 and does not - exist in earlier versions. + Review: https://reviewboard.asterisk.org/r/4574/ + ........ - This configure check allows Asterisk to build and run with older versions at the - loss of the 'secure' argument for the PJSIP CHANNEL dialplan function. Usage of - this argument will require upgrading to PJSIP 2.3. + Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13 - ASTERISK-24665 #close - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4329/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434261 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430546 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-07 11:40 +0000 [d754f70239] Kevin Harwell + * bridge.c: Hangup attended transfer target after it has been swapped out - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430547 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + After completing an attended transfer the transfer target channel (the one that + gets swapped out) was not being hung up after leaving the bridge. This resulted + in a channel possibly being left around. Added an explicit softhangup for the + channel in question after the transfer is successfully completed in order to + make sure the channel is hung up. -2015-01-12 13:13 +0000 [4dd6b6ff59] Richard Mudgett + ASTERISK-24782 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4575/ - * AMI: Revert non-backwards compatible changes from earlier commit. - * Reverted the change to astman_send_listack() to not use the listflag - parameter and always set the value to "Start" so the start capitalization - is consistent. Unfortunately changing the case of a returned value is not - a backward compatible change so for now FAXSessions is going to have to - remain inconsistent with all of the other AMI list actions. - * Reverted the minor protocol error fix in action_getconfig() when no - requested categories are found. Each line needs to be formatted as - "Header: text". + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434240 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Caught by the testsuite. +2015-04-07 10:33 +0000 [c516981dc7] Mark Michelson - ASTERISK-24049 - ........ + * Do not queue message requests that we do not respond to. - Merged revisions 430528 from http://svn.asterisk.org/svn/asterisk/branches/13 + If we receive a MESSAGE request that we cannot send a response + to, we should not send the incoming MESSAGE to the dialplan. + This commit should help the bouncing message_retrans test to + pass consistently. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430529 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-12 12:28 +0000 [aa7e06f797] Niklas Larsson (License 5068) - * configs/samples/features.conf.sample: Document attended transfer DTMF options + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434218 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - The sample config was missing the configuration options for DTMF attended - transfer completion scenarios. The configuration options 'atxferabort', - 'atxfercomplete', 'atxferthreeway', and 'atxferswap' are now documented in the - appropriate configuration file. +2015-04-07 10:21 +0000 [ab803ec342] Matt Jordan - ASTERISK-24678 #close - Reported by: Niklas Larsson - patches: - features.conf.sample.diff uploaded by Niklas Larsson (License 5068) - ........ + * ARI: Add the ability to intercept hold and raise an event - Merged revisions 430526 from http://svn.asterisk.org/svn/asterisk/branches/13 + For some applications - such as SLA - a phone pressing hold should not behave + in the fashion that the Asterisk core would like it to. Instead, the hold + action has some application specific behaviour associated with it - such as + disconnecting the channel that initiated the hold; only playing MoH to channels + in the bridge if the channels are of a particular type, etc. + One way of accomplishing this is to use a framehook to intercept the + hold/unhold frames, raise an event, and eat the frame. Tasty. This patch + accomplishes that using a new dialplan function, HOLD_INTERCEPT. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430527 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + In addition, some general cleanup of raising hold/unhold Stasis messages was + done, including removing some RAII_VAR usage. -2015-01-12 12:09 +0000 [c7ea108e02] Richard Mudgett + Review: https://reviewboard.asterisk.org/r/4549/ - * Revert -r430452 It needs to be redone for the next major AMI version change instead. + ASTERISK-24922 #close - ASTERISK-24049 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434216 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430509 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-06 21:09 +0000 [488f093e97] Diederik de Groot (License 6600) -2015-01-12 12:01 +0000 [9065488ddd] Michael L. Young (license 5026) + * clang compiler warnings: Fix sometimes-initialized warning in func_math - * main/syslog: Allow dynamic logs, such as security events, to log to the syslog + This patch fixes a bug in a unit test in func_math where a variable could be + passed to ast_free that wasn't allocated. This patch corrects the issue and + ensures that we only attempt to free a variable if we previously allocated + it. - The security event log uses a dynamic log level (SECURITY) that is registered - with the Asterisk logging core. Unfortunately, the syslog would ignore log - statements that had a dynamic log level associated with them. Because the - syslog cannot handle ad hoc dynamic log levels, this patch treats any dynamic - log entries sent to the syslog as logs with a level of NOTICE. + Review: https://reviewboard.asterisk.org/r/4552 - ASTERISK-20744 #close - Reported by: Michael Keuter - Tested by: Michael L. Young, Jacek Konieczny + ASTERISK-24917 + Reported by: dkdegroot patches: - asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by Michael L. Young (license 5026) + rb4552.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430506 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 434190 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 430507 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434191 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430508 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-06 21:03 +0000 [c027133f6d] Diederik de Groot (License 6600) -2015-01-12 09:18 +0000 [b38acbce6e] Kristian Hogh (License 6639) + * clang compiler warnings: Fix non-literal-null-conversion warnings - * funcs/func_curl: Fix memory leak when CURLOPT channel datastore is destroyed + Clang will flag errors when a char pointer is set to '\0', as opposed to a + value that the char pointer points to. This patch fixes this warning + in a variety of locations. - When the channel datastore associated with the usage of CURLOPT on a specific - channel is freed, the underlying structure holding the list of options is not - disposed of. This patch properly frees the structure in the datastore .destroy - callback. + Review: https://reviewboard.asterisk.org/r/4551 - ASTERISK-24672 #close - Reported by: Kristian Hogh + ASTERISK-24917 + Reported by: dkdegroot patches: - func_curl-memory-leak.diff uploaded by Kristian Hogh (License 6639) - ........ - - Merged revisions 430487 from http://svn.asterisk.org/svn/asterisk/branches/11 + rb4551.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430488 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430489 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - -2015-01-09 16:09 +0000 [fba836cc02] Scott Griepentrog - - * sip_to_pjsip: improve ability to parse input files - - General improvements to SIP to PJSIP conversion utility: + Merged revisions 434187 from http://svn.asterisk.org/svn/asterisk/branches/11 - 1) track default section of input file to allow parsing - an include file that doesn't specify a [section] - 2) informatively handle case of assignment without [section] + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434188 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - 3) correctly handle getting sections from included files - - [section]'s are inherited by included file +2015-04-06 14:23 +0000 [2270c40d33] Kevin Harwell - 4) provide null string as default transport bind ip + * res_pjsip: config option 'timers' can't be set to 'no' - 5) gracefully handle missing portions of registration string + When setting the configuration option 'timers' equal to 'no' the bit flag was + not properly negated. This patch clears all associated flags and only sets the + specified one. pjsip will handle any necessary flag combinations. Also went + ahead and did similar for the '100rel' option. - 6) denote steps of operation during conversion and confirm - top level files as a convenience + ASTERISK-24910 #close + Reported by: Ray Crumrine + Review: https://reviewboard.asterisk.org/r/4582/ - ASTERISK-24474 #close - Review: https://reviewboard.asterisk.org/r/4280/ - Reported by: John Kiniston - ........ - Merged revisions 430469 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434131 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-06 14:02 +0000 [95de71f247] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430470 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * build: Fixes for gcc 5 compilation -2015-01-09 15:45 +0000 [5b30938394] Scott Griepentrog + These are fixes for compilation under gcc 5.0... - * app_bridge: return to the next dialplan priority + chan_sip.c: In parse_request needed to make 'lim' unsigned. + inline_api.h: Needed to add a check for '__GNUC_STDC_INLINE__' to detect C99 + inline semantics (same as clang). + ccss.c: In ast_cc_set_parm, needed to fix weird comparison. + dsp.c: Needed to work around a possible compiler bug. It was throwing + an array-bounds error but neither + sgriepentrog, rmudgett nor I could figure out why. + manager.c: In action_atxfer, needed to correct an array allocation. - When app_bridge grabs a channel and puts it into - a bridge, the channel should then continue where - it left off in the dialplan after the bridge has - ended. Although it stores the current dialplan - location as an after bridge goto on the channel, - it was executing the same priority again instead - of going to the next priority. By swapping the - "specific" version of bridge_set_after_goto with - bridge_set_after_go_on, the next priority in the - dialplan is executed instead. + This patch will go to 11, 13, trunk. - ASTERISK-24637 #close - Review: https://reviewboard.asterisk.org/r/4322/ - Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4581/ + Reported-by: Jeffrey Ollie + Tested-by: George Joseph + ASTERISK-24932 #close ........ - Merged revisions 430467 from http://svn.asterisk.org/svn/asterisk/branches/13 - + Merged revisions 434113 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430468 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-09 12:53 +0000 [ef34a05f21] Richard Mudgett + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434114 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * AMI: Remove no longer used parameter from astman_send_listack(). +2015-04-06 13:18 +0000 [d54ccda3b1] Diederik de Groot (License 6600) - Follow-up issue to -r430435 from reviewboard review. + * clang compiler warnings: Remove large chunks of unused code from extconf - ASTERISK-24049 - Review: https://reviewboard.asterisk.org/r/4315/ + This patch fixes a warning caught by clang, in which it detected that large + chunks of extconf were unused. Frankly, I wish we could pretend that all of + extconf was unused, but alas, that is not yet the case. + A few extraneous functions in the parking tests were removed as well, for + the same reason. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430452 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4553 -2015-01-09 12:16 +0000 [52a7cdb101] Richard Mudgett + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4553.patch submitted by dkdegroot (License 6600) + ........ - * AMI: Make AMI actions that generate event lists consistent. + Merged revisions 434093 from http://svn.asterisk.org/svn/asterisk/branches/11 - * Made the following AMI actions use list API calls for consistency: - Agents - BridgeInfo - BridgeList - BridgeTechnologyList - ConfbridgeLIst - ConfbridgeLIstRooms - CoreShowChannels - DAHDIShowChannels - DBGet - DeviceStateList - ExtensionStateList - FAXSessions - Hangup - IAXpeerlist - IAXpeers - IAXregistry - MeetmeList - MeetmeListRooms - MWIGet - ParkedCalls - Parkinglots - PJSIPShowEndpoint - PJSIPShowEndpoints - PJSIPShowRegistrationsInbound - PJSIPShowRegistrationsOutbound - PJSIPShowResourceLists - PJSIPShowSubscriptionsInbound - PJSIPShowSubscriptionsOutbound - PresenceStateList - PRIShowSpans - QueueStatus - QueueSummary - ShowDialPlan - SIPpeers - SIPpeerstatus - SIPshowregistry - SKINNYdevices - SKINNYlines - Status - VoicemailUsersList - * Incremented the AMI version to 2.7.0. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434097 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Changed astman_send_listack() to not use the listflag parameter and - always set the value to "Start" so the start capitalization is consistent. - i.e., The FAXSessions used "Start" while the rest of the system used - "start". The corresponding complete event always used "Complete". +2015-04-06 13:03 +0000 [0ecd472e4f] Diederik de Groot (License 6600) - * Fixed ami_show_resource_lists() "PJSIPShowResourceLists" to output the - AMI ActionID for all of its list events. + * clang compiler warnings: Fix sometimes-uninitialized warning in pbx_config - * Fixed off-nominal AMI protocol error in manager_bridge_info(), - manager_parking_status_single_lot(), and - manager_parking_status_all_lots(). Use of astman_send_error() after - responding to the original AMI action request violates the action response - pattern by sending two responses. + This patch fixes a warning caught by clang, in which a char pointer could be + assigned to before it was initialized. The patch re-organizes the code to + ensure that the pointer is always initialized, even on off nominal paths. - * Fixed minor protocol error in action_getconfig() when no requested - categories are found. Each line needs to be formatted as "Header: text". + Review: https://reviewboard.asterisk.org/r/4529 - * Fixed off-nominal memory leak in manager_build_parked_call_string(). + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4529.patch submitted by dkdegroot (License 6600) + ........ - * Eliminated unnecessary use of RAII_VAR() in ami_subscription_detail(). + Merged revisions 434090 from http://svn.asterisk.org/svn/asterisk/branches/11 - ASTERISK-24049 #close - Reported by: Jonathan Rose - Review: https://reviewboard.asterisk.org/r/4315/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434091 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430434 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-06 12:52 +0000 [4e7be5b2dc] Diederik de Groot (License 6600) + * clang compiler warnings: Fix format specified in framehook - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430435 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch fixes an invalid format specifier used in the formatting of an + ERROR message in the framehook code. The format specifier specifies a + type of 'unsigned short', but the argument passed to it is of type 'int'. + The patch changes the format specifier to 'i'. -2015-01-09 08:53 +0000 [77ee23210d] Kinsey Moore + Review: https://reviewboard.asterisk.org/r/4540 - * res_fax: Add T.38 negotiation timeout option + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4535.patch submitted by dkdegroot (License 6600) + ........ - This change makes the T.38 negotiation timeout configurable via - 't38timeout' in res_fax.conf or FAXOPT(t38timeout). It was previously - hard coded to be 5000 milliseconds. + Merged revisions 434087 from http://svn.asterisk.org/svn/asterisk/branches/11 - This change also handles T.38 switch failures by aborting the fax since - in the case where this can happen, both sides have agreed to switch to - T.38 and Asterisk is unable to do so. - Review: https://reviewboard.asterisk.org/r/4320/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434088 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430415 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-04-06 11:02 +0000 [2443b40341] Mark Michelson - Merged revisions 430416 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Ensure that a non-zero sample rate is returned for all formats. + Versions of Asterisk prior to 12 defaulted to 8000 as a sample rate + if one was not provided by a format. In Asterisk 13, this was removed. + The result was that some calculations which involve dividing by the + sample rate resulted in dividing by 0. The fix being put in place + here is to have the same default fallback that was present in previous + versions of Asterisk. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430417 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Asterisk-24914 #close + Reported by Marcello Ceschia -2015-01-08 15:41 +0000 [8786fe13a4] gtjoseph - * res_pjsip_pubsub: Fix persistent subscriptions not surviving graceful shutdown - If you do a 'core (shutdown|restart) graceful' persistent subscriptions won't - survive. If you do a 'core (shutdown|restart) now' or asterisk terminates for - some reason, they do. Here's why... + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434046 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - When asterisk shuts down gracefully, it sends a 'NOTIFY/terminated' to - subscribers for each subscription. This not only tells the subscribers that the - dialog/state machine is done, it also frees the last reference to the - subscription tree which causes the persistent subscription to get deleted from - astdb. When asterisk restarts, nothing's left. Just preventing the delete from - astdb doesn't work because we already told the subscriber to terminate the - dialog so we can't restart it even if it was still in astdb. Everything works - OK if asterisk terminates unexpectedly because we never send the 'terminated' - message so on restart, the subscription is still in astdb and the subscriber is - none the wiser. +2015-04-06 10:16 +0000 [b1102cd642] Corey Farrell - This patch suppresses the sending of 'NOTIFY/terminated' on shutdown for - persistent connections. + * res_pjsip_phoneprov_provider: Revert 433996 / 433997. - Tested-by: George Joseph + res_pjsip_phoneprov_provider is using ao2_callback with OBJ_MULTIPLE, then + ignoring the return. OBJ_NODATA flag was to prevent a reference leak, but + this caused the module to FRACK on unload. Revert change until this can + be investigated further. - Review: https://reviewboard.asterisk.org/r/4318/ - ........ + ASTERISK-24935 + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4578/ - Merged revisions 430397 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434025 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430398 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-06 09:50 +0000 [0f25076f67] Mark Michelson (license #5049) -2015-01-08 15:38 +0000 [c55f86c69d] gtjoseph + * ParkedCall: Don't allow dialplan fallthrough after retrieving parked call. - * res_pjsip_outbound_registration: Fix reference leak. + This is a change to align behavior with that of Asterisk 11 and previous versions. + In those versions, if a parked call were retrieved, and the call ended, the parked + call retriever would be hung up after the ParkedCall application ran. Prior to this + patch, in Asterisk 13, the same situation would result in the parked call retriever + falling through to additional priorities in the extension where the ParkedCall + application was called. With this patch, the behavior between Asterisk 11 and 13 + aligns. - Every time a registration started, sip_outbound_registration_response_cb bumps - the ref count on client_state then pushes a handle_registration_response task. - handle_registration_response never unreffed it though. So every time a - registration goes out, the ref count goes up by one. + ASTERISK-24899 #close + Reported by Malcolm Davenport + Patches: + ASTERISK-24899.patch uploaded by Mark Michelson(license #5049) - This patch adds the unreffs to handle_registration_response. - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4303/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434022 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430395 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-05 07:53 +0000 [709fa14b44] Corey Farrell + * res_pjsip_phoneprov_provider: Fix leaked OBJ_MULTIPLE iterator. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430396 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + res_pjsip_phoneprov_provider was using ao2_callback with OBJ_MULTIPLE, then + ignoring the return. Added OBJ_NODATA flag to prevent a reference leak. -2015-01-08 11:51 +0000 [030facce94] gtjoseph + ASTERISK-24935 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4578/ - * res_pjsip_outbound_registration: Fix several reload issues - There are 2 issues with reloading registrations... + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433996 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - 1. The 'can_reuse_registration' test wasn't considering the intervals or - expiration in its determination of whether a registration changed or not so if - you changed any of the intervals or the expiration and reloaded, the object - would get reloaded but the actual timers wouldn't change. - can_reuse_registration now does a sorcery diff on the old and new objects - instead of discretely testing certain fields. Now if you change expiration for - instance, and reload, the timer is updated and re-registration will occur on the - new value. +2015-04-03 16:53 +0000 [1ee8424f27] Mark Michelson - 2. If you mung up your password on an outbound registration you get a permanent - failure. If you fix the password (on the outbound_auth object) and reload, - nothing tells outbound_registration to try again because the registration itself - didn't change. This patch adds an observer on the "auth" object type and if any - auth changes, existing registration states are searched and those in a - REJECTED_PERMANENT state are retried. + * res_pjsip_messaging: Serialize outbound SIP MESSAGEs - Tested-by: George Joseph + Outbound SIP MESSAGEs had the potential to be sent out + of order from how they were specified in a set of + dialplan steps. - Review: https://reviewboard.asterisk.org/r/4304/ - ........ + This change creates a serializer for sending outbound + MESSAGE requests on. This ensures that the MESSAGEs are + sent by Asterisk in the same order that they were sent + from the dialplan. - Merged revisions 430373 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24937 #close + Reported by Mark Michelson + Review: https://reviewboard.asterisk.org/r/4579 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430374 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-07 15:26 +0000 [f8c4909eb7] Kinsey Moore - * ARI: Allow usage of ASYNCGOTO with Stasis() + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433968 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - When the AMI Redirect action is used with a channel bridged inside - Stasis() and not running a pbx, the channel is hung up instead of - proceeding to the desired location in dialplan. This change allows - such channels to be Redirected properly by detecting the operation - used by Redirect (ASYNCGOTO) and using the code already established - for functionality of the ARI channel continue operation. +2015-04-02 09:56 +0000 [169e57d2e0] Scott Griepentrog - ASTERISK-24591 #close - Review: https://reviewboard.asterisk.org/r/4271/ - ........ + * pjsip: resolve compatibility problem with ast_sip_session - Merged revisions 430355 from http://svn.asterisk.org/svn/asterisk/branches/13 + A change in r430179 inserted a variable near the top of a + structure caused a problem when running DPMA in a version + of Asterisk compiled across the change. This patch moves + the new variable to the end of the structure, eliminating + the problem. + Review: https://reviewboard.asterisk.org/r/4574/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430356 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-07 12:54 +0000 [7f836c1c15] Mark Michelson - * Add the ability to continue and originate using priority labels. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433944 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - With this patch, the following two ARI commands +2015-04-02 05:31 +0000 [1eb0c5f4e8] Corey Farrell - POST /channels - POST /channels/{id}/continue + * Tell menuselect that MALLOC_DEBUG conflicts with DEBUG_CHAOS. - Accept a new parameter, label, that can be used to continue to or originate - to a priority label in the dialplan. + DEBUG_CHAOS was marked as conflicting with MALLOC_DEBUG, but + for this to work correctly MALLOC_DEBUG must also be marked + as conflicting with DEBUG_CHAOS. - Because this is adding a new parameter to ARI commands, the API version of - ARI has been bumped from 1.6.0 to 1.7.0. + Review: https://reviewboard.asterisk.org/r/4557/ - This patch comes courtesy of Nir Simionovich from Greenfield Tech. Thanks! - ASTERISK-24412 #close - Reported by Nir Simionovich + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433923 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4285 - ........ +2015-04-01 11:25 +0000 [e301185983] Ashley Sanders - Merged revisions 430337 from http://svn.asterisk.org/svn/asterisk/branches/13 + * stasis: set a channel variable on websocket disconnect error + Resolve compile errors caused by r433863 by fixing the + documentation xml to comply with the schema. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430338 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-07 12:17 +0000 [e83853eebc] gtjoseph + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433888 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_pjsip_exten_state: Change 'does not exist' warning to notice +2015-03-31 22:26 +0000 [a1f12d9231] Ashley Sanders - The 'new_subscribe: Extension <> does not exist or has no associated hint' - is a config issue and doesn't need to clutter up logs with warnings. - Changed to notice. + * stasis: set a channel variable on websocket disconnect error - Tested-by: George Joseph + Resolve compile errors caused by r433839 by included the missing + header file, pbx.h. - Review: https://reviewboard.asterisk.org/r/4307/ - ........ - Merged revisions 430319 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433863 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430321 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-31 17:00 +0000 [7293ecd90b] Ashley Sanders -2015-01-07 12:15 +0000 [8cde7443c2] gtjoseph + * stasis: set a channel variable on websocket disconnect error - * res_pjsip_mwi: Change "MWI Subscription failed" message from warning to notice + When an error occurs while writing to a web socket, the web socket is + disconnected and the event is logged. A side-effect of this, however, is that + any application on the other side waiting for a response from Stasis is left + hanging indefinitely (as there is no mechanism presently available for + notifying interested parties about web socket error states in Stasis). - The "MWI Subscription failed" message means the client is trying to subscribe - to a mailbox that doesn't exist. There's no need to clutter up logs with - warnings for a client misconfiguration so I changed it to a notice. + To remedy this scenario, this patch introduces a new channel variable: + STASISSTATUS. - Tested-by: George Joseph + The possible values for STASISSTATUS are: + SUCCESS - The channel has exited Stasis without any failures + FAILED - Something caused Stasis to croak. Some (not all) possible + reasons for this: + - The app registry is not instantiated; + - The app requested is not registered; + - The app requested is not active; + - Stasis couldn't send a start message - Review: https://reviewboard.asterisk.org/r/4306/ - ........ + ASTERISK-24802 + Reported By: Kevin Harwell + Review: https://reviewboard.asterisk.org/r/4519/ - Merged revisions 430317 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433839 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430318 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-31 11:55 +0000 [94949e7f2f] Richard Mudgett -2015-01-07 11:54 +0000 [685f7ef924] gtjoseph + * chan_sip: Fix expression in unit test /channels/chan_sip/test_sip_rtpqos. - * func_config: Add ability to retrieve specific occurrence of a variable + Fix misplaced parentheses in original fabs() expression. + ........ - I guess nobody uses templates with AST_CONFIG because today if you have a - context that inherits from a template and you call AST_CONFIG on the context, - you'll get the value from the template even if you've overridden it in the - context. This is because AST_CONFIG only gets the first occurrence which is - always from the template. + Merged revisions 433816 from http://svn.asterisk.org/svn/asterisk/branches/11 - This patch adds an optional 'index' parameter to AST_CONFIG which lets you - specify the exact occurrence to retrieve, or '-1' to retrieve the last. - The default behavior is the current behavior. - Tested-by: George Joseph + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433817 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4313/ - ........ +2015-03-31 06:47 +0000 [9967739669] Corey Farrell - Merged revisions 430315 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Re-add _ast_mem_backtrace_buffer variable for ABI compatibility. + Modules built prior to commit of r4502 expect to link at runtime + to the variable _ast_mem_backtrace_buffer. This change re-adds + the variable to the C file only. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430316 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4558/ -2015-01-07 11:45 +0000 [464647d8f8] Mark Michelson - * Fix ability to perform a remote attended transfer with PJSIP. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433795 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This fix has two parts: +2015-03-30 06:42 +0000 [2d39bc5528] Corey Farrell - * Corrected an error message to properly state that external_replaces is an extension. The - error message also prints what dialplan context the external_replaces extension was being - looked for in. - * Corrected the printing of the Replaces: header in an INVITE request. We were duplicating - "Replaces: " in the header. + * Fix an ABI compatibility issue with ast_log_safe for modules. - ASTERISK-24376 #close - Reported by Matt Jordan + Binary modules are sometimes built against the latest release of + Asterisk in each branch, and need to be compatible with all + releases of that branch. This change ensures that utils.h only + uses ast_log_safe from the core. For modules and utilities ast_log + is used instead. - Review: https://reviewboard.asterisk.org/r/4296 + Review: https://reviewboard.asterisk.org/r/4548/ ........ - Merged revisions 430313 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433772 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430314 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433773 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-07 10:56 +0000 [56de48107f] gtjoseph +2015-03-29 21:44 +0000 [5f8faf16af] Diederik de Groot (License 6600) - * config: Add option to NOT preserve effective context when changing a template + * clang compiler warnings: Fix -Wabsolute-value warnings - Let's say you have a template T with variable VAR1 = ON and you have a - context C(T) that doesn't specify VAR1. If you read C, the effective value - of VAR1 is ON. Now you change T VAR1 to OFF and call - ast_config_text_file_save. The current behavior is that the file gets - re-written with T/VAR1=OFF but C/VAR1=ON is added. Personally, I think this - is a bug. It's preserving the effective state of C even though I didn't - specify C/VAR1 in th first place. I believe the behavior should be that if - I didn't specify C/VAR1 originally, then the effective value of C/VAR1 should - continue to follow the inherited state. Now, if I DID explicitly specify - C/VAR1, the it should be preserved even if the template changes. + This patch fixes several warnings caught by clang - in this case, usage of the + abs function on non-integer values. This patch uses labs and fabs, as + appropriate, in the various affected files. - Even though I think the existing behavior is a bug, it's been that way forever - so I'm not changing it. Instead, I've created ast_config_text_file_save2() - that takes a bitmask of flags, one of which is to preserve the effective context - (the current behavior). The original ast_config_text_file_save calls *2 with - the preserve flag. If you want the new behavior, call *2 directly without a - flag. + Review: https://reviewboard.asterisk.org/r/4525 - I've also updated Manager UpdateConfig with a new parameter - 'PreserveEffectiveContext' whose default is 'yes'. If you want the new behavior - with UpdateConfig, set 'PreserveEffectiveContext: no'. + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4525.patch submitted by dkdegroot (License 6600) + ........ - Tested-by: George Joseph + Merged revisions 433749 from http://svn.asterisk.org/svn/asterisk/branches/11 - Review: https://reviewboard.asterisk.org/r/4297/ - ........ - Merged revisions 430295 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433750 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-29 21:39 +0000 [09b681e344] Diederik de Groot (License 6600) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430296 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * clang compiler warnings: Fix invalid enum conversion -2015-01-06 21:01 +0000 [0c5234f12a] Kinsey Moore + This patch fixes some invalid enum conversion warnings caught by clang. In + particular: + * chan_sip: Several functions mixed usage of the st_refresher_param + enum and st_refresher enum. This patch corrects the functions to use the + right enum. + * chan_pjsip: Fixed mixed usage of ast_sip_session_t38state and ast_t38_state. + * strings: Fixed incorrect usage of AO2 flags with strings container. + * res_stasis: Change a return enumeration to stasis_app_user_event_res. - * Fix dev-mode build on recent gcc + Review: https://reviewboard.asterisk.org/r/4535 + + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4535.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430274 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433746 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430275 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433747 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-06 16:46 +0000 [220df246d9] Matt Jordan +2015-03-29 21:29 +0000 [7f33abb827] Matt Jordan - * Blocked revisions 430252 + * main/stdtime/localtime: Fix warning introduced in r433720 - ........ - contrib/ast-db-manage: Correct down_revision path for user_eq_phone + The patch in r433720 caused a warning to be kicked back by gcc. It occurred + due to this check in unistd.h: - When the user_eq_phone patch was backported to 13, it referenced the downward - revision that the PJSIP optimistic encryption option also references. This - creates a multi-path upgrade Exception when generating the SQL files. + if (__nbytes > __bos0 (__buf)) + return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf)); - This patch corrects this in the 13 branch. Note that trunk, which already - contained both of these features, is unaffected by this problem. + That is, if __nbytes is greater than the result of GCC's built-in object size + for the struct, we'll kick back a warning. + As it turns out, this is because there is an error in the code in the patch. + We are passing the address of the pointer to the struct, not iev, which is a + pointer to the struct. Hence, the number of bytes is probably going to be lot + larger than the number of bytes that make up a pointer! This patch changes + the code just read from the pointer to the struct - which fixes the warning. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430254 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24917 + ........ -2015-01-06 11:53 +0000 [8b5bde3e5a] gtjoseph + Merged revisions 433743 from http://svn.asterisk.org/svn/asterisk/branches/11 - * res_pjsip_mwi: Change warning to notice - When res_pjsip loads and an endpoint auto-subscribes a mailbox for mwi, - if a contact hasn't registered yet, res_pjsip_mwi spits out a warning. - This is a perfectly normal situation though and doesn't require something - as serious as a warning. It's also self correcting. The device will start - getting mwi as soon as it registers. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433744 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This patch changes the warning to a notice. +2015-03-29 20:56 +0000 [47eeb67e14] Diederik de Groot (License 6600) - Tested-by: George Joseph + * clang compiler warnings: Ignore -Wunused-command-line-argument - Review: https://reviewboard.asterisk.org/r/4314/ - ........ + Asterisk's build system has a tendency to pass include directives for libraries + to everything compiled within a particular group of source files. This means + we pass the header for libxml2 to things that don't necessarily need it. As a + result, we ignore this particular warning. - Merged revisions 430227 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4545/ + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4545.patch submitted by dkdegroot (License 6600) + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430228 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 433720 from http://svn.asterisk.org/svn/asterisk/branches/11 -2015-01-06 11:49 +0000 [5f60ebc004] gtjoseph - * bridge_native_rtp: Change local/remote message from debug/2 to verb/4 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433721 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Change the "Locally bridged"/"Remotely bridged" messages from dbg/2 to verb/4. +2015-03-29 20:52 +0000 [dbb4d6f9e7] Diederik de Groot (License 6600) - Tested-by: George Joseph + * clang compiler warnings: Fix warning for -Wgnu-variable-sized-type-not-at-end - Review: https://reviewboard.asterisk.org/r/4300/ - ........ + This patch fixes a warning caught by clang, wherein a variable sized struct is + not located at the end of a struct. While the code in question actually + expected this, this is a good warning to watch for. Hence, this patch refactors + the code in question to not have two variable length elements in the same + struct. - Merged revisions 430225 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4530/ + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4530.patch submitted by dkdegroot (License 6600) + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430226 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 433717 from http://svn.asterisk.org/svn/asterisk/branches/11 -2015-01-06 11:43 +0000 [fb3c8e3424] gtjoseph - * outbound_registration: Add 'pjsip send register' and update 'send unregister' + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433718 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - The current behavior of 'pjsip send unregister' is to send the unregister - (REGISTER with 0 exp) but let the next scheduled register proceed normally. - I don't think that's a good idea. If you unregister, it should stay - unregistered until you decide to start registrations again. So this patch - just adds a cancel_registration call to the current unregister_task to - cancel the timer. +2015-03-28 07:56 +0000 [e126ab9eeb] Diederik de Groot (License 6600) - Of course, now you need a way to start registration again so I've added - a 'pjsip send register' command that unregisters and cancels any existing - registration (the same as send unregister), then sends an immediate - registration and starts the timer back up again. + * clang compiler warnings: Fix a variety of "unused" warnings - Both changes also ripple to AMI. There's a new PJSIPRegister command. + This patch fixes the -Wunused-value -Wunused-variable -Wunused-const-variable + errors caught by clang. Specifically: - There's no harm in calling either command repeatedly. They don't care - about the actual state. + * apps/app_queue.c: removed unused qpm_cmd_usage[], qum_cmd_usage[], + qsmp_cmd_usage[] + * cel/cel_sqlite3_custom.c: removed unused name[] = "cel_sqlite3_custom" + * channels/chan_pjsip.c: removed unused desc[] = "PJSIP Channel" + * codecs/gsm/src/gsm_create.c: removed unused ident[] = "$Header$" + * funcs/func_env.c:729: Fixed ast_str_append_substr. + * main/editline/np/strlcat.c: removed unused rcsid variable + * main/editline/np/strlcpy.c: removed unused rcsid variable + * main/security_events.c: removed unused TIMESTAMP_STR_LEN + * utils/conf2ael.c: removed unused cfextension_states + * utils/extconf.c: removed unused cfextension_states - Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4526 - Review: https://reviewboard.asterisk.org/r/4301/ + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4526.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430223 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433693 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433694 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-06 11:29 +0000 [7dc0c88fc6] gtjoseph +2015-03-28 07:48 +0000 [2f6534527d] Diederik de Groot (License 6600) - * pjsip cli: Fix sorting of contacts for 'pjsip list contacts' + * clang compiler warnings: Fix -Wself-assign - For some reason I was using a hash container instead of a list to gather the - contacts for 'pjsip list/show contacts' so even though I had a sort function, - the output wasn't sorted. This patch just changes the hash container to a - list container and the contacts now appear sorted in the CLI. + Assigning a variable to itself isn't super useful. However, the WAV format + modules make use of this in order to perform byte endian checks. This patch + works around the warning by only performing the self assignment if we are + going to do more than just assign it to ourselves. Which is odd, but true. - Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4544/ - Review: https://reviewboard.asterisk.org/r/4305/ + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4544.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430221 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430222 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - -2015-01-05 16:50 +0000 [0b8fbf9238] Scott Griepentrog - - * bridge: avoid leaking channel during blond transfer pt2 - - A blond transfer to a failed destination, when followed - by a recall attempt, lead to a leak of the reference to - the destination channel. In addition to correcting the - regression on the previous attempt (r429826) this fixes - the leak and two additional reference leaks on failures - of bridge_import. + Merged revisions 433690 from http://svn.asterisk.org/svn/asterisk/branches/11 - ASTERISK-24513 #close - Review: https://reviewboard.asterisk.org/r/4302/ - ........ - Merged revisions 430199 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433691 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 430200 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-03-28 07:40 +0000 [eb70993a50] Diederik de Groot (License 6600) + * clang compiler warnings: Fix -Wparantheses-equality warnings - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Clang will treat ((a == b)) as a warning, as it reasonably expects that the + developer may have intended to write (a == b) or ((a = b)). This patch cleans + up all instances where equality, not assignment, was intended between two + parantheses. -2015-01-05 11:57 +0000 [e0bd2ca104] Joshua Colp + Review: https://reviewboard.asterisk.org/r/4531/ - * pjsip: Document addition of 'PJSIP_AOR' and 'PJSIP_CONTACT' in CHANGES file. + ASTERISK-24917 + Repoted by: dkdegroot + patches: + rb4531.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430181 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433687 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430182 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2015-01-05 11:53 +0000 [f7cf988a82] Joshua Colp +2015-03-28 07:31 +0000 [c0ff16036a] Diederik de Groot (License 6600) - * pjsip: Add 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions. + * clang compiler warnings: Fix -Wbitfield-constant-conversion warning - The PJSIP_AOR dialplan function allows inspection of configured AORs including - what contacts are currently bound to them. + In chan_iax2, we attempt to assign a -1 to a bitfield. This gets caught by + clang, as it will truncate the -1 to a 1 implicitly. - The PJSIP_CONTACT dialplan function allows inspection of contacts in existence. - These can include both externally added (by way of registration) or permanent - ones. + Instead, we just assign the value a '1'. - ASTERISK-24341 - Reported by: xrobau + Review: https://reviewboard.asterisk.org/r/4537/ - Review: https://reviewboard.asterisk.org/r/4308/ + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4537.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430179 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430180 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - -2014-12-31 12:54 +0000 [8d059c3808] Scott Griepentrog - - * rtp_engine: keep payload types in correct range - - In r428708 additional codecs were added including - a payload type of 128 which is outside of nominal - range of 0-127. This change moves changes 128 to - 96 to avoid causing a pjsip assertion when making - a call to an endpoint configured with allow=all. + Merged revisions 433683 from http://svn.asterisk.org/svn/asterisk/branches/11 - ASTERISK-24367 #close - Review: https://reviewboard.asterisk.org/r/4286/ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433684 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-28 07:27 +0000 [844bc76bef] Diederik de Groot (License 6600) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430164 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * clang compiler warnings: Fix -Winitializer-overrides -2014-12-29 07:14 +0000 [cb6a737359] Kinsey Moore + This patch fixes clange compiler warnings for initializer overrides. + Specifically: - * PJSIP: Update transport method documentation + res_pjsip/config_transport maps PJSIP_TLSV1_METHOD to the same enumeration + value as PJSIP_SSL_DEFAULT_METHOD. When initializing an array containing + those enum values, we therefore initialize the value twice to two different + values, "tlsv1" and "default". This patch changes it to just initialize + the index in the array to "tlsv1". - This updates the documentation for the 'method' configuration option to - be more verbose about the behaviors of values 'unspecified' and - 'default'. They do exactly the same thing which is to select the - default as defined by PJSIP which is currently TLSv1. + Review: https://reviewboard.asterisk.org/r/4539/ - Review: https://reviewboard.asterisk.org/r/4264/ - ........ + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4539.patch submitted by dkdegroot (License 6600) - Merged revisions 430145 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433682 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430146 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-28 07:19 +0000 [5e204042d9] Diederik de Groot (License 6600) -2014-12-24 15:28 +0000 [91becf952a] Kevin Harwell + * clang compiler warnings: Fix -Wunused-function; make inline function static - * app_queue: Update sample conf documenation + This patch fixes clang compilers warnings for unused functions. Specifically: + * channels/chan_iax2: removed user_ref function + * main/dsp.c: removed goertzel_update function + * main/config.c: made variable_list_switch static - Updated the queues.conf.sample file to explicitly state which channel queue - variables are propagated to. + Review: https://reviewboard.asterisk.org/r/4527 - ASTERISK-24267 - Reported by: Mitch Claborn + ASTERISK-24917 + Reported by: dkdegroot + patches: + rb4527.patch submitted by dkdegroot (License 6600) ........ - Merged revisions 430126 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 433678 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 430127 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433680 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430128 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-27 17:34 +0000 [cfbf5fbe91] Jonathan Rose -2014-12-24 10:59 +0000 [3a73c6c90e] Matt Jordan + * SAC: Add a few basic queues - * main/pbx.c: Fix double lock of contexts lock introduced by r429967 + Review: https://reviewboard.asterisk.org/r/4503/ - We only need to hold the context_merge_lock once. Locking it twice will make - many other parts of Asterisk very sad. - ASTERISK-24641 #close + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433658 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-27 17:25 +0000 [1a50d8d4c2] Jonathan Rose - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430111 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * SAC: Add conferencing extensions and configuration -2014-12-23 17:19 +0000 [7ea4156a5e] gtjoseph + Review: https://reviewboard.asterisk.org/r/4504/ - * pjsip_options: Fix continued qualifies after endpoint/aor deletion - If you remove an endpoint/aor from pjsip.conf then do a core reload, - qualifies will continue even though the object are gone. This happens - because nothing clears out the qualify tasks. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433656 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This patch unschedules all existing qualify tasks before scheduling - new ones on reload. +2015-03-27 16:15 +0000 [c6c08d755d] Rusty Newton - Tested-by: George Joseph + * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 2 - Review: https://reviewboard.asterisk.org/r/4290/ - ........ + Example configuration files for a "basic PBX" deployment for the fictitious + Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4488/ + and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company - Merged revisions 430064 from http://svn.asterisk.org/svn/asterisk/branches/13 + Patch 4488 includes all functionality needed for SAC's outside connectivity + and some externally accessed features, as well as outbound dialing. + Reported by: Malcolm Davenport + Tested by: Rusty Newton - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430067 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4488/ -2014-12-23 17:16 +0000 [62d1dba271] gtjoseph - * test_astobj2: Fix warning for missing trailing slash in category + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433624 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This patch adds a trailing slash to the category for this test. - No more warning. +2015-03-27 16:04 +0000 [13557675d4] Richard Mudgett - Tested-by: George Joseph + * res_pjsip_registrar_expire.c: Made use ao2 container template routines and eliminated some RAII_VAR() usage. - Review: https://reviewboard.asterisk.org/r/4295/ - ........ + * Converted the contact_autoexpire container to use the ao2 template hash + and cmp functions. Also made use the OBJ_SEARCH_xxx names instead of the + deprecated names. - Merged revisions 430059 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Eliminates several unnecessary uses of RAII_VAR(). + Review: https://reviewboard.asterisk.org/r/4524/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430060 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-22 15:20 +0000 [1c0604e905] Richard Mudgett + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433622 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * DTMF atxfer: Setup recall channels as if the transferee initiated the call. +2015-03-27 15:30 +0000 [85feac857c] Mark Michelson - After the initial DTMF atxfer call attempt to the transfer target fails to - answer during a blonde transfer, the recall callback channels do not get - setup with information from the initial transferrer channel. As a result, - the recall callback to the transferrer does not have callid, channel - variables, datastores, accountcode, peeraccount, COLP, and CLID setup. A - similar situation happens with the recall callback to the transfer target - but it is less visible. The recall callback to the transfer target does - not have callid, channel variables, datastores, accountcode, peeraccount, - and COLP setup. + * Add stateful PJSIP response API call, and use it for out-of-dialog responses. - * Added missing information to the recall callback channels before - initiating the call. callid, channel variables, datastores, accountcode, - peeraccount, COLP, and CLID + Asterisk had an issue where retransmissions of MESSAGE requests resulted in + Asterisk processing the retransmission as if it were a new MESSAGE request. - * Set callid of the transferrer channel on the DTMF atxfer controller - thread attended_transfer_monitor_thread(). + This patch fixes the issue by creating a transaction in PJSIP on the incoming + request. This way, if a retransmission arrives, the PJSIP transaction layer + will resend the response and Asterisk will not ever see the retransmission. - * Added missing channel unlocks and props unref to off nominal paths in - attended_transfer_properties_alloc(). + ASTERISK-24920 #close + Reported by Mark Michelson - ASTERISK-23841 #close - Reported by: Richard Mudgett + Review: https://reviewboard.asterisk.org/r/4532/ - Review: https://reviewboard.asterisk.org/r/4259/ - ........ - Merged revisions 430034 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433619 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-27 12:50 +0000 [dc2cf21144] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430041 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown. -2014-12-22 14:25 +0000 [7d954f4cb1] Richard Mudgett + Contact expiration object refs were leaked when the module was unloaded. - * Fix compilation since the patch for ASTERISK-24363 went in. + * Made empty the scheduler of entries before destroying it to release the + object ref held by the scheduler entry. + Review: https://reviewboard.asterisk.org/r/4523/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430028 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-22 14:08 +0000 [bbd9ff122e] Richard Mudgett + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433596 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * queue_log: Post QUEUESTART entry when Asterisk fully boots. +2015-03-27 09:41 +0000 [6e6f5b3a1f] Justin T. Gibbs (License 6692) - The QUEUESTART log entry has historically acted like a fully booted event - for the queue_log file. When the QUEUESTART entry was posted to the log - was broken by the change made by ASTERISK-15863. + * res/res_timing_kqueue: Update the module to conform to current timer API - * Made post the QUEUESTART queue_log entry when Asterisk fully boots. - This restores the intent of that log entry and happens after realtime has - had a chance to load. + This patch updates the kqueue timing module to conform to current timer API. - AST-1444 #close - Reported by: Denis Martinez + This fixes issues with using the kqueue timing source on Asterisk 13 on + FreeBSD 10. These issues include: - Review: https://reviewboard.asterisk.org/r/4282/ - ........ + - Remove support for kevent64(). The values used to support Asterisk timers + fit within 32bits and so can be handled on all platforms via kevent(). - Merged revisions 430009 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + - Provide debug logging for, but do not track, unacked events. This matches + the behavior of all other timer implementations. - Merged revisions 430010 from http://svn.asterisk.org/svn/asterisk/branches/13 + - Implement continuous mode by triggering and leaving active, a user event. + This ensures that the file descriptor for the timer returns immediately from + poll(), without placing the load of a high speed timer on the kernel. + + - In kqueue_timer_get_max_rate(), don't overstate the capability of the timer. + On some platforms, UINT_MAX is greater than INTPTR_MAX, the largest integer + type kqueue supports for timers. + - In kqueue_timer_get_event(), assume the caller woke up from poll() and just + return the mode the timer is currently in. This matches all other timer + implementations. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430011 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + - Adjust the test code now that unacked events are not tracked. -2014-12-22 09:40 +0000 [264a50c52a] Karsten Wemheuer (License 5930) + Review: https://reviewboard.asterisk.org/r/4465/ - * chan_sip: Send CANCEL via original INVITE destination even after UPDATE request + ASTERISK-24857 #close + Reported by: scsiguy + Tested by: Ed Hynan + patches: + rb4465.patch submitted by scsiguy (License 6692) - Given the following scenario: - * Three SIP phones (A, B, C), all communicating via a proxy with Asterisk - * A call is established between A and B. B performs a SIP attended transfer of - A to C. B sets the call on hold (A is hearing MOH) and dials the extension of - C. While phone C is ringing, B transfers the call (that is, what we typically - call a 'blond transfer'). - * When the transfer completes, A hears the ringing of phone C, while B is idle. - In the SIP messaging for the above scenario, a REFER request is sent to - transfer the call. When "sendrpid=yes" is set in sip.conf, Asterisk may send an - UPDATE request to phone C to update party information. This update is sent - directly to phone C, not through the intervening proxy. This has the unfortunate - side effect of providing route information, which is then set on the sip_pvt - structure for C. If someone (e.g. B) is trying to get the call back (through a - directed pickup), Asterisk will send a CANCEL request to C. However, since we - have now updated the route set, the CANCEL request will be sent directly to C - and not through the proxy. The phone ignores this CANCEL according to RFC3261 - (Section 9.1). + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433574 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This patch updates reqprep such that the route is not updated if an UPDATE - request is being sent while the INVITE state is INV_PROCEEDING or - INV_EARLY_MEDIA. This ensures that a subsequent CANCEL request is still sent - to the correct location. +2015-03-27 07:26 +0000 [b0df413fb2] Corey Farrell - Review: https://reviewboard.asterisk.org/r/4279 + * Fix link error for utils/aelparse. - ASTERISK-24628 #close - Reported by: Karsten Wemheuer - patches: - issue.patch uploaded by Karsten Wemheuer (License 5930) - ........ + Use the standard ast_log instead of ast_log_safe for STANDALONE programs. - Merged revisions 429982 from http://svn.asterisk.org/svn/asterisk/branches/11 + Review: https://reviewboard.asterisk.org/r/4538/ ........ - Merged revisions 429983 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433549 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429984 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433550 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-22 08:33 +0000 [0c38276d6e] Gareth Palmer (License 5169) +2015-03-27 02:09 +0000 [d01706ce1e] Corey Farrell - * presencestate: Allow channel drivers to provide presence state information + * Improved and portable ast_log recursion avoidance - This patch adds the ability for channel drivers to supply presence information - in a similar manner to device state. The patch does not provide any channel - driver implementations, but it does provide the core infrastructure necessary - for channel drivers to provide such information. + This introduces a new logger routine ast_log_safe. This routine should be + used for all error messages in code that can be run as a result of ast_log. + ast_log_safe does nothing if run recursively. All error logging in + astobj2.c, strings.c and utils.h have been switched to ast_log_safe. - The core handles multiple providers of presence state information. Ordering - of presence state is as follows: - INVALID < NOT_SET < AVAILABLE < UNAVAILABLE < CHAT < AWAY < XA < DND + This required adding support for raw threadstorage. This provides direct + access to the void* pointer in threadstorage. In ast_log_safe, NULL is used + to signify that this thread is not already running ast_log_safe, (void*)1 when + it is already running. This was done since it's critical that ast_log_safe + do nothing that could log during recursion checking. - Each provider can trump the previous if it provides a presence state that - supercedes a previous one. + ASTERISK-24155 #close + Reported by: Timo Teräs + Review: https://reviewboard.asterisk.org/r/4502/ + ........ - Review: https://reviewboard.asterisk.org/r/4050 + Merged revisions 433522 from http://svn.asterisk.org/svn/asterisk/branches/11 - ASTERISK-24363 #close - Reported by: Gareth Palmer - patches: - chan_presencestate-428146.patch uploaded by Gareth Palmer (License 5169) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433523 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429967 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-26 18:07 +0000 [4b225e2104] Corey Farrell -2014-12-22 06:16 +0000 [2afeadcc84] Matt Jordan + * Fix compile errors caused by r4500 / r4501. - * app_confbridge: Fix build error caused by XML validation errors + * Add ast_register_cleanup to utils/clicompat.c to deal with + any utils that copy sources from main. + * Asterisk 13+: remove unused variables from core_local.c. - Summaries can't contain XML nodes, as they are defined to contain only text - data. + Review: https://reviewboard.asterisk.org/r/4534/ + ........ + Merged revisions 433499 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429952 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-21 20:35 +0000 [b79a4a464f] Gareth Palmer (License 5169) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433500 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * app_confbridge: Add the ability to pass options/command to MixMonitor +2015-03-26 17:19 +0000 [6adf26f14d] Corey Farrell - This patch adds the ability to pass options and a command to MixMontor when - recording a conference using ConfBridge. + * Replace most uses of ast_register_atexit with ast_register_cleanup. - New options are - + Since 'core stop now' and 'core restart now' do not stop modules, + it is unsafe for most of the core to run cleanups. Originally all + cleanups used ast_register_atexit, and were only changed when it + was shown to be unsafe. ast_register_atexit is now used only when + absolutely required to prevent corruption and close child processes. - * record_options: Options to MixMontor, eg: m(), W() etc. - * record_command: The command to execute when recording is over. - * record_file_timestamp: Append the start time to the file name. + Exceptions that need to use ast_register_atexit: + * CDR: Flush records. + * res_musiconhold: Kill external applications. + * AstDB: Close the DB. + * canary_exit: Kill canary process. - These options can also be used with the CONFBRIDGE function, e.g., - Set(CONFBRIDGE(bridge,record_command)=/path/to/command ^{MIXMONITOR_FILENAME})) + ASTERISK-24142 #close + Reported by: David Brillert - Review: https://reviewboard.asterisk.org/r/4023 + ASTERISK-24683 #close + Reported by: Peter Katzmann - ASTERISK-24351 #close - Reported by: Gareth Palmer - patches: - record_command-428838.patch uploaded by Gareth Palmer (License 5169) + ASTERISK-24805 #close + Reported by: Badalian Vyacheslav + ASTERISK-24881 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4500/ + Review: https://reviewboard.asterisk.org/r/4501/ + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429934 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-12-21 18:17 +0000 [b137a92aef] gtjoseph - * res_pjsip_phoneprovi_provider: Fix reload + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Reloading wasn't working correctly because on a reload, the sorcery apply - handler was never being called for unchanged users. So, instead of using - an apply handler, I'm now iterating over all users. Works much more reliably. +2015-03-26 12:46 +0000 [d0df545a44] Corey Farrell - Tested-by: George Joseph + * res_pjsip: Enable unload of all modules at shutdown. - Review: https://reviewboard.asterisk.org/r/4288/ - ........ + * Move most of res_pjsip:module_unload to unload_pjsip to resolve crashes + caused by running PJSIP functions from non-PJSIP threads. + * Remove call to pjsip_endpt_destroy(ast_pjsip_endpoint), it was causing + crashes in some cases. In theory pj_shutdown() should take care of this. + * Mark res_pjsip_keepalive and res_pjsip_session as allowed to unload at + shutdown. + * Resolve leaked config global in res_pjsip_notify. + * Unregister pubsub pjsip service module. + * Implement cleanup for res_pjsip_session. - Merged revisions 429914 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24731 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4498/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429915 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433469 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-20 14:57 +0000 [ba403e83bd] Joshua Colp +2015-03-26 12:04 +0000 [fd434a210f] Kevin Harwell - * acl: Fix reloading of configuration if configuration file does not exist at startup. + * app_confbridge: file playback blocks dtmf - The named ACL code incorrectly destroyed the config options information if loading - of the configuration file failed at startup. This would result in reloading - also failing even if a valid configuration file was put in place. + Attempting to execute DTMF in a confbridge while file playback (prompt, + announcement, etc) is occurring is not allowed. You have to wait until + the sound file has completed before entering DTMF. This patch fixes it + so that app_confbridge now monitors for dtmf key presses during menu + driven file playback. If a key is pressed playback stops and it executes + the matched menu option. - ASTERISK-23733 #close - Reported by: Richard Kenner + ASTERISK-24864 #close + Reported by: Steve Pitts + Review: https://reviewboard.asterisk.org/r/4510/ ........ - Merged revisions 429893 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 433445 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 429894 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433446 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429895 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-25 13:37 +0000 [dea885a607] Richard Mudgett -2014-12-19 14:56 +0000 [54bd1c9683] Richard Mudgett + * A couple minor cleanup tweaks. - * res_http_websocket.c: Fix incorrect use of sizeof in ast_websocket_write(). + * In res/res_sorcery_realtime.c: Broke long line. - This won't fix the reported issue but it is an incorrect use of sizeof. + * In main/bucket.c: Eliminated unnecessary NULL check as + ast_sorcery_unref() is NULL tolerant and set the global object to NULL + after unref in the system shutdown bucket_cleanup(). - ASTERISK-24566 - Reported by: Badalian Vyacheslav - ........ - Merged revisions 429867 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433420 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 429868 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-03-25 10:30 +0000 [05de9082a5] Simon Arlott (License 5756) + * res_xmpp: Buddies are always auto-registered when processing the roster - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429870 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Due to a quirk in the configuration handling of res_xmpp, the 'autoregister' + setting was never actually processed. This was due to not properly copying + over the global settings to the client settings when applying the + configuration to the run-time object. -2014-12-19 11:34 +0000 [b508b3474e] Richard Mudgett + Review: https://reviewboard.asterisk.org/r/4496/ - * chan_dahdi: Don't ignore setvar when using configuration section scheme. + ASTERISK-14233 + ASTERISK-24780 #close + Reported by: Simon Arlott + patches: + asterisk-13.1.0-24780 uploaded by Simon Arlott (License 5756) + ........ - When the configuration section scheme of chan_dahdi.conf is used (keyword - dahdichan instead of channel) all setvar= options are completely ignored. - No variable defined this way appears in the created DAHDI channels. + Merged revisions 433395 from http://svn.asterisk.org/svn/asterisk/branches/11 - * Move the clearing of setvar values to after the deferred processing of - dahdichan. - AST-1378 #close - Reported by: Guenther Kelleter - Patch by: Guenther Kelleter - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433396 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 429825 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-03-24 14:26 +0000 [b1e9552b08] Richard Mudgett - Merged revisions 429829 from http://svn.asterisk.org/svn/asterisk/branches/13 + * chan_pjsip: Add "rpid_immediate" option to prevent unnecessary "180 Ringing" messages. + Incoming PJSIP call legs that have not been answered yet send unnecessary + "180 Ringing" or "183 Progress" messages every time a connected line + update happens. If the outgoing channel is also PJSIP then the incoming + channel will always send a "180 Ringing" or "183 Progress" message when + the outgoing channel sends the INVITE. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429830 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Consequences of these unnecessary messages: -2014-12-19 11:27 +0000 [07d1012383] Scott Griepentrog + * The caller can start hearing ringback before the far end even gets the + call. - * bridge: avoid leaking channel during blond transfer + * Many phones tend to grab the first connected line information and refuse + to update the display if it changes. The first information is not likely + to be correct if the call goes to an endpoint not under the control of the + first Asterisk box. - After a blond transfer (start attended and hang up) - to a destination that also hangs up without answer, - the Local;1 channel was leaked and would show up on - core show channels. This was happening because the - attended state blond_nonfinal_enter() resetting the - props->transfer_target to null while releasing it's - own reference, which would later prevent props from - releasing another reference during destruction. The - change made here is simply to not assign the target - to NULL. + When connected line first went into Asterisk in v1.8, chan_sip received an + undocumented option "rpid_immediate" that defaults to disabled. When + enabled, the option immediately passes connected line update information + to the caller in "180 Ringing" or "183 Progress" messages as described + above. - ASTERISK-24513 #close - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4262/ - ........ + * Added "rpid_immediate" option to prevent unnecessary "180 Ringing" or + "183 Progress" messages. The default is "no" to disable sending the + unnecessary messages. - Merged revisions 429826 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24781 #close + Reported by: Richard Mudgett - Merged revisions 429827 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4473/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429828 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433338 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-18 16:40 +0000 [2cbfafa8c1] Richard Mudgett +2015-03-22 18:58 +0000 [a3fe43fbdc] snuffy (License 5024) - * chan_dahdi.c, res_rtp_asterisk.c: Change some spammy debug messages to level 5. + * Fix compilations errors on 64-bit OpenBSD systems - ASTERISK-24337 #close - Reported by: Rusty Newton - ........ + In versiong 5.5, OpenBSD went to 64-bit time values. This requires a cast to + (long) when printing members of certain time structs. - Merged revisions 429804 from http://svn.asterisk.org/svn/asterisk/branches/11 + Review: https://reviewboard.asterisk.org/r/4507 + + ASTERISK-24879 #close + Reported by: snuffy + Tested by: snuffy + patches: + openbsd-time64.diff uploaded by snuffy (License 5024) ........ - Merged revisions 429805 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433268 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429806 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433269 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-18 14:09 +0000 [eacbb4ceb5] Richard Mudgett +2015-03-22 18:04 +0000 [08a88aab15] snuffy (License 5024) - * chan_dahdi: Populate CALLERID(ani2) for incoming calls in featdmf signaling mode. + * Fix compilation issues for OpenBSD - For the featdmf signaling mode the incoming MF Caller-ID information is - formatted as follows: *${CALLERID(ani2)}${CALLERID(ani)}#*${EXTEN}# + This patch addresses compilation issues for OpenBSD. Specifically, it + addresses: + * It allows including in asterisk.c + * Provides a needed (size_t) cast in xmldoc.c - Rather than discarding the ani2 digits, populate the CALLERID(ani2) value - with what is received instead. + In 13+, it also addresses a conditional inclusion in loader.c. - AST-1368 #close - Reported by: Denis Martinez - Patches: - extract_ani2_for_featdmf_v11.patch (license #5621) patch uploaded by Richard Mudgett - ........ + Review: https://reviewboard.asterisk.org/r/4506 - Merged revisions 429783 from http://svn.asterisk.org/svn/asterisk/branches/11 + ASTERISK-24880 #close + Reported by: snuffy + Tested by: snuffy + patches: + misc-openbsd.diff uploaded by snuffy (License 5024) ........ - Merged revisions 429784 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433245 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429785 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433247 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-18 09:55 +0000 [546a54574f] Kevin Harwell +2015-03-20 14:52 +0000 [6ca98524bf] Richard Mudgett - * res_pjsip_sdp_rtp: wrong bridge chosen when the DTMF mode is not compatible + * Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks. - A native rtp bridge was being chosen (it shouldn't have been) when using two - pjsip channels with incompatible DTMF modes. This patch sets the rtp instance - property, AST_RTP_PROPERTY_DTMF, for the appropriate DTMF mode(s) for pjsip. - It was not being set before, meaning all DTMF modes for pjsip were being treated - as compatible, thus native bridging would be chosen as the bridge type when it - shouldn't have been. + Valgrind found some memory leaks associated with + ast_pjsip_rdata_get_endpoint(). The leaks would manifest when sending + responses to OPTIONS requests, processing MESSAGE requests, and + res_pjsip supplements implementing the incoming_request callback. - ASTERISK-24459 #close - Reported by: Yaniv Simhi - Review: https://reviewboard.asterisk.org/r/4265/ - ........ + * Fix ast_pjsip_rdata_get_endpoint() endpoint ref leaks in + res/res_pjsip.c:supplement_on_rx_request(), + res/res_pjsip/pjsip_options.c:send_options_response(), + res/res_pjsip_messaging.c:rx_data_to_ast_msg(), and + res/res_pjsip_messaging.c:send_response(). - Merged revisions 429763 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in + res/res_pjsip_nat.c:nat_on_rx_message(). + * Fixed inconsistent but benign return value in + res/res_pjsip/pjsip_options.c:options_on_rx_request(). - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429764 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4511/ -2014-12-18 09:40 +0000 [2f3e5b494a] Mark Michelson - * Prevent potential infinite outbound authentication loops in registration. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433222 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Prior to this patch, Asterisk would always respond to 401 responses to - registration attempts by trying to provide a registration with authentication - credentials. Even if subsequent attempts were rejected with 401 responses, - Asterisk would continue this behavior. If authentication credentials were - incorrect, this could continue forever. +2015-03-20 13:23 +0000 [1c09028171] Richard Mudgett - With this patch, we keep track of whether we have attempted authentication - on an outbound registration attempt. If we already have, we don not try - again until the next attempt. This prevents the infinite loop scenario. + * res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively. - Review: https://reviewboard.asterisk.org/r/4273 - ........ + Valgrind found a memory leak and invalid access. - Merged revisions 429761 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Fix invalid access by sscanf() being fed a non-nul terminated string of + digits in res/res_pjsip_sdp_rtp.c:get_codecs(). + * Fix memory leak in main/sorcery.c:sorcery_object_field_destructor(). - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429762 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fix potential NULL pointer dereference in + main/xmldoc.c:xmldoc_get_syntax_config_option(). -2014-12-18 09:18 +0000 [2b1f2b5c1f] Mark Michelson + Review: https://reviewboard.asterisk.org/r/4513/ - * Prevent possible race condition on dual redirect of channels in the same bridge. - The AST_FLAG_BRIDGE_DUAL_REDIRECT_WAIT flag was created to prevent bridges from - prematurely acting on orphaned channels in bridges. The problem with the AMI - redirect action was that it was setting this flag on channels based on the presence - of a PBX, not whether the channel was in a bridge. Whether a channel has a PBX - is irrelevant, so the condition has been altered to check if the channel is in a - bridge. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433199 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24536 #close - Reported by Niklas Larsson +2015-03-19 14:19 +0000 [73dcea59bd] Matt Jordan - Review: https://reviewboard.asterisk.org/r/4268 - ........ + * funcs/func_env: Fix regression caused in FILE read operation - Merged revisions 429741 from http://svn.asterisk.org/svn/asterisk/branches/13 + When r432935 was merged, it did correctly fix a situation where a FILE read + operation on the middle of a file buffer would not read the requested length + in the parameters passed to the FILE function. Unfortunately, it would also + allow the FILE function to append more bytes than what was available in the + buffer if the length exceeded the end of the buffer length. + This patch takes the minimum of the remaining bytes in the buffer along with + the calculated length to append provided by the original patch, and uses + that as the length to append in the return result. This patch also updates + the unit tests with the scenarios that were originally pointed out in + ASTERISK-21765 that the original implementation treated incorrectly. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429745 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-21765 + ........ -2014-12-18 08:50 +0000 [cc1405bd38] Mark Michelson + Merged revisions 433173 from http://svn.asterisk.org/svn/asterisk/branches/11 - * Ensure the correct value is returned for CHANNEL(pjsip, secure) - Prior to this patch, we were using the PJSIP dialog's secure flag - to determine if a secure transport was being used. Unfortunately, - the dialog's secure flag was only set if a SIPS URI were in use, - as required by RFC 3261 sections 12.1.1 and 12.1.2. What we're interested - in is not dialog security, but transport security. This code change - switches to a model where we use the dialog's target URI to determine - what transport would be used to communicate, and then check if that - transport is secure. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433174 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - AST-1450 #close - Reported by John Bigelow +2015-03-19 05:20 +0000 [4c84dca2d8] Corey Farrell - Review: https://reviewboard.asterisk.org/r/4277 - ........ + * logger: Apply default console logging when configuration cannot be loaded. - Merged revisions 429739 from http://svn.asterisk.org/svn/asterisk/branches/13 + When logger.conf is missing or invalid enable console logging and display + an error message. + ASTERISK-24817 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4497/ + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429740 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 433122 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-12-17 18:11 +0000 [18b5a336ef] gtjoseph - * res_pjsip_config_wizard: fix unload SEGV + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433126 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - If certain pjsip modules aren't loaded, the wizard causes a SEGV - when it unloads. Added a check for the presense of the object - type wizard before trying to clean it up. +2015-03-19 04:53 +0000 [958bc84caf] Corey Farrell - Tested-by: George Joseph - ........ + * chan_sip: Simplify dialog/peer references, improve REF_DEBUG output. - Merged revisions 429719 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Replace functions for ref/undef of dialogs and peers with macro's + to call ao2_t_bump/ao2_t_cleanup. + * Enable passthough of REF_DEBUG caller information to sip_alloc and + find_call. + ASTERISK-24882 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4189/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429720 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-17 17:06 +0000 [c4360796f7] gtjoseph + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433115 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_pjsip_config_wizard: Change FILEUNCHANGED config_load2 flag determination +2015-03-19 04:44 +0000 [7fddae99dd] Corey Farrell - The module now applies the FILEUNCHANGED flag when both reloaded is - specified AND there's no last_config for the object type. + * chan_sip: Fix dialog reference leaked to scheduler for reinvite_timeout. - Tested-by: George Joseph + Release the scheduler reference to the dialog for reinvite timeout during + dialog_unlink_all. - Review: https://reviewboard.asterisk.org/r/4276/ + ASTERISK-24876 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4491/ ........ - Merged revisions 429699 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429700 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 433112 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-12-17 04:23 +0000 [8b6ecc449c] Walter Doekes - * Fix printf problems with high ascii characters after r413586 (1.8). + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433113 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - In r413586 (1.8) various casts were added to silence gcc 4.10 warnings. - Those fixes included things like: +2015-03-17 21:34 +0000 [dba0f1ad67] Richard Mudgett - -out += sprintf(out, "%%%02X", (unsigned char) *ptr); - +out += sprintf(out, "%%%02X", (unsigned) *ptr); + * res_pjsip_session: Fix off-nominal extra unref of session. - That works for low ascii characters, but for the high range that yields - e.g. FFFFFFC3 when C3 is expected. - This changeset: - - fixes those casts to use the 'hh' unsigned char modifier instead - - consistently uses %02x instead of %2.2x (or other non-standard usage) - - adds a few 'h' modifiers in various places - - fixes a 'replcaes' typo - - dev/urandon typo (in 13+ patch) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433088 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4263/ +2015-03-17 17:15 +0000 [2c7b945149] Scott Griepentrog - ASTERISK-24619 #close - Reported by: Stefan27 (on IRC) - ........ + * Various: bugfixes found via chaos - Merged revisions 429673 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Using DEBUG_CHAOS several instances of a null + pointer crash, and one uninitialized variable + were uncovered and fixed. Also added details + on why Asterisk failed to initialize. - Merged revisions 429674 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4468/ - Merged revisions 429675 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429683 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433064 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-16 11:53 +0000 [c4cc668ba9] gtjoseph +2015-03-17 16:57 +0000 [1fb1c81923] Scott Griepentrog - * res_pjsip_config_wizard: fix test breakage + * core: Introduce chaos into memory allocations - Fix test breakage caused by not checking for res_pjsip before - calling ast_sip_get_sorcery. + Locate potential crashes by exercising seldom + used code paths. This patch introduces a new + define DEBUG_CHAOS, and mechanism to randomly + return an error condition from functions that + will seldom do so. Functions that handle the + allocation of memory get the first treatment. - Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4463/ - Review: https://reviewboard.asterisk.org/r/4269/ - ........ - Merged revisions 429653 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433060 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429654 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-17 16:49 +0000 [2122c205e6] Richard Mudgett -2014-12-16 10:39 +0000 [58095d2486] Andreas Steinmetz (license 6523) + * Audit ast_sockaddr_resolve() usage for memory leaks. - * chan_sip: Allow T.38 switch-over when SRTP is in use. + Valgrind found some memory leaks associated with ast_sockaddr_resolve(). + Most of the leaks had already been fixed by earlier memory leak hunt + patches. This patch performs an audit of ast_sockaddr_resolve() and found + one more. - Previously when SRTP was enabled on a channel it was not possible - to switch to T.38 as no crypto attributes would be present. + * Fix ast_sockaddr_resolve() memory leak in + apps/app_externalivr.c:app_exec(). - This change makes it so it is now possible. If a T.38 re-invite - comes in SRTP is terminated since in practice you can't encrypt - a UDPTL stream. Now... if we were doing T.38 over RTP (which - does exist) then we'd have a chance but almost nobody does that so - here we are. + * Made main/netsock2.c:ast_sockaddr_resolve() always set the addrs + parameter for safety so the pointer will never be uninitialized on return. + The same goes for res/res_pjsip_acl.c:extract_contact_addr(). - ASTERISK-24449 #close - Reported by: Andreas Steinmetz - patches: - udptl-ignore-srtp-v2.patch submitted by Andreas Steinmetz (license 6523) - ........ + * Made functions that call ast_sockaddr_resolve() with RAII_VAR() + controlling the addrs variable use ast_free instead of ast_free_ptr to + provide better MALLOC_DEBUG information. - Merged revisions 429632 from http://svn.asterisk.org/svn/asterisk/branches/11 + Review: https://reviewboard.asterisk.org/r/4509/ ........ - Merged revisions 429633 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429634 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433057 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-16 09:44 +0000 [b5182a6795] Joshua Colp +2015-03-17 13:34 +0000 [94fe4a9178] Kevin Harwell - * res_pjsip_t38: Fix T.38 failure when peer reinvites immediately. + * res_pjsip: Allow configuration of endpoint identifier query order - If a remote endpoint reinvites to T.38 immediately the state machine - will go into a peer reinvite state. If a T.38 capable application - (such as ReceiveFax) queries it will receive this state. Normally - the application will then indicate so that the channel driver will - queue up the T.38 offer previously received. Once it receives this - offer the application will act normally and negotiate. + Updated some documentation stating that endpoint identifiers registered without + a name are place at the front of the lookup list. Also renamed register method + 'ast_sip_register_endpoint_identifier_by_name' to + 'ast_sip_register_endpoint_identifier_with_name' - The res_pjsip_t38 module incorrectly partially squashed this indication. - This would cause the application to think the request had failed when - in reality it had actually worked. + ASTERISK-24840 + Reported by: Mark Michelson - This change makes it so that no T.38 control frames (or indications) - are squashed. - ........ - Merged revisions 429612 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433031 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429613 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-17 13:20 +0000 [1f428f25f0] Kevin Harwell -2014-12-15 11:08 +0000 [39b54a21dc] gtjoseph + * res_pjsip: Allow configuration of endpoint identifier query order - * res_pjsip_config_wizard: Allow streamlined config of common pjsip scenarios + This patch fixes previously reverted code that caused binary incompatibility + problems with some modules. And like the original patch it makes sure that + no matter what order the endpoint identifier modules were loaded, priority is + given based on the ones specified in the new global 'endpoint_identifier_order' + option. - res_pjsip_config_wizard - ------------------ - * This is a new module that adds streamlined configuration capability for - chan_pjsip. It's targetted 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. + ASTERISK-24840 + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4489/ - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4190/ - ........ - Merged revisions 429592 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433028 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-17 11:10 +0000 [522f063186] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429593 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: Add reason comment. -2014-12-15 09:48 +0000 [53e5b377a0] Mark Michelson + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433005 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Activate persistent subscriptions when they are recreated. +2015-03-13 21:28 +0000 [5c03a5f2e7] Matt Jordan - Prior to this change, recreating persistent subscriptions would - create the subscription but would not activate it. This led to subscriptions - being listed in the "NULL" state by diagnostics and not sending NOTIFYs - when expected. + * main/frame: Don't report empty disallow values as an error - Review: https://reviewboard.asterisk.org/r/4261 - ........ + In realtime, it is normal to have a database with both 'allow' and 'disallow' + columns in the schema. It is perfectly valid to have an 'allow' value of + '!all,g722,ulaw,alaw' and no 'disallow' value. Unlike in static conf files, + you can't *not* provide the disallow value. Thus, the empty disallow value + causes a spurious WARNING message, which is kind of annoying. - Merged revisions 429571 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch makes it so that a 'disallow' value with no ... value ... is + ignored. Granted, you can still screw this up as well, as technically + specifying 'disallow=all,!ulaw' allows only ulaw, and then you would have no + 'allow' value in your database. But really, why would you do that? WHY? + ASTERISK-16779 #close + Reported by: Atis Lezdins + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 432970 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-12-12 17:57 +0000 [6472568bc6] gtjoseph - * loader: Move definition of ast_module_reload from _private.h to module.h + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432971 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - No functionality change. Just move the definition of ast_module_reload - from _private.h to module.h so it can be public. +2015-03-13 21:00 +0000 [f7c6bedb06] Joshua Colp - Also removed the include of _private.h from manager.c since ast_module_load - was the only reason for including it. + * func_curl: Don't hold exclusive lock when performing HTTP request. - Tested-by: George Joseph + This code originally kept a lock held when performing the HTTP + request to ensure that the options provided to curl remain valid. + This doesn't seem to be necessary these days and holding the lock + caused requests to happen sequentially instead of in parallel. - Review: https://reviewboard.asterisk.org/r/4251/ + ASTERISK-18708 #close + Reported by: Dave Cabot ........ - Merged revisions 429542 from http://svn.asterisk.org/svn/asterisk/branches/13 - + Merged revisions 432948 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429543 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-12 17:49 +0000 [308c1b41dd] Richard Mudgett + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432949 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * DEBUG_THREADS: Fix regression and lock tracking initialization problems. +2015-03-13 20:36 +0000 [287a22435f] Joshua Colp - This patch started with David Lee's patch at - https://reviewboard.asterisk.org/r/2826/ and includes a regression fix - introduced by the ASTERISK-22455 patch. + * core: Fix tab completion of "core set debug channel" CLI command. - The initialization of a mutex's lock tracking structure was not protected - in a critical section. This is fine for any mutex that is explicitly - initialized, but a static mutex may have its lock tracking double - initialized if multiple threads attempt the first lock simultaneously. + The "core set debug channel" CLI command mistakenly had source filenames + added to its tab completion. This occurred because the CLI generator fell back + to the "core set debug" command which permits setting debug at a source + filename level. - * Added a global mutex to properly serialize initialization of the lock - tracking structure. The painful global lock can be mitigated by adding a - double checked lock flag as discussed on the original review request. + ASTERISK-21038 #close + Reported by: Richard Kenner + ........ - * Defer lock tracking initialization until first use. + Merged revisions 432944 from http://svn.asterisk.org/svn/asterisk/branches/11 - * Don't be "helpful" and initialize an uninitialized lock when - DEBUG_THREADS is enabled. Debug code is not supposed to fix or change - normal code behavior. We don't need a lock initialization race that would - force a re-setup of lock tracking. Lock tracking already handles - initialization on first use. - * Properly handle allocation failures of the lock tracking structure. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432945 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * No need to initialize tracking data in __ast_pthread_mutex_destroy() - just to turn around and destroy it. +2015-03-13 20:21 +0000 [37d33ed997] Di-Shi Sun (License 5076) + * FILE: fix retrieval of file contents when offset is specified - The regression introduced by ASTERISK-22455 is the result of manipulating - a pthread_mutex_t struct outside of the pthread library code. The - pthread_mutex_t struct seems to have a global linked list pointer member - that can get changed by other threads. Therefore, saving and restoring - the contents of a pthread_mutex_t struct is a bad thing. + The loop that reads in a file was not correctly using the offset when + determining what bytes to append to the output. This patch corrects + the logic such that the correct portion of the file is extracted when an + offset is specified. - Thanks to Thomas Airmont for finding this obscure regression. + ASTERISK-21765 + Reported by: John Zhong + Tested by: Matt Jordan, Di-Shi Sun + patches: + file_read_390821.patch uploaded by Di-Shi Sun (License 5076) + ........ - * Don't overwrite the struct ast_lock_track.reentr_mutex member to restore - tracking data in __ast_cond_wait() and __ast_cond_timedwait(). The - pthread_mutex_t struct must be treated as a read-only opaque variable. + Merged revisions 432935 from http://svn.asterisk.org/svn/asterisk/branches/11 - Miscellaneous other items fixed by this patch: + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432938 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Match ast_suspend_lock_info() with ast_restore_lock_info() in - __ast_cond_timedwait(). +2015-03-13 19:18 +0000 [a4c27baf47] Matt Jordan - * Made some uninitialized lock sanity checks return EINVAL and try a - DO_THREAD_CRASH. + * apps/app_amd: Document maximum_word_length option; fix AMDCAUSE documentation - * Fix bad canlog initialization expressions. + This patch corrects the documentation for the AMD application. Specifically: + * It documents the maximum_word_length option, which limits the maximum allowed + length of a single utterance. + * It clarifies the AMDCAUSE values MAXWORDS and MAXWORDLENGTH. MAXWORDLENGTH + was documented as MAXWORDS, while MAXWORDS was undocumented. - ASTERISK-24614 #close - Reported by: Thomas Airmont + Thanks to the issue reporter, Frank DiGennaro, for pointing out the issues. - Review: https://reviewboard.asterisk.org/r/4247/ - Review: https://reviewboard.asterisk.org/r/2826/ + ASTERISK-19470 #close + Reported by: Frank DiGennaro ........ - Merged revisions 429539 from http://svn.asterisk.org/svn/asterisk/branches/11 - + Merged revisions 432918 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429541 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-12 16:54 +0000 [901221ffae] Matt Jordan + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432920 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res/res_agi: Make Verbose message for 'stream file' match other playbacks +2015-03-13 12:04 +0000 [a3292230b8] Richard Mudgett - The Verbose message displayed when a file is played back via 'stream file' - was formatted differently than other playbacks: - * It didn't include the channel name - * It didn't include the channel language - It does, however, include the playback offset as well as any escape digits. - That information was kept; however, this patch updates the formatting to more - closely match the Verbose messages displayed when a file is played back by - 'control stream file', Playback, ControlPlayback, or any other file playback - operation. - ........ + * chan_pjsip: AMI action PJSIPShowEndpoint closes AMI connection on error. - Merged revisions 429519 from http://svn.asterisk.org/svn/asterisk/branches/13 + Also fixed similar problem with AMI action PJSIPShowEndpoints. + ASTERISK-24872 #close + Reported by: Dmitriy Serov - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429520 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4487/ -2014-12-12 11:01 +0000 [8d325be503] Joshua Colp - * media: Fix crash when determining sample count of a frame during shutdown. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432894 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - When shutting down Asterisk the codecs are cleaned up. As a result anything - attempting to get a codec based on ID or details will find that no codec - exists. This currently occurs when determining the sample count of a frame. - This code did not take this situation into account. +2015-03-13 11:26 +0000 [34aa0214eb] Richard Mudgett - This change fixes this by getting the codec directly from the format and - eliminates the lookup. This is both faster and also provides a guarantee - that the codec will exist and will be valid. + * chan_pjsip/res_pjsip_callerid: Make Party ID handling simpler and consistent. - ASTERISK-24604 #close - Reported by: Matt Jordan + The res_pjsip modules were manually checking both name and number + presentation values when there is a function that determines the combined + presentation for a party ID struct. The function takes into account if + the name or number components are valid while the manual code rarely + checked if the data was even valid. - Review: https://reviewboard.asterisk.org/r/4260/ - ........ + * Made use ast_party_id_presentation() rather than manually checking party + ID presentation values. - Merged revisions 429497 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Ensure that set_id_from_pai() and set_id_from_rpid() will not return + presentation values other than what is pulled out of the SIP headers. It + is best if the code doesn't assume that AST_PRES_ALLOWED and + AST_PRES_USER_NUMBER_UNSCREENED are zero. + * Fixed copy paste error in add_privacy_params() dealing with RPID + privacy. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429498 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Pulled the id->number.valid test from add_privacy_header() and + add_privacy_params() up into the parent function add_id_headers() to skip + adding PAI/RPID headers earlier. -2014-12-12 09:31 +0000 [72499dc697] Kevin Harwell + * Made update_connected_line_information() not send out connected line + updates if the connected line number is invalid. Lower level code would + not add the party ID information and thus the sent message would be + unnecessary. - * chan_pjsip: Race between channel answer and bridge setup when using direct media + * Eliminated RAII_VAR usage in send_direct_media_request(). - When direct media is enabled and a pjsip channel is answered a race would occur - between the handling of the answer and bridge setup. Sometimes the media - negotiation would take place after the native bridge was setup. This resulted - in a NULL media address, which in turn resulted in Asterisk using its address - as the remote media address when sending a reinvite. This patch makes the - chan_pjsip answer handler synchronous thus alleviating the race condition (the - bridge won't start setting things up until after it returns). + Review: https://reviewboard.asterisk.org/r/4472/ - ASTERISK-24563 #close - Reported by: Steve Pitts - Review: https://reviewboard.asterisk.org/r/4257/ - ........ - Merged revisions 429477 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432892 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-13 09:48 +0000 [0497b7b155] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429478 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Revert - res_pjsip: Allow configuration of endpoint identifier query order -2014-12-12 09:03 +0000 [2e6d2b1484] David M. Lee + Due to a break in binary compatibility with some other modules these changes + are being reverted until the issue can be resolved. - * Fix crash for sorcery misconfigs + ASTERISK-24840 + Reported by: Mark Michelson - res_pjsip_outbound_publish was missing the CHECK_PJSIP_MODULE_LOADED() - call in load_module, and would crash with a segfault if res_pjsip - declined to load. - Review: https://reviewboard.asterisk.org/r/4258/ - ........ - Merged revisions 429457 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-12 07:58 +0000 [b9fd61f2c7] Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429458 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * main/audiohook: Update internal sample rate on reads -2014-12-12 08:12 +0000 [a6cf13f2e9] Kinsey Moore + When an audiohook is created (which is used by the various Spy applications + and Snoop channel in Asterisk 13+), it initially is given a sample rate of + 8kHz. It is expected, however, that this rate may change based on the media + that passes through the audiohook. However, the read/write operations on the + audiohook behave very differently. - * PJSIP: Allow use of 'inactive' streams for hold + When a frame is written to the audiohook, the format of the frame is checked + against the internal sample rate. If the rate of the format does not match + the internal sample rate, the internal sample rate is updated and a new SLIN + format is chosen based on that sample rate. This works just fine. - This allows use of the 'inactive' stream direction identifier to be - used for hold where 'sendonly' is normally used. Some Seimens phones - use 'inactive' and this change allows music on hold to operate - properly. + When a frame is read, however, we do something quite different. If the format + rate matches the internal sample rate, all is fine. However, if the rates + don't match, the audiohook attempts to "fix up" the number of samples that + were requested. This can result in some seriously large number of samples + being requested from the read/write factories. - Review: https://reviewboard.asterisk.org/r/4252/ - Reported by: Steve Pitts - ........ + Consider the worst case - 192kHz SLIN. If we attempt to read 20ms worth of + audio produced at that rate, we'd request 3840 samples (192000 / (1000 / 20)). + However, if the audiohook is still expecting an internal sample rate of 8000, + we'll attempt to "fix up" the requested samples to: - Merged revisions 429432 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + samples_converted = samples * (ast_format_get_sample_rate(format) / + (float) audiohook->hook_internal_samp_rate); - Merged revisions 429433 from http://svn.asterisk.org/svn/asterisk/branches/13 + which is: + 92160 = 3840 * (192000 / 8000) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429434 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This results in us attempting to read 92160 samples from our factories, as + opposed to the 3840 that we actually wanted. On a 64-bit machine, this + miraculously survives - despite allocating up to two buffers of length 92160 + on the stack. The 32-bit machines aren't quite so lucky. Even in the case where + this works, we will either (a) get way more samples than we wanted; or (b) get + about 3840 samples, assuming the timing is pretty good on the machine. -2014-12-12 08:04 +0000 [b99770d4fe] Kinsey Moore + Either way, the calculation being performed is wrong, based on the API users + expectations. - * Sorcery: Log when old config remains in use + My first inclination was to allocate the buffers on the heap. As it is, + however, there's at least two drawbacks with doing this: + (1) It's a bit complicated, as the size of the buffers may change during the + lifetime of the audiohook (ew). + (2) The stack is faster (yay); the heap is slower (boo). - This adds a log message notifying the user that a stale configuration - is in place upon reload when a config object fails to load. This - situation can end up causing confusion when the object failed to load - but exists from a previous config load especially when the old config - is significantly different from the new config. + Since our calculation is flat out wrong in the first place, this patch fixes + this issue by instead updating the internal sample rate based on the format + passed into the read operation. This causes us to read the correct number of + samples, and has the added benefit of setting the audihook with the right + SLIN format. - Review: https://reviewboard.asterisk.org/r/4250/ - Reported by: Thomas Thompson - ........ + Note that this issue was caught by the Asterisk Test Suite as a result of + r432195 in the 13 branch. Because this issue is also theoretically possible + in Asterisk 11, the change is being made here as well. - Merged revisions 429429 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4475/ ........ - Merged revisions 429430 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432810 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429431 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432811 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-12 07:06 +0000 [74d43977cf] Joshua Colp +2015-03-12 07:39 +0000 [f5bc032567] Diederik de Groot (License 6600) - * res_pjsip_session: Delay sending BYE if a re-INVITE transaction is in progress. + * Add support for the clang compiler; update RAII_VAR to use BlocksRuntime - Given the scenario where a PJSIP channel is in a native RTP bridge with direct - media and the channel is then hung up the code will currently re-INVITE the channel - back to Asterisk and send a BYE at the same time. Many SIP implementations dislike - this greatly. + RAII_VAR, which is used extensively in Asterisk to manage reference counted + resources, uses a GCC extension to automatically invoke a cleanup function + when a variable loses scope. While this functionality is incredibly useful + and has prevented a large number of memory leaks, it also prevents Asterisk + from being compiled with clang. - This change makes it so that if a re-INVITE transaction is in progress the BYE - is queued to occur after the completion of the transaction (be it through normal - means or a timeout). + This patch updates the RAII_VAR macro such that it can be compiled with clang. + It makes use of the BlocksRuntime, which allows for a closure to be created + that performs the actual cleanup. - Review: https://reviewboard.asterisk.org/r/4248/ - ........ + Note that this does not attempt to address the numerous warnings that the clang + compiler catches in Asterisk. - Merged revisions 429409 from http://svn.asterisk.org/svn/asterisk/branches/13 + Much thanks for this patch goes to: + * The folks on StackOverflow who asked this question and Leushenko for + providing the answer that formed the basis of this code: + http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang + * Diederik de Groot, who has been extremely patient in working on getting this + patch into Asterisk. + Review: https://reviewboard.asterisk.org/r/4370/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429410 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24133 + ASTERISK-23666 + ASTERISK-20399 + ASTERISK-20850 #close + Reported by: Diederik de Groot + patches: + RAII_CLANG.patch uploaded by Diederik de Groot (License 6600) + ........ -2014-12-12 06:32 +0000 [8d384f3825] Joshua Colp + Merged revisions 432807 from http://svn.asterisk.org/svn/asterisk/branches/11 - * res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail SDP negotiation. - In the past the SDP negotiation within res_pjsip_session was made more tolerant of - certain situations. The only case where SDP negotiation will fail is when a major - error occurs during negotiation. Receiving an already declined media stream is - not considered a major error. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432808 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - When producing the local SDP the logic took this into account so on the initial INVITE - the declined media stream did not cause an SDP negotiation failure. Unfortunately - the logic for handling media streams with a handler did not mirror this logic and - considered an already declined media stream an error and thus failed the SDP - negotiation. +2015-03-11 11:38 +0000 [bd029688cd] Richard Mudgett - This change makes the logic between both situations match so only under major - errors will the SDP negotiation fail. + * res_pjsip: Move internal init/destroy prototypes to private header file. - ASTERISK-24607 #close - Reported by: Matt Jordan + Done as a separate commit from a finding in + https://reviewboard.asterisk.org/r/4467/ - Review: https://reviewboard.asterisk.org/r/4254/ - ........ - Merged revisions 429407 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432787 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-11 10:24 +0000 [c24a294f0b] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429408 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: Fix pjsip.conf type=global object default value handling. -2014-12-11 14:32 +0000 [63d3f0af95] Kevin Harwell + When a type=global section is not defined in pjsip.conf the global + defaults are not applied. As a result the mandatory Max-Forwards header + is not added to SIP messages for res_pjsip/chan_pjsip. - * ARI/AMI: Include language in standard channel snapshot output + The handling of pjsip.conf type=global objects has several problems: - The CHANGES verbiage for the "language" addition had been put under the wrong - release. This moves it to be under 13.1 to 13.2 changes. + 1) If the global object is missing the defaults are not applied. - ASTERISK-24553 - Reported by: Matt Jordan - ........ + 2) If the global object is missing the default_outbound_endpoint's default + value is not returned by ast_sip_global_default_outbound_endpoint(). - Merged revisions 429387 from http://svn.asterisk.org/svn/asterisk/branches/13 + 3) Defines are needed so default values only need to be changed in one + place. + * Added a sorcery instance observer callback to check if there were any + type=global sections loaded. If there were more than one then issue an + error message. If there were none then apply the global defaults. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429388 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fixed ast_sip_global_default_outbound_endpoint() to return the + documented default when no type=global object is defined. -2014-12-11 07:53 +0000 [d64b9904fd] Kinsey Moore + * Made defines for the global default values. - * Stasis: Update unittest for channel snapshots + * Increased the default_useragent[] size because SVN version strings can + get lengthy and 128 characters may not be enough. - This adjusts the unit test for channel snapshots to take the new - language key into account. - ........ + * Fixed an off-nominal code path ref leak in global_alloc() if the string + fields fail to initialize. - Merged revisions 429352 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Eliminated RAII_VAR in get_global_cfg() and + ast_sip_global_default_outbound_endpoint(). + ASTERISK-24807 #close + Reported by: Anatoli - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429353 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4467/ -2014-12-10 09:43 +0000 [e890f9f653] Kevin Harwell - * ARI/AMI: Include language in standard channel snapshot output + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432766 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Adding information about including "language" in the standard channel snapshot - output to the CHANGES file. Note the actual source changes have already been - previously committed. +2015-03-11 10:18 +0000 [737064bfa4] Richard Mudgett - ASTERISK-24553 - Reported by: Matt Jordan - ........ + * res_pjsip: Fixed invalid empty Server and User-Agent SIP headers. - Merged revisions 429325 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Setting pjsip.conf useragent to an empty string results in an empty SIP + header being sent. - Merged revisions 429326 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Made not add an empty SIP header item to the global SIP headers list. + Review: https://reviewboard.asterisk.org/r/4467/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429327 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-10 07:35 +0000 [03c94ef761] Joshua Colp + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432764 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_http_websocket: Fix crash due to double freeing memory when receiving a payload length of zero. +2015-03-10 18:09 +0000 [bc357c1d7e] Joshua Colp - Frames with a payload length of 0 were incorrectly handled in res_http_websocket. - Provided a frame with a payload had been received prior it was possible for a double - free to occur. The realloc operation would succeed (thus freeing the payload) but be - treated as an error. When the session was then torn down the payload would be - freed again causing a crash. The read function now takes this into account. + * core: Don't create snapshots with locks. - This change also fixes assumptions made by users of res_http_websocket. There is no - guarantee that a frame received from it will be NULL terminated. + Snapshots are immutable and are never changed. Allocating them + with a lock is wasteful. - ASTERISK-24472 #close - Reported by: Badalian Vyacheslav + Review: https://reviewboard.asterisk.org/r/4469/ - Review: https://reviewboard.asterisk.org/r/4220/ - Review: https://reviewboard.asterisk.org/r/4219/ - ........ - Merged revisions 429270 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432742 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 429272 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-03-10 16:33 +0000 [afea98dc73] Javier Acosta (License 6690) - Merged revisions 429273 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res/res_config_odbc: Fix improper escaping of backslashes with MySQL + When escaping backslashes with MySQL, the proper way to escape the characters + in a LIKE clause is to escape the '\' four times, i.e., '\\\\'. To quote the + MySQL manual: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429274 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + "Because MySQL uses C escape syntax in strings (for example, “\n” to represent + a newline character), you must double any “\” that you use in LIKE strings. + For example, to search for “\n”, specify it as “\\n”. To search for “\”, + specify it as “\\\\”; this is because the backslashes are stripped once by the + parser and again when the pattern match is made, leaving a single backslash to + be matched against." -2014-12-10 07:16 +0000 [0cba439c4d] Kinsey Moore + ASTERISK-24808 #close + Reported by: Javier Acosta + patches: + res_config_odbc.diff uploaded by Javier Acosta (License 6690) + ........ - * PJSIP: Fix assert on initial mass qualify + Merged revisions 432720 from http://svn.asterisk.org/svn/asterisk/branches/11 - This fixes the MWI test regressions caused by r429127 and ensures that - contacts have non-zero qualify_frequency before attempting scheduling. - ........ - Merged revisions 429245 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432721 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 429246 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-03-10 13:13 +0000 [055001716c] Graham Barnett (License 6685) + * app_voicemail: Fix crash with IMAP backends when greetings aren't present - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429247 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When an IMAP backend is in use and greetings are set to be used, but aren't + present for a user in their IMAP folder, Asterisk will crash. This occurs + due to the mailstream being set to the 'greetings' folder and being left + in that particular state, regardless of the success/failure of the attempt + to access the folder the mailstream points to. Later access of the mailstream + assumes that it points to the 'INBOX' (or some other folder), resulting in + either a crash (if the greetings folder didn't exist and the mailstream is + invalid) or an inability to read messages from the 'INBOX' folder. -2014-12-09 14:47 +0000 [8fe45f0f0a] Scott Griepentrog + This patch restores the mailstream to its correct state after accessing the + greetings. This fixes the crash, and sets the mailstream to the state that + VoiceMailMain expects. - * core: avoid possible asterisk -r crash from long id + Note that while ASTERISK-23390 also contained a patch for this issue, the + patch on ASTERISK-24786 is the one being merged here. - When connecting to the remote console, an id string - is first provided that consts of the hostname, pid, - and version. This is parsed by the remote instance - using a buffer that may be too short, and can allow - a buffer overrun because it is not terminated. This - patch adds termination and a larger buffer. + Review: https://reviewboard.asterisk.org/r/4459/ - Review: https://reviewboard.asterisk.org/r/4182/ + ASTERISK-23390 #close + Reported by: Ben Smithurst + + ASTERISK-24786 #close + Reported by: Graham Barnett + Tested by: Graham Barnett + patches: + app_voicemail.c.patch.SIGSEGV3rev2 uploaded by Graham Barnett (License 6685) ........ - Merged revisions 429223 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432695 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432696 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-09 14:20 +0000 [d673209abc] Kevin Harwell +2015-03-10 12:47 +0000 [92178247ee] Ed Hynan (Licnese 6680) - * ARI/AMI: Include language in standard channel snapshot output + * localtime: Fix file descriptor leak on kqueue(2) systems - The channel "language" was already part of a channel snapshot, however is was - not sent out over AMI or ARI. This patch makes it so the channel "language" is - included in the appropriate AMI or ARI events. + The localtime management in the Asterisk core contains a thread that watches + for changes in the local timezone. On systems where the directory containing + /etc/localtime is modified frequently, the thread monitoring the changes will + be woken up to determine if any changes in timezone have occurred. When using + kqueue(2), this can cause a leak of file descriptors due to some improper + management of resources. - ASTERISK-24553 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4245/ - ........ + This patch updates the kqueue(2) handling in localtime, such that is no longer + leaks resources. - Merged revisions 429204 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4450/ + + ASTERISK-24739 #close + Reported by: Ed Hynan + patches: + 11.15.0-u.diff uploaded by Ed Hynan (Licnese 6680) + 11.7.0-u.diff uploaded by Ed Hynan (License 6680) + svn-trunk-Jan-26-2015-u.diff uploaded by Ed Hynan (License 6680) ........ - Merged revisions 429206 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432691 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429209 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432693 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-09 14:03 +0000 [c17cef1c38] Kevin Harwell +2015-03-10 11:04 +0000 [cae712d986] Richard Mudgett - * Direct Media calls within private network sometimes get one way audio + * res_pjsip_refer: Fix occasional unexpected BYE sent after receiving a REFER. - When endpoints with direct_media enabled, behind a firewall (Asterisk on a - separate network) and were bridged sometimes Asterisk would send the ip - address of the firewall in the sdp to one of the phones in the reinvite - resulting in one way audio. When sending the reinvite Asterisk will retrieve - the media address from the associated rtp instance, but if frames were being - read this can be overwritten with another address (in this case the - firewall's). This patch ensures that Asterisk uses the original device - address when using direct media. + A race condition happened between initiating a transfer and requesting + that a dialog termination be delayed. Occasionally, the transferrer + channels would exit the bridge and hangup before the dialog termination + delay was requested. - ASTERISK-24563 - Reported by: Steve Pitts - Review: https://reviewboard.asterisk.org/r/4216/ - ........ + * Made request dialog termination delay before initiating the transfer + action. If the transfer fails then cancel the delayed dialog termination + request. - Merged revisions 429195 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24755 #close + Reported by: John Bigelow - Merged revisions 429196 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4460/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432668 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-09 12:36 +0000 [7844266e21] Kevin Harwell +2015-03-09 11:12 +0000 [110b99646c] Kevin Harwell - * res_pjsip_outbound_publish: stack overflow when using non-default sorcery wizard + * res_pjsip: Allow configuration of endpoint identifier query order - When using a non-default sorcery wizard (in this instance realtime) for outbound - publishes Asterisk will crash after a stack overflow occurs due to the code - infinitely recursing. The fix entails removing the outbound publish state - dependency from the outbound publish sorcery object and instead keeping an in - memory container that can be used to lookup the state when needed. + It's possible to have a scenario that will create a conflict between endpoint + identifiers. For instance an incoming call could be identified by two different + endpoint identifiers and the one chosen depended upon which identifier module + loaded first. This of course causes problems when, for example, the incoming + call is expected to be identified by username, but instead is identified by ip. + This patch adds a new 'global' option to res_pjsip called + 'endpoint_identifier_order'. It is a comma separated list of endpoint + identifier names that specifies the order by which identifiers are processed + and checked. - ASTERISK-24514 #close + ASTERISK-24840 #close Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4178/ - ........ + Review: https://reviewboard.asterisk.org/r/4455/ - Merged revisions 429175 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432638 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429176 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-07 19:46 +0000 [714cb27000] Joshua Colp -2014-12-09 09:45 +0000 [60ab564ad2] Joshua Colp + * res_rtp_asterisk: Fix wrongful use of USE_PJPROJECT define. - * ari: Add support for specifying an originator channel when originating. + As pjproject is now used as a shared library a different define, + HAVE_PJPROJECT, is used to specify if pjproject is present. - If an originator channel is specified when originating a channel the linked ID - of it will be applied to the newly originated outgoing channel. This allows - an association to be made between the two so it is known that the originator - has dialed the originated channel. + ASTERISK-24830 #close + Reported by: Stefan Engström - ASTERISK-24552 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4243/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432614 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 429153 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-03-06 16:50 +0000 [e158517a9c] Richard Mudgett + * res_pjsip_refer: Make safely get the context for a blind transfer. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429154 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Made safely get the TRANSFER_CONTEXT channel value while the channel is + locked in refer_incoming_attended_request() and + refer_incoming_blind_request(). The pointer returned by + pbx_builtin_getvar_helper() is only valid while the channel is locked. -2014-12-09 08:01 +0000 [b6e18cae5c] Kinsey Moore - * PJSIP: Stagger outbound qualifies + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432594 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This change staggers initiation of outbound qualify (OPTIONS) attempts - to reduce instantaneous server load and prevent network congestion. +2015-03-06 16:12 +0000 [5d16d80b59] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/4246/ - ASTERISK-24342 #close - Reported by: Richard Mudgett - ........ + * res_pjsip_refer: Made refer_attended_alloc() not create the ao2 object with a lock. - Merged revisions 429127 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The lock is unused. - Merged revisions 429128 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432574 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429129 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-06 15:11 +0000 [772793f18e] Jonathan Rose -2014-12-08 10:54 +0000 [fe6cbf455a] Matt Jordan + * app: Add functions to swap voicemail function table for testing purposes - * AMI/ARI: Update version to 2.6.0/1.6.0 respectively for new features - AMI/ARI are getting a few enhancements in the next release of Asterisk 13. Per - semantic versioning, that warrants a bump in the minor version number, as it - reflects a backwards compatible change. Hence, this commit. - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432556 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 429091 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-03-06 14:18 +0000 [8cced7767c] Richard Mudgett + * chan_dahdi/sig_analog: Fix distinctive ring detection to suck less. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The distinctive ring feature interferes with detecting Caller ID and + appears to have been broken for years. What happens is if you have a + ring-ring cadence as used in the UK you get too many DAHDI events for the + distinctive ring pattern array and Caller ID detection is aborted. I + think when Zapata/DAHDI added the ring begin event it broke distinctive + ring. More events happen than before and the code does no filtering of + which event times are recorded in the pattern array. -2014-12-08 10:43 +0000 [bba1763f47] Mark Michelson + * Made distinctive ring only record the ringt count when the ring ends + instead of on just any DAHDI event. Distinctive ring can be ring, + ring-ring, ring-ring-ring, or different ring durations for the up to three + rings. - * Fix a crash that would occur when receiving a 491 response to a reinvite. + * Fixed the distinctive ring detection enable (chan_dahdi.conf option + usedistinctiveringdetection) to be per port instead of somewhat per port + and somewhat global. This has been broken since v1.8. - The reviewboard description does a fine job of summarizing this, so here it is: + * Fixed using the default distinctive ring context when the detected + pattern does not match any configured dringX patterns. The default + context did not get set when the previous call was a matched distinctive + ring pattern and the current call is not matched. This has been broken + since v1.8. - A reporter discovered that Asterisk would crash when attempting to retransmit - a reinvite that had previously received a 491 response. The crash occurred - because a pjsip_tx_data structure was being saved for reuse, but its reference - count was not being increased. The result was that the pjsip_tx_data was being - freed before we were actually done with it. When we attempted to re-use the - structure when re-sending the reinvite, Asterisk would crash. + * Made distinctive ring have no effect on Caller ID detection when it is + disabled. Caller ID detection just monitors for 10 seconds before giving + up. - The fix implemented here is not to try holding onto the pjsip_tx_data at all. - Instead, when we reschedule sending the reinvite, we create a brand new - pjsip_tx_data and send that instead. Because of this change, there is no need - for an ast_sip_session_delayed_request structure to have a pjsip_tx_data on - it any more. So any code referencing its use has been removed. + * Fixed leak of struct callerid_state memory when a polarity reversal + during Caller ID detection causes the incoming call to be aborted. - When this initial fix was introduced, I encountered a second crash when - processing a subsequent 200 OK on a rescheduled reinvite. The reason was - that when rescheduling the reinvite, we gave the wrong location for a - response callback. This has been fixed in this patch as well. + DAHDI-1143 + AST-1545 + ASTERISK-24825 #close + Reported by: Richard Mudgett - ASTERISK-24556 #close - Reported by Abhay Gupta + ASTERISK-17588 + Reported by: Daniel Flounders - Review: https://reviewboard.asterisk.org/r/4233 + Review: https://reviewboard.asterisk.org/r/4444/ ........ - Merged revisions 429089 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429090 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 432530 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-12-08 10:24 +0000 [fe7671fee6] Mark Michelson - * Add new AMI and ARI events for connected line changes on a channel. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432534 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - The AMI event is called NewConnectedLine and the ARI event is called - ChannelConnectedLine. +2015-03-06 13:31 +0000 [13e715b30c] Richard Mudgett - ASTERISK-24554 #close - Reported by Matt Jordan + * chan_sip: Fix realtime locking inversion when poking a just built peer. - Review: https://reviewboard.asterisk.org/r/4231 - ........ + When a realtime peer is built it can cause a locking inversion when the + just built peer is poked. If the CLI command "sip show channels" is + periodically executed then a deadlock can happen because of the locking + inversion. - Merged revisions 429064 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Push the peer poke off onto the scheduler thread to avoid the locking + inversion of the just built realtime peer. + AST-1540 + ASTERISK-24838 #close + Reported by: Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429084 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4454/ + ........ -2014-12-08 09:45 +0000 [4bb556a847] Kinsey Moore + Merged revisions 432526 from http://svn.asterisk.org/svn/asterisk/branches/11 - * Stasis: Fix StasisStart/End order and missing events - This corrects several bugs that currently exist in the stasis - application code. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432528 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * After a masquerade, the resulting channels have channel topics that - do not match their uniqueids - ** Masquerades now swap channel topics appropriately - * StasisStart and StasisEnd messages are leaked to observer - applications due to being published on channel topics - ** StasisStart and StasisEnd publishing is now properly restricted - to controlling apps via app topics - * Race conditions exist where StasisStart and StasisEnd messages due to - a masquerade may be received out of order due to being published on - different topics - ** These messages are now published directly on the app topic so this - is now a non-issue - * StasisEnds are sometimes missing when sent due to masquerades and - bridge swaps into and out of Stasis() - ** This was due to StasisEnd processing adjusting message-sent flags - after Stasis() had already exited and Stasis() had been re-entered - ** This was corrected by adjusting these flags prior to sending the - message while the initial Stasis() application was still shutting - down +2015-03-05 10:38 +0000 [06fa8db864] gtjoseph - Review: https://reviewboard.asterisk.org/r/4213/ - ASTERISK-24537 #close - Reported by: Matt DiMeo - ........ + * app_voicemail: Fix compile breaking in app_voicemail with IMAP_STORAGE. - Merged revisions 429061 from http://svn.asterisk.org/svn/asterisk/branches/12 + There is a leftover "assert" in app_voicemail/__messagecount that references + variables that don't exist. This causes the compile to fail when + --enable-dev-mode and IMAP_STORAGE are selected. + + This patch removes the assert. + + Tested-by: George Joseph + + Review: https://reviewboard.asterisk.org/r/4461/ ........ - Merged revisions 429062 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432484 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429063 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432485 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-06 12:16 +0000 [49aa87e17c] Nuno Borges (License 6116) +2015-03-04 12:52 +0000 [999d96d405] Matt Jordan - * res/res_monitor: Reset in/out sample counts on Monitor start + * translate: Prevent invalid memory accesses on fast shutdown - When repeatedly starting/stopping a Monitor on a channel, the accumulated - in/out sample counts are never reset to 0. This can cause inadvertent jumps - in the recordings, as the code in the channel core will determine incorrectly - that a jump in the recorded file position should occur. Setting the sample - counts to 0 simply reflects the initial state a Monitor should be in when it - is started, as this is the initial count that would be on the channels at that - time. + When a 'core restart now' or 'core stop now' is executed and a channel is + currently in a media operation, the translator matrix can be destroyed while a + channel is currently blocked on getting the best translation choice + (see ast_translator_best_choice). When the channel gets the mutex, the + translation matrix now has invalid memory, and Asterisk crashes. - ASTERISK-24573 #close - Reported by: Nuno Borges - patches: - 24573.patch uploaded by Nuno Borges (License 6116) - ........ + This patch does two things: + (1) We now only clean up the translation matrix on a graceful shutdown. In that + case, there are no channels, and so there is no risk of this occurring. + (2) We also now set the __matrix and __indextable to NULL. In some initial + backtraces when this occurred, it looked as if there was a memory corruption + occurring, and it wasn't until we determined that something had restarted + Asterisk that the issue became clear. By setting these to NULL on shutdown, + it becomes a bit easier to determine why a crash is occurring. - Merged revisions 429031 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Note that we could litter the code with NULL checks on the __matrix, but the + act of making the translation matrix cleaned up on shutdown should preclude + this issue from occurring in the first place, and this part of the code needs + to be as fast as possible. - Merged revisions 429032 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4457/ - Merged revisions 429033 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432453 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-02 13:14 +0000 [9cdadc168c] Matt Jordan -2014-12-06 11:36 +0000 [0cdb71aae9] Nuno Borges (License 6116) + * res/res_pjsip_sdp_rtp: Revert portion of r432195 - * apps/app_meetme: Apply default values on initial load with no config file + Unfortunately, while initial testing with ConfBridge did not reproduce the + audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing + did show that bridge_softmix and/or ConfBridge has a severe problem bridging + two or more participants at different sampling rates. Sometimes, it even picks + odd sampling rates that cause hideous audio problems. - When the app_meetme module is loaded without its configuration file, the - module settings aren't initialized. In particular, this impacts the use - of logging realtime members. This patch guarantees that we always set the - default module settings on initial load. + This patch backs out the offending portion of the code until the issues in + the affected bridging modules can be more properly analyzed. - Review: https://reviewboard.asterisk.org/r/4242/ + ASTERISK-24841 - ASTERISK-24572 #close - Reported by: Nuno Borges - patches: - 24572.patch uploaded by Nuno Borges (License 6116) - ........ - Merged revisions 429027 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432423 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 429028 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-02-27 12:23 +0000 [9d85e855de] Richard Mudgett - Merged revisions 429029 from http://svn.asterisk.org/svn/asterisk/branches/13 + * ARI: Fix crash if integer values used in JSON payload 'variables' object. + Sending the following ARI commands caused Asterisk to crash if the JSON + body 'variables' object passes values of types other than strings. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429030 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + POST /ari/channels + POST /ari/channels/{channelid} + PUT /ari/endpoints/sendMessage + PUT /ari/endpoints/{tech}/{resource}/sendMessage -2014-12-05 11:08 +0000 [d04445c24a] gtjoseph + * Eliminated RAII_VAR usage in ast_ari_channels_originate_with_id(), + ast_ari_channels_originate(), ast_ari_endpoints_send_message(), and + ast_ari_endpoints_send_message_to_endpoint(). - * sorcery: Add additional observer capabilities. + ASTERISK-24751 #close + Reported by: jeffrey putnam - Add new global, instance and wizard observers. - instance_created - wizard_registered - wizard_unregistered - instance_destroying - instance_loading - instance_loaded - wizard_mapped - object_type_registered - object_type_loading - object_type_loaded - wizard_loading - wizard_loaded + Review: https://reviewboard.asterisk.org/r/4447/ - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4215/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432404 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428999 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-02-26 12:52 +0000 [c33c5183a5] Scott Griepentrog - Merged revisions 429000 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Dial API: add self destruct option when complete + This patch adds a self-destruction option to the + dial api. The usefulness of this is mostly when + using async mode to spawn a separate thread used + to handle the new call, while the calling thread + is allowed to go on about other business. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@429001 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The only alternative to this option would be the + calling thread spawning a new thread, or hanging + around itself waiting to destroy the dial struct + after completion. -2014-12-04 11:13 +0000 [19992844be] Matt Jordan + Example of use (minus error checking): - * main/test: Fix compilation issue on 32-bit systems + struct ast_dial *dial = ast_dial_create(); - On a 32-bit system, a type of intmax_t will result in a compilation warning - when formatted as a 'long int'. Use the format specifier of %jd (which was - what was used originally in manager.c) to format the JSON extracted integer - on both 32-/64-bit systems. - ........ + ast_dial_append(dial, "PJSIP", "200", NULL); - Merged revisions 428972 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ast_dial_option_global_enable(dial, AST_DIAL_OPTION_ANSWER_EXEC, "Echo"); + ast_dial_option_global_enable(dial, AST_DIAL_OPTION_SELF_DESTROY, NULL); - Merged revisions 428973 from http://svn.asterisk.org/svn/asterisk/branches/13 + ast_dial_run(dial, NULL, 1); + The dial_run call will return almost immediately + after spawning the new thread to run and monitor + the dial. If the call is answered, it is placed + into the echo app. When completed, it will call + ast_dial_destroy() on the dial structure. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428974 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Note that any allocations made to pass values to + ast_dial_set_user_data() or dial options must be + free'd in a state callback function on any of: + AST_DIAL_RESULT_UNASWERED, + AST_DIAL_RESULT_ANSWERED, + AST_DIAL_RESULT_HANGUP, or + AST_DIAL_RESULT_TIMEOUT. -2014-12-04 09:48 +0000 [343a83d7d8] Matt Jordan + Review: https://reviewboard.asterisk.org/r/4443/ - * main/test: Fix race condition between AMI topic and Test Suite topic - This patch fixes a race condition between the raising of test AMI events (which - drive many tests in the Asterisk Test Suite) and other AMI events. Prior to - this patch, the Stasis messages published to the test topic were not forwarded - to the AMI topic. Instead, the code in manager had a dedicated handler for test - messages that was independent of the topics forwarded to the AMI topic. This - results in no synchronization between the test messages and the rest of the - Stasis messages published out over AMI. In some test with very tight timing - constraints, this can result in out of order messages and spurious test - failures. Properly forwarding the Test Suite topic to the AMI topic ensures - that the messages are synchronized properly. - This patch does that, and moves the message handling to the Stasis definition - of the Test Suite message in test.c as well. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432385 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4221/ - ........ +2015-02-26 11:07 +0000 [169058e73f] Kevin Harwell - Merged revisions 428945 from http://svn.asterisk.org/svn/asterisk/branches/12 + * app_chanspy, channel: fix frame leaks + + Fixed a couple of frame leaks that were found during testing. + + ASTERISK-24828 #close + Reported by: John Hardin + Review: https://reviewboard.asterisk.org/r/4445/ ........ - Merged revisions 428946 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428947 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432363 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-03 14:59 +0000 [7cb2c446b4] Matt Jordan +2015-02-25 22:58 +0000 [de86b30dba] Matt Jordan - * tests/test_cel: Add test_cel_attended_transfer_bridges_link to racey tests + * make: Remove 'res_features' from libraries to link against with cygwin/mingw32 - Despite failing less often, the ordering of the ATTENDEDTRANSFER event and the - BRIDGE_EXIT event for the Alice and David channels is not defined. This makes - the test still fail. - ........ + Both the apps and channels Makefiles still listed 'res_features' as modules to + link against when compiling for cygwin or mingw32. This module hasn't existed + for quite some time. - Merged revisions 428918 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-18105 #close + Reported by: feyfre ........ - Merged revisions 428919 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432341 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428920 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432342 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-03 13:49 +0000 [7475e1c948] Matt Jordan +2015-02-25 21:03 +0000 [34989bd9c8] Makoto Dei (License 5027) - * tests/test_cel: Fix CEL unit test failures caused by attended transfer changes + * channels/chan_sip: Don't send a BYE after final response when PBX thread fails - When the publication of attended transfer messages were pushed to another - thread, some subtle race conditions were introduced with the CEL unit tests. - This patch fixes one of them, and pushes the other to ASTERISK-22367, which - already exists to fix another bouncy CEL unit test. + When Asterisk fails to start a PBX thread for a new channel - for example, when + the maxcalls setting in asterisk.conf is exceeded - we currently send a final + response, and then attempt to send a BYE request to the UA. Since that's all + sorts of wrong, this patch fixes that by setting sipalreadygone on the sip_pvt + such that we don't get stuck sending BYE requests to something that does not + want it. - In particular, this patch fixes the test_cel_attended_transfer_bridges_link - test, and defers the test_cel_attended_transfer_bridges_swap test to the - aforementioned JIRA issue. + Note that this patch is a slight modification of the one on ASTERISK-15434. + For clarity, it explicitly calls sipalreadygone with the calls to transmit a + final response. - ASTERISK-22367 + ASTERISK-21845 + ASTERISK-15434 #close + Reported by: Makoto Dei + Tested by: Matt Jordan + patches: + sip-pbxstart-failed.patch uploaded by Makoto Dei (License 5027) ........ - Merged revisions 428891 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 432320 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 428892 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432321 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428893 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-25 17:48 +0000 [53aec7a969] Rusty Newton -2014-12-03 10:45 +0000 [6d4ef7ddf4] David Duncan Ross Palmer (License 6660) + * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 1 - * apps/app_voicemail: Fix crash with IMAP when streams are opened simultaneously + Example configuration files for a "basic PBX" deployment for the fictitious + Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4379/ + and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company - The UW IMAP library is instrinsically not thread-safe, and relies upon higher - level applications to guarantee thread safety. For the most part, this is - provided by the vms object, which provides locking for individual streams. - Unfortunately, this is not sufficient for calls to mail_open which create the - IMAP stream. mail_open can, on some systems, call into a UW IMAP specific - function for determining the address of a system based on a hostname, - ip_nametoaddr. + Reported by: Malcolm Davenport + Tested by: Rusty Newton - In the ip6_unix implementation of this function, static variables are used - to hold parsing buffers. This can cause a crash if multiple threads attempt - to convert a hostname to an address at the same time. Locking on a single - mail stream is not sufficient to prevent simultaneous access to these static - variables. + Review: https://reviewboard.asterisk.org/r/4379/ - In the IMAP library, this function can be called from the mail_open and - imap_status functions. As the imap_status function is not used by - app_voicemail, locking on access to mail_open is sufficient to prevent - any mangling of the buffers. - Review: https://reviewboard.asterisk.org/r/4188/ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432301 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24516 #close - Reported by: David Duncan Ross Palmer - Tested by: David Duncan Ross Palmer - patches: - ASTERISK-24516.diff uploaded by David Duncan Ross Palmer (License 6660) - ........ +2015-02-25 17:09 +0000 [474fec4f92] Matt Jordan - Merged revisions 428863 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * configure: Promote SQLite3 "not installed" warning to error - Merged revisions 428864 from http://svn.asterisk.org/svn/asterisk/branches/12 + Since Asterisk won't build without the library, not having it is definitely + an error. Thanks to Kyle Kurz for pointing this out. ........ - Merged revisions 428865 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432280 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428866 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432281 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-02 15:54 +0000 [63cbd28999] gtjoseph +2015-02-25 17:02 +0000 [ddff640f94] Matt Jordan - * CHANGES: Add item for new 'pjsip show identif(y|ies) commands + * channels/chan_sip: Clarify WARNING message in mismatched SRTP scenario - Tested-by: George Joseph - ........ + When we receive an SDP as part of an offer/answer for a peer/friend has been + configured to require encryption, and that SDP offer/answer failed to provide + acceptable crypto attributes, we currently issue a WARNING that uses the phrase + "we" and "requested". In this case, both of those terms are ambiguous - the + user will probably think "we" is Asterisk (it most likely isn't) and it may + not be a "request", so much as an SDP that was received in some fashion. - Merged revisions 428836 from http://svn.asterisk.org/svn/asterisk/branches/12 + This patch makes the WARNING messages slightly less bad and a bit more + accurate as well. + + ASTERISK-23214 #close + Reported by: Rusty Newton ........ - Merged revisions 428837 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432277 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428838 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432278 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-02 13:04 +0000 [dd00e80cbe] Matt Jordan +2015-02-25 15:42 +0000 [dd8ac00f24] Olle Johansson (License 5267) - * tests/test_stasis: Resolve compilation issues from Asterisk 12 merge + * channels/sip/sdp_crypto: Handle SRTP keys negotiated with key lifetime/MKI - When merging the changes up stream in r428687, I missed the fact that the - signature for stasis_message_type_create was changed. This patch fixes - the compilation issues introduced by that merge. - ........ + Prior to this patch, SDP offers negotiating SDES-SRTP crypto attributes would + be rejected if those crypto attributes contained either a key lifetime or a + MKI parameter. While from a theoretical point of view this was defensible - + Asterisk does not support key lifetimes or multiple crypto keys - from a + practical point of view, this is quite a problem. A large number of endpoints + offer lifetimes/MKI, which Asterisk can tolerate so long as it doesn't actually + have to support anything more than a single key or refresh the key. + In reality, this is (so far as we've seen) always the case. - Merged revisions 428815 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch is a forward port of Olle's work in the lingon-srtp-key-lifetime-1.8 + branch. To quote Olle from ASTERISK-17721, it handles lifetime/MKI parameters + in the following fashion: + > The Lingon branch now handle lifetime and MKI parameters. + > + > We only accept lifetimes up to max for the crypto and higher than 10 hours + > for packetization of 20 ms (50 pps). + > + > We only handle MKI with index 1. + > + > We do not really bother with counting packets and reinviting at end of + > lifetime, so the min of 10 hours kind of takes care of most calls. If there + > are longer ones, we rely on the other side for re-invites. + > + > It's still not perfect, but I personally think this is an improvement. A + > configuration option for minimum lifetime accepted could be added. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428816 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When the patch was ported forward, I decided against adding a configuration + option as Olle's handling was more than sufficient for every case I've seen + come through the issue tracker or through interoperability testing. We can + revisit that decision if it proves to be false. -2014-12-02 11:10 +0000 [08636aadec] Birger Harzenetter (License 5870) + A few small other tweaks were made to the surrounding code to reduce + indentation and provide better type safety for the 'tag' parameter. - * pbx/pbx_loopback: Speed up switches by avoiding unneeded lookups + Review: https://reviewboard.asterisk.org/r/4419/ + Review: https://reviewboard.asterisk.org/r/4418/ - This patch makes a small rearrangement to only do dialplan lookups during - loopback switches if the pattern matches. Prior to this patch, the dialplan - lookups were always performed, even when the result would be discarded. - Dialplan lookups can be very costly if remote switches - like DUNDi - are - present. In those cases extension matching is sped up considerably, making - the issue of lost digits more manageable. + ASTERISK-17721 #close + Reported by: Terry Wilson - As collateral damage, 6 trailing spaces were killed. + ASTERISK-17899 #close + Reported by: Dwayne Hubbard + patches: + lingon-srtp-key-lifetime-1.8.diff uploaded by oej (License 5267) - Review: https://reviewboard.asterisk.org/r/4211 + ASTERISK-20233 + Reported by: tootai - ASTERISK-24577 #close - Reported by: Birger Harzenetter - patches: - ast-loopback.patch uploaded by Birger Harzenetter (License 5870) + ASTERISK-22748 + Reported by: Alejandro Mejia ........ - Merged revisions 428787 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 432239 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 428788 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 428789 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432258 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-25 14:44 +0000 [43a3e80be1] David M. Lee - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428790 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Increase WebSocket frame size and improve large read handling -2014-12-02 06:21 +0000 [0c1aaa7da5] Joshua Colp + Some WebSocket applications, like [chan_respoke][], require a larger + frame size than the default 8k; this patch bumps the default to 16k. + This patch also fixes some problems exacerbated by large frames. - * res_pjsip_refer: Fix issue where native bridge may not occur upon completion of a transfer. + The sanity counter was decremented on every fread attempt in + ws_safe_read(), regardless of whether data was read from the socket or + not. For large frames, this could result in loss of sanity prior to + reading the entire frame. (16k frame / 1448 bytes per segment = 12 + segments). - There are two methods within res_pjsip_refer for keeping track of the state of a transfer. - The first is a framehook which looks at frames passing by to determine the state. The second - subscribes to know when the channel joins a bridge. In the case when the channel joins the - bridge the framehook is *NOT* removed and this prevents the native RTP bridging technology - from getting used. + This patch changes the sanity counter so that it only decrements when + fread() doesn't read any bytes. This more closely matches the original + intention of ws_safe_read(), given that the error message is + "Websocket seems unresponsive". - This change gets the channel and if it still exists remove the framehook. + This patch also properly logs EOF conditions, so disconnects are no + longer confused with unresponsive connections. - Review: https://reviewboard.asterisk.org/r/4218/ - ........ + [chan_respoke]: https://github.com/respoke/chan_respoke - Merged revisions 428760 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4431/ ........ - Merged revisions 428761 from http://svn.asterisk.org/svn/asterisk/branches/13 - + Merged revisions 432236 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428762 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-12-01 18:38 +0000 [f128ff61ab] gtjoseph + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432237 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * config: Create ast_variable_find_in_list() +2015-02-24 16:14 +0000 [978649a568] Matt Jordan - Add - const char *ast_variable_find_in_list(const struct ast_variable *list, - const char *variable); + * channels/chan_sip: Fix crash when transmitting packet after thread shutdown - ast_variable_find() requires a config category to search whereas - ast_variable_find_in_list() just needs the root list element which is - useful if you don't have a category. + When the monitor thread is stopped, its pthread ID is set to a specific value + (AST_PTHREADT_STOP) so that later portions of the code can determine whether + or not it is safe to manipulate the thread. Unfortunately, __sip_reliable_xmit + failed to check for that value, checking instead only for AST_PTHREAD_STOP. + Passing the invalid yet very specific value to pthread_kill causes a crash. - Tested-by: George Joseph + This patch adds a check for AST_PTHREADT_STOP in __sip_reliable_xmit such that + it doesn't attempt to poke the thread if the thread has already been stopped. - Review: https://reviewboard.asterisk.org/r/4217/ + ASTERISK-24800 #close + Reported by: JoshE ........ - Merged revisions 428733 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 432198 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 428734 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432199 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428735 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-24 15:58 +0000 [3d1a1533bf] Matt Jordan -2014-12-01 18:31 +0000 [f418f25c44] gtjoseph + * ARI/PJSIP: Apply requesting channel's format cap to created channels - * res_pjsip_endpoint_identifier_ip: Add 'show identify(ies)' cli commands + This patch addresses the following problems: + * ari/resource_channels: In ARI, we currently create a format capability + structure of SLIN and apply it to the new channel being created. This was + originally done when the PBX core was used to create the channel, as there + was a condition where a newly created channel could be created without any + formats. Unfortunately, now that the Dial API is being used, this has two + drawbacks: + (a) SLIN, while it will ensure audio will flows, can cause a lot of + needless transcodings to occur, particularly when a Local channel is + created to the dialplan. When no format capabilities are available, the + Dial API handles this better by handing all audio formats to the requsted + channels. As such, we defer to that API to provide the format + capabilities. + (b) If a channel (requester) is causing this channel to be created, we + currently don't use its format capabilities as we are passing in our own. + However, the Dial API will use the requester channel's formats if none + are passed into it, and the requester channel exists and has format + capabilities. This is the "best" scenario, as it is the most likely to + create a media path that minimizes transcoding. + Fixing this simply entails removing the providing of the format capabilities + structure to the Dial API. - While troubleshooting other things I realized there were no pjsip cli - commands for identify. This patch adds them. It also also fixes a - reference leak when a 'show endpoint' displayed identifies and properly - sets the return code if load_module can't allocate a cli formatter structure. + * chan_pjsip: Rather than blindly picking the first format in the format + capability structure - which actually *can* be a video or text format - we + select an audio format, and only pick the first format if that fails. That + minimizes the weird scenario where we attempt to transcode between video/audio. - Tested-by: George Joseph + * res_pjsip_sdp_rtp: Applied the joint capapbilites to the format structure. + Since ast_request already limits us down to one format capability once the + format capabilities are passed along, there's no reason to squelch it here. - Review: https://reviewboard.asterisk.org/r/4212/ - ........ + * channel: Fixed a comment. The reason we have to minimize our requested + format capabilities down to a single format is due to Asterisk's inability + to convey the format to be used back "up" a channel chain. Consider the + following: - Merged revisions 428725 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + PJSIP/A => L;1 <=> L;2 => PJSIP/B + g,u,a g,u,a g,u,a u - Merged revisions 428731 from http://svn.asterisk.org/svn/asterisk/branches/13 + That is, we have PJSIP/A dialing a Local channel, where the Local;2 dials + PJSIP/B. PJSIP/A has native format capabilities g722,ulaw,alaw; the Local + channel has inherited those format capabilities down the line; PJSIP/B + supports only ulaw. According to these format capabilities, ulaw is + acceptable and should be selected across all the channels, and no + transcoding should occur. However, there is no way to convey this: when L;2 + and PJSIP/B are put into a bridge, we will select ulaw, but that is not + conveyed to PJSIP/A and L;1. Thus, we end up with: + PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B + g g X u u - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428732 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Which causes g722 to be written to PJSIP/B. -2014-12-01 12:51 +0000 [4ff6bd831f] Joshua Colp + Even if we can convey the 'ulaw' choice back up the chain (which through + some severe hacking in Local channels was accomplished), such that the chain + looks like: - * rtp_engine: Add support for transporting signed linear at 12kHz, 24kHz, 32kHz, 44kHz, 48kHz, 96kHz, and 192kHz over RTP. + PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B + u u u u - This change adds mappings in the RTP engine layer for the remaining signed linear formats. + We have no way to tell PJSIP/A's *channel driver* to Answer in the SDP back + with only 'ulaw'. This results in all the channel structures being set up + correctly, but PJSIP/A *still* sending g722 and causing the chain to fall + apart. - ASTERISK-24274 #close - Reported by: Frankie Chin + There's a lot of difficulty just in setting this up, as there are numerous + race conditions in the act of bridging, and no clean mechanism to pass the + selected format backwards down an established channel chain. As such, the + best that can be done at this point in time is clarifying the comment. - Review: https://reviewboard.asterisk.org/r/4093/ + Review: https://reviewboard.asterisk.org/r/4434/ + + ASTERISK-24812 #close + Reported by: Matt Jordan + + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432195 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-02-24 12:32 +0000 [5b73246a9d] Kevin Harwell + + * bridge_softmix: G.729 codec license held + + When more than one call using the same codec type enters into a softmix bridge + and no audio is present for a channel the bridge optimizes the out frame by + using the same one for all channels with the same codec type. Unfortunately, + when that number (channels with same codec type) dropped to <= 1 the codec + was not dereferenced. At least not until all parties left the bridge. Thus in + the case of G.729 the license was not released. This patch ensures that the + codec is dereferenced immediately when the optimization no longer applies. + ASTERISK-24797 #close + Reported by: Luke Hulsey + Review: https://reviewboard.asterisk.org/r/4429/ + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428708 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 432174 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-12-01 11:59 +0000 [1106e8fd0f] Matt Jordan - * main/stasis: Allow subscriptions to use a threadpool for message delivery + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432175 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Prior to this patch, all Stasis subscriptions would receive a dedicated - thread for servicing published messages. In contrast, prior to r400178 - (see review https://reviewboard.asterisk.org/r/2881/), the subscriptions - shared a thread pool. It was discovered during some initial work on Stasis - that, for a low subscription count with high message throughput, the - threadpool was not as performant as simply having a dedicated thread per - subscriber. +2015-02-21 14:47 +0000 [f726304283] Joshua Colp - For situations where a subscriber receives a substantial number of messages - and is always present, the model of having a dedicated thread per subscriber - makes sense. While we still have plenty of subscriptions that would follow - this model, e.g., AMI, CDRs, CEL, etc., there are plenty that also fall into - the following two categories: - * Large number of subscriptions, specifically those tied to endpoints/peers. - * Low number of messages. Some subscriptions exist specifically to coordinate - a single message - the subscription is created, a message is published, the - delivery is synchronized, and the subscription is destroyed. - In both of the latter two cases, creating a dedicated thread is wasteful (and - in the case of a large number of peers/endpoints, harmful). In those cases, - having shared delivery threads is far more performant. + * res_ari_channels: Return a 404 response when a requested channel variable does not exist. - This patch adds the ability of a subscriber to Stasis to choose whether or not - their messages are dispatched on a dedicated thread or on a threadpool. The - threadpool is configurable through stasis.conf. + This change makes it so that if a channel variable is requested and it does not exist + a 404 response will be returned instead of an allocation failed response. This makes + it easier to debug and figure out what is going on for a user. - Review: https://reviewboard.asterisk.org/r/4193 + ASTERISK-24677 #close + Reported by: Joshua Colp - ASTERISK-24533 #close - Reported by: xrobau - Tested by: xrobau - ........ - Merged revisions 428681 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432154 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428687 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-21 13:26 +0000 [7a507ae31a] Joshua Colp + * res_pjsip_registrar: Add Expires header to 200 OK if present in REGISTER. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Some implementations don't pay attention to the expires for individual contacts. + In this case they may consider the lack of an Expires header in the 200 OK as + unregistered. This change makes it so if an Expires header is present in the REGISTER + we will add one in the 200 OK. -2014-12-01 07:41 +0000 [ef9ca8bc32] Ben Smithurst (license 6529) + ASTERISK-24785 #close + Reported by: Ross Beer - * app_record: Fix bug where using the 'k' option and hanging up would trim 1/4 of a second of the recording. - The Record dialplan function trims 1/4 of a second from the end of recordings in case - they are terminated because of DTMF. When hanging up, however, you don't want this to happen. - This change makes it so on hangup this does not occur. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432136 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24530 #close - Reported by: Ben Smithurst - patches: - app_record_v2.diff submitted by Ben Smithurst (license 6529) +2015-02-21 12:51 +0000 [f0d018e249] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4201/ - ........ + * res_pjsip: Add a log message when creating a UAC dialog to a target URI that is invalid. - Merged revisions 428653 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-24499 #close + Reported by: Rusty Newton - Merged revisions 428654 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 428655 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432118 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-21 11:35 +0000 [c40d78c31e] Graham Barnett (License 6685) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428656 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * apps/app_voicemail: Demote an ERROR message to a WARNING message -2014-12-01 07:08 +0000 [7db3d1642b] snuffy (license 5024) + When using IMAP voicemail with FreePBX, you will often get ERROR messages + complaining about not being able to find a mailbox. This is due to how FreePBX + handles voicemail mailboxes. Unfortunately, app_voicemail has to consider this + a configuration error, as in any other system it would be indicative of + someone misconfiguring their system. - * channel: Extend size of buffer for codecs in "core show channeltype" CLI command. + Regardless, a misconfiguration is a WARNING, and not an ERROR. This patch + demotes the message so that system administrators can hopefully reduce some + of the noise in their log files. - The static buffer for codecs when invoking the "core show channeltype" CLI command - did not have enough room for all codecs. This has been extended so it does. + Note that in the original patch this was made into a NOTICE, but that's a + too forgiving. - ASTERISK-24542 #close - Reported by: snuffy + ASTERISK-24790 #close + Reported by: Graham Barnett patches: - channeltype-tech.diff submitted by snuffy (license 5024) - - Review: https://reviewboard.asterisk.org/r/4204/ + app_voicemail.c.patch_noise uploaded by Graham Barnett (License 6685) ........ - Merged revisions 428632 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428633 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 432098 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-11-24 14:39 +0000 [3e08619faf] Richard Mudgett - * test_channel_feature_hooks.c: Fix unit test for DTMF hooks. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432099 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Fix the failing /channels/features/test_features_channel_dtmf unit test. +2015-02-21 08:05 +0000 [bf9d416536] Joshua Colp - DTMF emulation does not work without a stream of packets to prod the - emulation code. + * http: Add missing html tag to 'httpstatus' functionality. - Review: https://reviewboard.asterisk.org/r/4199/ + ASTERISK-24724 #close + Reported by: Ashley Sanders ........ - Merged revisions 428604 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432078 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428605 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432079 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-24 14:32 +0000 [c38ffca9a1] Richard Mudgett +2015-02-20 20:56 +0000 [93c9c3af2f] Corey Farrell - * DTMF hooks: Leaving channels need to push any collected digits into the bridge. + * Allow shutdown to unload modules that register bucket scheme's or codec's. - Any partially collected DTMF digits for a DTMF hook need to be pushed into - the bridge when a channel leaves the bridging system as if there were a - timeout. + * Change __ast_module_shutdown_ref to be NULL safe (11+). + * Allow modules that call ast_bucket_scheme_register or ast_codec_register + to be unloaded during graceful shutdown only (13+ only). - Review: https://reviewboard.asterisk.org/r/4199/ + ASTERISK-24796 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4428/ ........ - Merged revisions 428601 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 432058 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 428602 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432059 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428603 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-20 20:46 +0000 [54a699fb64] Corey Farrell -2014-11-21 13:16 +0000 [3576ae47f4] Richard Mudgett + * asterisk/lock.h: Fix syntax errors for non-gcc OSX with 64-bit integers. - * manager: Fix could not extend string messages. + Add a couple of missing closing brackets / parenthesis. - When shutting down Asterisk that has an active AMI connection, you get - several "failed to extend from %d to %d" messages because use of the - EVENT_FLAG_SHUTDOWN attempts to add all AMI permission strings to the - event. + ASTERISK-24814 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4436/ + ........ - * Created MAX_AUTH_PERM_STRING to use when creating stack based struct - ast_str variables used with the authority_to_str() and - user_authority_to_str() functions instead of a variety of magic numbers - that could be too small. + Merged revisions 432054 from http://svn.asterisk.org/svn/asterisk/branches/11 - * Added a special check for EVENT_FLAG_SHUTDOWN to authority_to_str() so - it will not attempt to add all permission level strings. - Review: https://reviewboard.asterisk.org/r/4200/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432055 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428570 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-02-20 11:51 +0000 [89b48af3e5] Richard Mudgett - Merged revisions 428571 from http://svn.asterisk.org/svn/asterisk/branches/12 + * chan_dahdi/sig_analog: Put log message strings on one line. + + With the log messages on one line, you can search for the log message seen + in the log and expect to find it. ........ - Merged revisions 428572 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432032 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-21 11:49 +0000 [4394e0431c] gtjoseph +2015-02-20 11:46 +0000 [8e806f9e12] Matt Hoskins (license 6688) - * sorcery: Make is_object_field_registered handle field names that are regexes. + * ASTERISK-24811: Add ast_sorcery_apply_config() to res_pjsip_publish_asterisk. - As a result of https://reviewboard.asterisk.org/r/3305, res_sorcery_realtime - was tossing database fields that didn't have an exact match to a sorcery - registered field. This broke the ability to use regexes as field names which - manifested itself as a failure of res_pjsip_phoneprov_provider which uses - this capability. It also broke handling of fields that start with '@' in - realtime but I don't think anyone noticed. + Matt Hoskins reported that res_pjsip_publish_asterisk wouldn't pull config from + realtime. Turns out it was just missing a call ast_sorcery_apply_config(). - This patch does the following... - * Modifies ast_sorcery_fields_register to pre-compile the name regex. - * Modifies ast_sorcery_is_object_field_registered to test the regex if it - exists instead of doing an exact strcmp. - * Modifies res_pjsip_phoneprov_provider with a few tweaks to get it to work - with realtime. + res_pjsip_acl was missing it as well, so I added it. The other pjsip modules + looked OK. + ASTERISK-24811 #close + Reported-by: Matt Hoskins Tested-by: George Joseph + Tested-by: Matt Hoskins + patches: + res_pjsip_publish_asterisk.c.patch submitted by Matt Hoskins (license 6688) - Review: https://reviewboard.asterisk.org/r/4185/ - ........ + Review: https://reviewboard.asterisk.org/r/4433/ - Merged revisions 428543 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 428544 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428545 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432033 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-21 07:59 +0000 [d663e045f5] Olle Johansson +2015-02-20 09:47 +0000 [c7bdf62a95] Graham Barnett (License 6685) - * sip.conf.sample - note that media_address does not change listen address, just the SDP + * apps/app_voicemail: Fix IMAP header compatibility issue with Microsoft Exchange + When interfacing with Microsoft Exchange, custom headers will be returned as + all lower case. Currently, the IMAP header code will fail to parse the returned + custom headers, as it will be performing a case sensitive comparison. This can + cause playback of messages to fail, as needed information - such as origtime - + will not be present. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428526 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch updates app_voicemail's header parsing code to perform a case + insensitive lookup for the requested custom headers. Since the headers are + specific to Asterisk, e.g., 'x-asterisk-vm-orig-time', and headers should be + unique in an IMAP message, this should cause no issues with other systems. -2014-11-20 20:17 +0000 [2be984fb11] Matt Jordan + ASTERISK-24787 #close + Reported by: Graham Barnett + patches: + app_voicemail.c.patch_MSExchange uploaded by Graham Barnett (License 6685) + ........ - * main/bridge_basic: Fix features regressions introduced by r428165 + Merged revisions 432012 from http://svn.asterisk.org/svn/asterisk/branches/11 - In r428165, two bugs were introduced: - * Prior to entering the features retry loop, the buffer that holds the - collected digits is wiped. However, this inadvertently wipes out the - first collected digit on the first pass through, which is obtained - in ast_stream_and_wait. This caused all of the features tests to fail. - * If ast_app_dtget returns a hangup (-1), the loop would retry incorrectly. - If we detect a hangup, we have to stop trying the feature. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432013 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This patch fixes both issues. +2015-02-19 15:25 +0000 [e0ff83c272] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/4196/ + * chan_dahdi: Remove some dead code. ........ - Merged revisions 428505 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 431992 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428506 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431993 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-20 10:37 +0000 [2f78fde10f] Matt Jordan (License #6283) +2015-02-19 12:25 +0000 [40547e7210] Richard Mudgett - * Fix error with mixed address family ACLs. + * ISDN AOC: Fix crash from an AOC-E message that doesn't have a channel association. - Prior to this commit, the address family of the first item in an ACL - was used to compare all incoming traffic. This could lead to traffic - of other IP address families bypassing ACLs. + Processing an AOC-E event that does not or no longer has a channel + association causes a crash. - ASTERISK-24469 #close + The problem with posting AOC events to the channel topic is that AOC-E + events don't always have a channel association and posting the event to + the all channels topic is just wrong. AOC-E events do however have their + own charging association method to refer to the agreement with the + charging entity. - Reported by Matt Jordan - Patches: - ASTERISK-24469-11.diff uploaded by Matt Jordan (License #6283) + * Changed the AOC events to post to the AMI manager topic instead of the + channel topics. If a channel is associated with the event then channel + snapshot information is supplied with the AMI event. - AST-2014-012 - ........ + * Eliminated RAII_VAR() usage in aoc_to_ami() and ast_aoc_manager_event(). - Merged revisions 428402 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + This patch supercedes the patch on Review: https://reviewboard.asterisk.org/r/4427/ - Merged revisions 428417 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-22670 #close + Reported by: klaus3000 - Merged revisions 428422 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24689 #close + Reported by: Marcel Manz - Merged revisions 428425 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24740 #close + Reported by: Panos Gkikakis + Review: https://reviewboard.asterisk.org/r/4430/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428426 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-20 10:35 +0000 [2486b48cec] Gareth Palmer (license 5169) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431974 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * AST-2014-018 - func_db: DB Dialplan function permission escalation via AMI. +2015-02-19 11:30 +0000 [2181c9443f] Richard Mudgett - The DB dialplan function when executed from an external protocol (for instance - AMI), could result in a privilege escalation. + * res_pjsip_refer: Handle INVITE with Replaces failure after answer. - Asterisk now inhibits the DB function from being executed from an external - interface if the live_dangerously option is set to no. + * Fixed hangup handling of the session->channel after answer if the + ast_channel_move() or ast_bridge_impart() fails. We are still the thread + controlling the session->channel so we need to call ast_hangup() to kill + the channel. - ASTERISK-24534 - Reported by: Gareth Palmer - patches: submitted by Gareth Palmer (license 5169) - ........ + * Fixed debug messages in refer_incoming_invite_request() referencing + incorrect channnels on success. Code comments now say why the + session->channel cannot be used. - Merged revisions 428331 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Review: https://reviewboard.asterisk.org/r/4422/ - Merged revisions 428363 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 428409 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431956 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428413 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-19 09:28 +0000 [374013d817] Alexander Traud (License 6520) + * tcptls: Handle new OpenSSL compile time option to disable SSLv3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428418 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Some distributions are going to disable SSLv3 at compile time. This option can + be checked using the directive OPENSSL_NO_SSL3_METHOD. This patch updates the + TCP/TLS handling in Asterisk to look for that directive before attempting to + use the SSLv3 specific methods. -2014-11-20 10:25 +0000 [2f97486d43] Jonathan Rose + ASTERISK-24799 #close + Reported by: Alexander Traud + patches: + no-ssl3-method.patch uploaded by Alexander Traud (License 6520) + ........ - * PJSIP ACLs: Fix ACLs not loading on startup and apply/acl issues on contact + Merged revisions 431936 from http://svn.asterisk.org/svn/asterisk/branches/11 - The biggest problem this patch fixes is that ACLs weren't previously being - loaded when the res_pjsip_acl module was loaded. Yikes. In addition, the - ACL options contact_permit and contact_acl were effectively interpreted as - contact_deny and this patch fixes that as well. - AST-1418 #close - Reported by: Thomas Thompson - Review: https://reviewboard.asterisk.org/r/4120/ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431937 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24531 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4171/ - ........ +2015-02-18 20:01 +0000 [eb9448a1ae] Corey Farrell - Merged revisions 428333 from http://svn.asterisk.org/svn/asterisk/branches/12 + * Create work around for scheduler leaks during shutdown. + + * Added ast_sched_clean_by_callback for cleanup of scheduled events + that have not yet fired. + * Run all pending peercnt_remove_cb and replace_callno events in chan_iax2. + Cleanup of replace_callno events is only run 11, since it no longer + releases any references or allocations in 13+. + + ASTERISK-24451 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4425/ ........ - Merged revisions 428343 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 431916 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428376 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431917 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-20 09:57 +0000 [a389f2d7a0] Kevin Harwell +2015-02-17 09:31 +0000 [6d3fcfc3c2] Richard Mudgett - * AST-2014-017 - app_confbridge: permission escalation/ class authorization. + * res_pjsip_refer: Fix crash from a REFER and BYE collision. - Confbridge dialplan function permission escalation via AMI and inappropriate - class authorization on the ConfbridgeStartRecord action. The CONFBRIDGE dialplan - function when executed from an external protocol (for instance AMI), could - result in a privilege escalation. Also, the AMI action “ConfbridgeStartRecord” - could also be used to execute arbitrary system commands without first checking - for system access. The AMI “ConfbridgeStopRecord” has also been updated to - only run under a system authorization. + Analyzing a one-off crash on a busy system showed that processing a REFER + request had a NULL session channel pointer. The only way I can think of + that could cause this is if an outgoing BYE transaction overlapped the + incoming REFER transaction in a collision. Asterisk sends a BYE while the + phone sends a REFER to complete an attended transfer. - Asterisk now inhibits the CONFBRIDGE function from being executed from an - external interface if the live_dangerously option is set to no. Also, the - “ConfbridgeStartRecord” AMI action is now only allowed to execute under a - user with system level access. + * Made check the session channel pointer before processing an incoming + REFER request in res_pjsip_refer. - ASTERISK-24490 - Reported by: Gareth Palmer - ........ + * Fixed similar crash potential for res_pjsip supplement incoming request + processing for res_pjsip_sdp_rtp INFO, res_pjsip_caller_id INVITE/UPDATE, + res_pjsip_messaging MESSAGE, and res_pjsip_send_to_voicemail REFER + messages. - Merged revisions 428332 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Made res_pjsip_messaging respond to a message body too large with a 413 + instead of ignoring it. - Merged revisions 428334 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24700 #close + Reported by: Zane Conkle - Merged revisions 428339 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4417/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428342 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431898 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-20 08:56 +0000 [1c88ca9d31] Joshua Colp +2015-02-16 15:29 +0000 [562b7bf6f0] Matt Jordan - * AST-2014-016: Fix crash when receiving an in-dialog INVITE with Replaces in res_pjsip_refer. + * res/res_rtp_asterisk: Fix crash in debug from RTCP reports without report block - The implementation of INVITE with Replaces in res_pjsip_refer did not expect them to - occur in-dialog. As a result it would incorrectly attempt to hang up a channel it - thought was under its control. In reality the channel would be under the control of - another thread. When the other thread accessed the channel it would be accessing freed - memory and could crash. + When RTCP debugging was enabled, an RTCP report without a report block would + cause a crash. This was due to the verbose output not checking to see if the + report_block pointer was NULl before dereferencing it. - This change makes res_pjsip_refer not act on an in-dialog INVITE with Replaces. + This patch adds the necessary check to prevent printing any verbose output + if the far side hasn't provided us the information they should have. - ASTERISK-24528 #close - Reported by: Joshua Colp - ........ + ASTERISK-24791 #close + Reported by: JoshE + Tested by: JoshE - Merged revisions 428304 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 428305 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431879 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-15 13:00 +0000 [7890d0ad07] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428306 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * pjsip: Remove "contact" type from pjsip.conf.sample -2014-11-20 08:49 +0000 [d25eda5fb2] Joshua Colp + The "contact" object is not meant to be configured from the pjsip.conf + configuration file. It is meant to be created as a result of a registration + and stored elsewhere. - * AST-2014-015: Fix race condition in chan_pjsip when sending responses after a CANCEL has been received. + ASTERISK-24085 #close + Reported by: Rusty Newton - Due to the serialized architecture of chan_pjsip there exists a race condition where a CANCEL may - be received and processed before responses (such as 180 Ringing, 183 Session Progress, and 200 OK) - are sent. Since the session is in an unexpected state PJSIP will assert when this is attempted. - This change makes it so that these responses are not sent on disconnected sessions. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431860 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24471 #close - Reported by: yaron nahum - ........ +2015-02-15 11:59 +0000 [cbe63ab283] Joshua Colp - Merged revisions 428301 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * install_prereq: Tweak flags when configuring pjproject. - Merged revisions 428302 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change does two things: + 1. Disables debugging so assertions which can return an error do, + instead of asserting. + 2. Enables IPv6 support. + ASTERISK-24632 #close + Reported by: Rusty Newton - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428303 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-19 13:32 +0000 [57c6f89bf0] Corey Farrell + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431843 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * stringfields: Fix bug in ast_string_fields_copy. +2015-02-15 11:42 +0000 [c8f3074cc4] Joshua Colp - ast_string_fields_copy relies on the fact that - __ast_string_field_release_active never previously - zeroed pool->used, so keeping the existing pointer - was "ok". Now that existing pools can be reset to - 'empty', it is important to set each field to - __ast_string_field_empty after releasing the memory. + * res_sorcery_config: Improve object lookup times. - ASTERISK-24535 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4186/ - ........ + The res_sorcery_config module currently uses a fixed bucket + size of 53. This means that depending on the number of objects + you either end up with excess buckets or a lot of collisions. + Due to the way that res_sorcery_config is implemented it's actually + possible to make the bucket size dynamic based on the number of + objects. This is due to the fact that each loading of the config file + produces a new container and does not modify the existing one. + This change uses the number of expected objects and finds a prime + number near it. In practice depending on the number of objects this + can speed up lookups anywhere from 2X to 15X. This change also removes + the lock from the container as it is not needed. - Merged revisions 428272 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4423/ - Merged revisions 428273 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431841 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428274 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-15 10:00 +0000 [a3044cbf02] Joshua Colp -2014-11-19 11:22 +0000 [a7c9f4c668] Richard Mudgett + * res_pjsip: Add "pjsip show version" CLI command. - * ast_str: Fix improper member access to struct ast_str members. + When debugging things it can be useful to know absolutely what + version of pjproject res_pjsip is running against. This change + adds a "pjsip show version" CLI command which can be used to + query for this. - Accessing members of struct ast_str outside of the string manipulation API - routines is invalid since struct ast_str is supposed to be treated as - opaque. + ASTERISK-24685 #close + Reported by: Joshua Colp - Review: https://reviewboard.asterisk.org/r/4194/ - ........ + Review: https://reviewboard.asterisk.org/r/4424/ - Merged revisions 428244 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 428245 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431824 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428246 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-15 06:39 +0000 [ce70587ba6] Matthias Urlichs (license 5508) + * res_timing_pthread: Fix leaky pipes. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428255 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + During some refactoring the way private information for timers + was stored was changed. As a result of this the action which normally + removed the timer upon closure in res_timing_pthread was also removed + causing the timer to remain after it should using up resources. + This change ensures that the timer is removed upon closure. -2014-11-19 06:50 +0000 [7f8b7ace72] Joshua Colp + ASTERISK-24768 #close + Reported by: Matthias Urlichs + patches: + timer.patch submitted by Matthias Urlichs (license 5508) - * res_pjsip_sdp_rtp: Add support for optimistic SRTP. - Optimistic SRTP is the ability to enable SRTP but not have it be - a fatal requirement. If SRTP can be used it will be, if not it won't be. - This gives you a better chance of using it without having your sessions - fail when it can't be. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431807 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Encrypt all the things! +2015-02-14 18:32 +0000 [4f4d03fdd1] Matt Jordan - Review: https://reviewboard.asterisk.org/r/3992/ - ........ + * apps/app_mixmonitor: Move Test Event for MIXMONITOR_END to after it finishes - Merged revisions 428222 from http://svn.asterisk.org/svn/asterisk/branches/13 + The Test Event for MIXMONITOR_END - which signals that a MixMonitor has + completed - technically fired before the filestream was closed. If a test + used this to trigger a condition to verify that the file was written, it + could result in a race condition where the file size would not be what the + test expected. + Luckily, no tests were using this (although they should have been). Since the + test event needed to be moved after the point where the MixMonitor autochan has + been destroyed, the test event no longer emits the channel name. Luckily, + nothing needs it. + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 431788 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-11-19 06:45 +0000 [b2e766a6b7] Joshua Colp - * alembic: Fix alembic migration for 'moh_passthrough' option in res_pjsip. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431789 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-14 13:45 +0000 [758a897876] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428223 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * sorcery: Output an error message if a wizard is specified for an object type and it isn't found. + + ASTERISK-24612 #close + Reported by: Joshua Colp -2014-11-19 05:51 +0000 [3119c3737f] Joshua Colp - * res_pjsip_refer: Ensure Refer-To is NULL terminated and parse it as a URI. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431771 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - There is no guarantee that when we get a Refer-To that it will be NULL terminated. - As the URI parsing function requires it to be we now NULL terminate it. +2015-02-14 12:30 +0000 [8c6e3ad3b4] Joshua Colp - Additionally parsing the Refer-To as a 'To' header is needless and it can - simply be done as a URI. This also fixes a problem where certain Refer-To headers - would not be parsed as a 'To' header causing the REFER to fail. + * res_pjsip_exten_state: Improve log message when a subscription is attempted to a non-existent extension. - ASTERISK-24508 #close - Reported by: Beppo Mazzucato + ASTERISK-24716 #close + Reported by: Rusty Newton - Review: https://reviewboard.asterisk.org/r/4187/ - ........ - Merged revisions 428195 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431754 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428196 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-14 12:20 +0000 [3543a36362] Joshua Colp + * 'information' ends with an 'n'. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-18 13:12 +0000 [a94efa239c] Richard Mudgett + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431752 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * parking_tests.c: Add missing newline on a unit test message. - ........ +2015-02-14 12:19 +0000 [5d26236758] Joshua Colp - Merged revisions 428168 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * chan_pjsip: Fix crash when CHANNEL dialplan function is invoked with pjsip argument and no type. - Merged revisions 428169 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24771 #close + Reported by: Niklas Larsson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428170 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431751 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-17 10:58 +0000 [2e750db120] Mark Michelson +2015-02-13 11:21 +0000 [4d797f17c5] Richard Mudgett - * Allow for transferer to retry when dialing an invalid extension. + * res_pjsip_session: Fix double re-INVITE collision crash. - This allows for a configurable number of attempts for a transferer - to dial an extension to transfer the call to. For Asterisk 13, the - default values are such that upgrading between versions will not - cause a behaivour change. For trunk, though, the defaults will be - changed to be more user-friendly. + A multi-asterisk box setup with direct media enabled would occasionally + crash when two re-INVITE collisions on a call leg happen in a row. - Review: https://reviewboard.asterisk.org/r/4167 - ........ + The re-INVITE logic only had one timer struct to defer the re-INVITE. + When the second collision happens the timer struct is overwritten and put + into the timer heap again. Resources for the first timer are leaked and + the heap has two positions occupied by the same timer struct. Now the + heap ordering is potentially corrupted, the timer will fire twice, and any + resources allocated for the second timer will be released twice. - Merged revisions 428145 from http://svn.asterisk.org/svn/asterisk/branches/13 + * The solution is to put the collided re-INVITE into the delayed requests + queue with all the other delayed requests and cherry pick the next request + that can come off the queue when an event happens. + * Changed to put delayed BYE requests at the head of the delayed queue. + There is no sense in processing delayed UPDATEs and re-INVITEs when a BYE + has been requested. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428146 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Made the start of a BYE request flush the delayed requests queue to + prevent a delayed request from overlapping the BYE transaction. I saw a + few cases where a delayed re-INVITE got started after the BYE transaction + started. -2014-11-17 10:02 +0000 [4cea5fd4ba] Corey Farrell + * Changed the delayed_request struct to use an enum instead of a string + for the request method. Cherry picking the queue is easier with an enum + than string comparisons and the compiler can warn if a switch statement + does not cover all defined enum values. - * chan_sip: Fix theoretical leak of p->refer. + * Improved the debug output to give more information. It helps to know + which channel is involved with an endpoint. Trunks can have many channels + associated with the endpoint at the same time. - If transmit_refer is called when p->refer is already allocated, - it leaks the previous allocation. Updated code to always free - previous allocation during a new allocation. Also instead of - checking if we have a previous allocation, always create a - clean record. + ASTERISK-24727 #close + Reported by: Mark Michelson - ASTERISK-15242 #close - Reported by: David Woolley - Review: https://reviewboard.asterisk.org/r/4160/ - ........ + Review: https://reviewboard.asterisk.org/r/4414/ - Merged revisions 428117 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 428118 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431734 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428119 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-12 14:32 +0000 [1995baad71] Matt Jordan + * ARI/PJSIP: Add the ability to redirect (transfer) a channel in a Stasis app - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428120 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch adds a new feature to ARI to redirect a channel to another server, + and fixes a few bugs in PJSIP's handling of the Transfer dialplan + application/ARI redirect capability. -2014-11-17 09:27 +0000 [948af7fd79] Matt Jordan + *New Feature* + A new operation has been added to the ARI channels resource, redirect. With + this, a channel in a Stasis application can be redirected to another endpoint + of the same underlying channel technology. - * apps/app_confbridge: Ensure 'normal' users hear message when last marked leaves + *Bug fixes* + In the process of writing this new feature, two bugs were fixed in the PJSIP + stack: + (1) The existing .transfer channel callback had the limitation that it could + only transfer channels to a SIP URI, i.e., you had to pass + 'PJSIP/sip:foo@my_provider.com' to the dialplan application. While this is + still supported, it is somewhat unintuitive - particularly in a world full + of endpoints. As such, we now also support specifying the PJSIP endpoint to + transfer to. + (2) res_pjsip_multihomed was, unfortunately, trying to 'help' a 302 redirect by + updating its Contact header. Alas, that resulted in the forwarding + destination set by the dialplan application/ARI resource/whatever being + rewritten with very incorrect information. Hence, we now don't bother + updating an outgoing response if it is a 302. Since this took a looong time + to find, some additional debug statements have been added to those modules + that update the Contact headers. - When r428077 was made for ASTERISK-24522, it failed to take into account users - who are neither wait_marked nor end_marked. These users are *also* supposed to - hear the 'leader has left the conference' message. Granted, this behaviour is - a bit odd; however, that is how it used to work... and behaviour changes are - not good. + Review: https://reviewboard.asterisk.org/r/4316/ - This patch ensures that if there are any 'normal' users present when the last - marked user leaves the conference, the message will still be played to them. + ASTERISK-24015 #close + Reported by: Private Name - Note that this regression was caught by the Asterisk Test Suite's - confbridge_nominal test, which has a quirky combination of users. - ........ + ASTERISK-24703 #close + Reported by: Matt Jordan - Merged revisions 428113 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 428114 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 428115 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431717 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-11 12:02 +0000 [e8ec15a9ef] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428116 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: dtls_handler causes Asterisk to crash -2014-11-16 21:08 +0000 [fc2279afea] Matt Jordan + There have been a couple of times where a crash occurred in the dtls_handler + section of the code for res_pjsip. Unfortunately, in working this issue the + problem was unable to be reproduced. After looking at the backtraces and + through the code the current best guess as to why this happened might be due + to a reentrance problem and the strtok function. So, the current fix is to + convert the strtok function into the reentrant version of the function, + strtok_r. - * app_confbridge: Don't play leader leaving prompt if no one will hear it + ASTERISK-24741 #close + Reported by: Zane Conkle + Review: https://reviewboard.asterisk.org/r/4409/ - Consider the following: - - A marked user in a conference - - One or more end_marked only users in the conference - When the marked users leaves, we will be in the conf_state_multi_marked state. - This currently will traverse the users, kicking out any who have the end_marked - flags. When they are kicked, a full ast_bridge_remove is immediately called on - the channels. At this time, we also unilaterally set the need_prompt flag. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431698 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - When the need_prompt flag is set, we then playback a sound to the bridge - informing everyone that the leader has left; however, no one is left in the - bridge. This causes some odd behaviour for the end_marked users - they are - stuck waiting for the bridge to be unlocked. This results in them waiting for - 5 or 6 seconds of dead air before hearing that they've been kicked. +2015-02-11 11:36 +0000 [e64d151fae] Kevin Harwell - Unfortunately, we do have to keep the bridge locked while we're playing back - the 'leader-has-left' prompt. If there are any wait_marked users in the - conference, this behaviour can't be easily changed - but we do make the case - of the end_marked users better with this patch. + * ari_websockets: removed extra check on websocket session read - Review: https://reviewboard.asterisk.org/r/4184/ + When merging the websocket timeout issue (ASTERISK-24701) an extra, almost + duplicate, check was left in the code that should not have been. This removes + it. - ASTERISK-24522 #close + ASTERISK-24701 #close Reported by: Matt Jordan - ........ + Review: https://reviewboard.asterisk.org/r/4412/ - Merged revisions 428077 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 428078 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431693 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 428079 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-11 11:28 +0000 [feddab7944] Richard Mudgett + * HTTP: Stop accepting requests on final system shutdown. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428080 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + There are three CLI commands to stop and restart Asterisk each. -2014-11-16 15:13 +0000 [656601d8c4] Joshua Colp + 1) core stop/restart now - Hangup all calls and stop or restart Asterisk. + New channels are prevented while the shutdown request is pending. - * chan_pjsip: Remove AOR check when dialing and one is specified. + 2) core stop/restart gracefully - Stop or restart Asterisk when there are + no calls remaining in the system. New channels are prevented while the + shutdown request is pending. - The AOR value may contain the name of an AOR or a full SIP URI. - Checking if the AOR exists can't be done as a result of this. - ........ + 3) core stop/restart when convenient - Stop or restart Asterisk when there + are no calls in the system. New calls are not prevented while the + shutdown request is pending. - Merged revisions 428051 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ARI has made stopping/restarting Asterisk more problematic. While a + shutdown request is pending it is desirable to continue to process ARI + HTTP requests for current calls. To handle the current calls while a + shutdown request is pending, a new committed to shutdown phase is needed + so ARI applications can deal with the calls until the system is fully + committed to shutdown. - Merged revisions 428052 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Added a new shutdown committed phase so ARI applications can deal with + calls until the final committed to shutdown phase is reached. + * Made refuse new HTTP requests when the system has reached the final + system shutdown phase. Starting anything while the system is actively + releasing resources and unloading modules is not a good thing. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428053 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Split the bridging framework shutdown to not cleanup the global bridging + containers when shutting down in a hurry. This is similar to how other + modules prevent crashes on rapid system shutdown. -2014-11-16 06:12 +0000 [bc02cbabd9] Joshua Colp + * Moved ast_begin_shutdown(), ast_cancel_shutdown(), and + ast_shutting_down(). You should not have to include channel.h just to + access these system functions. - * chan_sip: Fix bug where DTLS configuration from general would copy dtlsenable. + ASTERISK-24752 #close + Reported by: Matthew Jordan + Review: https://reviewboard.asterisk.org/r/4399/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-15 15:52 +0000 [6993743b1f] Etienne Lessard (License 6394) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431692 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * cel/cel_odbc: Provide microsecond precision in 'eventtime' column when possible +2015-02-11 11:12 +0000 [29f3ff0b61] Richard Miller (License 5685) - This patch adds microsecond precision when inserting a CEL record into a table - with an "eventtime" column of type timestamp, instead of second precision. The - documentation (configs/cel_odbc.conf.sample) was already saying that the - eventtime column included microseconds precision, but that was not the case. + * channels/chan_sip: Fix RealTime error during SIP unregistration with MariaDB - Also, without this patch, if you had a table with an "eventtime" column of - type varchar, you had millisecond precision. With this patch, you also get - microsecond precision in this case. + When a SIP device that has its registration stored in RealTime unregisters, + the entry for that device is updated with blank values, i.e., "", indicating + that it is no longer registered. Unfortunately, one of those values that is + 'blanked' is the device's port. If the column type for the port is not a + string datatype (the recommended type is integer), an ODBC or database error + will be thrown. MariaDB does not coerce empty strings to a valid integer value. - Review: https://reviewboard.asterisk.org/r/3980 + This patch updates the query run from chan_sip such that it replaces the port + value with a value of '0', as opposed to a blank value. This is the value that + other database backends coerce the empty string ("") to already, and the + handling of reading a RealTime registration value from a backend already + anticipates receiving a port of '0' from the backends. - ASTERISK-24283 #close - Reported by: Etienne Lessard + ASTERISK-24772 #close + Reported by: Richard Miller patches: - cel_odbc_time_precision.patch uploaded by Etienne Lessard (License 6394) - ........ - - Merged revisions 427952 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - - Merged revisions 427953 from http://svn.asterisk.org/svn/asterisk/branches/12 + chan_sip.diff uploaded by Richard Miller (License 5685) ........ - Merged revisions 427954 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 431673 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428010 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431674 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-15 15:36 +0000 [ece61f5ed1] Joshua Colp +2015-02-11 10:51 +0000 [72e5ba2ce8] Kevin Harwell - * chan_pjsip: Add additional log message when an AOR is specified when dialing and it does not exist. + * res_http_websocket: websocket write timeout fails to fully disconnect - ASTERISK-24499 #close - Reported by: Rusty Newton - ........ + When writing to a websocket if a timeout occurred the underlying socket did not + get closed/disconnected. This patch makes sure the websocket gets disconnected + on a write timeout. Also a notice is logged stating that the websocket was + disconnected. - Merged revisions 428007 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24701 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4412/ ........ - Merged revisions 428008 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428009 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431670 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-15 13:01 +0000 [49e63a191d] Joshua Colp +2015-02-11 09:51 +0000 [2531f75057] Corey Farrell - * chan_motif / chan_pjsip: Fix incorrect "No such module" messages when reloading. + * Enable REF_DEBUG for ast_module_ref / ast_module_unref. - For chan_motif the direct return value of the underlying config options framework - was passed back. This can relay various states which the module loader would not - interpet as success. It has been changed so only on errors will it report back - an error. + Add ast_module_shutdown_ref for use by modules that can + only be unloaded during graceful shutdown. - For chan_pjsip the code implemented a dummy reload function which always - returned an error. This has been removed as all configuration is held within - res_pjsip instead. + When REF_DEBUG is enabled: + * Add an empty ao2 object to struct ast_module. + * Allocate ao2 object when the module is loaded. + * Perform an ao2_ref in each place where mod->usecount is manipulated. + * ao2_cleanup on module unload. - ASTERISK-23651 #close - Reported by: Rusty Newton + ASTERISK-24479 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4141/ ........ - Merged revisions 427981 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 431662 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 427982 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431663 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427983 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-10 17:16 +0000 [4d8ab20a8a] gtjoseph -2014-11-15 12:29 +0000 [9d2882d274] Joshua Colp + * res_pjsip_config_wizard: Add ability to auto-create hints. - * res_pjsip: Enforce requirements for session timer minimum expiration period and normal expiration period. + Looking at the Super Awesome Company sample reminded me that creating hints is + just plain gruntwork. So you can now have the pjsip conifg wizard auto-create + them for you. - This change enforces the requirements in PJSIP for session timer configuration. The minimum - expiration period must be 90 seconds or higher and the normal expiration period can not - be lower than the minimum expiration period. If either of these were done the code would - assert at session setup time. + Specifying 'hint_exten' in the wizard will create + 'exten => ,hint/PJSIP/' + in whatever is specified for 'hint_context'. - ASTERISK-24336 #close - Reported by: Leon Rowland - ........ + Specifying 'hint_application' in the wizard will create + 'exten => ,1,' + in whatever is specified for 'hint_context'. - Merged revisions 427978 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The default for 'hint_context' is the endpoint's context. + There's no default for 'hint_application'. If not specified, no app is added. + There's no default for 'hint_exten'. If not specified, neither the hint itself + nor the application will be created. - Merged revisions 427979 from http://svn.asterisk.org/svn/asterisk/branches/13 + Some may think this is the slippery slope to users.conf but hints are a basic + necessity for phones unlike voicemail, manager, etc that users.conf creates. + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4383/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427980 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-15 10:31 +0000 [d0523b4b3c] Michael K. (license 6621) - * chan_sip: Add support for setting DTLS configuration in the general section. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431643 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Configuration of DTLS in the general section will be applied to any users - or peers. If configuration exists at their level it overrides the general - section values. +2015-02-08 21:10 +0000 [32e42e50cc] Ben Merrills (License 6678) - ASTERISK-24128 #close - Reported by: Michael K. + * res/ari/resource_channels: Add missing 'no_answer' reason to DELETE /channels + + One of the canonical reasons for hanging up a channel is because the far end + failed to answer - or because someone else answered, and we want to get rid of + this channel. This patch adds the missing value to the 'reason' query parameter + for the DELETE /channels operation. + + Review: https://reviewboard.asterisk.org/r/4400 + + ASTERISK-24745 #close + Reported by: Ben Merrills patches: - dtls_default_settings.patch submitted by Michael K. (license 6621) + add_no_answer_ari_hangup_cause.diff uploaded by Ben Merrills (License 6678) - Review: https://reviewboard.asterisk.org/r/3867/ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431622 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427950 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-08 21:01 +0000 [03445a147e] Jeremiah Gowdy (License 6358) -2014-11-14 15:51 +0000 [3268544907] Matt Jordan + * Blocked revisions 431620 - * tests/test_cel: Unlock bridge on off nominal paths + While it may not be obvious, r431620 should not occur in Asterisk 13. + * We no longer set the SIP_DEFER_BYE_ON_TRANSFER flag during the handling of + the INVITE with Replaces. This is now set and handled explicitly in the + attended transfer and blind transfer code. + * An INVITE with Replaces replacing a channel in a Bridge will now safely eject + the channel being replaced. No masquerade occurs. + * An INVITE with Replaces replacing a channel not in a Bridge will masquerade, + but will do so in such a fashion that we can ensure that we are hanging up + the channel when completed. + + Since the code the patch fixes no longer exists due to core framework changes, + we should send a BYE naturally without the need for the flag. - If the test fails due to memory allocation errors, we may as well attempt to - unlock the bridge on the way out. ........ + channels/chan_sip: Ensure that a BYE is sent during INVITE w/Replaces transfer - Merged revisions 427927 from http://svn.asterisk.org/svn/asterisk/branches/13 + Consider a scenario where Alice and Bob have an established dialog with each + other external to Asterisk. Bob decides to perform an attended transfer of + Alice to Asterisk. In this case, Alice will send an INVITE with Replaces + to Asterisk, where the Replaces specifies Bob's dialog with Asterisk. In this + particular scenario, Asterisk will complete the transfer, but - since Bob's + channel has had Alice masqueraded into it and is now a Zombie - a BYE + request will not be sent. + This patch fixes that issue by adding a new flag to chan_sip that tracks + whether or not we have an INVITE with Replaces. If we do, the flag is used + on the sip_pvt to ensure that a BYE request is sent, even if the channel has + been masqueraded away. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427932 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4362/ -2014-11-14 12:12 +0000 [df2090b931] Jonathan Rose + ASTERISK-22436 #close + Reported by: Eelco Brolman + Tested by: Jeremiah Gowdy, Kristian Høgh + patches: + asterisk-11-hangup-replaced-3.diff uploaded by Jeremiah Gowdy (License 6358) - * Documentation: Revise explanation of cdr.conf option 'Unanswered' - ASTERISK-24279 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4109/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431621 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427901 from http://svn.asterisk.org/svn/asterisk/branches/12 +2015-02-08 20:34 +0000 [8582411344] ibercom (License 6599) + + * res/res_odbc: Remove unneeded queries when determining if a table exists + + This patch modifies the ast_odbc_find_table function such that it only performs + a lookup of the requested table if the table is not already known. Prior to + this patch, a queries would be executed against the database even if the table + was already known and cached. + + Review: https://reviewboard.asterisk.org/r/4405/ + + ASTERISK-24742 #close + Reported by: ibercom + patches: + patch.diff uploaded by ibercom (License 6599) ........ - Merged revisions 427902 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 431617 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427903 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431618 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-14 09:52 +0000 [ba811ae1c3] Scott Griepentrog +2015-02-08 11:24 +0000 [675b2b8103] Matt Jordan - * stun: correct attribute string padding to match rfc + * res/res_pjsip_sdp_rtp: Fix leak of local ICE candidates when applying to SDP - When sending the USERNAME attribute in an RTP STUN - response, the implementation in append_attr_string - passed the actual length, instead of padding it up - to a multiple of four bytes as required by the RFC - 3489. This change adds separate variables for the - string and padded attributed lengths, and performs - padding correctly. + When an SDP is created for an outgoing request/response, the ICE candidates + obtained from the RTP instance are currently leaked. This causes the ao2 + container that holds the candidates to never properly be reclaimed when the + RTP instance is destroyed. - Reported by: Thomas Arimont - Review: https://reviewboard.asterisk.org/r/4139/ - ........ + This patch properly decrements the ICE candidates' container if it is + successfully obtained. - Merged revisions 427874 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-24769 #close + Reported by: Matt Jordan - Merged revisions 427875 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 427876 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431600 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-06 15:26 +0000 [323c0927ac] Scott Griepentrog - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427877 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * various: cleanup issues found during leak hunt -2014-11-14 09:28 +0000 [2d9471ab1f] Mark Michelson + In this collection of small patches to prevent + Valgrind errors are: fixes for reference leaks + in config hooks, evaluating a parameter beyond + bounds, and accessing a structure after a lock + where it could have been already free'd. - * Fix race condition that could result in ARI transfer messages not being sent. + Review: https://reviewboard.asterisk.org/r/4407/ - From reviewboard: - "During blind transfer testing, it was noticed that tests were failing - occasionally because the ARI blind transfer event was not being sent. - After investigating, I detected a race condition in the blind transfer - code. When blind transferring a single channel, the actual transfer - operation (i.e. removing the transferee from the bridge and directing - them to the proper dialplan location) is queued onto the transferee - bridge channel. After queuing the transfer operation, the blind transfer - Stasis message is published. At the time of publication, snapshots of - the channels and bridge involved are created. The ARI subscriber to the - blind transfer Stasis message then attempts to determine if the bridge - or any of the involved channels are subscribed to by ARI applications. - If so, then the blind transfer message is sent to the applications. The - way that the ARI blind transfer message handler works is to first see - if the transferer channel is subscribed to. If not, then iterate over - all the channel IDs in the bridge snapshot and determine if any of - those are subscribed to. In the test we were running, the lone - transferee channel was subscribed to, so an ARI event should have been - sent to our application. Occasionally, though, the bridge snapshot did - not have any channels IDs on it at all. Why? + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431583 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - The problem is that since the blind transfer operation is handled by a - separate thread, it is possible that the transfer will have completed and - the channels removed from the bridge before we publish the blind transfer - Stasis message. Since the blind transfer has completed, the bridge on - which the transfer occurred no longer has any channels on it, so the - resulting bridge snapshot has no channels on it. Through investigation of - the code, I found that attended transfers can have this issue too for the - case where a transferee is transferred to an application." +2015-02-03 19:27 +0000 [18c8c1bae3] Joshua Colp - The fix employed here is to decouple the creation of snapshots for the transfer - messages from the publication of the transfer messages. This way, snapshots - can be created to reflect what they are at the time of the transfer operation. + * res_pjsip_keepalive: Don't crash if PJSIP module is not loaded. - Review: https://reviewboard.asterisk.org/r/4135 - ........ - Merged revisions 427848 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431555 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427870 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-03 18:58 +0000 [2f2eb1931a] Joshua Colp + * sorcery: Don't try to load object types which haven't been defined. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427873 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The act of defining wizards for an object type in sorcery.conf will + create a minimal object type. This can cause a problem when a module + has multiple sorcery instances (which all get the wizards from sorcery.conf + applied) but the sorcery instances do not all contain full information + about the object types. Upon loading errors will occur stating that + the objects can not be created. This is confusing and is actually + perfectly fine. -2014-11-14 08:56 +0000 [737b811749] Joshua Colp + This change makes it so that only object types which have been fully + defined will be loaded. - * app_confbridge: Play "leader has left" sound even when musiconhold is enabled. + ASTERISK-24748 #close + Reported by: Joshua Colp - Currently if the leader of a conference bridge leaves any participant - that has musiconhold enabled will not hear the "leader has left" sound. - This is because musiconhold is started and THEN the sound is played. - This change makes it so that the sound is played and THEN musiconhold - is started. This provides a better experience for users as they may not - have known previously why they went back to musiconhold. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431538 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4177/ - ........ +2015-01-31 10:27 +0000 [f67402a52a] Joshua Colp - Merged revisions 427844 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_format_attr_h264: Fix crash when determining joint capability. - Merged revisions 427845 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The res_format_attr_h264 module currently incorrectly attempts to + copy SPS and PPS information from the wrong attribute. This change + fixes that. - Merged revisions 427846 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24616 #close + Reported by: Yura Kocyuba + Review: https://reviewboard.asterisk.org/r/4392/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427847 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-14 08:40 +0000 [2454505d5a] Mark Michelson + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431521 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Fix race condition where duplicated requests may be handled by multiple threads. +2015-01-30 11:44 +0000 [05e2832b35] Richard Mudgett - This is the Asterisk 13 version of the patch. The main difference is in the pubsub - code since it was completely refactored between Asterisk 12 and 13. + * app_agent_pool: Fix initial module load agent device state reporting. - Review: https://reviewboard.asterisk.org/r/4175 - ........ + When the app_agent_pool module initially loads there is a race condition + between the thread loading agents.conf and the device state internal + processing thread. If the device state internal processing thread handles + the agent creation state updates before the thread that loaded agents.conf + registers the device state provider callback then the cached agent state + is "Invalid". When a consumer module like app_queue asks for the agent state + it gets the cached "Invalid" state instead of the real state from the provider. - Merged revisions 427841 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Moved loading the agents.conf configuration to the last thing setup by + app_agent_pool in load_module(). Now the device state provider callback + is registered before the config is loaded so the agent creation state + updates are guaranteed to get the initial device state. + * Removed some now redundant config cleanup on error in load_config(). - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427842 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Added lock protection when accessing the device state in + agent_pvt_devstate_get() and eliminated the RAII_VAR() usage. -2014-11-13 16:26 +0000 [49b7a1cbaf] Kevin Harwell + ASTERISK-24737 #close + Reported by: Steve Pitts - * res_pjsip_exten_state: PJSIPShowSubscriptionsInbound causes crash + Review: https://reviewboard.asterisk.org/r/4390/ - When using a non-default sorcery wizard (in this instance realtime) for - outbound registrations and after adding in an appropriate call to - ast_sorcery_apply_config() (since it is missing) Asterisk will crash after - a stack overflow occurs due to the code infinitely recursing. The fix entails - removing the outbound registration state dependency from the outbound - registration sorcery object and instead keeping an in memory container that - can be used to lookup the state when needed. - ASTERISK-24514 - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4164/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431492 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427814 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-30 11:38 +0000 [6583b4de98] Kevin Harwell - Merged revisions 427815 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_outbound_publish: eventually crashes when no response is ever received + When Asterisk attempts to send SIP outbound publish information and no response + is ever received (no 200 okay, 412, 423) the system eventually crashes. A + response is never received because the system Asterisk is attempting to send + publish information to is not available. The underlying pjsip framework attempts + to send publish information. After several attempts it calls back into the + Asterisk outbound publish code. At this point if the "client->queue" is empty + Asterisk attempts to schedule a refresh which utilizes "rdata" and since no + response was received the given "rdata" struture is NULL. Attempting to + dereference a NULL object of course results in a crash. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427823 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The fix here removes the dependency on rdata for schedule_publish_refresh. + Instead param->expiration is now passed to it as this is set to -1 if no + response is received. Also added a notification when no response is received. -2014-11-13 09:46 +0000 [74e706878b] Kinsey Moore + ASTERISK-24635 #close + Reported by: Marco Paland + Review: https://reviewboard.asterisk.org/r/4384/ - * Stasis: Fix StasisEnd message ordering - This change corrects message ordering in cases where a channel-related - message can be received after a Stasis/ARI application has received the - StasisEnd message. The StasisEnd message was being passed to - applications directly without waiting for the channel topic to empty. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431490 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - As a result of this fix, other bugs were also identified and fixed: - * StasisStart messages were also being sent directly to apps and are - now routed through the stasis message bus properly - * Masquerade monitor datastores were being removed at the incorrect - time in some cases and were causing StasisEnd messages to not be sent - * General refactoring where necessary for the above - * Unsubscription on StasisEnd timing changes to prevent additional - messages from following the StasisEnd when they shouldn't +2015-01-30 10:52 +0000 [112d23c73e] Ashley Sanders - A channel sanitization function pointer was added to reduce processing - and AO2 lookups. + * HTTP: For httpd server, need option to define server name for security purposes - Review: https://reviewboard.asterisk.org/r/4163/ - ASTERISK-24501 #close - Reported by: Matt Jordan - ........ + Added a new config property [servername] to the http.conf file; updated the http server to use the new property when sending responses, for showing http status through the CLI and when reporting status through the 'httpstatus' webpage. - Merged revisions 427788 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24316 #close + Reported By: Andrew Nagy + Review: https://reviewboard.asterisk.org/r/4374/ - Merged revisions 427789 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431471 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-30 10:47 +0000 [43dd42d8ae] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427790 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fix some memory leaks. -2014-11-12 18:23 +0000 [cc4c396647] Matt Jordan + These memory leaks were found and fixed by John Hardin. I'm just + committing them for him. - * main/rtp_engine: Fix crash when processing more than one RTCP report info block + ASTERISK-24736 #close + Reported by Mark Michelson - Asterisk - in res_rtp_asterisk - only understands a single RTCP report info - block. When the RTCP information was refactored in the RTP Engine to be pushed - over the Stasis message bus, I put in the hooks into the engine to handle - multiple RTCP report info blocks, in the hope that a future RTP implementation - would be able to provide that data. Unfortunately, res_rtp_asterisk has a - tendency to "lie": - (1) It will send RTCP reports with a reception_report_count greater than 1 - (which is pulled directly from the RTCP packet itself, so that part is - correct) - (2) It will only provide a single report block + Review: https://reviewboard.asterisk.org/r/4389 - When the rtp_engine goes to convert this to a JSON blob, hilarity ensues as it - looks for a report block that doesn't exist. - This patch updates the rtp_engine to be a bit more skeptical about what it is - presented with. While this could also be fixed in res_rtp_asterisk, this patch - prefers to fix it in the engine for two reasons: - (1) The engine is designed to work with multiple RTP implementation, and hence - having it be more robust is a good thing (tm) - (2) res_rtp_asterisk's handling of RTCP information is "fun". It should report - the correct reception_report_count; ideally it should also be giving us all - of the blocks - but it is *definitely* not designed to do that. Going down - that road is a non-trivial effort. - Review: https://reviewboard.asterisk.org/r/4158/ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431468 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24489 #close - Reported by: Gregory Malsack - Tested by: Gregory Malsack +2015-01-29 17:02 +0000 [f7d23dfcc6] Scott Griepentrog - ASTERISK-24498 #close - Reported by: Beppo Mazzucato - Tested by: Beppo Maazucato - ........ + * stasis transfer: fix stasis bridge push race part two - Merged revisions 427762 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + When swapping a Local channel in place of one already + in a bridge (to complete a bridge attended transfer), + the channel that was swapped out can actually be hung + up before the stasis bridge push callback executes on + the independant transfer thread. This results in the + stasis app loop dropping out and removing the control + that has the the app name which the local replacement + channel needs so it can re-enter stasis. - Merged revisions 427763 from http://svn.asterisk.org/svn/asterisk/branches/13 + To avoid this race condition a new push_peek callback + has been added, and called from the ast_bridge_impart + thread before it launches the independant thread that + will complete the transfer. Now the stasis push_peek + callback can copy the stasis app name before the swap + channel can hang up. + ASTERISK-24649 + Review: https://reviewboard.asterisk.org/r/4382/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427771 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-12 14:40 +0000 [ec1a7654f3] Corey Farrell - * Fix leak in AMI Action Bridge + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431450 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Add missing reference cleanup for newly created bridge. +2015-01-29 14:58 +0000 [e8896ac008] Mark Michelson - ASTERISK-24281 - Reported by: Stefan Engström - Review: https://reviewboard.asterisk.org/r/4154/ - ........ + * Use SIPS URIs in Contact headers when appropriate. - Merged revisions 427736 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific + scenarios when we are required to use SIPS URIs in Contact + headers. Asterisk's non-compliance with this could actually + cause calls to get dropped when communicating with clients + that are strict about checking the Contact header. - Merged revisions 427737 from http://svn.asterisk.org/svn/asterisk/branches/13 + Both of the SIP stacks in Asterisk suffered from this issue. + This changeset corrects the behavior in res_pjsip/chan_pjsip.c + Review: https://reviewboard.asterisk.org/r/4345 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427738 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-12 10:13 +0000 [dbb8f0a935] Joshua Colp - * pbx: Fix off-nominal case where a freed extension may still be used. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431426 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - If during the operation of adding an extension a priority is added but - fails it is possible for the extension to be freed but still exist in - the PBX core. If this occurs subsequent lookups may try to access the - extension and end up in freed memory. +2015-01-29 14:44 +0000 [22fc3359da] Mark Michelson - This change removes the extension from the PBX core when the priority - addition fails and then frees the extension. + * Use SIPS URIs in Contact headers when appropriate. - ASTERISK-24444 #close - Reported by: Leandro Dardini + RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific + scenarios when we are required to use SIPS URIs in Contact + headers. Asterisk's non-compliance with this could actually + cause calls to get dropped when communicating with clients + that are strict about checking the Contact header. - Review: https://reviewboard.asterisk.org/r/4162/ - ........ + Both of the SIP stacks in Asterisk suffered from this issue. + This changeset corrects the behavior in chan_sip. - Merged revisions 427709 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-24646 #close + Reported by Stephan Eisvogel - Merged revisions 427710 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4346 ........ - Merged revisions 427711 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 431423 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427712 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-12 07:47 +0000 [9f89b83269] Corey Farrell +2015-01-29 13:52 +0000 [b8ea23b0d1] Mark Michelson - * Fix compiler error when using ./configure --enable-dev-mode --enable-coverage + * Allow disabling of 100rel support on PJSIP endpoints. - When DONT_OPTIMIZE is enabled with dev-mode, it causes a shadow compilation - to be done with output to /dev/null. This can cause errors with coverage - when GCC attempts to write to /dev/null.gcno. This change disables - coverage for the shadow compilation. + Due to an inversion error, setting 100rel=no would not actually + change the current value of the setting (which defaulted to "yes"). + With this fix, the inversion is corrected. - ASTERISK-24502 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4151/ - ........ - Merged revisions 427682 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 427683 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431420 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427684 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-29 10:46 +0000 [6e5eb9af88] gtjoseph + * res_pjsip_exten_state: Reduce log clutter... change a WARNING to a VERBOSE/2 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427685 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Reduce log clutter by changing the "Watcher for hint %s (removed|deactivated)" + message from WARNING to VERBOSE/2. -2014-11-09 02:01 +0000 [21c41e4542] Corey Farrell + Tested-by: George Joseph - * manager: Fix HTTP connection reference leaks. + Review: https://reviewboard.asterisk.org/r/4387/ - Fix reference leak that happens if (session && !blastaway). - ASTERISK-24505 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4153/ - ........ - Merged revisions 427641 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431403 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427642 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-29 06:09 +0000 [e0461290d0] Joshua Colp - Merged revisions 427643 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_rtp_asterisk: Fix DTLS when used with OpenSSL 1.0.1k + A recent security fix for OpenSSL broke DTLS negotiation for many + applications. This was caused by read ahead not being enabled when it + should be. While a commit has gone into OpenSSL to force read ahead + on for DTLS it may take some time for a release to be made and the + change to be present in distributions (if at all). As enabling read + ahead is a simple one line change this commit does that and fixes + the issue. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427644 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24711 #close + Reported by: Jared Biel + ........ -2014-11-08 18:38 +0000 [f4392c4b6d] Xavier Hienne (License 6657) + Merged revisions 431384 from http://svn.asterisk.org/svn/asterisk/branches/11 - * channels/chan_mgcp: Fix regression which causes gateways to be skipped - In r227276, a while loop was turned into a for loop. Unfortunately, a portion - of the while loop was left in the code such that, when a static gateway is - encountered in the list of MGCP gateways, the next gateway would be skipped. - At best, we would simply flip past a gateway; at worst, this could lead to a - crash. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431385 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24500 #close - Reported by: Xavier Hienne - patches: - chan_mgcp.patch uploaded by Xavier Hienne (License 6657) - ........ +2015-01-28 11:37 +0000 [8c068fc096] Mark Michelson - Merged revisions 427613 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Fix file descriptor leak in RTP code. - Merged revisions 427614 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + SIP requests that offered codecs incompatible with configured values + could result in the allocation of RTP and RTCP ports that would not get + reclaimed later. - Merged revisions 427615 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24666 #close + Reported by Y Ateya + Review: https://reviewboard.asterisk.org/r/4323 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427616 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + AST-2015-001 + ........ -2014-11-08 18:26 +0000 [d773f9d03e] Dmitriy Bubnov (License 6651),Dmitry Bubnov (License 6651) + Merged revisions 431300 from http://svn.asterisk.org/svn/asterisk/branches/12 - * addons/chan_mobile: Increase buffer size of UCS2 encoded SMS messages - When UCS2 character encoding is used, one symbol in national language can be - expanded to 4 bytes. The current buffer used for receiving message in - do_monitor_phone is 256 bytes, which is not large enough for incoming messages. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431303 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - For example: - * AT+CMGR phone response prefix - '+CMGR: "REC UNREAD","+7**********",,"14/10/29,13:31:39+12"\r\n' - 60 bytes - * SMS body with UCS2 encoding (max) - 280 bytes - * AT+CMGR phone response suffix '\r\n\r\nOK\r\n' - 8 bytes - * Terminating null character - 1 byte +2015-01-28 11:34 +0000 [25a67d561c] Mark Michelson - This results in a needed buffer size of 349 bytes. Hence, this patch opts for a - 350 byte buffer. + * Multiple revisions 431297-431298 - ASTERISK-24468 #close - Reported by: Dmitriy Bubnov - patches: - chan_mobile-1_8.diff uploaded by Dmitriy Bubnov (License 6651) - chan_mobile-trunk.diff uploaded by Dmitry Bubnov (License 6651) ........ - - Merged revisions 427607 from http://svn.asterisk.org/svn/asterisk/branches/11 + r431297 | mmichelson | 2015-01-28 11:05:26 -0600 (Wed, 28 Jan 2015) | 17 lines + + Mitigate possible HTTP injection attacks using CURL() function in Asterisk. + + CVE-2014-8150 disclosed a vulnerability in libcURL where HTTP request injection + can be performed given properly-crafted URLs. + + Since Asterisk makes use of libcURL, and it is possible that users of Asterisk may + get cURL URLs from user input or remote sources, we have made a patch to Asterisk + to prevent such HTTP injection attacks from originating from Asterisk. + + ASTERISK-24676 #close + Reported by Matt Jordan + + Review: https://reviewboard.asterisk.org/r/4364 + + AST-2015-002 ........ - - Merged revisions 427610 from http://svn.asterisk.org/svn/asterisk/branches/12 + r431298 | mmichelson | 2015-01-28 11:12:49 -0600 (Wed, 28 Jan 2015) | 3 lines + + Fix compilation error from previous patch. ........ - Merged revisions 427611 from http://svn.asterisk.org/svn/asterisk/branches/13 - + Merged revisions 431297-431298 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427612 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 431299 from http://svn.asterisk.org/svn/asterisk/branches/12 -2014-11-08 18:14 +0000 [08d773532b] abelbeck (License 5903) - * app_voicemail: Fix enhancement that allowed multiple recipients in To: header + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431301 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - An issue existed in r420577, which added multiple recipients to voicemail - emails. The patch, when looking at the intended recipients, looked ahead for - the '|' character inside a while loop which already had pulled out the - appropriate field parsing on the '|' character. This would cause it to skip - the recipients. +2015-01-28 06:18 +0000 [c3add776af] Sean Bright - This patch fixes it such that it relies completely on the while loop to parse - through the e-mail fields. + * media formats: update res_format_attr_opus & silk - Note that the original author of the patch looked at this fix and approved it. + In r419044, we changed how formats were handled, but the return value + of the format_parse_sdp_fmtp functions in res_format_attr_opus and + res_format_attr_silk were not updated, causing calls to fail. Ran + into this when getting codec_opus working with Asterisk 13. - ASTERISK-24250 #close - Reported by: abelbeck - patches: - voicemail-420577-to-comma-fix.diff uploaded by abelbeck (License 5903) - ........ + Once the return value was corrected, we were crashing in opus_getjoint + because of NULL format attributes. I've fixed this as well in this + patch. - Merged revisions 427585 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4371/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427586 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431267 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-08 18:04 +0000 [9a1ab5d548] Matt Jordan +2015-01-27 22:09 +0000 [88fbe4e917] Richard Mudgett - * bridge_native_rtp: Fix T.38 issues with remote bridges + * res_pjsip_outbound_registration: Fix reload race condition. - After r425242 the fax/sip/directmedia_reinvite_t38 test started failing due to - the surviving channel not being re-INVITEd back from T.38 to audio. This patch - fixes that bug - a deeper explanation of what happened follows. + Performing a CLI "module reload" command when there are new pjsip.conf + registration objects defined frequently failed to load them correctly. - When two RTP channels are in a native bridge, the bridging layer will - investigate each via the get_rtp_info glue callback. This callback returns the - native bridge preference of the channel *at that moment in time* (that part is - key). At different points during the bridging, the native bridging layer will - inform the RTP capable channels of the status of the bridge via the update_peer - glue callback. + What happens is a race condition between res_pjsip pushing its reload into + an asynchronous task processor task and the thread that does the rest of + the reloads when it gets to reloading the res_pjsip_outbound_registration + module. A similar race condition happens between a reload and the CLI/AMI + show registrations commands. The reload updates the current_states + container and the CLI/AMI commands call get_registrations() which builds a + new current_states container. - In a T.38 scenario with audio direct media, the sequence of events will often - look like the following: - * SIP/A and SIP/B both have audio and enter a native bridge. - * Asterisk re-INVITEs audio between SIP/A and SIP/B directly (via an - update_peer callback). - * SIP/A sends a re-INVITE to T.38, which causes Asterisk to send a re-INVITE - to T.38 to SIP/B. Assuming everyone 200 OKs the process, the UDPTL stack - receives UDPTL packets in Asterisk from both endpoints. From the perspective - of the channels, we are now in a local bridge for T.38, even though we are - technically still in a remote bridge in bridge_native_rtp. (YAY!) - * When one side hangs up, bridge_native_rtp is told to stop bridging. It then - re-evaluates the channels and asks them how they are bridged - and since - T.38 is enabled, they reply with a Local bridge (which is correct), but is - wrong because the audio portion is still technically in a remote bridge. - * Asterisk releases the surviving channel, whose audio is *not* re-INVITED - back to Asterisk as bridge_native_rtp incorrectly assumes that it was in a - local bridge. + * Made res_pjsip.c reload_module() use ast_sip_push_task_synchronous() + instead of ast_sip_push_task() to eliminate two threads processing config + reloads at the same time. - Ironically, prior to r425242, this used to work mostly due to a fluke in the - bridging layer. + * Made get_registrations() not replace the global current_states container + so the CLI/AMI show registrations command cannot interfere with reloading. + You could never add/remove objects in the container without the + possibility of the container being replaced out from under you by + get_registrations(). - The purpose of the get_rtp_info callback shouldn't be modified: it should tell - the bridging layer what kind of bridge the channel prefers at that moment in - time. If you have T.38 enabled, that *must* be a local bridge, as the UDPTPL - stack must be in the media path. As such, this patch does not modify that - part of the code. + * Added a registration loaded sorcery instance observer to purge any dead + registration objects since get_registrations() cannot do this job anymore. + The struct ast_sorcery_instance_observer callbacks must be used because + the callback happens inline with the load process. The struct + ast_sorcery_observer callbacks are pushed to a different thread. - However, we have to tell the channels to re-evaluate themselves when they come - out of a native bridge, since we can no longer trust the get_rtp_info callbacks - when the native bridge is being stopped. Something else may have changed in the - channels, and they may now be lying to us. As such, this patch makes it so that - we unilaterally tell the channels that they are no longer bridged via the - update_peer callback. This is actually what the channels expect anyway: code in - both chan_sip and chan_pjsip's callbacks look at the T.38 state and - if they - were in T.38 - send a re-INVITE to get the audio back to Asterisk. + * Added some global current_states NULL pointer checks in case the + container disappears because of unload_module(). - Review: https://reviewboard.asterisk.org/r/4157/ - ........ + * Made sorcery's struct ast_sorcery_instance_observer.object_type_loaded + callbacks guaranteed to be called before any struct + ast_sorcery_observer.loaded callbacks will be called. - Merged revisions 427582 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Moved the check for non-reloadable objects to before the sorcery + instance loading callbacks happen to short circuit unnecessary work. + Previously with non-reloadable objects, the sorcery instance + loading/loaded callbacks would always happen, the individual wizard + loading/loaded would be prevented, and the non-reloadable type logging + message would be logged for each associated wizard. - Merged revisions 427583 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24729 #close + Review: https://reviewboard.asterisk.org/r/4381/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427584 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431243 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-08 12:20 +0000 [d4fd0774f4] Corey Farrell +2015-01-27 16:56 +0000 [61822e78ae] Kevin Harwell - * chan_console: Fix reference leaks to pvt. + * tcptls: Bad file descriptor error when reloading chan_sip - Fix a bunch of calls to get_active_pvt - where the reference is never released. + While running through some scenarios using chan_sip and tcp a problem would + occur that resulted in a flood of bad file descriptor messages on the cli: - ASTERISK-24504 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4152/ - ........ + tcptls.c:712 ast_tcptls_server_root: Accept failed: Bad file descriptor - Merged revisions 427554 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + The message is received because the underlying socket has been closed, so is + valid. This is probably happening because unloading of chan_sip is not atomic. + That however is outside the scope of this patch. This patch simply stops the + logging of multiple occurrences of that message. - Merged revisions 427555 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24728 #close + Reported by: Thomas Thompson + Review: https://reviewboard.asterisk.org/r/4380/ ........ - Merged revisions 427557 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 431218 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427566 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431219 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-06 13:26 +0000 [7571bae5ab] Richard Mudgett +2015-01-27 13:21 +0000 [e2b493b8f0] Kevin Harwell - * app_agent_pool: Made agent alert interruptable by DTMF. + * chan_sip: stale nonce causes failure - Made agent able to interrupt the alerting beep playback with DTMF. Any - digit can interrupt if the call does not need to be acknowledged. Only - the first digit of the acknowledgement can interrupt if the call needs to - be acknowledged. The agent interrupting the alerting playback builds on - the ASTERISK-24447 patch because it knows what digit interrupted the - playback and needs to be able to pass that digit to the DTMF hook digit - collection code. + When refreshing (with a small expiration) a registration that was sent to + chan_sip the nonce would be considered stale and reject the registration. + What was happening was that the initial registration's "dialog" still existed + in the dialogs container and upon refresh the dialog match algorithm would + choose that as the "dialog" instead of the newly created one. This occurred + because the algorithm did not check to see if the from tag matched if + authentication info was available after the 401. So, it ended up assuming + the original "dialog" was a match and stopped the search. The old "dialog" + of course had an old nonce, thus the stale nonce message. - ASTERISK-24257 #close - Reported by: Steve Pitts + This fix attempts to leave the original functionality alone except in the case + of a REGISTER. If a REGISTER is received if searches for an existing "dialog" + matching only on the callid. If the expires value is low enough it will reuse + dialog that is there, otherwise it will create a new one. - Review: https://reviewboard.asterisk.org/r/4123/ + ASTERISK-24715 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4367/ ........ - Merged revisions 427508 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 431187 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 427512 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431194 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427519 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-27 13:08 +0000 [9e3d316dd1] Corey Farrell (license 5909) -2014-11-06 13:12 +0000 [a68baad74f] Richard Mudgett + * res_pjsip: make it unloadable (take 2) - * Bridge DTMF hooks: Made audio pass from the bridge while waiting for more matching digits. + Due to the original patch causing memory corruptions it was removed until the + problem could be resolved. This patch is the original patch plus some added + locking around stasis router subcription that was needed to avoid the memory + corruption. - * Made collecting DTMF digits for the DTMF feature hooks pass frames from - the bridge. + Description of the original problem and patch (still applicable): - * Made collecting DTMF digits possible by other bridge hooks if there is a - need. + The res_pjsip module was previously unloadable. With this patch it can now + be unloaded. - ASTERISK-24447 #close - Reported by: Richard Mudgett + This patch is based off the original patch on the issue (listed below) by Corey + Farrell with a few modifications. Namely, removed a few changes not required to + make the module unloadable and also fixed a bug that would cause asterisk to + crash on unloading. - Review: https://reviewboard.asterisk.org/r/4123/ - ........ + This patch is the first step (should hopefully be followed by another/others at + some point) in allowing res_pjsip and the modules that depend on it to be + unloadable. At this time, res_pjsip and some of the modules that depend on + res_pjsip cannot be unloaded without causing problems of some sort. - Merged revisions 427493 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The goal of this patch is to get res_pjsip and only res_pjsip to be able to + unload successfully and/or shutdown without incident (crashes, leaks, etc...). + Other dependent modules may still cause problems on unload. - Merged revisions 427494 from http://svn.asterisk.org/svn/asterisk/branches/13 + Basically made sure, with the patch applied, that res_pjsip (with no other + dependent modules loaded) could be succesfully unloaded and Asterisk could + shutdown without any leaks or crashes that pertained directly to res_pjsip. + + ASTERISK-24485 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4363/ + patches: + pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427495 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431179 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-06 12:21 +0000 [47074f4bfd] Joshua Colp +2015-01-27 11:36 +0000 [eda125f98d] Richard Mudgett - * res_pjsip: Ensure in-dialog responses have an endpoint associated. + * app_confbridge: Repeatedly starting and stopping recording ref leaks the recording channel. - When handling incoming messages we determine if it is associated with - a dialog. If so we use that to determine what serializer and endpoint - to use for the message. Previously this would pass the endpoint to the - endpoint lookup module to actually place the endpoint completely on the - message. For in-dialog responses, however, this did not occur as - dialog processing took over and the endpoint lookup did not occur. + Starting and stopping conference recording more than once causes the + recording channels to be leaked. For v13 the channels also show up in the + CLI "core show channels" output. - This change just places the endpoint in the expected spot immediately - instead of relying on the endpoint lookup module. In-dialog responses - thus have the expected endpoint. + * Reworked and simplified the recording channel code to use + ast_bridge_impart() instead of managing the recording thread in the + ConfBridge code. The recording channel's ref handling easily falls into + place and other off nominal code paths get handled better as a result. - AST-1459 #close + ASTERISK-24719 #close + Reported by: John Bigelow - Review: https://reviewboard.asterisk.org/r/4146/ + Review: https://reviewboard.asterisk.org/r/4368/ + Review: https://reviewboard.asterisk.org/r/4369/ ........ - Merged revisions 427490 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 431135 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 427491 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431160 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427492 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-27 11:32 +0000 [b64f4bb6ee] Joshua Colp -2014-11-06 06:15 +0000 [4d80f223af] Corey Farrell + * bridge / res_pjsip_sdp_rtp: Fix issues with media not being reinvited during direct media. - * main/file.c: fix possible extra ast_module_unref to format modules. + This change fixes two issues: - fn_wrapper only adds a reference to the format's module if the file - was able to be opened. If not this causes an unmatched - ast_module_unref in filestream_destructor. Move ast_module_ref to - get_stream. + 1. During a swap operation bridging added the new channel before having the swap channel + leave. This was not handled in bridge_native_rtp and could result in a channel not getting + reinvited back to Asterisk. After this change the swap channel will leave first and the + new channel will then join. - ASTERISK-24492 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4149/ - ........ + 2. If a re-invite was received after a session had been established any upstream elements + (such as bridge_native_rtp) were not notified that they may want to re-evaluate things. + After this change an UPDATE_RTP_PEER control frame is queued when this situation occurs + and upstream can react. - Merged revisions 427464 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + AST-1524 #close - Merged revisions 427465 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4378/ - Merged revisions 427466 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431157 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427467 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-27 11:22 +0000 [a620b287bd] Jonathan Rose -2014-11-06 03:24 +0000 [c46664305a] Corey Farrell + * Manager: Fix Manager Action ModuleLoad to give correct response when reloading - * res_hep: fix major leak that occurs when config is missing or enabled=no. + Prior to this patch, ModuleLoad would respond with an error indicating that + the requested module wasn't found in spite of finding and reloading the + module. - Add missing unreference in hepv3_send_packet. + Review: https://reviewboard.asterisk.org/r/4373/ + ASTERISK-24721 #close - ASTERISK-24491 #close - Reported by: Zane Conkle - Tested by: Zane Conkle - Review: https://reviewboard.asterisk.org/r/4150/ - ........ - Merged revisions 427400 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431153 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427405 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-27 11:20 +0000 [7f9b28b0c6] Matt Jordan + * ARI: Improve wiki documentation - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427408 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch improves the documentation of ARI on the wiki. Specifically, it + addresses the following: + * Allowed values and allowed ranges weren't documented. This was particularly + frustrating, as Asterisk would reject query parameters with disallowed values + - but we didn't tell anyone what the allowed values were. + * The /play/id operation on /channels and /bridges failed to document all of + the added media resource types. + * Documentation for creating a channel into a Stasis application failed to + note when it occurred, and that creating a channel into Stasis conflicts with + creating a channel into the dialplan. + * Some other minor tweaks in the mustache templates, including italicizing the + parameter type, putting the default value on its own sub-bullet, and some + other nicities. -2014-11-06 03:18 +0000 [7e2369310c] Corey Farrell + Review: https://reviewboard.asterisk.org/r/4351 - * Fix unintential memory retention in stringfields. - * Fix missing / unreachable calls to __ast_string_field_release_active. - * Reset pool->used to zero when the current pool->active reaches zero. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431145 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24307 #close - Reported by: Etienne Lessard - Tested by: ibercom, Etienne Lessard - Review: https://reviewboard.asterisk.org/r/4114/ - ........ +2015-01-27 11:10 +0000 [1a17693789] Matt Jordan - Merged revisions 427380 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * app_confbridge: Restore user's menu name to CLI output of 'confbridge list' - Merged revisions 427381 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + When issuing a 'confbridge list XXXX' CLI command, the resulting output no + longer displays the menu associated with a ConfBridge participant. - Merged revisions 427382 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The issue was caused by ASTERISK-22760. When that patch was done, it removed + the copying of the menu name associated with the user from the actual user + profile. - Merged revisions 427384 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch fixes the issue by copying the menu name over to the user profile + when the menu hooks are applied to the user. Since that function now does a + little bit more than just apply the hooks, the name of the function has been + changed to cover the copying of the menu name over as well. + In addition, there is a disparity between the menu name length as it is stored + on the conf_menu structure and the confbridge_user structure; this patch makes + the lengths match so that a strcpy can be used. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427388 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4372/ -2014-11-05 20:41 +0000 [362dde2229] gtjoseph + ASTERISK-24723 #close + Reported by: Steve Pitts - * test_strings: Remove string tests that exercise asserts. - Since unit tests are run with DO_CRASH, those tests were causing - the test to fail. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431134 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Tested-by: George Joseph - ........ +2015-01-27 05:47 +0000 [ceedd40370] Joshua Colp - Merged revisions 427354 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_parking: Fix crash due to race condition when unloading. - Merged revisions 427355 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + There is currently a race condition when unloading the res_parking + module. Depending on the will of the universe the subscription + invocation may occur AFTER the module is unloaded. This is because + the module does NOT use stasis_unsubscribe_and_join when terminating + the subscription. It merely uses stasis_unsubscribe. - Merged revisions 427356 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change makes it use stasis_unsubscribe_and_join which is documented + for usage in this exact scenario. + AST-1520 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427357 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4375/ -2014-11-05 13:53 +0000 [69f29e627f] Mark Michelson - * Make the disable_tcp_switch PJSIP system object enabled by default. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431114 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Testing has shown repeatedly that PJSIP's default behavior of switching - automatically to TCP for large messages can cause issues. The most common - issues are that devices that we are communicating with do not handle the - switch to TCP gracefully, thus causing situations such as broken calls or - broken subscriptions. Now, in order to have this behavior happen, you must - opt into it. The sample file has been updated to warn that enabling the - TCP switch behavior may cause issues for you, so use at your own risk. - ........ +2015-01-26 08:49 +0000 [702d79de2a] David M. Lee - Merged revisions 427334 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Various fixes for OS X + This patch addresses compilation errors on OS X. It's been a while, so + there's quite a few things. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427335 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fixed __attribute__ decls in route.h to be portable. + * Fixed htonll and ntohll to work when they are defined as macros. + * Replaced sem_t usage with our ast_sem wrapper. + * Added ast_sem_timedwait to our ast_sem wrapper. + * Fixed some GCC 4.9 warnings using sig*set() functions. + * Fixed some format strings for portability. + * Fixed compilation issues with res_timing_kqueue (although tests still fail + on OS X). + * Fixed menuconfig /sbin/launchd detection, which disables res_timing_kqueue + on OS X). -2014-11-05 06:19 +0000 [b06078880b] Joshua Colp + ASTERISK-24539 #close + Reported by: George Joseph - * res_pjsip_multihomed: Add logging during startup to aid debugging if local DNS is misbehaving. + ASTERISK-24544 #close + Reported by: George Joseph - This change adds a bit of logging so if the local DNS is misbehaving it is easier - to track down what is going on and where Asterisk may be hanging. + Review: https://reviewboard.asterisk.org/r/4327/ - ASTERISK-24438 #close - Reported by: Melissa Shepherd - Review: https://reviewboard.asterisk.org/r/4148/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427300 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-25 07:42 +0000 [1fc823c770] Matt Jordan - Merged revisions 427303 from http://svn.asterisk.org/svn/asterisk/branches/13 + * dynamic realtime: Updates fail to work due to update fields being passed over + When a crash was fixed due to usage of the REALTIME function in r423003, a + regression was introduced into ast_update2_realtime where the update fields + passed to the function would be skipped and the lookup field processed twice. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427306 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The use of this function is a bit interesting: A variable argument list is + used with two sentinel values - the first marks the end of the lookup + fields/values; the second marks the end of the update fields/values. + Unfortunately, ast_update2_realtime parses over the lookup fields twice, as + opposed to parsing over the update fields. This causes the lookups to succeed, + but the updates itself to have no effect. -2014-11-04 18:17 +0000 [d5de94201e] gtjoseph + Note that the most common instance of this problem occurred in app_voicemail + during the updating of a mailbox password. - * config: Make text_file_save and 'dialplan save' escape semicolons in values. + Thanks to the issue reporter, Paddy Grice, for pointing out the problem. - When a config file is read, an unescaped semicolon signals comments which are - stripped from the value before it's stored. Escaped semicolons are then - unescaped and become part of the value. Both of these behaviors are normal - and expected. When the config is serialized either by 'dialplan save' or - AMI/UpdateConfig however, the now unescaped semicolons are written as-is. - If you actually reload the file just saved, the unescaped semicolons are - now treated as start of comments. + Review: https://reviewboard.asterisk.org/r/4356/ - Since true comments are stripped on read, any semicolons in - ast_variable.value must have been escaped originally. This patch - re-escapes semicolons in ast_variable.values before they're written to - file either by 'dialplan save' or config/ast_config_text_file_save which - is called by AMI/UpdateConfig. I also fixed a few pre-existing formatting - issues nearby in pbx_config.c + ASTERISK-24231 - Tested-by: George Joseph - ASTERISK-20127 #close + ASTERISK-24626 #close + Reported by: Paddy Grice - Review: https://reviewboard.asterisk.org/r/4132/ - ........ - Merged revisions 427275 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 427276 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431072 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-23 14:13 +0000 [e302116e40] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427277 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * app_confbridge: Make CBRec channel names more unique. -2014-11-04 16:51 +0000 [c77a71ad2f] Joshua Colp + Channel names should be different from other channels in the system while + the channel exists. - * res_pjsip: Apply the 'user_eq_phone' setting to the To header as well. + * Use a sequence number for CBRec channels instead of a random number + because the same random number could be picked again for the next CBRec + channel. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427259 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431052 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-04 16:31 +0000 [5e43d68717] Joshua Colp +2015-01-23 13:44 +0000 [f8b3fb6e2f] Richard Mudgett - * res_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled. + * app_confbridge: Whitespace + Because there is sometimes no sence to any whitespace. + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427257 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 431049 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-11-04 14:49 +0000 [bd42a09d7f] gtjoseph - * config: BUG: Restore ability for non-templ to be used as base objs in config. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431050 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - My recent refactor of config.c accidentally removed the capability for an - object to inherit from a non-template object. +2015-01-23 11:08 +0000 [197265438e] David M. Lee - This patch restores the capability to inherit from both template and - non-template objects. + * Add depend on pjproject to res_pjsip_config_wizard.c - Tested-by: George Joseph - Reported-by: Scott Griepentrog - ASTERISK-24487 #close - Review: https://reviewboard.asterisk.org/r/4147/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431030 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427227 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-23 09:12 +0000 [630eea087d] Kevin Harwell - Merged revisions 427228 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Investigate and fix memory leaks in Asterisk + Fixed memory leaks that were found in Asterisk. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427229 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24693 #close + Reported by: Kevin Harwell + Review: https://reviewboard.asterisk.org/r/4347/ -2014-11-04 13:46 +0000 [97e1c7f3a9] Corey Farrell - * func_talkdetect: Fix stasis message leak in audiohook callback. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430999 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24482 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4142/ - ........ +2015-01-23 09:03 +0000 [e23f07beb8] Walter Doekes - Merged revisions 427203 from http://svn.asterisk.org/svn/asterisk/branches/12 + * Fix typo's (retrieve, specified, address). ........ - Merged revisions 427204 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 430996 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427205 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430998 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-04 13:33 +0000 [9f2874639d] Corey Farrell +2015-01-23 08:38 +0000 [9210648bbe] HZMI8gkCvPpom0tM (License 6658) - * res_http_websockets: Fix extra unref of module + * chan_sip: Case insensitive comparison of "defaultuser" parameter. - In websocket_add_protocol_internal is used to add the "echo" - protocol, but ast_websocket_remove_protocol is used to remove - it. This causes an extra call to ast_module_unref. + All the other configuration options are case insensitive, so this one + should be too. - ASTERISK-24480 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4140/ + ASTERISK-24355 #close + Reported by: HZMI8gkCvPpom0tM + patches: + ast.patch uploaded by HZMI8gkCvPpom0tM (License 6658) ........ - Merged revisions 427200 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 430993 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 427201 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430994 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427202 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-22 13:24 +0000 [355eb9d22f] Richard Mudgett -2014-11-04 08:11 +0000 [bdc35c77b9] Corey Farrell + * Bridge core: Pass a ref with the swap channel when joining a bridge. - * Fix crash caused by merge error on review 4138 + When code imparts a channel into a bridge to swap with another channel, a + ref needs to be held on the swap channel to ensure that it cannot + dissapear before finding it in the bridge. - When merging from 12 to 13 there were conflicts, - I mistakenly had the loop run ast_closestream(others[0]) - when it should be ast_closestream(others[x]). - ........ + * The ast_bridge_join() swap channel parameter now always steals a ref for + the swap channel. This is the only change to the bridge framework's + public API semantics. - Merged revisions 427181 from http://svn.asterisk.org/svn/asterisk/branches/13 + * bridge_channel_internal_join() now requires the bridge_channel->swap + channel to pass in a ref. + ASTERISK-24649 + Reported by: John Bigelow - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427182 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4354/ -2014-11-04 06:03 +0000 [d159885e50] Joshua Colp - * res_pjsip_outbound_registration: Add virtual line support. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430975 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Virtual line support establishes a relationship between messages - related to an outbound registration and a local endpoint. This is - accomplished by attaching a parameter to the Contact of the outbound - registration and looking for it on any received requests. If the - parameter exists and can be matched to an outbound registration - the configured endpoint is associated with the request. +2015-01-22 13:13 +0000 [c73b4b2a46] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/2964/ + * res_pjsip_outbound_registration.c: Minor code cleanup. + * Add an allocation failure check and assert in + sip_outbound_registration_response_cb(). - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427165 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Made sip_outbound_registration_state_destroy() handle partially created + state objects from sip_outbound_registration_state_alloc(). -2014-11-03 12:22 +0000 [33f0251b6c] Richard Mudgett + Review: https://reviewboard.asterisk.org/r/4366/ - * res_pjsip: Add disable_tcp_switch option. - When a packet exceeds the MTU, pjproject will switch from UDP to TCP. In - some circumstances (on some networks), this can cause some issues with - messages not getting sent to the correct destination - and can also cause - connections to get dropped due to quirks in pjproject deciding to - terminate TCP connections with no messages. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430957 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - While fixing the routing/messaging issues is important, having a - configuration option in Asterisk that tells pjproject to not switch over - to TCP would be useful. That way, if some glitch is discovered on some - other network/site, we can at least disable the behavior until a fix is - put into place. +2015-01-22 12:09 +0000 [bdfdb01bcf] Scott Griepentrog - AFS-197 #close + * stasis transfer: fix a race condition on stasis bridge push - Review: https://reviewboard.asterisk.org/r/4137/ - ........ + After a bridge transfer completes where a local replacement + channel is used, a stasis transfer message with the details + of the transfer is sent. This is processed by stasis which + then sets the stasis app name and replaced channel snapshot + on the replacement channel. - Merged revisions 427129 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + However, since a separate thread was already started to run + stasis on the new replacement channel, a race was on to see + if the message processing would be completed before the app + name was needed, otherwise the channel would be hung up. - Merged revisions 427130 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change moves the calls used to set the stasis app name + and the replace snapshot to the bridge_stasis_push function + callback from the bridge transfer logic, allowing the steps + to be completed earlier and more deterministically, and the + race elimianted. + NOTE: the swap channel parameter to bridge_stasis_push (and + thus all bridge push callbacks) must always be present when + performing a swap with another channel. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427137 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24649 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4341/ -2014-11-03 09:03 +0000 [b9aeff9580] Joshua Colp - * chan_pjsip: Update CHANGES file to include 'moh_passthrough' setting + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430939 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427113 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-22 08:23 +0000 [beb20440e0] Gareth Palmer (License 5169) -2014-11-03 08:45 +0000 [ac091d4184] Joshua Colp + * apps/app_voicemail: Trigger MWI notification with MixMonitor m() option - * chan_pjsip: Add support for passing hold and unhold requests through. + The MixMonitor m() option allows a recording to be pushed to a specific + voicemail mailbox. If the message is delivered to the mailbox's INBOX, however, + no MWI notification is currently raised. - This change adds an option, moh_passthrough, that when enabled will pass - hold and unhold requests through using a SIP re-invite. When placing on - hold a re-invite with sendonly will be sent and when taking off hold a - re-invite with sendrecv will be sent. This allows remote servers to handle - the musiconhold instead of the local Asterisk instance being responsible. + This patch corrects the issue by properly calling notify_new_state from the + msg_create_from_file function. This will cause MWI to be triggered if the + message was placed in the mailbox's INBOX. - Review: https://reviewboard.asterisk.org/r/4103/ + ASTERISK-24709 #close + Reported by: Gareth Palmer + patches: + app_voicemail-430919.patch uploaded by Gareth Palmer (License 5169) + ........ + Merged revisions 430920 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427112 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-11-02 20:36 +0000 [285be15aaf] Corey Farrell + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430921 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Fix compile error caused by review 4138 +2015-01-21 15:53 +0000 [5e10007dbd] Richard Mudgett - There is no procedure called ast_closeframe, fix code to use - ast_closestream. + * res_pjsip_outbound_registration.c: Move unref to a better place. - Reported By: Matt Jordan - ........ + Move an unconditional unref of client_state so it doesn't look like it + could be used after the last ref has destroyed it. - Merged revisions 427087 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 427088 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430902 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427089 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-21 07:33 +0000 [74a13629e2] Matt Jordan + * channels/chan_sip: Fix registration leak during reload - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427090 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When the SIP registrations were migrated to using ao2 in what was then trunk, + the explicit destruction of the registrations on module reload was removed and + not replaced with an ao2 equivalent. Debugging done by Stefan Engström, the + issue reporter, on ASTERISK-24673 confirmed that the reference in the + registry_list container was being leaked. -2014-11-02 02:13 +0000 [509c04ef38] Corey Farrell + Since the purpose of cleanup_all_regs is to prep a registration for + destruction, this function now calls an ao2_callback function callback with the + OBJ_MULTIPLE | OBJ_NODATA | OBJ_UNLINK flags used to remove the registrations. + This cleans up each registration, and also removes it from the registration + container registry_list. - * Fix ast_writestream leaks + Review: https://reviewboard.asterisk.org/r/4355/ - Fix cleanup in __ast_play_and_record where others[x] may be leaked. - This was caught where prepend != NULL && outmsg != NULL, once - realfile[x] == NULL any further others[x] would be leaked. A cleanup - block was also added for prepend != NULL && outmsg == NULL. + ASTERISK-24640 #close + Reported by: Max Man - 11+: Fix leak of ast_writestream recording_fs in - app_voicemail:leave_voicemail. + ASTERISK-24673 #close + Reported by: Stefan Engström + Tested by: Stefan Engström - ASTERISK-24476 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4138/ - ........ - Merged revisions 427023 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ - Merged revisions 427024 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430864 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 427025 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-21 07:27 +0000 [452f0eeb57] Matt Jordan - Merged revisions 427026 from http://svn.asterisk.org/svn/asterisk/branches/13 + * AMI: Add documentation for the missing Cdr/CEL events. + + This patch adds AMI event documentation for the Cdr and CEL AMI events. + Note that while these events do share fields with each other and with other + channel related events, they do not contain all of the fields in a standard + channel snapshot, nor is the description of the fields identical. As such, + the patch opts for documentation for each field, for each event. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427027 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4350/ -2014-11-02 01:40 +0000 [85c1822a9d] Corey Farrell + ASTERISK-24671 #close + Reported by: Dan Jenkins - * func_jitterbuffer: fix frame leaks. - Fix code paths where it is possible for frames to leak. - Fix uninitialized variable in jb_get_fixed and jb_get_adaptive. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430862 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-22409 #related - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4128/ - ........ +2015-01-21 07:10 +0000 [894d4d781c] Matt Jordan - Merged revisions 427019 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * apps/app_dial: Don't publish DialEnd twice on unexpected GoSub/Macro values - Merged revisions 427020 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The Dial application has some interesting options with the mid-call Macro (M) + and GoSub (U) options. If the MACRO_RESULT/GOSUB_RESULT returns specific + values, the Dial application will take some action upon the channels involved + in the dial operation (such as hanging up a particular party, etc.) The Dial + application ensures that a Stasis message is published in the event that + MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial operation, so + that there is a corresponding DialEnd event published in AMI/ARI for the + DialBegin event that preceeded it. - Merged revisions 427021 from http://svn.asterisk.org/svn/asterisk/branches/13 + A bug exists where that same DialEnd event will be published on Stasis even if + the value returned in MACRO_RESULT/GOSUB_RESULT is not one that the Dial + application cares about. This causes two DialEnd events to be published - one + with the MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is all + sorts of wrong. + This patch fixes the bug by ensuring that we only publish a DialEnd message to + Stasis if the Dial application's mid-call Macro/GoSub returns something that + Dial cares about. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@427022 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4336 -2014-11-01 20:01 +0000 [5db1c978e3] Matt Jordan + ASTERISK-24682 #close + Reported by: Matt Jordan - * res/res_stasis: Fix crash on module unload while performing operation - When the res_stasis module is unloaded, it will dispose of the apps_registry - container. This is a problem if an ARI operation is in flight that attempts - to use the registry, as the shutdown occurs in a separate thread. This patch - adds some sanity checks to the various routines that access the registry which - cause the operations to fail if the apps_registry does not exist. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430842 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Crash caught by the Asterisk Test Suite. - ........ +2015-01-21 06:56 +0000 [98c3983c89] Matt Jordan - Merged revisions 426995 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * main/rtp_engine: Format NTP timestamps as unsigned longs + + When the RTCP reports are created, the NTP timestamps are stored as strings, + as JSON does not have an integer type long enough to store the value. However, + on 32-bit systems, a signed long may overflow for some portion of the + timestamp. + + This patch corrects the overflow by formatting the timestamps as unsigned + longs. - Merged revisions 426996 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430840 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426997 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-20 10:51 +0000 [a7ba8a58a8] Ashley Sanders -2014-10-31 11:52 +0000 [4219c40775] Tzafrir Cohen + * ARI: Fixed crash that occurred when updating a bridge when the optional query parameter 'name' was not supplied. - * install init.d files on GNU/kFreeBSD + Prior to this changeset, posting to the: /ari/bridges/{bridgeId} endpoint without specifying a value for the [name] query parameter, would crash Asterisk if the bridge you are attempting to create (or update) had the same ID as an existing bridge. The internal mechanism of the POST operation interpreted a null value for name, thus resulting in an error condition that crashed Asterisk. - Review: https://reviewboard.asterisk.org/r/4118/ - ........ + ASTERISK-24560 #close + Reported By: Kinsey Moore - Merged revisions 426926 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Review: https://reviewboard.asterisk.org/r/4349/ - Merged revisions 426927 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 426933 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430818 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 426934 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-20 10:46 +0000 [6af6a216a1] Richard Mudgett + * CHANNEL(peer), chan_iax2, res_fax, SNMP agent: Fix deadlock from reaching across a bridge. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426935 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Calling ast_channel_bridge_peer() cannot be done while holding any channel + locks. The reported issue hit the deadlock in chan_iax2, but an audit of + the ast_channel_bridge_peer() calls found three more locations where the + same deadlock can occur. -2014-10-31 11:41 +0000 [28173ddf05] Scott Griepentrog + * Made CHANNEL(peer), res_fax, and the SNMP agent not call + ast_channel_bridge_peer() with any channel locked. For CHANNEL(peer) I + had to rework the logic to not hold the channel lock. - * pjsip: clarify tls cert and key file usage + * Made chan_iax2 no longer call ast_channel_bridge_peer(). It was done + for legacy reasons that no longer apply. - A question arose as to whether a .pem file - could be provided in place of the .crt and - .key files in a PJSIP TLS configuration. I - tested this and discovered that although a - cert will be read from the pem file, a key - will not, and thus the priv_key_file entry - is still required. This update to the fine - documentation clarifies the option usage. + * Removed the iax.conf forcejitterbuffer option. It is now always enabled + when the jitterbuffer option is enabled. If you put a jitter buffer on a + channel it will be on the channel. - AST-1448 #close - Review: https://reviewboard.asterisk.org/r/4129/ - Reported by: John Bigelow - ........ + ASTERISK-24600 #close + Reported by: Jeff Collell - Merged revisions 426928 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4342/ - Merged revisions 426930 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430817 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426932 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-19 20:39 +0000 [072db5e1b9] Ben Klang (License 5876) -2014-10-31 11:24 +0000 [f59db388a7] John Bigelow (License 5091) + * contrib/scripts/install_prereq: Don't install 32-bit packages on 64-bit hosts - * pjsip: Handle outbound unregister correctly + On Debian based systems, the install_prereq tool uses a search command on + Debian that results in selecting both 64-bit and 32-bit packages. Besides the + waste of disk space, this can actually cause aptitude use 100% of memory on a + VM with 1GB of RAM as it tried to work out all of the 32-bit package + dependencies. - This updates the status of the outbound registration - to reflect when it has been unregistered. Since the - registration is unregistered but is not stopped, the - registration schedule remains active as before. The - patch also updates the documentation of both the AMI - and CLI commands. + This patch filters out the 32-bit packages on a 64-bit machine, and leaves + 32-bit machines alone. - ASTERISK-24411 #close - Review: https://reviewboard.asterisk.org/r/4119/ - Reported by: John Bigelow + ASTERISK-24048 #close + Reported by: Ben Klang + Tested by: Ben Klang, Matt Jordan patches: - unregister-patch1.txt uploaded by John Bigelow (License 5091) - ........ - - Merged revisions 426923 from http://svn.asterisk.org/svn/asterisk/branches/12 + install_prereq_64-bit_compat.patch uploaded by Ben Klang (License 5876) ........ - Merged revisions 426924 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 430798 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426925 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430799 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-30 22:26 +0000 [d88282af40] Matt Jordan +2015-01-19 20:32 +0000 [e659b3e53d] LEI FU (License 6640) - * channels/sip/reqresp_parser: Fix unit tests for r426594 + * app_voicemail: Temp message left after review/hangup with ODBC/IMAP backend - When r426594 was made, it did not take into account a unit test that verified - that the function properly populated the unsupported buffer. The function - would previously memset the buffer if it detected it had any contents; since - this function can now be called iteratively on successive headers, the unit - tests would now fail. This patch updates the unit tests to reset the buffer - themselves between successive calls, and updates the documentation of the - function to note that this is now required. - ........ + When using ODBC or IMAP storage, temporary files created on the file system + must be disposed of using the DISPOSE macro. The DELETE macro will map to a + deletion function for the backend storage, but does not clean up any local + files created as a result of the operation. - Merged revisions 426858 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + When using voicemail with the operator and review options enabled, pressing + 0 to enter the menu, followed by 1 to save the message, followed by any + other DTMF press to delete the message, will result in the temporary file + lingering on the file system. - Merged revisions 426860 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This patch properly calls DISPOSE after the DELETE. This causes the local + file to be disposed of. - Merged revisions 426863 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24288 #close + Reported by: LEI FU + patches: + voicemail_odbc_review_fix.diff uploaded by LEI FU (License 6640) ........ - Merged revisions 426865 from http://svn.asterisk.org/svn/asterisk/branches/13 - + Merged revisions 430795 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-30 22:09 +0000 [bf684b63a3] Corey Farrell + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430796 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * REF_DEBUG: Install refcounter.py to $(ASTDATADIR)/scripts +2015-01-19 12:05 +0000 [ab5af1f3d8] Mark Michelson - This change ensures refcounter.py is installed to a place where it - can be found by the Asterisk testsuite if REF_DEBUG is enabled. + * Call extension state callbacks at hint creation. - ASTERISK-24432 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4094/ - ........ + When a hint gets created, any subsequent device or presence + state changes result in extension status events getting sent + out to interested parties. However, at the time of hint creation, + no such event gets sent out, so watchers of extension state are + potentially left in the dark until the first state change after + hint creation. - Merged revisions 426830 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Patch contributed by John Hardin (License #6512) - Merged revisions 426831 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 426832 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 426833 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430776 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-19 07:18 +0000 [643b81d98e] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426834 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions. -2014-10-30 18:56 +0000 [e4374a3abe] Corey Farrell + The first thing this patch fixes is UAS dialogs. Previously if a transport was + configured on an endpoint and an inbound session was created there was no guarantee + that requests sent on the dialog would use the correct transport and address + information. This has now been fixed so an explicitly configured transport + is taken into account. - * app_queue: fix a couple leaks to struct call_queue in set_member_value + The second thing this patch fixes is res_pjsip_multihomed. The res_pjsip_multihomed + module attempts to determine what transport a message should go out on and what + addressing information should go into the message itself. In a scenario where + multiple transports exist bound to the same IP address but a different port the + code would incorrectly alter the transport and change the message to the wrong + transport. This change makes the res_pjsip_multihomed module smarter so it will + only change the transport and address information in the message when it is + possible and makes sense. - set_member_value has a couple leaks to references in the variable q - found through testsuite tests/queues/set_penalty. Also remove the - REF_DEBUG_ONLY_QUEUES compiler declaration, this is no longer possible - with the updated REF_DEBUG code. + ASTERISK-24615 #close + Reported by: David Justl - ASTERISK-24466 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4125/ - ........ + Review: https://reviewboard.asterisk.org/r/4331/ - Merged revisions 426805 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 426806 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430755 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 426807 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-16 18:31 +0000 [34c220203f] Kevin Harwell + * REVERTING res_pjsip: make it unloadable - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426808 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Due to the original patch causing memory corruptions the patch is + being removed until the problem can be resolved. -2014-10-30 18:45 +0000 [ced81afff2] Corey Farrell - * audiohooks: Clean references to formats + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430734 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Cleanup references to in_translate[x].format and - out_translate[x].format in ast_audiohook_detach_list. +2015-01-16 16:13 +0000 [e257244bbb] Mark Michelson - ASTERISK-24465 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4124/ - ........ + * Change PJProject version requirement for ca_list_path transport option in CHANGES file. - Merged revisions 426803 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430716 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-30 16:14 +0000 [a537e314d1] Kevin Harwell +2015-01-16 16:12 +0000 [821c15ae53] Mark Michelson - * res_pjsip_exten_state: PJSIPShowSubscriptionsInbound causes crash + * Fix problem where a hung channel could occur on a failed blind transfer. - Currently, it is possible for some subscriptions to get into a NULL state. When - this occurs and the PJSIPShowSubscriptionsInbound ami action is issued and a - device is subscribed for extension state then the associated subscription state - object can't be located. The code then attempts to dereference a NULL object. - Added a NULL check to avoid the problem. + Different clients react differently to being told that a blind transfer + has failed. Some will simply send a BYE and be done with it. Others will + attempt to reinvite themselves back onto the call. - Reported by: John Bigelow - ........ + In the latter case, we were creating a new channel and then leaving it to + sit forever doing nothing. With this code change, that new channel will + not be created and the dialog with the transferring channel will be cleaned + up properly. - Merged revisions 426779 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24624 #close + Reported by Zane Conkle - Merged revisions 426780 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4339 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426781 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-30 12:18 +0000 [cd52456ea1] Kevin Harwell + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430714 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_pjsip: incorrect qualify statistics after disabling for contact +2015-01-16 11:45 +0000 [8bc4a89e1f] cloos (License #5956) - When removing the qualify_frequency from an AoR or a contact the statistics - shown when issuing "pjsip show aors" from the CLI are incorrect. This patch - deletes the contact's status object from sorcery, disassociating it from the - contact, if the qualify_freqency is removed from configuration. + * Add support for the ca_list_path option for PJSIP transports. - ASTERISK-24462 #close - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4116/ - ........ + This allows for a path to be specified that has a collection of CA + certificates in it. - Merged revisions 426755 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24575 #close + Reported by cloos + Patches: + pj-ca-path-trunk.diff uploaded by cloos (License #5956) - Merged revisions 426757 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4344 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426761 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-30 04:21 +0000 [5d8d90c402] Walter Doekes + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430709 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * app_voicemail: Fix unchecked bounds of myArray in IMAP_STORAGE. +2015-01-15 11:35 +0000 [fa80d9658d] Richard Mudgett - In update_messages_by_imapuser(), messages were appended to a finite - array which resulted in a crash when an IMAP mailbox contained more - than 256 entries. This memory is now dynamically increased as needed. + * res_fax.c, res_fax_spandsp.c: Remove redundant locking. - Observe that this patch adds a bunch of XXX's to questionable code. See - the review (url below) for more information. + When FAX was developed, apparently the faxregistry.container used to be a + linked list that was converted to an ao2 container. Some of the + replacement ao2 container operations still had explicit lock/unlocks + around them. - ASTERISK-24190 #close - Reported by: Nick Adams - Tested by: Nick Adams + Three off nominal code paths in res_fax.c and res_fax_spandsp.c unlock the + channel even though the routine did not lock the channel and other code + paths in the routine do not unlock the channel. - Review: https://reviewboard.asterisk.org/r/4126/ - ........ + Review: https://reviewboard.asterisk.org/r/4340/ - Merged revisions 426691 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ - Merged revisions 426692 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430687 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 426696 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-15 11:18 +0000 [6c426e86bd] Richard Mudgett - Merged revisions 426702 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_fax.c, res_fax_spandsp.c: Fix some curlies on the end of function definitions. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426706 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430685 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-30 01:15 +0000 [c866ced76b] Igor Goncharovskiy +2015-01-15 06:09 +0000 [c95391f23c] Joshua Colp - * - Add additional checks for NULL pointers to fix several crashes reported. + * res_pjsip_outbound_registration: Fix race condition when reloading and listing registrations. - ASTERISK-24304 #close - Reported by: dhanapathy sathya - ........ + Due to the split of outbound registration state from configuration it is possible during + a reload for a "pjsip show registrations" CLI command to be executed which gets an older + snapshot of the configuration. This configuration may include outbound registrations which + have been removed due to a reload operation occurring at the same time. The code for + printing the outbound registration did not take this into account but now it does. - Merged revisions 426666 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + AST-1506 #close - Merged revisions 426667 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4338/ - Merged revisions 426668 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430664 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426669 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-14 20:18 +0000 [f6630e2481] abelbeck (License 5903) -2014-10-29 20:59 +0000 [0ddc3bde24] Olle Johansson (License 5267) + * configure: If cross-compiling, assume we have working semaphores - * channels/chan_sip: Add improved support for 4xx error codes + The Asterisk 13 configure.ac checks for HAS_WORKING_SEMAPHORE but does not have + an option for cross-compiling so it fails with an exit. Since we're cross- + compiling, we can't exactly go looking for the header. The semaphore.h header + is relatively common: + * It's part of the POSIX standard + * It's part of GNU C Library + As such, we assume that it will be present when cross-compiling. - This patch adds support for 414, 493, 479, and a stray 400 response in REGISTER - response handling. This helps interoperability in a number of scenarios. + As such, this patch defaults "HAS_WORKING_SEMAPHORE" to "1" if cross-compiling + is detected. - Review: https://reviewboard.asterisk.org/r/3437 + If you're cross-compiling to a platform that doesn't support this, then make + sure you re-define this to 0. + ASTERISK-24663 #close + Reported by: abelbeck patches: - rb3437.patch uploaded by oej (License 5267) - ........ + asterisk-13-anonymous-semaphores.patch uploaded by abelbeck (License 5903) - Merged revisions 426599 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ - Merged revisions 426600 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 426601 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430646 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 426602 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-14 17:14 +0000 [77a036bf3f] Corey Farrell (license 5909) + * res_pjsip: make it unloadable - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426603 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The res_pjsip module was previously unloadable. With this patch it can now + be unloaded. -2014-10-29 20:48 +0000 [ff83ff564c] Olle Johansson (License 5267) + This patch is based off the original patch on the issue (listed below) by Corey + Farrell with a few modifications. Namely, removed a few changes not required to + make the module unloadable and also fixed a bug that would cause asterisk to + crash on unloading. - * channels/chan_sip: Support mutltiple Supported and Required headers + This patch is the first step (should hopefully be followed by another/others at + some point) in allowing res_pjsip and the modules that depend on it to be + unloadable. At this time, res_pjsip and some of the modules that depend on + res_pjsip cannot be unloaded without causing problems of some sort. - A SIP request may contain multiple Supported: and Required: headers. Currently, - chan_sip only parses the first Supported/Required header it finds. This patch - adds support for multiple Supported/Required headers for INVITE requests. + The goal of this patch is to get res_pjsip and only res_pjsip to be able to + unload successfully and/or shutdown without incident (crashes, leaks, etc...). + Other dependent modules may still cause problems on unload. - Review: https://reviewboard.asterisk.org/r/2478 + Basically made sure, with the patch applied, that res_pjsip (with no other + dependent modules loaded) could be succesfully unloaded and Asterisk could + shutdown without any leaks or crashes that pertained directly to res_pjsip. - ASTERISK-21721 #close - Reported by: Olle Johansson + ASTERISK-24485 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4311/ patches: - rb2478.patch uploaded by oej (License 5267) - ........ + pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909) - Merged revisions 426594 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ - Merged revisions 426595 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430628 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 426596 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-14 14:27 +0000 [e370c9e68e] Mark Michelson - Merged revisions 426597 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Prevent slow graceful shutdown when outbound publications never started. + The code was missing the case for explicitly destroying an outbound publication + when Asterisk had never actually published anything. The result was that Asterisk + would hang for a while on a graceful shutdown. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426598 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + With this change, the case is taken into account, and on a graceful shutdown, these + publications are destroyed without the need to actually send a PUBLISH request. -2014-10-29 08:02 +0000 [8a69aedd17] Tzafrir Cohen + ASTERISK-24655 #close + Reported by Kevin Harwell - * Fix building chan_phone on big endian systems + Review: https://reviewboard.asterisk.org/r/4325 - A left over from the formats conversion (Corey Farrell). - ASTERISK-24458 #close - Review: https://reviewboard.asterisk.org/r/4117/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430608 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 426570 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-14 09:39 +0000 [89a431df84] Diederik de Groot (License 6600) + * build_tools/mkpkgconfig: Fix Cflags concatenation error in asterisk.pc - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The mkpkgconfig script incorrectly concatenates Cflags options together. As an + example, the following: + Cflags: -I/usr/include/libxml2 -g3 -2014-10-28 16:35 +0000 [0ed8aebda9] Richard Mudgett + Is instead generated as: + Cflags: -I/usr/include/libxml2-g3 - * bridge_builtin_features: Add missing channel locks around ast_get_chan_features_general_config(). + This patch corrects the generation of Cflags in mkpkgconfig such that the + Cflags options are output correctly. - The feature_automonitor() and feature_automixmonitor() functions were not - locking the channel around ast_get_chan_features_general_config(). - Accessing the channel datastore list without the channel locked is a good - way to corrupt the list or follow the pointer chain into oblivion. - ........ + Review: https://reviewboard.asterisk.org/r/3707/ - Merged revisions 426531 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-23991 #close + Reported by: Diederik de Groot + patches: + fix_mkpkgconfig.diff uploaded by Diederik de Groot (License 6600) ........ - Merged revisions 426552 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 430589 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426553 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430590 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-28 16:10 +0000 [7205d76d7d] Corey Farrell +2015-01-13 12:16 +0000 [1f94b96749] Richard Mudgett - * res_fax: Resolve T38 gateway frame leak. + * app_macro: Don't restore the calling location on a channel redirect. - When frames are translated by a fax gateway they need to be freed. The - existing call to ast_frfree was unreachable. This change reorganizes - fax_gateway_framehook to ensure that ast_frfree is called when needed. + v11: If a channel redirect to a macro exten of a macro that is active + happens, the redirect location doesn't get executed. Instead the original + macro location is restored and gets reexecuted. - ASTERISK-24457 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4115/ - ........ + v13: An additional effect happens if a parked call times out to an + extension in the macro that parked the call then the macro is reexecuted + instead of the expected park return location. - Merged revisions 426527 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Made not restore the macro calling location on an + AST_SOFTHANGUP_ASYNCGOTO. - Merged revisions 426528 from http://svn.asterisk.org/svn/asterisk/branches/12 + * Increased the locked channel range when setting up the macro execution + environment to cover things that should be done while the channel is + locked. + + * Removed unnecessary NULL tests before calling ast_free() in + _macro_exec(). + + ASTERISK-23850 #close + Reported by: Andrew Nagy + + Review: https://reviewboard.asterisk.org/r/4292/ ........ - Merged revisions 426529 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 430564 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426530 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430565 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-28 15:44 +0000 [67e496c275] Corey Farrell +2015-01-13 06:06 +0000 [056f11ac65] Joshua Colp - * manager: Unsubscribe from acl_change_sub at shutdown. + * chan_pjsip: Add configure check for 'pjsip_get_dest_info' function. - ASTERISK-24453 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4110/ - ........ + The 'pjsip_get_dest_info' function is used to determine if the signaling transport + of the dialog is secure or not. This function was added in PJSIP 2.3 and does not + exist in earlier versions. - Merged revisions 426524 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + This configure check allows Asterisk to build and run with older versions at the + loss of the 'secure' argument for the PJSIP CHANNEL dialplan function. Usage of + this argument will require upgrading to PJSIP 2.3. - Merged revisions 426525 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24665 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4329/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426526 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-28 13:09 +0000 [1fe22c411d] Malcolm Davenport + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430546 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * ASTERISK-23512, correct inaccurate comment in manager.conf.sample +2015-01-12 12:34 +0000 [368ecf13bf] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426462 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * AMI: Revert non-backwards compatible changes from earlier commit. -2014-10-28 11:41 +0000 [8e9f593e3a] Matt Jordan + * Reverted the change to astman_send_listack() to not use the listflag + parameter and always set the value to "Start" so the start capitalization + is consistent. Unfortunately changing the case of a returned value is not + a backward compatible change so for now FAXSessions is going to have to + remain inconsistent with all of the other AMI list actions. - * main/bridge: Destroy features struct on off nominal path during bridge impart + * Reverted the minor protocol error fix in action_getconfig() when no + requested categories are found. Each line needs to be formatted as + "Header: text". - When a channel is imparted to a bridge, the invocation of the function may - provide an ast_bridge_features struct. Upon passing this to ast_bridge_impart, - the caller must assume that ownership has passed to the function, as in all - paths the function destroys the struct prior to returning (as its purpose is - to configure the behavior of the channel while in the bridge). On one off - nominal path - where the channel already has a PBX thread - the struct was not - being destroyed. + Caught by the testsuite. - This patch fixes that glitch. + ASTERISK-24049 - ASTERISK-24437 #close - Reported by: Scott Griepentrog - ........ - Merged revisions 426431 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430528 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 426432 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-12 12:28 +0000 [7d606d87bf] Niklas Larsson (License 5068) + * configs/samples/features.conf.sample: Document attended transfer DTMF options - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426433 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The sample config was missing the configuration options for DTMF attended + transfer completion scenarios. The configuration options 'atxferabort', + 'atxfercomplete', 'atxferthreeway', and 'atxferswap' are now documented in the + appropriate configuration file. -2014-10-28 09:59 +0000 [f4b4d42630] Matt Jordan + ASTERISK-24678 #close + Reported by: Niklas Larsson + patches: + features.conf.sample.diff uploaded by Niklas Larsson (License 5068) - * main/manager: Fix typo in AMI event documentation of "OriginateResponse" - The parameter name is "Response", not "Resonse". + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430526 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24430 #close - Reported by: Dafi Ni - ........ +2015-01-12 12:01 +0000 [4e2be8fb8f] Michael L. Young (license 5026) - Merged revisions 426366 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * main/syslog: Allow dynamic logs, such as security events, to log to the syslog - Merged revisions 426367 from http://svn.asterisk.org/svn/asterisk/branches/12 + The security event log uses a dynamic log level (SECURITY) that is registered + with the Asterisk logging core. Unfortunately, the syslog would ignore log + statements that had a dynamic log level associated with them. Because the + syslog cannot handle ad hoc dynamic log levels, this patch treats any dynamic + log entries sent to the syslog as logs with a level of NOTICE. + + ASTERISK-20744 #close + Reported by: Michael Keuter + Tested by: Michael L. Young, Jacek Konieczny + patches: + asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by Michael L. Young (license 5026) ........ - Merged revisions 426368 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 430506 from http://svn.asterisk.org/svn/asterisk/branches/11 + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430507 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-12 09:18 +0000 [dc993db55c] Kristian Hogh (License 6639) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426369 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * funcs/func_curl: Fix memory leak when CURLOPT channel datastore is destroyed -2014-10-28 09:57 +0000 [68d9872f58] Malcolm Davenport + When the channel datastore associated with the usage of CURLOPT on a specific + channel is freed, the underlying structure holding the list of options is not + disposed of. This patch properly frees the structure in the datastore .destroy + callback. - * ASTERISK-24323, fix bug in documentation of AGI STREAM FILE CONTROL + ASTERISK-24672 #close + Reported by: Kristian Hogh + patches: + func_curl-memory-leak.diff uploaded by Kristian Hogh (License 6639) + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426365 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 430487 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-10-28 08:13 +0000 [684b8762a9] Malcolm Davenport - * ASTERISK-24419, fix incorrect syntax for setting language in extensions.conf.sample + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430488 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426297 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-09 16:08 +0000 [4791d629d1] Scott Griepentrog -2014-10-28 06:22 +0000 [2290393273] Corey Farrell + * sip_to_pjsip: improve ability to parse input files - * app_queue: Cleanup ao2_iterator + General improvements to SIP to PJSIP conversion utility: - Clean ao2_iterator, resolving reference leak to queue members. + 1) track default section of input file to allow parsing + an include file that doesn't specify a [section] - ASTERISK-24454 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4111/ - ........ + 2) informatively handle case of assignment without [section] - Merged revisions 426255 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + 3) correctly handle getting sections from included files + - [section]'s are inherited by included file - Merged revisions 426260 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + 4) provide null string as default transport bind ip - Merged revisions 426266 from http://svn.asterisk.org/svn/asterisk/branches/13 + 5) gracefully handle missing portions of registration string + 6) denote steps of operation during conversion and confirm + top level files as a convenience - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426272 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24474 #close + Review: https://reviewboard.asterisk.org/r/4280/ + Reported by: John Kiniston -2014-10-28 06:12 +0000 [ab16f46139] Corey Farrell - * func_cdr: Fix CDR_PROP payload leak - Remove duplicate allocation of payload, preventing leak. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430469 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24455 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4113/ - ........ +2015-01-09 15:44 +0000 [2b0d522dbb] Scott Griepentrog - Merged revisions 426252 from http://svn.asterisk.org/svn/asterisk/branches/13 + * app_bridge: return to the next dialplan priority + When app_bridge grabs a channel and puts it into + a bridge, the channel should then continue where + it left off in the dialplan after the bridge has + ended. Although it stores the current dialplan + location as an after bridge goto on the channel, + it was executing the same priority again instead + of going to the next priority. By swapping the + "specific" version of bridge_set_after_goto with + bridge_set_after_go_on, the next priority in the + dialplan is executed instead. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426253 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24637 #close + Review: https://reviewboard.asterisk.org/r/4322/ + Reported by: John Bigelow -2014-10-27 12:55 +0000 [ef8cdd40e5] Sean Bright - * configure: Add autoconf check for libopus. - Because opus transcoding support cannot be included in the standard Asterisk - distribution, a few codec_opus implementations have popped up. To make it - easier for people to drop in opus support in their own installations, this - patch adds configure checks for libopus. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430467 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4106/ - ........ +2015-01-09 11:54 +0000 [4b363688d4] Richard Mudgett - Merged revisions 426234 from http://svn.asterisk.org/svn/asterisk/branches/13 + * AMI: Make AMI actions that generate event lists consistent. + * Made the following AMI actions use list API calls for consistency: + Agents + BridgeInfo + BridgeList + BridgeTechnologyList + ConfbridgeLIst + ConfbridgeLIstRooms + CoreShowChannels + DAHDIShowChannels + DBGet + DeviceStateList + ExtensionStateList + FAXSessions + Hangup + IAXpeerlist + IAXpeers + IAXregistry + MeetmeList + MeetmeListRooms + MWIGet + ParkedCalls + Parkinglots + PJSIPShowEndpoint + PJSIPShowEndpoints + PJSIPShowRegistrationsInbound + PJSIPShowRegistrationsOutbound + PJSIPShowResourceLists + PJSIPShowSubscriptionsInbound + PJSIPShowSubscriptionsOutbound + PresenceStateList + PRIShowSpans + QueueStatus + QueueSummary + ShowDialPlan + SIPpeers + SIPpeerstatus + SIPshowregistry + SKINNYdevices + SKINNYlines + Status + VoicemailUsersList - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426235 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Incremented the AMI version to 2.7.0. -2014-10-26 21:47 +0000 [5a17878085] Matt Jordan + * Changed astman_send_listack() to not use the listflag parameter and + always set the value to "Start" so the start capitalization is consistent. + i.e., The FAXSessions used "Start" while the rest of the system used + "start". The corresponding complete event always used "Complete". - * res/res_http_websocket: Fix minor nits found by wdoekes on r409681 + * Fixed ami_show_resource_lists() "PJSIPShowResourceLists" to output the + AMI ActionID for all of its list events. - When Moises committed the fixes for WSS (which was a great patch), wdoekes had - a few style nits that were on the review that got missed. This patch resolves - what I *think* were all of the ones that were still on the review. + * Fixed off-nominal AMI protocol error in manager_bridge_info(), + manager_parking_status_single_lot(), and + manager_parking_status_all_lots(). Use of astman_send_error() after + responding to the original AMI action request violates the action response + pattern by sending two responses. - Thanks to both moy for the patch, and wdoekes for the reviews. + * Fixed minor protocol error in action_getconfig() when no requested + categories are found. Each line needs to be formatted as "Header: text". - Review: https://reviewboard.asterisk.org/r/3248/ - ........ + * Fixed off-nominal memory leak in manager_build_parked_call_string(). - Merged revisions 426209 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Eliminated unnecessary use of RAII_VAR() in ami_subscription_detail(). - Merged revisions 426210 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24049 #close + Reported by: Jonathan Rose - Merged revisions 426211 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4315/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426212 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430434 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-26 21:27 +0000 [62bee9b327] Matt Jordan +2015-01-09 08:51 +0000 [eb9ce791d8] Kinsey Moore - * res/res_phoneprov: Fix crash on shutdown caused by container cleanup + * res_fax: Add T.38 negotiation timeout option - In res_phoneprov, unloading the module first destroys the http_routes - container, followed by the users. However, users may have a route in - the http_routes container; the validity of this container is not checked - in the users destructor. Hence, we hit an assert as the container has already - been set to NULL. + This change makes the T.38 negotiation timeout configurable via + 't38timeout' in res_fax.conf or FAXOPT(t38timeout). It was previously + hard coded to be 5000 milliseconds. - This patch does two things: - (1) It adds a sanity check in the user destructor (because why not) - (2) It switches the order of destruction, so that users are disposed of prior - to the HTTP routes they may hold a reference to. + This change also handles T.38 switch failures by aborting the fax since + in the case where this can happen, both sides have agreed to switch to + T.38 and Asterisk is unable to do so. - Note that this crash was caught by the Test Suite (go go testing!) + Review: https://reviewboard.asterisk.org/r/4320/ ........ - Merged revisions 426174 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 430415 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 426176 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430416 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426179 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-08 15:40 +0000 [b937438c17] gtjoseph -2014-10-26 20:47 +0000 [130a3fcd7f] Matt Jordan + * res_pjsip_pubsub: Fix persistent subscriptions not surviving graceful shutdown - * res/res_srtp: Fix include issue for libsrtp 1.5.0 + If you do a 'core (shutdown|restart) graceful' persistent subscriptions won't + survive. If you do a 'core (shutdown|restart) now' or asterisk terminates for + some reason, they do. Here's why... - In libsrtp 1.5.0, crypto_get_random is no longer resolved simply by including - srtp.h. Now, one must include crypto_kernel.h as well. As it turns out, this - header file has been provided by the library since 2006, so this is a - relatively benign change. + When asterisk shuts down gracefully, it sends a 'NOTIFY/terminated' to + subscribers for each subscription. This not only tells the subscribers that the + dialog/state machine is done, it also frees the last reference to the + subscription tree which causes the persistent subscription to get deleted from + astdb. When asterisk restarts, nothing's left. Just preventing the delete from + astdb doesn't work because we already told the subscriber to terminate the + dialog so we can't restart it even if it was still in astdb. Everything works + OK if asterisk terminates unexpectedly because we never send the 'terminated' + message so on restart, the subscription is still in astdb and the subscriber is + none the wiser. - ASTERISK-24436 #close - Reported by: Patrick Laimbock - ........ + This patch suppresses the sending of 'NOTIFY/terminated' on shutdown for + persistent connections. - Merged revisions 426140 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Tested-by: George Joseph - Merged revisions 426141 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Review: https://reviewboard.asterisk.org/r/4318/ - Merged revisions 426142 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 426143 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426144 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-24 10:32 +0000 [c084728690] Jonathan Rose + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430397 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Documentation: Improve documentation for ExtensionStatus AMI events +2015-01-08 15:37 +0000 [143bec54ee] gtjoseph - Review: https://reviewboard.asterisk.org/r/4085/ - ........ + * res_pjsip_outbound_registration: Fix reference leak. - Merged revisions 426120 from http://svn.asterisk.org/svn/asterisk/branches/13 + Every time a registration started, sip_outbound_registration_response_cb bumps + the ref count on client_state then pushes a handle_registration_response task. + handle_registration_response never unreffed it though. So every time a + registration goes out, the ref count goes up by one. + This patch adds the unreffs to handle_registration_response. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426121 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Tested-by: George Joseph -2014-10-22 16:41 +0000 [c4d7e7e270] Shaun Ruffell + Review: https://reviewboard.asterisk.org/r/4303/ - * codec_dahdi: Cannot use struct ast_translator.core_{src,src}_codec. - This fixes a Segmentation fault introduced in r419044 "media formats: re-architect - handling of media for performance improvements". - The problem is that codec_dahdi was using core_src_codec and core_dst_codec in the - ast_translator structure when these fields were never set. Now instead of trying to map - the new core codec descriptions to the way DAHDI defines different codecs, we will store - the DAHDI specific formats in 'struct translator' directly so we can refer to them without - mapping. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430395 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This also allows us to remove the "global_format_map" structure, since we can now query - the list of translators directly to make sure we do not ever register a DAHDI based - translator for a specific path more than once and eliminate the need to keep the list and - the map in sync. +2015-01-08 11:48 +0000 [6e59bf6491] gtjoseph - ASTERISK-24435 #close - Reported by: Marian Koniuszko + * res_pjsip_outbound_registration: Fix several reload issues - Review: https://reviewboard.asterisk.org/r/4105/ - ........ + There are 2 issues with reloading registrations... - Merged revisions 426097 from http://svn.asterisk.org/svn/asterisk/branches/13 + 1. The 'can_reuse_registration' test wasn't considering the intervals or + expiration in its determination of whether a registration changed or not so if + you changed any of the intervals or the expiration and reloaded, the object + would get reloaded but the actual timers wouldn't change. + can_reuse_registration now does a sorcery diff on the old and new objects + instead of discretely testing certain fields. Now if you change expiration for + instance, and reload, the timer is updated and re-registration will occur on the + new value. + 2. If you mung up your password on an outbound registration you get a permanent + failure. If you fix the password (on the outbound_auth object) and reload, + nothing tells outbound_registration to try again because the registration itself + didn't change. This patch adds an observer on the "auth" object type and if any + auth changes, existing registration states are searched and those in a + REJECTED_PERMANENT state are retried. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426099 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Tested-by: George Joseph -2014-10-21 13:04 +0000 [2165868be7] Richard Mudgett + Review: https://reviewboard.asterisk.org/r/4304/ - * translage.c: Fix regression when generating translation path strings. - Fix the AMI Status action read and write translation path strings from - growing for each channel in the status event list by reseting the ast - string given to ast_translate_path_to_str() to fill in the given - translation path. - ........ - Merged revisions 426079 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430373 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-07 15:25 +0000 [8f3c60cee7] Kinsey Moore - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426080 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * ARI: Allow usage of ASYNCGOTO with Stasis() -2014-10-20 09:20 +0000 [dad0334cf1] abelbeck (License 5903),Matt Jordan (License 6283) + When the AMI Redirect action is used with a channel bridged inside + Stasis() and not running a pbx, the channel is hung up instead of + proceeding to the desired location in dialplan. This change allows + such channels to be Redirected properly by detecting the operation + used by Redirect (ASYNCGOTO) and using the code already established + for functionality of the ARI channel continue operation. - * AST-2014-011: Fix POODLE security issues + ASTERISK-24591 #close + Review: https://reviewboard.asterisk.org/r/4271/ - There are two aspects to the vulnerability: - (1) res_jabber/res_xmpp use SSLv3 only. This patch updates the module to use - TLSv1+. At this time, it does not refactor res_jabber/res_xmpp to use the - TCP/TLS core, which should be done as an improvement at a latter date. - (2) The TCP/TLS core, when tlsclientmethod/sslclientmethod is left unspecified, - will default to the OpenSSL SSLv23_method. This method allows for all - ecnryption methods, including SSLv2/SSLv3. A MITM can exploit this by - forcing a fallback to SSLv3, which leaves the server vulnerable to POODLE. - This patch adds WARNINGS if a user uses SSLv2/SSLv3 in their configuration, - and explicitly disables SSLv2/SSLv3 if using SSLv23_method. - For TLS clients, Asterisk will default to TLSv1+ and WARN if SSLv2 or SSLv3 is - explicitly chosen. For TLS servers, Asterisk will no longer support SSLv2 or - SSLv3. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430355 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Much thanks to abelbeck for reporting the vulnerability and providing a patch - for the res_jabber/res_xmpp modules. +2015-01-07 12:53 +0000 [42b342c6e2] Mark Michelson - Review: https://reviewboard.asterisk.org/r/4096/ + * Add the ability to continue and originate using priority labels. - ASTERISK-24425 #close - Reported by: abelbeck - Tested by: abelbeck, opsmonitor, gtjoseph - patches: - asterisk-1.8-jabber-tls.patch uploaded by abelbeck (License 5903) - asterisk-11-jabber-xmpp-tls.patch uploaded by abelbeck (License 5903) - AST-2014-011-1.8.diff uploaded by mjordan (License 6283) - AST-2014-011-11.diff uploaded by mjordan (License 6283) - ........ + With this patch, the following two ARI commands - Merged revisions 425987 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + POST /channels + POST /channels/{id}/continue - Merged revisions 425991 from http://svn.asterisk.org/svn/asterisk/branches/13 + Accept a new parameter, label, that can be used to continue to or originate + to a priority label in the dialplan. + Because this is adding a new parameter to ARI commands, the API version of + ARI has been bumped from 1.6.0 to 1.7.0. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426003 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch comes courtesy of Nir Simionovich from Greenfield Tech. Thanks! -2014-10-19 12:09 +0000 [5e10e369b1] gtjoseph + ASTERISK-24412 #close + Reported by Nir Simionovich - * build: Force -fsigned-char on platforms where the default for char is unsigned + Review: https://reviewboard.asterisk.org/r/4285 - gcc on the ARM platform defaults 'char' to 'unsigned char' whereas Intel and - SPARC default to 'signed char'. This is only an issue in the rare cases where - negative values are assigned to a 'char' but this this patch insures - compatibility by detecting platforms that default to 'unsigned' and adding an - '-fsigned-char' flag to _ASTCFLAGS. - If compiling for ARM (native or cross-compile) be sure to run ./bootstrap.sh - and ./configure to regenerate the build files. You shouldn't have to do this - for Intel or SPARC. - Tested-by: George Joseph + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430337 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4091/ - ........ +2015-01-07 12:17 +0000 [a10d2966b6] gtjoseph - Merged revisions 425964 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip_exten_state: Change 'does not exist' warning to notice - Merged revisions 425965 from http://svn.asterisk.org/svn/asterisk/branches/13 + The 'new_subscribe: Extension <> does not exist or has no associated hint' + is a config issue and doesn't need to clutter up logs with warnings. + Changed to notice. + Tested-by: George Joseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425966 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4307/ -2014-10-18 23:03 +0000 [404b6ab3ab] Matt Jordan - * res/res_pjsip_sdp_rtp: Revert 425924 - This patch for r425924 introduced a bug, wherein sending an INVITE request - with no SDP would cause Asterisk to not send an SDP Offer in the 200 - OK. The current structure of res_pjsip_sdp_rtp is a bit hard to deal with - to fix this, as create_outgoing_sdp has no knowledge of whether or not it is - creating an SDP as a new Offer or an Answer. This is something of an oversight - in the callback definition, as the caller of it does have this information. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430319 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-07 12:14 +0000 [13ed8f73ed] gtjoseph + * res_pjsip_mwi: Change "MWI Subscription failed" message from warning to notice - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425945 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The "MWI Subscription failed" message means the client is trying to subscribe + to a mailbox that doesn't exist. There's no need to clutter up logs with + warnings for a client misconfiguration so I changed it to a notice. -2014-10-18 19:56 +0000 [b263c8bdae] Matt Jordan + Tested-by: George Joseph - * res/res_pjsip_sdp_rtp: Remove left over reference to override_prefs + Review: https://reviewboard.asterisk.org/r/4306/ - The usage of the local override_prefs variable in create_outgoing_sdp_stream - was previously to track an override format preference set by PJSIP_MEDIA_OFFER. - Now, however, that function simply sets the joint capabilities structure, - session->req_caps. During the media format rework, the override_prefs was - instead used to check if there were any formats in session->req_caps. - However, this usage isn't useful in create_outgoing_sdp_stream. - session->req_caps contains the negotiated formats for *all* streams, not just - the current one being created. Thus, so long as any stream of any type has - provided a format, override_prefs will be non-zero. Hence, its usage in - checking whether or not we should look at the formats on the endpoint or - the joint capabilities is generally useless. - There's only two things useful to check: - (1) Does the endpoint have a format for the media type? - (2) Did we negotiate a format for the media type? - If either of those is a 'no', then we must kill the media stream. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430317 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-07 11:51 +0000 [42e4cb7174] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425924 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * func_config: Add ability to retrieve specific occurrence of a variable -2014-10-17 17:45 +0000 [b8f687f27c] Jonathan Rose + I guess nobody uses templates with AST_CONFIG because today if you have a + context that inherits from a template and you call AST_CONFIG on the context, + you'll get the value from the template even if you've overridden it in the + context. This is because AST_CONFIG only gets the first occurrence which is + always from the template. - * Sample Configurations: make 'pjsip reload' reload all reloadable pjsip modules + This patch adds an optional 'index' parameter to AST_CONFIG which lets you + specify the exact occurrence to retrieve, or '-1' to retrieve the last. + The default behavior is the current behavior. - AST-1432 #close - Reported by: John Bigelow - ........ + Tested-by: George Joseph - Merged revisions 425905 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4313/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425906 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-17 08:35 +0000 [8f58592252] Matt Jordan + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430315 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_pjsip_session/res_pjsip_sdp_rtp: Be more tolerant of offers +2015-01-07 11:35 +0000 [9ea8dd036f] Mark Michelson - When an inbound SDP offer is received, Asterisk currently makes a few - incorrection assumptions: + * Fix ability to perform a remote attended transfer with PJSIP. - (1) If the offer contains more than a single audio/video stream, Asterisk will - reject the entire stream with a 488. This is an overly strict response; - generally, Asterisk should accept the media streams that it can accept and - decline the others. - (2) If the offer contains a declined media stream, Asterisk will attempt to - process it anyway. This can result in attempting to match format - capabilities on a declined media stream, leading to a 488. Asterisk should - simply ignore declined media streams. - (3) Asterisk will currently attempt to handle offers with AVPF with - use_avpf=No/AVP with use_avpf=Yes. This mismatch results in invalid SDP - answers being sent in response. If there is a mismatch between the media - type being offered and the configuration, Asterisk must reject the offer - with a 488. + This fix has two parts: - This patch does the following: - * Asterisk will accept SDP offers with at least one media stream that it can - use. Some WARNING messages have been dropped to NOTICEs as a result. - * Asterisk will not accept an offer with a media type that doesn't match its - configuration. - * Asterisk will ignore declined media streams properly. + * Corrected an error message to properly state that external_replaces is an extension. The + error message also prints what dialplan context the external_replaces extension was being + looked for in. + * Corrected the printing of the Replaces: header in an INVITE request. We were duplicating + "Replaces: " in the header. - #SIPit31 + ASTERISK-24376 #close + Reported by Matt Jordan - Review: https://reviewboard.asterisk.org/r/4063/ + Review: https://reviewboard.asterisk.org/r/4296 - ASTERISK-24122 #close - Reported by: James Van Vleet - ASTERISK-24381 #close - Reported by: Matt Jordan - ........ - Merged revisions 425868 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430313 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425879 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-01-07 10:55 +0000 [75cd302b0a] gtjoseph + * config: Add option to NOT preserve effective context when changing a template - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425881 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Let's say you have a template T with variable VAR1 = ON and you have a + context C(T) that doesn't specify VAR1. If you read C, the effective value + of VAR1 is ON. Now you change T VAR1 to OFF and call + ast_config_text_file_save. The current behavior is that the file gets + re-written with T/VAR1=OFF but C/VAR1=ON is added. Personally, I think this + is a bug. It's preserving the effective state of C even though I didn't + specify C/VAR1 in th first place. I believe the behavior should be that if + I didn't specify C/VAR1 originally, then the effective value of C/VAR1 should + continue to follow the inherited state. Now, if I DID explicitly specify + C/VAR1, the it should be preserved even if the template changes. -2014-10-17 08:17 +0000 [0d0e38a0e1] Joshua Colp + Even though I think the existing behavior is a bug, it's been that way forever + so I'm not changing it. Instead, I've created ast_config_text_file_save2() + that takes a bitmask of flags, one of which is to preserve the effective context + (the current behavior). The original ast_config_text_file_save calls *2 with + the preserve flag. If you want the new behavior, call *2 directly without a + flag. - * res_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriented transports. + I've also updated Manager UpdateConfig with a new parameter + 'PreserveEffectiveContext' whose default is 'yes'. If you want the new behavior + with UpdateConfig, set 'PreserveEffectiveContext: no'. - This change adds a module which is configurable using the keep_alive_interval setting in the - global section that will send a CRLF keep alive to all active connection-oriented transports at - the provided interval. This is useful because it can help keep connections open through NATs. - This functionality also exists within PJSIP but can not be controlled at runtime and requires - recompiling it. + Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4084/ + Review: https://reviewboard.asterisk.org/r/4297/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425825 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-17 08:11 +0000 [86eea19c8f] Damian Ivereigh (License 6632) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430295 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * channels/chan_sip: Respect outboundproxy setting when sending qualify requests +2015-01-06 20:52 +0000 [e17a1a8ba1] Kinsey Moore - The outboundproxy setting is currently ignored when sending OPTIONS requests - as a result of the qualify setting. This means that if an Asterisk server is - unable to send the packet directly to a peer, it is unable to qualify any - non-inbound registered peer (e.g. a peer SIP Trunk). + * Fix dev-mode build on recent gcc - This patch grabs the outboundproxy information for a peer when a qualify - attempt is being constructed and, if it finds the information, uses it - when sending the OPTIONS request. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430274 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/3948 +2015-01-06 16:46 +0000 [dd42e92e7a] Matt Jordan - ASTERISK-24063 #close - Reported by: Damian Ivereigh - patches: - outboundproxy-dai.patch uploaded by Damian Ivereigh (License 6632) - ........ + * contrib/ast-db-manage: Correct down_revision path for user_eq_phone - Merged revisions 425818 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + When the user_eq_phone patch was backported to 13, it referenced the downward + revision that the PJSIP optimistic encryption option also references. This + creates a multi-path upgrade Exception when generating the SQL files. - Merged revisions 425819 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This patch corrects this in the 13 branch. Note that trunk, which already + contained both of these features, is unaffected by this problem. - Merged revisions 425820 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 425821 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430252 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-06 11:52 +0000 [4becfae3b1] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425822 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_mwi: Change warning to notice -2014-10-17 06:30 +0000 [7144c739e9] Joshua Colp + When res_pjsip loads and an endpoint auto-subscribes a mailbox for mwi, + if a contact hasn't registered yet, res_pjsip_mwi spits out a warning. + This is a perfectly normal situation though and doesn't require something + as serious as a warning. It's also self correcting. The device will start + getting mwi as soon as it registers. + + This patch changes the warning to a notice. - * res_pjsip: Add 'user_eq_phone' option to add a 'user=phone' parameter when applicable. + Tested-by: George Joseph - This change adds a configuration option which adds a 'user=phone' parameter if the user - portion of the request URI or the From URI is determined to be a number. + Review: https://reviewboard.asterisk.org/r/4314/ - Review: https://reviewboard.asterisk.org/r/4073/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430227 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-16 21:49 +0000 [f91cb1207c] Richard Mudgett +2015-01-06 11:46 +0000 [9d457fe5c2] gtjoseph - * AMI: Add missing VarSet events when a channel inherits variables. + * bridge_native_rtp: Change local/remote message from debug/2 to verb/4 - There should be AMI VarSet events when channel variables are inherited by - an outgoing channel. Also local;2 should generate VarSet events when it - gets all of its channel variables from channel local;1. + Change the "Locally bridged"/"Remotely bridged" messages from dbg/2 to verb/4. - ASTERISK-24415 #close - Reported by: Richard Mudgett - Patches: - jira_asterisk_24415_v12.patch (license #5621) patch uploaded by Richard Mudgett + Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4074/ - ........ + Review: https://reviewboard.asterisk.org/r/4300/ - Merged revisions 425782 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 425783 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430225 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425784 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-06 11:35 +0000 [0fa6c34dc6] gtjoseph -2014-10-16 21:01 +0000 [df59a71b83] Matt Jordan + * outbound_registration: Add 'pjsip send register' and update 'send unregister' - * bridge_native_rtp: Fix audio issues when moving from remote bridge to softmix + The current behavior of 'pjsip send unregister' is to send the unregister + (REGISTER with 0 exp) but let the next scheduled register proceed normally. + I don't think that's a good idea. If you unregister, it should stay + unregistered until you decide to start registrations again. So this patch + just adds a cancel_registration call to the current unregister_task to + cancel the timer. - When a native RTP bridge that is remotely bridging its participants switches - to a softmix bridge, it may not properly re-INVITE the media for one or both - participants back to Asterisk. This is due to the current bridge_native_rtp - code only re-INVITEs if it believes the channel will survive the bridge - operation. Currently, that code is failing, as it expects the channels to - have a soft hangup flag set on it indicating that a redirect has occurred - or that the channel is going to leave the bridge. (The code did not take into - account a smart bridge operation). + Of course, now you need a way to start registration again so I've added + a 'pjsip send register' command that unregisters and cancels any existing + registration (the same as send unregister), then sends an immediate + registration and starts the timer back up again. - This patch also renames a few things to be more reflective of the underlying - types. + Both changes also ripple to AMI. There's a new PJSIPRegister command. - Review: https://reviewboard.asterisk.org/r/3997/ + There's no harm in calling either command repeatedly. They don't care + about the actual state. - ASTERISK-24327 #close - ........ + Tested-by: George Joseph - Merged revisions 425760 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4301/ - Merged revisions 425761 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425762 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430223 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-16 20:46 +0000 [2ccbdd2624] Matt Jordan +2015-01-06 11:28 +0000 [d873b09075] gtjoseph - * test_cel: Update pickup test to expect CANCEL instead of ANSWSER + * pjsip cli: Fix sorting of contacts for 'pjsip list contacts' - The CEL pickup test previously looked for a disposition of ANSWER between the - original caller/peer when the call is picked up. This is actually incorrect: - the disposition should, at the very least, not be ANSWER as the call was - never ANSWERed. The disposition is now CANCEL; this patch updates the test - accordingly. - ........ + For some reason I was using a hash container instead of a list to gather the + contacts for 'pjsip list/show contacts' so even though I had a sort function, + the output wasn't sorted. This patch just changes the hash container to a + list container and the contacts now appear sorted in the CLI. - Merged revisions 425757 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Tested-by: George Joseph - Merged revisions 425758 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4305/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425759 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-16 16:21 +0000 [873d956144] Matt Jordan + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430221 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * main/cdr: Use 'time' when rescheduling batched CDRs as opposed to 'size' +2015-01-05 16:49 +0000 [566907fabd] Scott Griepentrog - When refactoring CDRs to use the configuration framework, a 'whoops' was - introduced where the CDR batch size was used when rescheduling a batch, - as opposed to the time duration. This patch corrects that obvious mistake. + * bridge: avoid leaking channel during blond transfer pt2 - ASTERISK-24426 #close - Reported by: Shane Blaser - ........ + A blond transfer to a failed destination, when followed + by a recall attempt, lead to a leak of the reference to + the destination channel. In addition to correcting the + regression on the previous attempt (r429826) this fixes + the leak and two additional reference leaks on failures + of bridge_import. - Merged revisions 425735 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24513 #close + Review: https://reviewboard.asterisk.org/r/4302/ ........ - Merged revisions 425736 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 430199 from http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425744 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430200 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-16 12:32 +0000 [c2ec5f0f6f] gtjoseph +2015-01-05 11:56 +0000 [b9a7875dd6] Joshua Colp - * config: Fix inf loop using ast_category_browse and ast_variable_retrieve + * pjsip: Document addition of 'PJSIP_AOR' and 'PJSIP_CONTACT' in CHANGES file. - Fix infinite loop when calling ast_variable_retrieve inside an - ast_category_browse loop when there is more than 1 category with - the same name. - Tested-by: George Joseph + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430181 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4089/ - ........ +2015-01-05 11:51 +0000 [a7c38428af] Joshua Colp - Merged revisions 425713 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * pjsip: Add 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions. - Merged revisions 425714 from http://svn.asterisk.org/svn/asterisk/branches/13 + The PJSIP_AOR dialplan function allows inspection of configured AORs including + what contacts are currently bound to them. + The PJSIP_CONTACT dialplan function allows inspection of contacts in existence. + These can include both externally added (by way of registration) or permanent + ones. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425715 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24341 + Reported by: xrobau -2014-10-16 11:32 +0000 [86a4ce4957] Kinsey Moore + Review: https://reviewboard.asterisk.org/r/4308/ - * PJSIP: Enforce module load dependencies - This enforces that res_pjsip, res_pjsip_session, and res_pjsip_pubsub - have loaded properly before attempting to load any modules that depend - on them since the module loader system is not currently capable of - resolving module dependencies on its own. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430179 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24312 #close - Reported by: Dafi Ni - Review: https://reviewboard.asterisk.org/r/4062/ - ........ +2014-12-29 07:10 +0000 [cca262e7d3] Kinsey Moore - Merged revisions 425690 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * PJSIP: Update transport method documentation - Merged revisions 425691 from http://svn.asterisk.org/svn/asterisk/branches/13 + This updates the documentation for the 'method' configuration option to + be more verbose about the behaviors of values 'unspecified' and + 'default'. They do exactly the same thing which is to select the + default as defined by PJSIP which is currently TLSv1. + Review: https://reviewboard.asterisk.org/r/4264/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425700 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-16 01:22 +0000 [a770ca168d] Igor Goncharovskiy + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430145 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * - Fix loss of voice after second call drops (on a second line) in case using multiple lines on unistim phones. There is regression was introduced in r391379. +2014-12-24 15:27 +0000 [1a0979d437] Kevin Harwell - Reported by: Rustam Khankishyiev - (closes issue ASTERISK-23846) - ........ + * app_queue: Update sample conf documenation - Merged revisions 425667 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Updated the queues.conf.sample file to explicitly state which channel queue + variables are propagated to. - Merged revisions 425668 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24267 + Reported by: Mitch Claborn ........ - Merged revisions 425669 from http://svn.asterisk.org/svn/asterisk/branches/13 - + Merged revisions 430126 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425677 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-15 20:26 +0000 [bfee1b4bc5] Joshua Colp + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430127 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_rtp_asterisk: Fix a bug where ICE state would get reset when it shouldn't. +2014-12-24 09:26 +0000 [b521c612fc] Matt Jordan - In the case where the ICE negotiation had not yet started current state would - get wiped when it shouldn't. + * res_pjsip: Backport missing commits for user_eq_phone - This also removes channel binding as in practice this does not work well with - other implementations. - ........ + This backports the following from trunk, which were missed: - Merged revisions 425644 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + r427257 | file | 2014-11-04 16:31:16 -0600 (Tue, 04 Nov 2014) | 2 lines - Merged revisions 425645 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + res_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled. - Merged revisions 425646 from http://svn.asterisk.org/svn/asterisk/branches/13 + r427259 | file | 2014-11-04 16:51:32 -0600 (Tue, 04 Nov 2014) | 2 lines + res_pjsip: Apply the 'user_eq_phone' setting to the To header as well. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425647 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + It also adds the Alembic script for the option. -2014-10-15 14:39 +0000 [28c11fff78] Richard Mudgett + ASTERISK-24643 - * chan_motif: Cleanup jingle_tech.capabilities only once. - ........ - Merged revisions 425627 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-24 07:25 +0000 [915bb88d3e] Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425628 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriented transports. -2014-10-15 14:17 +0000 [3d58066de9] Jonathan Rose + Note that this is backport from trunk of r425825. - * parking_tests: Fix assertions and possibly crashes in res_parking unit tests + This change adds a module which is configurable using the keep_alive_interval setting in the + global section that will send a CRLF keep alive to all active connection-oriented transports at + the provided interval. This is useful because it can help keep connections open through NATs. + This functionality also exists within PJSIP but can not be controlled at runtime and requires + recompiling it. - Assertions were caused by attempting to play music on hold to a channel with - no formats. Parking unit test channels were given formats and a technology so - that they would be able to pretend to read/write frames. + Review: https://reviewboard.asterisk.org/r/4084/ - ASTERISK-24413 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/4075/ - ........ + ASTERISK-24644 #close - Merged revisions 425611 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430084 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425613 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-24 07:20 +0000 [006ffdcfb2] Matt Jordan -2014-10-15 05:03 +0000 [90c98d384b] Alexandr Anikin + * res_pjsip: Add 'user_eq_phone' option to add a 'user=phone' parameter when applicable. - * chan_ooh323: fix rtptimeout general value checking + Note that this is a backport of r425804 from trunk. - correct condition to check rtptimeout in [general] config section + This change adds a configuration option which adds a 'user=phone' parameter if the user + portion of the request URI or the From URI is determined to be a number. - ASTERISK-24393 #close - Reported by: Dmitry Melekhov - Tested by: Dmitry Melekhov - Patches: - ASTERISK-24393.patch - ........ + Review: https://reviewboard.asterisk.org/r/4073/ - Merged revisions 425547 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + ASTERISK-24643 #close - Merged revisions 425548 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 425589 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430083 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425590 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-23 17:18 +0000 [d1c532034b] gtjoseph + * pjsip_options: Fix continued qualifies after endpoint/aor deletion - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425591 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + If you remove an endpoint/aor from pjsip.conf then do a core reload, + qualifies will continue even though the object are gone. This happens + because nothing clears out the qualify tasks. -2014-10-14 15:48 +0000 [104fca5001] gtjoseph + This patch unschedules all existing qualify tasks before scheduling + new ones on reload. - * config: Fix SEGV in unit test with MALLOC_DEBUG + Tested-by: George Joseph - With MALLOC_DEBUG the /main/config config_basic_ops test was causing a - SEGV while doing an ast_category_delete in an ast_category_browse loop. - Apparently this never worked but was also never tested. I removed the - test, added 2 notes to config.h indicating that it's not supported and - added a few lines of code to ast_category_delete to prevent the SEGV - should someone attempt it in the future. + Review: https://reviewboard.asterisk.org/r/4290/ - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4078/ - ........ - Merged revisions 425525 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430064 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425526 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-23 17:15 +0000 [0a3dd7589e] gtjoseph + * test_astobj2: Fix warning for missing trailing slash in category - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425527 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch adds a trailing slash to the category for this test. + No more warning. -2014-10-14 14:12 +0000 [87b5006ff0] Jonathan Rose + Tested-by: George Joseph - * Scheduler: Fix a nasty scheduler caching bug which makes new tasks not execute + Review: https://reviewboard.asterisk.org/r/4295/ - Tasks that were marked for pending deletion in the scheduler would be moved to - the cache for later reuse, but after being recycled the deleted mark wouldn't - be removed resulting in fresh tasks being deleted without reason... and - immediately moved back into the cache where they could be reused again. This - could cause horrendous things to happen in just about anything that used a - scheduler. - ASTERISK-24321 #close - Reported by: Steve Pitts - Review: https://reviewboard.asterisk.org/r/4071/ - ........ - Merged revisions 425503 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430059 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425504 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-22 15:18 +0000 [7a356232bd] Richard Mudgett + * DTMF atxfer: Setup recall channels as if the transferee initiated the call. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + After the initial DTMF atxfer call attempt to the transfer target fails to + answer during a blonde transfer, the recall callback channels do not get + setup with information from the initial transferrer channel. As a result, + the recall callback to the transferrer does not have callid, channel + variables, datastores, accountcode, peeraccount, COLP, and CLID setup. A + similar situation happens with the recall callback to the transfer target + but it is less visible. The recall callback to the transfer target does + not have callid, channel variables, datastores, accountcode, peeraccount, + and COLP setup. -2014-10-14 13:13 +0000 [527b58aeb7] gtjoseph + * Added missing information to the recall callback channels before + initiating the call. callid, channel variables, datastores, accountcode, + peeraccount, COLP, and CLID - * res_phoneprov: Create accessor for ast_phoneprov_std_variable_lookup + * Set callid of the transferrer channel on the DTMF atxfer controller + thread attended_transfer_monitor_thread(). - Based on feedback from Richard, I created an accessor for - res_phoneprov/ast_phoneprov_std_variable_lookup and added - load priority to AST_MODULE_INFO. + * Added missing channel unlocks and props unref to off nominal paths in + attended_transfer_properties_alloc(). - Tested-by: George Joseph - Tested-by: Richard Mudgett + ASTERISK-23841 #close + Reported by: Richard Mudgett - Review: https://reviewboard.asterisk.org/r/4076/ - ........ + Review: https://reviewboard.asterisk.org/r/4259/ - Merged revisions 425480 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 425481 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-22 13:44 +0000 [fca0be57d9] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425482 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * queue_log: Post QUEUESTART entry when Asterisk fully boots. -2014-10-14 11:47 +0000 [fbb19db0c8] Corey Farrell + The QUEUESTART log entry has historically acted like a fully booted event + for the queue_log file. When the QUEUESTART entry was posted to the log + was broken by the change made by ASTERISK-15863. - * res_fax: Fix reference leak caused by gateway sessions + * Made post the QUEUESTART queue_log entry when Asterisk fully boots. + This restores the intent of that log entry and happens after realtime has + had a chance to load. - Fax gateway session objects can be re-used, causing the - same gateway session to be added to faxregistry.container - more than once. This change causes fax_session_new to - remove the reserved session from the container before - it's id is changed, ensuring it's possible for the - session to be freed. + AST-1444 #close + Reported by: Denis Martinez - ASTERISK-24392 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4049/ + Review: https://reviewboard.asterisk.org/r/4282/ ........ - Merged revisions 425457 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 430009 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 425458 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 425459 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430010 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-22 09:40 +0000 [9735a13429] Karsten Wemheuer (License 5930) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425460 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_sip: Send CANCEL via original INVITE destination even after UPDATE request -2014-10-14 11:43 +0000 [c61b66e107] Richard Mudgett + Given the following scenario: + * Three SIP phones (A, B, C), all communicating via a proxy with Asterisk + * A call is established between A and B. B performs a SIP attended transfer of + A to C. B sets the call on hold (A is hearing MOH) and dials the extension of + C. While phone C is ringing, B transfers the call (that is, what we typically + call a 'blond transfer'). + * When the transfer completes, A hears the ringing of phone C, while B is idle. - * stasis_channels.c: Resolve unfinished Dials when doing masquerades (Part 2) + In the SIP messaging for the above scenario, a REFER request is sent to + transfer the call. When "sendrpid=yes" is set in sip.conf, Asterisk may send an + UPDATE request to phone C to update party information. This update is sent + directly to phone C, not through the intervening proxy. This has the unfortunate + side effect of providing route information, which is then set on the sip_pvt + structure for C. If someone (e.g. B) is trying to get the call back (through a + directed pickup), Asterisk will send a CANCEL request to C. However, since we + have now updated the route set, the CANCEL request will be sent directly to C + and not through the proxy. The phone ignores this CANCEL according to RFC3261 + (Section 9.1). - Masquerades into and out of channels that are involved in a dial operation - don't create the expected dial end event. The missing dial end event goes - against the model for things like CDRs and generating Dial end manager - actions and such. + This patch updates reqprep such that the route is not updated if an UPDATE + request is being sent while the INVITE state is INV_PROCEEDING or + INV_EARLY_MEDIA. This ensures that a subsequent CANCEL request is still sent + to the correct location. - There are four cases: + Review: https://reviewboard.asterisk.org/r/4279 - 1) A channel masquerades into the caller channel. The case happens when - performing a blonde transfer using the channel driver's protocol. + ASTERISK-24628 #close + Reported by: Karsten Wemheuer + patches: + issue.patch uploaded by Karsten Wemheuer (License 5930) + ........ - 2) A channel masquerades into a callee channel. The case happens when - performing a directed call pickup. + Merged revisions 429982 from http://svn.asterisk.org/svn/asterisk/branches/11 - 3) The caller channel masquerades out of dial. The case happens when - using the Bridge application on the caller channel. - 4) A callee channel masquerades out of dial. The case happens when using - the Bridge application on a peer channel. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429983 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - As it turned out, all four cases need to be handled instead of just the - first one. +2014-12-21 18:17 +0000 [fc79cf6428] gtjoseph - ASTERISK-24237 - Reported by: Richard Mudgett + * res_pjsip_phoneprovi_provider: Fix reload - ASTERISK-24394 #close - Reported by: Richard Mudgett + Reloading wasn't working correctly because on a reload, the sorcery apply + handler was never being called for unchanged users. So, instead of using + an apply handler, I'm now iterating over all users. Works much more reliably. - Review: https://reviewboard.asterisk.org/r/4066/ - ........ + Tested-by: George Joseph - Merged revisions 425430 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Review: https://reviewboard.asterisk.org/r/4288/ - Merged revisions 425455 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425456 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-14 11:20 +0000 [01bdc80475] Corey Farrell + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429914 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_fax: Resolve module reference leak caused by reserved sessions +2014-12-20 14:57 +0000 [f88460115f] Joshua Colp - Remove reference to module providing reserved session after - adding a reference to the final module. This re-reference - is done to ensure that module references are correct even - if the final session selects a different module than the - reserved session. + * acl: Fix reloading of configuration if configuration file does not exist at startup. - ASTERISK-18923 #close - Reported by: Grigoriy Puzankin - Review: https://reviewboard.asterisk.org/r/4048/ - ........ + The named ACL code incorrectly destroyed the config options information if loading + of the configuration file failed at startup. This would result in reloading + also failing even if a valid configuration file was put in place. - Merged revisions 425405 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ASTERISK-23733 #close + Reported by: Richard Kenner ........ - Merged revisions 425407 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 429893 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 425411 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 425415 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429894 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-19 14:54 +0000 [4b054bdc6d] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425419 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_http_websocket.c: Fix incorrect use of sizeof in ast_websocket_write(). -2014-10-13 11:12 +0000 [c7e6b6ba3d] gtjoseph + This won't fix the reported issue but it is an incorrect use of sizeof. - * manager/config: Support templates and non-unique category names via AMI + ASTERISK-24566 + Reported by: Badalian Vyacheslav + ........ - This patch provides the capability to manipulate templates and categories - with non-unique names via AMI. + Merged revisions 429867 from http://svn.asterisk.org/svn/asterisk/branches/11 - Summary of changes: - GetConfig and GetConfigJSON: Added "Filter" parameter: A comma separated list - of name_regex=value_regex expressions which will cause only categories whose - variables match all expressions to be considered. The special variable name - TEMPLATES can be used to control whether templates are included. Passing - 'include' as the value will include templates along with normal categories. - Passing 'restrict' as the value will restrict the operation to ONLY templates. - Not specifying a TEMPLATES expression results in the current default behavior - which is to not include templates. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - UpdateConfig: NewCat now includes options for allowing duplicate category - names, indicating if the category should be created as a template, and - specifying templates the category should inherit from. The rest of the - actions now accept a filter string as defined above. If there are non-unique - category names, you can now update specific ones based on variable values. +2014-12-19 11:31 +0000 [7074bf956b] Richard Mudgett - To facilitate the new capabilities in manager, corresponding changes had to be - made to config, most notably the addition of filter criteria to many of the - APIs. In some cases it was easy to change the references to use the new - prototype but others would have required touching too many files for this - patch so a wrapper with the original prototype was created. Macros couldn't - be used in this case because it would break binary compatibility with modules - such as res_digium_phone that are linked to real symbols. + * chan_dahdi: Don't ignore setvar when using configuration section scheme. - Tested-by: George Joseph + When the configuration section scheme of chan_dahdi.conf is used (keyword + dahdichan instead of channel) all setvar= options are completely ignored. + No variable defined this way appears in the created DAHDI channels. - Review: https://reviewboard.asterisk.org/r/4033/ - ........ + * Move the clearing of setvar values to after the deferred processing of + dahdichan. - Merged revisions 425383 from http://svn.asterisk.org/svn/asterisk/branches/12 + AST-1378 #close + Reported by: Guenther Kelleter + Patch by: Guenther Kelleter ........ - Merged revisions 425384 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 429825 from http://svn.asterisk.org/svn/asterisk/branches/11 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425385 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429829 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-12 16:09 +0000 [8d6f1d763c] Joshua Colp +2014-12-19 11:26 +0000 [6a99df47c0] Scott Griepentrog - * res_rtp_asterisk: Make the ICE transport check case insensitive as some implementations use 'udp'. - ........ + * bridge: avoid leaking channel during blond transfer - Merged revisions 425360 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + After a blond transfer (start attended and hang up) + to a destination that also hangs up without answer, + the Local;1 channel was leaked and would show up on + core show channels. This was happening because the + attended state blond_nonfinal_enter() resetting the + props->transfer_target to null while releasing it's + own reference, which would later prevent props from + releasing another reference during destruction. The + change made here is simply to not assign the target + to NULL. - Merged revisions 425361 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24513 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4262/ ........ - Merged revisions 425362 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425363 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - -2014-10-12 03:17 +0000 [9e72c74db5] Walter Doekes + Merged revisions 429826 from http://svn.asterisk.org/svn/asterisk/branches/12 - * chan_sip: Fix so asterisk won't send reINVITE after a BYE. - After a reINVITE glare situation, Asterisk would re-send the reINVITE - even though the call had been hung up in the mean time. This patch - unschedules the reinvite when handling the BYE. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429827 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-22791 #close - Reported by: Paolo Compagnini - Tested by: Paolo Compagnini +2014-12-18 16:38 +0000 [b22c833c12] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/4056/ - (testcase is in review r4055) - ........ + * chan_dahdi.c, res_rtp_asterisk.c: Change some spammy debug messages to level 5. - Merged revisions 425296 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ASTERISK-24337 #close + Reported by: Rusty Newton ........ - Merged revisions 425297 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 429804 from http://svn.asterisk.org/svn/asterisk/branches/11 - Merged revisions 425298 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 425299 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429805 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-18 14:03 +0000 [e603fbe04a] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425300 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_dahdi: Populate CALLERID(ani2) for incoming calls in featdmf signaling mode. -2014-10-12 02:57 +0000 [c0ac874106] Walter Doekes + For the featdmf signaling mode the incoming MF Caller-ID information is + formatted as follows: *${CALLERID(ani2)}${CALLERID(ani)}#*${EXTEN}# - * build: Relax badshell tilde test to allow for ~ in middle of DESTDIR. + Rather than discarding the ani2 digits, populate the CALLERID(ani2) value + with what is received instead. - The main Makefile has a target test called 'badshell' that tests if - DESTDIR does not happen to have an an-expanded tilde (~). This might - be the case if you run: make install DESTDIR=~/somewhere/ + AST-1368 #close + Reported by: Denis Martinez + Patches: + extract_ani2_for_featdmf_v11.patch (license #5621) patch uploaded by Richard Mudgett + ........ - That test also disallowed valid tildes in directory names. The test is - now changed to only trigger on a tilde at the start of the path. + Merged revisions 429783 from http://svn.asterisk.org/svn/asterisk/branches/11 - ASTERISK-13797 #close - Reported by: Tzafrir Cohen - Review: https://reviewboard.asterisk.org/r/4064/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429784 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425291 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ +2014-12-18 09:50 +0000 [4fad85f9bf] Kevin Harwell - Merged revisions 425292 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_pjsip_sdp_rtp: wrong bridge chosen when the DTMF mode is not compatible - Merged revisions 425293 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + A native rtp bridge was being chosen (it shouldn't have been) when using two + pjsip channels with incompatible DTMF modes. This patch sets the rtp instance + property, AST_RTP_PROPERTY_DTMF, for the appropriate DTMF mode(s) for pjsip. + It was not being set before, meaning all DTMF modes for pjsip were being treated + as compatible, thus native bridging would be chosen as the bridge type when it + shouldn't have been. - Merged revisions 425294 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24459 #close + Reported by: Yaniv Simhi + Review: https://reviewboard.asterisk.org/r/4265/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425295 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429763 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-12 02:47 +0000 [2a03efdbae] Walter Doekes +2014-12-18 09:34 +0000 [14d2f8f20f] Mark Michelson - * res_calendar_ews: Relax neon version check to work with 0.30 too. + * Prevent potential infinite outbound authentication loops in registration. - Allow res_calendar_ews to work not only with libneon-0.29 but also - with 0.30. + Prior to this patch, Asterisk would always respond to 401 responses to + registration attempts by trying to provide a registration with authentication + credentials. Even if subsequent attempts were rejected with 401 responses, + Asterisk would continue this behavior. If authentication credentials were + incorrect, this could continue forever. - ASTERISK-24325 #close - Reported by: Tzafrir Cohen + With this patch, we keep track of whether we have attempted authentication + on an outbound registration attempt. If we already have, we don not try + again until the next attempt. This prevents the infinite loop scenario. - Review: https://reviewboard.asterisk.org/r/4068/ - ........ + Review: https://reviewboard.asterisk.org/r/4273 - Merged revisions 425286 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ - Merged revisions 425287 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 425288 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429761 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425289 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-18 09:05 +0000 [c1582929f9] Mark Michelson + * Prevent possible race condition on dual redirect of channels in the same bridge. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425290 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The AST_FLAG_BRIDGE_DUAL_REDIRECT_WAIT flag was created to prevent bridges from + prematurely acting on orphaned channels in bridges. The problem with the AMI + redirect action was that it was setting this flag on channels based on the presence + of a PBX, not whether the channel was in a bridge. Whether a channel has a PBX + is irrelevant, so the condition has been altered to check if the channel is in a + bridge. -2014-10-11 16:09 +0000 [6a3c11c75b] gtjoseph + ASTERISK-24536 #close + Reported by Niklas Larsson - * res_phoneprov: Cleanup module load error handling + Review: https://reviewboard.asterisk.org/r/4268 - Tested module load/reload interaction between res_phoneprov and - res_pjsip_phoneprov_provider in cases where res_phoneprov didn't - load correctly (usually misconfiguration or missing phoneprov.conf) - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/4069/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429741 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425264 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2014-12-18 08:43 +0000 [5bd5f580c1] Mark Michelson - Merged revisions 425265 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Ensure the correct value is returned for CHANNEL(pjsip, secure) + Prior to this patch, we were using the PJSIP dialog's secure flag + to determine if a secure transport was being used. Unfortunately, + the dialog's secure flag was only set if a SIPS URI were in use, + as required by RFC 3261 sections 12.1.1 and 12.1.2. What we're interested + in is not dialog security, but transport security. This code change + switches to a model where we use the dialog's target URI to determine + what transport would be used to communicate, and then check if that + transport is secure. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425266 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + AST-1450 #close + Reported by John Bigelow -2014-10-10 15:48 +0000 [98d5b7090d] Joshua Colp + Review: https://reviewboard.asterisk.org/r/4277 - * bridge: During a smart bridge operation provide a more complete bridge to the old technology. - When a smart bridge operation occurs and a bridge transitions from one - technology to another the old technology is provided the channels formerly - in it and told that they are leaving. Unfortunately the bridge provided - along with them is incomplete. The bridge, despite there being channels in it, - contains none. This forces technology implementations to have additional - logic when channels are leaving or to store their own duplicated - state. - This change makes the bridge more complete so it contains the expected - channels. Now that the bridge is complete special logic within - bridge_native_rtp is no longer needed and has been removed. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429739 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4057/ - ........ +2014-12-17 18:10 +0000 [b4621cd0f5] gtjoseph - Merged revisions 425242 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip_config_wizard: fix unload SEGV - Merged revisions 425243 from http://svn.asterisk.org/svn/asterisk/branches/13 + If certain pjsip modules aren't loaded, the wizard causes a SEGV + when it unloads. Added a check for the presense of the object + type wizard before trying to clean it up. + Tested-by: George Joseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425244 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-10 09:31 +0000 [c3ff212cae] Matt Jordan - * res/res_phoneprov: Bail on registration if res_phoneprov didn't load + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429719 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - If res_phoneprov failed to fully load (due to not being configured), the - providers container will be NULL. If a module attempts to register a phone - provisioning provider, it should check for the presence of the container. - If there is no providers container, it should return an error. +2014-12-17 17:05 +0000 [105f224cfd] gtjoseph - This patch makes the ast_phoneprov_provider_register function do that... - otherwise this would be a silly commit message. - ........ + * res_pjsip_config_wizard: Change FILEUNCHANGED config_load2 flag determination - Merged revisions 425220 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The module now applies the FILEUNCHANGED flag when both reloaded is + specified AND there's no last_config for the object type. - Merged revisions 425221 from http://svn.asterisk.org/svn/asterisk/branches/13 + Tested-by: George Joseph + Review: https://reviewboard.asterisk.org/r/4276/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425222 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-10 09:24 +0000 [c46100ad5f] Joshua Colp - * res_pjsip_phoneprov_provider: Add missing dependency on pjproject. - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429699 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425216 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2014-12-17 03:54 +0000 [9ae57e0dd6] Walter Doekes - Merged revisions 425217 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Fix printf problems with high ascii characters after r413586 (1.8). + In r413586 (1.8) various casts were added to silence gcc 4.10 warnings. + Those fixes included things like: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425218 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + -out += sprintf(out, "%%%02X", (unsigned char) *ptr); + +out += sprintf(out, "%%%02X", (unsigned) *ptr); -2014-10-10 08:03 +0000 [37b5f52da7] Kinsey Moore + That works for low ascii characters, but for the high range that yields + e.g. FFFFFFC3 when C3 is expected. - * CallerID: Fix parsing regression + This changeset: + - fixes those casts to use the 'hh' unsigned char modifier instead + - consistently uses %02x instead of %2.2x (or other non-standard usage) + - adds a few 'h' modifiers in various places + - fixes a 'replcaes' typo + - dev/urandon typo (in 13+ patch) - This fixes a regression in callerid parsing introduced when another bug - was fixed. This bug occurred when the name was composed entirely of - DTMF keys and quoted without a number section (<>). + Review: https://reviewboard.asterisk.org/r/4263/ - ASTERISK-24406 #close - Reported by: Etienne Lessard - Tested by: Etienne Lessard - Patches: - callerid_fix.diff uploaded by Kinsey Moore - Review: https://reviewboard.asterisk.org/r/4067/ + ASTERISK-24619 #close + Reported by: Stefan27 (on IRC) ........ - Merged revisions 425152 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + Merged revisions 429673 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ - Merged revisions 425153 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 429674 from http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 425154 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 425155 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429675 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-16 11:53 +0000 [a3534b7c05] gtjoseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425156 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_config_wizard: fix test breakage -2014-10-10 07:10 +0000 [0ef680cff0] Joshua Colp + Fix test breakage caused by not checking for res_pjsip before + calling ast_sip_get_sorcery. - * res_pjsip_nat: Place source port into rport of responses if 'force_rport' is on. + Tested-by: George Joseph - When the 'force_rport' option is enabled the behavior should be the same - as if the remote side placed rport into the message themselves. Therefore - any responses we send should include the source port of the request in the - rport of the Via header. + Review: https://reviewboard.asterisk.org/r/4269/ - #SIPit31 - ASTERISK-24387 #close - Reported by: Matt Jordan - ........ - Merged revisions 425131 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429653 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 425132 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-16 10:38 +0000 [f26d4618eb] Andreas Steinmetz (license 6523) + * chan_sip: Allow T.38 switch-over when SRTP is in use. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425133 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Previously when SRTP was enabled on a channel it was not possible + to switch to T.38 as no crypto attributes would be present. -2014-10-10 02:34 +0000 [d3f525fd8f] Torrey Searle (License #5334),Nitesh Bansal (License #6418) + This change makes it so it is now possible. If a T.38 re-invite + comes in SRTP is terminated since in practice you can't encrypt + a UDPTL stream. Now... if we were doing T.38 over RTP (which + does exist) then we'd have a chance but almost nobody does that so + here we are. - * chan_sip: Fix dialog leak resulting from missing ACK to re-INVITE. + ASTERISK-24449 #close + Reported by: Andreas Steinmetz + patches: + udptl-ignore-srtp-v2.patch submitted by Andreas Steinmetz (license 6523) + ........ - If a device re-INVITEs at the same time as the dialog is hung up, and - if then the ACK to the re-INVITE never reaches Asterisk, chan_sip would - fail to destroy the dialog after a while. This resulted in (most - prominently) file handle leaks. + Merged revisions 429632 from http://svn.asterisk.org/svn/asterisk/branches/11 - (Patch reindented by me.) - ASTERISK-20784 #close - ASTERISK-15879 #close - Reported by: Torrey Searle, Nitesh Bansal - Patches: - reinvite_ack_timeout.patch uploaded by Torrey Searle (License #5334) - patch_asterisk_20784.txt uploaded by Nitesh Bansal (License #6418) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429633 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Reviewboard: https://reviewboard.asterisk.org/r/4052/ - (testcase can be found at r4051) - ........ +2014-12-16 09:43 +0000 [ad85e54fd9] Joshua Colp - Merged revisions 425068 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * res_pjsip_t38: Fix T.38 failure when peer reinvites immediately. - Merged revisions 425069 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + If a remote endpoint reinvites to T.38 immediately the state machine + will go into a peer reinvite state. If a T.38 capable application + (such as ReceiveFax) queries it will receive this state. Normally + the application will then indicate so that the channel driver will + queue up the T.38 offer previously received. Once it receives this + offer the application will act normally and negotiate. - Merged revisions 425070 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The res_pjsip_t38 module incorrectly partially squashed this indication. + This would cause the application to think the request had failed when + in reality it had actually worked. - Merged revisions 425071 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change makes it so that no T.38 control frames (or indications) + are squashed. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425072 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429612 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-09 18:37 +0000 [aef63118da] gtjoseph +2014-12-15 11:07 +0000 [89617370ec] gtjoseph - * res_pjsip_phoneprov_provider: fix compile breakage on AST_VECTOR + * res_pjsip_config_wizard: Allow streamlined config of common pjsip scenarios - endpoint->inbound_auths was changed to a vector in 13 and I - committed the 12 patch instead of the 13 patch. + res_pjsip_config_wizard + ------------------ + * This is a new module that adds streamlined configuration capability for + chan_pjsip. It's targetted 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. Tested-by: George Joseph - ........ - - Merged revisions 425052 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4190/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425053 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-09 16:39 +0000 [6fc4df7279] Kevin Harwell - * res_rtp_asterisk: Crash if no candidates received for component + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429592 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - When starting ice if there is not at least one remote ice candidate with an RTP - component asterisk will crash. This is due to an assertion in pjnath as it - expects at least one candidate with an RTP component. Added a check to make - sure at least one candidate contains an RTP component and at least one candidate - has an RTCP component. +2014-12-15 09:36 +0000 [b85f79c0c1] Mark Michelson - ASTERISK-24383 #close - Review: https://reviewboard.asterisk.org/r/4039/ - ........ + * Activate persistent subscriptions when they are recreated. - Merged revisions 425031 from http://svn.asterisk.org/svn/asterisk/branches/13 + Prior to this change, recreating persistent subscriptions would + create the subscription but would not activate it. This led to subscriptions + being listed in the "NULL" state by diagnostics and not sending NOTIFYs + when expected. + Review: https://reviewboard.asterisk.org/r/4261 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425032 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-09 15:55 +0000 [c6837c236f] gtjoseph - * res_pjsip_phoneprov_provider: Provides pjsip integration with res_phoneprov + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429571 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This module allows res_pjsip to integrate with res_phoneprov. It handles - the pjsip 'phoneprov' object type. +2014-12-12 17:54 +0000 [2b8c441096] gtjoseph - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/3976/ - ........ + * loader: Move definition of ast_module_reload from _private.h to module.h - Merged revisions 425007 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + No functionality change. Just move the definition of ast_module_reload + from _private.h to module.h so it can be public. - Merged revisions 425008 from http://svn.asterisk.org/svn/asterisk/branches/13 + Also removed the include of _private.h from manager.c since ast_module_load + was the only reason for including it. + Tested-by: George Joseph - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@425009 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4251/ -2014-10-09 13:44 +0000 [3a187aa14a] Matt Jordan - * res/res_phoneprov: Don't cancel Asterisk load on module load failure - ........ - Merged revisions 424985 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429542 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 424986 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-12 17:40 +0000 [8f12ded887] Richard Mudgett + * DEBUG_THREADS: Fix regression and lock tracking initialization problems. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424987 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch started with David Lee's patch at + https://reviewboard.asterisk.org/r/2826/ and includes a regression fix + introduced by the ASTERISK-22455 patch. -2014-10-09 12:46 +0000 [cc595f7353] gtjoseph + The initialization of a mutex's lock tracking structure was not protected + in a critical section. This is fine for any mutex that is explicitly + initialized, but a static mutex may have its lock tracking double + initialized if multiple threads attempt the first lock simultaneously. - * res_phoneprov: Refactor phoneprov to allow pluggable config providers + * Added a global mutex to properly serialize initialization of the lock + tracking structure. The painful global lock can be mitigated by adding a + double checked lock flag as discussed on the original review request. - This patch makes res_phoneprov more modular so other modules (like pjsip) - can provide configuration information instead of res_phoneprov relying solely - on users.conf and sip.conf. To accomplish this a new ast_phoneprov public API - is now exposed which allows config providers to register themselves, set - defaults (server profile, etc) and add user extensions. + * Defer lock tracking initialization until first use. - * ast_phoneprov_provider_register registers the provider and provides callbacks - for loading default settings and loading users. - * ast_phoneprov_provider_unregister clears the defaults and users. - * ast_phoneprov_add_extension should be called once for each user/extension - by the provider's load_users callback to add them. - * ast_phoneprov_delete_extension deletes one extension. - * ast_phoneprov_delete_extensions deletes all extensions for the provider. + * Don't be "helpful" and initialize an uninitialized lock when + DEBUG_THREADS is enabled. Debug code is not supposed to fix or change + normal code behavior. We don't need a lock initialization race that would + force a re-setup of lock tracking. Lock tracking already handles + initialization on first use. - Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/3970/ - ........ + * Properly handle allocation failures of the lock tracking structure. - Merged revisions 424963 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * No need to initialize tracking data in __ast_pthread_mutex_destroy() + just to turn around and destroy it. - Merged revisions 424964 from http://svn.asterisk.org/svn/asterisk/branches/13 + The regression introduced by ASTERISK-22455 is the result of manipulating + a pthread_mutex_t struct outside of the pthread library code. The + pthread_mutex_t struct seems to have a global linked list pointer member + that can get changed by other threads. Therefore, saving and restoring + the contents of a pthread_mutex_t struct is a bad thing. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424965 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Thanks to Thomas Airmont for finding this obscure regression. -2014-10-09 11:38 +0000 [0f50e8856b] Richard Mudgett + * Don't overwrite the struct ast_lock_track.reentr_mutex member to restore + tracking data in __ast_cond_wait() and __ast_cond_timedwait(). The + pthread_mutex_t struct must be treated as a read-only opaque variable. - * cdr.c: Make turning on CDR debug a one step process instead of two. - Now "cdr set debug on" doesn't also require "core set verbose 1" to see - CDR debug output. - ........ + Miscellaneous other items fixed by this patch: - Merged revisions 424941 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Match ast_suspend_lock_info() with ast_restore_lock_info() in + __ast_cond_timedwait(). - Merged revisions 424942 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Made some uninitialized lock sanity checks return EINVAL and try a + DO_THREAD_CRASH. + * Fix bad canlog initialization expressions. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424943 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24614 #close + Reported by: Thomas Airmont -2014-10-09 03:10 +0000 [d0255c4a46] Michael Myles (License #6626) + Review: https://reviewboard.asterisk.org/r/4247/ + Review: https://reviewboard.asterisk.org/r/2826/ + ........ - * safe_asterisk: Don't automatically exceed MAXFILES value of 2^20. + Merged revisions 429539 from http://svn.asterisk.org/svn/asterisk/branches/11 - On systems with lots of RAM (e.g. 24GB) /proc/sys/fs/file-max divided - by two can exceed the per-process file limit of 2^20. This patch - ensures the value is capped. - (Patch cleaned up by me.) + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429540 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24011 #close - Reported by: Michael Myles - Patches: - safe_asterisk-ulimit.diff uploaded by Michael Myles (License #6626) - ........ +2014-12-12 16:53 +0000 [8c019b1a6b] Matt Jordan - Merged revisions 424875 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * res/res_agi: Make Verbose message for 'stream file' match other playbacks - Merged revisions 424878 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + The Verbose message displayed when a file is played back via 'stream file' + was formatted differently than other playbacks: + * It didn't include the channel name + * It didn't include the channel language + It does, however, include the playback offset as well as any escape digits. + That information was kept; however, this patch updates the formatting to more + closely match the Verbose messages displayed when a file is played back by + 'control stream file', Playback, ControlPlayback, or any other file playback + operation. - Merged revisions 424879 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - Merged revisions 424880 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429519 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-12 16:49 +0000 [7ff0d266a6] Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424881 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Add 11 merge properties -2014-10-08 13:47 +0000 [8b0089ea1d] Joshua Colp + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429518 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * res_rtp_asterisk: Allow only UDP ICE candidates. +2014-12-12 10:57 +0000 [439e6e1c5d] Joshua Colp - The underlying library, pjnath, that res_rtp_asterisk uses for ICE - support does not have support for ICE-TCP. As candidates are - passed through directly to it this can cause error messages to occur - when it receives something unexpected (such as a TCP candidate). - This change merely ignores all non-UDP candidates so they never - reach pjnath. + * media: Fix crash when determining sample count of a frame during shutdown. - ASTERISK-24326 #close - Reported by: Joshua Colp - ........ + When shutting down Asterisk the codecs are cleaned up. As a result anything + attempting to get a codec based on ID or details will find that no codec + exists. This currently occurs when determining the sample count of a frame. + This code did not take this situation into account. - Merged revisions 424852 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This change fixes this by getting the codec directly from the format and + eliminates the lookup. This is both faster and also provides a guarantee + that the codec will exist and will be valid. - Merged revisions 424853 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24604 #close + Reported by: Matt Jordan - Merged revisions 424854 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4260/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424855 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429497 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-08 13:24 +0000 [5e50638539] Kinsey Moore +2014-12-12 09:30 +0000 [01c4e76c4e] Kevin Harwell - * Stasis: Relegate log message to dev-mode + * chan_pjsip: Race between channel answer and bridge setup when using direct media - This error message primarily applies to development tasks and will now - only show up when dev-mode is enabled via configure. - ........ + When direct media is enabled and a pjsip channel is answered a race would occur + between the handling of the answer and bridge setup. Sometimes the media + negotiation would take place after the native bridge was setup. This resulted + in a NULL media address, which in turn resulted in Asterisk using its address + as the remote media address when sending a reinvite. This patch makes the + chan_pjsip answer handler synchronous thus alleviating the race condition (the + bridge won't start setting things up until after it returns). - Merged revisions 424850 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24563 #close + Reported by: Steve Pitts + Review: https://reviewboard.asterisk.org/r/4257/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424851 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429477 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-08 09:54 +0000 [3dfc485e35] Kinsey Moore +2014-12-12 09:00 +0000 [49386cf568] David M. Lee - * Indexer: Format message types may not exist + * Fix crash for sorcery misconfigs - In Asterisk 13+, any given message type is not guaranteed to exist even - if Asterisk comes up correctly since creation of the message type could - be declined. The indexer should not prevent Asterisk from starting - under these conditions. - ........ + res_pjsip_outbound_publish was missing the CHECK_PJSIP_MODULE_LOADED() + call in load_module, and would crash with a segfault if res_pjsip + declined to load. - Merged revisions 424833 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4258/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424834 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429457 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-07 15:33 +0000 [d8bbf1ec1d] Kinsey Moore +2014-12-12 08:12 +0000 [3b0c40f337] Kinsey Moore - * Stasis: Only log errors for non-declined types + * PJSIP: Allow use of 'inactive' streams for hold - When message type creation is declined via stasis.conf, certain - operations log errors assuming that the declined type is being used - before initialization or after destruction. These error messages get - quite spammy for oft used message types and should not be logged in the - first place since the message type is validly NULL. + This allows use of the 'inactive' stream direction identifier to be + used for hold where 'sendonly' is normally used. Some Seimens phones + use 'inactive' and this change allows music on hold to operate + properly. - Reported by: Matt DiMeo + Review: https://reviewboard.asterisk.org/r/4252/ + Reported by: Steve Pitts ........ - Merged revisions 424769 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 429432 from http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424770 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429433 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-07 13:34 +0000 [f7225da08a] Joshua Colp +2014-12-12 08:03 +0000 [15af40180a] Kinsey Moore - * data: Properly access formats in capabilities structure when adding codecs. + * Sorcery: Log when old config remains in use - Formats within a capabilities structure are addressed starting at 0, not 1. - Assuming 1 causes it to exceed an array. + This adds a log message notifying the user that a stale configuration + is in place upon reload when a config object fails to load. This + situation can end up causing confusion when the object failed to load + but exists from a previous config load especially when the old config + is significantly different from the new config. - ASTERISK-24389 #close - Reported by: Kevin Harwell + Review: https://reviewboard.asterisk.org/r/4250/ + Reported by: Thomas Thompson ........ - Merged revisions 424752 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 429429 from http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424753 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429430 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-07 12:44 +0000 [a9011106b6] Matt Jordan +2014-12-12 07:05 +0000 [0c9fbb449f] Joshua Colp - * res/res_pjsip_outbound_registration: Initialize auth_reject_permanent parameter + * res_pjsip_session: Delay sending BYE if a re-INVITE transaction is in progress. - Prior to this patch, the auth_reject_permanent parameter was not initialized on - the registration client state, leading to the parameter being disabled - regardless of the value specified in pjsip.conf. + Given the scenario where a PJSIP channel is in a native RTP bridge with direct + media and the channel is then hung up the code will currently re-INVITE the channel + back to Asterisk and send a BYE at the same time. Many SIP implementations dislike + this greatly. - This patch initialized the setting on the registration client state to the - provided configuration value. + This change makes it so that if a re-INVITE transaction is in progress the BYE + is queued to occur after the completion of the transaction (be it through normal + means or a timeout). + + Review: https://reviewboard.asterisk.org/r/4248/ + + + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429409 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24398 #close - ........ +2014-12-12 06:31 +0000 [61fe4f10d2] Joshua Colp - Merged revisions 424730 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail SDP negotiation. - Merged revisions 424731 from http://svn.asterisk.org/svn/asterisk/branches/13 + In the past the SDP negotiation within res_pjsip_session was made more tolerant of + certain situations. The only case where SDP negotiation will fail is when a major + error occurs during negotiation. Receiving an already declined media stream is + not considered a major error. + When producing the local SDP the logic took this into account so on the initial INVITE + the declined media stream did not cause an SDP negotiation failure. Unfortunately + the logic for handling media streams with a handler did not mirror this logic and + considered an already declined media stream an error and thus failed the SDP + negotiation. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424732 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change makes the logic between both situations match so only under major + errors will the SDP negotiation fail. -2014-10-07 09:09 +0000 [523da7d1b3] Matt Jordan + ASTERISK-24607 #close + Reported by: Matt Jordan - * res/res_pjsip_pubsub: Fix typo in WARNING message - ........ + Review: https://reviewboard.asterisk.org/r/4254/ - Merged revisions 424713 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429407 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424714 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-11 14:31 +0000 [8237bd357d] Kevin Harwell -2014-10-06 13:39 +0000 [39bd5b7a70] Peter Katzmann (License 5968) + * ARI/AMI: Include language in standard channel snapshot output - * message: Don't close an AMI connection on SendMessage action error + The CHANGES verbiage for the "language" addition had been put under the wrong + release. This moves it to be under 13.1 to 13.2 changes. - If SendMessage encounters an error (such as incorrect input provided to the - action), it will currently return -1. Actions should only return -1 if the - connection to the AMI client should be closed. In this case, SendMessage - causing the client to disconnect is inappropriate. + ASTERISK-24553 + Reported by: Matt Jordan - This patch causes the action to return 0, which simply causes the action to - fail. - Review: https://reviewboard.asterisk.org/r/4024 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429387 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24354 #close - Reported by: Peter Katzmann - patches: - sendMessage.patch uploaded by Peter Katzmann (License 5968) - ........ +2014-12-11 11:21 +0000 [2288f910ea] Kinsey Moore - Merged revisions 424690 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Recorded merge of revisions 429378 from http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 424691 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ + Fix incorrect patch applied in r429354 - Merged revisions 424692 from http://svn.asterisk.org/svn/asterisk/branches/13 + The patch that was applied was another pending patch. This swaps them out. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424693 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429379 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-06 10:41 +0000 [c384532aa4] Richard Mudgett +2014-12-11 07:56 +0000 [b7f7d045ac] Kinsey Moore - * features.c: Fix lingering channel ref while Bridge() application is active. + * Recorded merge of revisions 429354 from http://svn.asterisk.org/svn/asterisk/branches/12 - Using the Bridge application to bridge a channel that is executing an - applicaiton such as Wait results in a lingering Surrogate channel in the - CLI "core show channels" output even though it has already hungup. + ........ + Stasis: Update unittest for channel snapshots - * Fix bridge_exec() to not hold onto the current_dest_chan ref once it has - been put into the bridge. + This adjusts the unit test for channel snapshots to take the new + language key into account. - * Eliminated bridge_exec()'s use of RAII_VAR(). - ASTERISK-24224 #close - Reported by: Mark Michelson + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429355 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/4041/ - ........ +2014-12-11 07:49 +0000 [50f6517296] Kinsey Moore - Merged revisions 424668 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Stasis: Update unittest for channel snapshots - Merged revisions 424669 from http://svn.asterisk.org/svn/asterisk/branches/13 + This adjusts the unit test for channel snapshots to take the new + language key into account. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424670 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429352 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-06 07:39 +0000 [3a87f32dc0] Matt Jordan +2014-12-10 09:42 +0000 [d4a05879d6] Kevin Harwell - * sdp_srtp: Add new lines to some WARNING messages - ........ + * ARI/AMI: Include language in standard channel snapshot output - Merged revisions 424646 from http://svn.asterisk.org/svn/asterisk/branches/12 + Adding information about including "language" in the standard channel snapshot + output to the CHANGES file. Note the actual source changes have already been + previously committed. + + ASTERISK-24553 + Reported by: Matt Jordan ........ - Merged revisions 424647 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 429325 from http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424648 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429326 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-05 20:01 +0000 [cce3d99ec8] Matt Jordan +2014-12-10 07:34 +0000 [fb768ec33a] Joshua Colp - * res_pjsip/pjsip_options: Do not 404 an OPTIONS request not sent to an endpoint + * res_http_websocket: Fix crash due to double freeing memory when receiving a payload length of zero. - An OPTIONS request that is sent to Asterisk but not to a specific endpoint is - currently sent a 404 in response. This is because, not surprisingly, an empty - extension is never going to be found in the dialplan. + Frames with a payload length of 0 were incorrectly handled in res_http_websocket. + Provided a frame with a payload had been received prior it was possible for a double + free to occur. The realloc operation would succeed (thus freeing the payload) but be + treated as an error. When the session was then torn down the payload would be + freed again causing a crash. The read function now takes this into account. - This patch makes it so that we only attempt to look up the endpoint in the - dialplan if it is specified in the OPTIONS request URI. + This change also fixes assumptions made by users of res_http_websocket. There is no + guarantee that a frame received from it will be NULL terminated. - #SIPit31 + ASTERISK-24472 #close + Reported by: Badalian Vyacheslav - ASTERISK-24370 #close - Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4220/ + Review: https://reviewboard.asterisk.org/r/4219/ ........ - Merged revisions 424624 from http://svn.asterisk.org/svn/asterisk/branches/12 + Merged revisions 429270 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ - Merged revisions 424625 from http://svn.asterisk.org/svn/asterisk/branches/13 - + Merged revisions 429272 from http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424626 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-10-05 19:53 +0000 [c013916869] Matt Jordan + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429273 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * pjsip/dialplan_functions: Handle PJSIP_MEDIA_OFFER called on non-PJSIP channels +2014-12-10 07:14 +0000 [a220a08777] Kinsey Moore - Calling PJSIP_MEDIA_OFFER on a non-PJSIP channel is hazardous to your health. - It will treat the channels as a PJSIP channel, eventually hitting an ao2 error, - FRACKing on assertion error, and quite likely crashing. + * PJSIP: Fix assert on initial mass qualify - This patch adds checks to the read/write callbacks that ensure that the channel - technology is of type 'PJSIP' before attempting to operate on the channel. + This fixes the MWI test regressions caused by r429127 and ensures that + contacts have non-zero qualify_frequency before attempting scheduling. + ........ - #SIPit31 + Merged revisions 429245 from http://svn.asterisk.org/svn/asterisk/branches/12 - ASTERISK-24382 #close - Reported by: Matt Jordan - ........ - Merged revisions 424621 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429246 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 424622 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-09 14:46 +0000 [22a91bf698] Scott Griepentrog + * core: avoid possible asterisk -r crash from long id - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When connecting to the remote console, an id string + is first provided that consts of the hostname, pid, + and version. This is parsed by the remote instance + using a buffer that may be too short, and can allow + a buffer overrun because it is not terminated. This + patch adds termination and a larger buffer. -2014-10-05 19:31 +0000 [45b7b474ac] Matt Jordan + Review: https://reviewboard.asterisk.org/r/4182/ - * res_pjsip: Prevent crashes when PJPROJECT presents an rdata with no message - When a message that exceeds the PJ_MAX_PKT_SIZE is sent over a reliable - transport, it is possible (although it shouldn't occur) for pjproject to pass - up an rdata object with a NULL msg in the msg_info. Needless to say, things - that attempt to dereference this are in for a rough ride. - In particular, this caused crashes in three different locations, all of which - are 'low level' enough to intercept an rdata object early in processing: + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429223 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - (1) res_pjsip_logger - (2) res_hep_pjsip - (3) res_pjsip/distributor +2014-12-09 14:19 +0000 [2f21f85c37] Kevin Harwell - Anything that can intercept an rdata object before res_pjsip/distributor should - be defensive when looking at the received packet. + * ARI/AMI: Include language in standard channel snapshot output - #SIPit31 + The channel "language" was already part of a channel snapshot, however is was + not sent out over AMI or ARI. This patch makes it so the channel "language" is + included in the appropriate AMI or ARI events. - ASTERISK-24369 #close + ASTERISK-24553 #close Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4245/ ........ - Merged revisions 424618 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 429204 from http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 424619 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429206 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424620 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-09 14:02 +0000 [525c823b4b] Kevin Harwell -2014-10-05 19:13 +0000 [f27f41a288] Matt Jordan + * Direct Media calls within private network sometimes get one way audio - * res/res_pjsip_pubsub: Gracefully handle errors when re-creating subscriptions + When endpoints with direct_media enabled, behind a firewall (Asterisk on a + separate network) and were bridged sometimes Asterisk would send the ip + address of the firewall in the sdp to one of the phones in the reinvite + resulting in one way audio. When sending the reinvite Asterisk will retrieve + the media address from the associated rtp instance, but if frames were being + read this can be overwritten with another address (in this case the + firewall's). This patch ensures that Asterisk uses the original device + address when using direct media. - A subscription that has been persisted can - for various reasons - fail to be - re-created on startup. This patch resolves a number of crashes that occurred - when a subscription cannot be re-created on several off-nominal paths. + ASTERISK-24563 + Reported by: Steve Pitts + Review: https://reviewboard.asterisk.org/r/4216/ + ........ - #SIPit31 + Merged revisions 429195 from http://svn.asterisk.org/svn/asterisk/branches/12 - ASTERISK-24368 #close - Reported by: Matt Jordan - ........ - Merged revisions 424601 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429196 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-12-09 12:35 +0000 [664067e318] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424602 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_outbound_publish: stack overflow when using non-default sorcery wizard -2014-10-04 19:49 +0000 [9611ef4f1e] Corey Farrell + When using a non-default sorcery wizard (in this instance realtime) for outbound + publishes Asterisk will crash after a stack overflow occurs due to the code + infinitely recursing. The fix entails removing the outbound publish state + dependency from the outbound publish sorcery object and instead keeping an in + memory container that can be used to lookup the state when needed. - * Release AMI connections on shutdown. + ASTERISK-24514 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4178/ - ASTERISK-24378 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4037/ - ........ - Merged revisions 424578 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429175 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 424579 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2014-12-09 09:44 +0000 [74b032bb03] Joshua Colp - Merged revisions 424580 from http://svn.asterisk.org/svn/asterisk/branches/13 + * ari: Add support for specifying an originator channel when originating. + If an originator channel is specified when originating a channel the linked ID + of it will be applied to the newly originated outgoing channel. This allows + an association to be made between the two so it is known that the originator + has dialed the originated channel. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424581 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24552 #close + Reported by: Matt Jordan -2014-10-04 19:15 +0000 [1b0902caa4] Corey Farrell + Review: https://reviewboard.asterisk.org/r/4243/ - * chan_motif: Correct last commit to use ao2_cleanup to free format cap - This fix applies to 13 and trunk. + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429153 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24384 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4043/ - ........ +2014-12-09 08:00 +0000 [64581d894d] Kinsey Moore - Merged revisions 424554 from http://svn.asterisk.org/svn/asterisk/branches/13 + * PJSIP: Stagger outbound qualifies + This change staggers initiation of outbound qualify (OPTIONS) attempts + to reduce instantaneous server load and prevent network congestion. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424555 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4246/ + ASTERISK-24342 #close + Reported by: Richard Mudgett + ........ -2014-10-04 19:02 +0000 [0cea12b9e8] Corey Farrell + Merged revisions 429127 from http://svn.asterisk.org/svn/asterisk/branches/12 - * chan_motif: Release format capabilities and config on module load error - ASTERISK-24384 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4043/ - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429128 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 424550 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2016-04-27 16:18 +0000 Asterisk Development Team - Merged revisions 424551 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * asterisk certified/13.1-cert7 Released. - Merged revisions 424552 from http://svn.asterisk.org/svn/asterisk/branches/13 +2016-04-27 11:17 +0000 [ac50d4de09] Kevin Harwell + * Release summaries: Remove previous versions - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424553 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2016-04-27 11:17 +0000 [ae138f07b9] Kevin Harwell -2014-10-03 16:58 +0000 [24ded9d9eb] Richard Mudgett + * .version: Update for certified/13.1-cert7 - * res_pjsip: Fix XML typo and update CHANGES. +2016-04-27 11:17 +0000 [6887653e56] Kevin Harwell - ASTERISK-24199 - ........ + * .lastclean: Update for certified/13.1-cert7 - Merged revisions 424528 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-04-27 11:17 +0000 [f1dd08373d] Kevin Harwell - Merged revisions 424529 from http://svn.asterisk.org/svn/asterisk/branches/13 + * realtime: Add database scripts for certified/13.1-cert7 +2016-04-26 05:48 +0000 [5baf815293] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424530 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * app_queue: Fix crash when unloading module. -2014-10-03 14:42 +0000 [70301b0438] Richard Mudgett + When unloading the app_queue module the members in each queue are + destroyed and as part of this they are removed from the pending + members container. Unfortunately a crash would occur as the container + was destroyed before the members were removed. - * audiohooks: Reevaluate the bridge technology when an audiohook is added or removed. + This change tweaks ordering so the container destruction occurs + after the members are destroyed. - Adding a mixmonitor to a channel causes the bridge to change technologies - from native to simple_bridge so the call can be recorded. However, when - the mixmonitor is stopped the bridge does not switch back to the native - technology. + ASTERISK-16115 - * Added unbridge requests to reevaluate the bridge when a channel - audiohook is removed. + Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b - * Moved the unbridge request into ast_audiohook_attach() ensure that the - bridge reevaluates whenever an audiohook is attached. This simplified the - mixmonitor and chan_spy start code as well. +2016-04-21 14:23 +0000 [1f24863e0c] Kevin Harwell - * Added defensive code to stop_mixmonitor_full() in case additional - arguments are ever added to the StopMixMonitor application. + * app_queue: queue members can receive multiple calls - * Made ast_framehook_detach() not do an unbridge request if the framehook - does not exist. + It was possible for a queue member that is a member of at least 2 or more + queues to receive mulitiple calls at the same time. This happened because + of a race between when a member was being rung and when the device state + notified the other queue(s) member object of the state change. - * Made ast_framehook_list_fixup() do an unbridge request if there are any - framehooks. Also simplified the loop. + This patch makes it so when a queue member is being rung it gets added to + a global pool of queue members. If that same member is tried again, e.g. + from another queue, and it is found to already exist in the pending member + container then it will not ring that member. - ASTERISK-24195 #close - Reported by: Jonathan Rose + ASTERISK-16115 #close - Review: https://reviewboard.asterisk.org/r/4046/ - ........ + Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48 - Merged revisions 424506 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-04-22 17:53 +0000 [a2249031ef] gtjoseph - Merged revisions 424507 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_agi: Prevent run_agi from eating frames it shouldn't + The run_agi function is eating control frames when it shouldn't be. This is + causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond + transfer. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424508 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie + answers. -2014-10-03 13:54 +0000 [cc11a78869] Kristian Hogh + Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE + and is left thinking he's connected to Bob. - * app_queue: Add dialplan function to get the channel name at the specified position in a queue. + In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls + an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on + Charlie's channel. - The QUEUE_GET_CHANNEL function returns the caller's channel name at the - specified position in a queue. + The fix was to accumulate deferrable frames in the "forever" loop instead of + dropping them, and re-queue them just before running the actual agi command + or exiting. - QUEUE_GET_CHANNEL([,]) + ASTERISK-25951 #close - The queue position parameter defaults to 1 if not specified. + Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645 - Noop(${QUEUE_GET_CHANNEL(queuename, 2)}) - "SIP/peer-00000002", if queue exist and have at least 2 callers +2016-04-15 14:36 +0000 [c2158c01c2] Richard Mudgett - Noop(${QUEUE_GET_CHANNEL(queuename, 1)}) - Noop(${QUEUE_GET_CHANNEL(queuename)}) - "SIP/peer-00000000", if queue exist and have at least 1 caller + * res_stasis: Handle re-enter stasis bridge with swap channel. - ASTERISK-24365 #close - Reported by: Kristian Hogh - Patches: - queue_get_firstchannel.patch (license #6639) patch uploaded by Kristian Hogh - rb4035.patch (license #6639) patch uploaded by Kristian Hogh - Patch morphed from QUEUE_GET_FIRSTCHANEL to the more general QUEUE_GET_CHANNEL - on reviewbord. + We lose the fact that there is a swap channel if there is one. We + currently wind up rejoining the stasis bridge as a normal join after the + swap channel has already been kicked from the bridge. - Review: https://reviewboard.asterisk.org/r/4035/ + This patch preserves the swap channel so the AMI/ARI events can note that + the channel joining the bridge is swapping with another channel. Another + benefit to swaqpping in one operation is if there are any channels that + get lonely (MOH, bridge playback, and bridge record channels). The lonely + channels won't leave before the joining channel has a chance to come back + in under stasis if the swap channel is the only reason the lonely channels + are staying in the bridge. + ASTERISK-25947 #close + Reported by: Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424493 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24649 + Reported by: John Bigelow -2014-10-03 12:47 +0000 [0165c5f95a] Richard Mudgett + ASTERISK-24782 + Reported by: John Bigelow - * chan_pjsip: Fix deadlock when masquerading PJSIP channels. + Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee - Performing a directed call pickup resulted in a deadlock when PJSIP - channels were involved. +2016-04-19 16:58 +0000 [4bdc54f66c] Richard Mudgett - A masquerade needs to hold onto the channel locks while it swaps channel - information between the two channels involved in the masquerade. With - PJSIP channels, the fixup routine needed to push a fixup task onto the - PJSIP channel's serializer. Unfortunately, if the serializer was also - processing a task that needed to lock the channel, you get deadlock. + * bridge: Hold off more than one imparting channel at a time. - * Added a new control frame that is used to notify the channels that a - masquerade is about to start and when it has completed. + An earlier patch blocked the ast_bridge_impart() call until the channel + either entered the target bridge or it failed. Unfortuantely, if the + target bridge is stasis and the imprted channel is not a stasis channel, + stasis bounces the channel out of the bridge to come back into the bridge + as a proper stasis channel. When the channel is bounced out, that + released the block on ast_bridge_impart() to continue. If the impart was + a result of a transfer, then it became a race to see if the swap channel + would get hung up before the imparted channel could come back into the + stasis bridge. If the imparted channel won then everything is fine. If + the swap channel gets hung up first then the transfer will fail because + the swap channel is leaving the bridge. - * Added the ability to query taskprocessors if the current thread is the - taskprocessor thread. + * Allow a chain of ast_bridge_impart()'s to happen before any are + unblocked to prevent the race condition described above. When the channel + finally joins the bridge or completely fails to join the bridge then the + ast_bridge_impart() instances are unblocked. - * Added the ability to suspend/unsuspend the PJSIP serializer thread so a - masquerade could fixup the PJSIP channel without using the serializer. + ASTERISK-25947 + Reported by: Richard Mudgett - ASTERISK-24356 #close - Reported by: rmudgett + ASTERISK-24649 + Reported by: John Bigelow - Review: https://reviewboard.asterisk.org/r/4034/ - ........ + ASTERISK-24782 + Reported by: John Bigelow - Merged revisions 424471 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1 - Merged revisions 424472 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-08 14:56 +0000 [1fa5565fc4] Kevin Harwell + * bridge.c: Fixed race condition during attended transfer - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424473 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + During an attended transfer a thread is started that handles imparting the + bridge channel. From the start of the thread to when the bridge channel is + ready exists a gap that can potentially cause problems (for instance, the + channel being swapped is hung up before the replacement channel enters the + bridge thus stopping the transfer). This patch adds a condition that waits + for the impart thread to get to a point of acceptable readiness before + allowing the initiating thread to continue. -2014-10-03 10:55 +0000 [4967478d18] gtjoseph + ASTERISK-24782 + Reported by: John Bigelow - * sorcery: Prevent SEGV in sorcery_wizard_create when there's no create function + This patch is a remedial cherry-pick from v13. - When you call ast_sorcery_create() you don't necessarily know which wizard is - going to be invoked. If it happens to be a wizard like 'config' that doesn't - have a 'create' virtual function you get a segfault in the - sorcery_wizard_create callback. This patch catches the null function pointer, - does an ast_assert, and logs an error. + Change-Id: I08fe33a2560da924e676df55b181e46fca604577 - Review: https://reviewboard.asterisk.org/r/4044/ - ........ +2015-06-22 15:11 +0000 [ac53e65cb5] Kevin Harwell - Merged revisions 424447 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * bridge.c: Hangup attended transfer target if bridged - Merged revisions 424448 from http://svn.asterisk.org/svn/asterisk/branches/13 + After completing an attended transfer the transfer target channel was not being + hung up after leaving the bridge. Added an explicit softhangup to hangup said + channel, but only if it was previously bridged. + ASTERISK-24782 #close + Reported by: John Bigelow - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424449 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch is a remedial cherry-pick from v13. -2014-10-03 08:59 +0000 [b1f8eba178] Kinsey Moore + Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada - * PJSIP: Restore functional default for callerid_privacy +2015-04-07 11:40 +0000 [c8e21c4eb9] Kevin Harwell - The pjsip config option default fixups from r424263 altered the - functional default from "allowed_not_screened" to "allowed". This - change restores the functional default value when none is provided. - ........ + * bridge.c: Hangup attended transfer target after it has been swapped out - Merged revisions 424426 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + After completing an attended transfer the transfer target channel (the one that + gets swapped out) was not being hung up after leaving the bridge. This resulted + in a channel possibly being left around. Added an explicit softhangup for the + channel in question after the transfer is successfully completed in order to + make sure the channel is hung up. - Merged revisions 424427 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24782 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4575/ + This patch is a remedial cherry-pick from v13. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424428 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I26cc0c207acf74ade93e6567febf7b9776452058 -2014-10-03 08:33 +0000 [4246652603] Kinsey Moore +2015-01-29 17:02 +0000 [b81052d194] Scott Griepentrog - * Manager: Add missing fields and documentation for CoreShowChannels + * stasis transfer: fix stasis bridge push race part two - This corrects some issues introduced in the responses to the - CoreShowChannels AMI command as well as adding documentation for the - responses. The command in Asterisk 12 was missing the following fields: - Duration, Application, ApplicationData, and BridgedChannel and - BridgedUniqueID (replaced with BridgeId). + When swapping a Local channel in place of one already + in a bridge (to complete a bridge attended transfer), + the channel that was swapped out can actually be hung + up before the stasis bridge push callback executes on + the independant transfer thread. This results in the + stasis app loop dropping out and removing the control + that has the the app name which the local replacement + channel needs so it can re-enter stasis. - ASTERISK-24262 #close - Reported by: Mitch Claborn - Review: https://reviewboard.asterisk.org/r/4040/ - ........ + To avoid this race condition a new push_peek callback + has been added, and called from the ast_bridge_impart + thread before it launches the independant thread that + will complete the transfer. Now the stasis push_peek + callback can copy the stasis app name before the swap + channel can hang up. - Merged revisions 424423 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24649 + Review: https://reviewboard.asterisk.org/r/4382/ - Merged revisions 424424 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch is a remedial cherry-pick from v13. + Change-Id: I307c3b506af5af80ec506f73e8b78a91d79999e0 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424425 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-22 12:09 +0000 [a38d044e0a] Scott Griepentrog -2014-10-02 16:55 +0000 [2b0777c017] Richard Mudgett + * stasis transfer: fix a race condition on stasis bridge push - * res_pjsip: Make transport cipher option accept a comma separated list of cipher names. + After a bridge transfer completes where a local replacement + channel is used, a stasis transfer message with the details + of the transfer is sent. This is processed by stasis which + then sets the stasis app name and replaced channel snapshot + on the replacement channel. - Improvements to the res_pjsip transport cipher option. + However, since a separate thread was already started to run + stasis on the new replacement channel, a race was on to see + if the message processing would be completed before the app + name was needed, otherwise the channel would be hung up. - * Made the cipher option accept a comma separated list of OpenSSL cipher - names. Users of realtime will be glad if they have more than one name to - list. + This change moves the calls used to set the stasis app name + and the replace snapshot to the bridge_stasis_push function + callback from the bridge transfer logic, allowing the steps + to be completed earlier and more deterministically, and the + race elimianted. - * Added the CLI command 'pjsip list ciphers' so a user can know what - OpenSSL names are available for the cipher option. + NOTE: the swap channel parameter to bridge_stasis_push (and + thus all bridge push callbacks) must always be present when + performing a swap with another channel. - * Updated the cipher option online XML documentation to specify what is - expected for the value. + ASTERISK-24649 #close + Reported by: John Bigelow + Review: https://reviewboard.asterisk.org/r/4341/ - * Updated pjsip.conf.sample to not indicate that ALL is acceptable since - ALL does not imply a preference order for the ciphers and PJSIP does not - simply pass the string to OpenSSL for interpretation. + This patch is a remedial cherry-pick from v13. - ASTERISK-24199 #close - Reported by: Joshua Colp + Change-Id: I35c98989786f74cdd7940677002a1a88d34bd2dd - Review: https://reviewboard.asterisk.org/r/4018/ - ........ +2015-01-22 13:24 +0000 [bc0a8c7bac] Richard Mudgett - Merged revisions 424393 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Bridge core: Pass a ref with the swap channel when joining a bridge. - Merged revisions 424394 from http://svn.asterisk.org/svn/asterisk/branches/13 + When code imparts a channel into a bridge to swap with another channel, a + ref needs to be held on the swap channel to ensure that it cannot + dissapear before finding it in the bridge. + * The ast_bridge_join() swap channel parameter now always steals a ref for + the swap channel. This is the only change to the bridge framework's + public API semantics. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424395 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * bridge_channel_internal_join() now requires the bridge_channel->swap + channel to pass in a ref. -2014-10-02 15:23 +0000 [b15cd42b5b] Jonathan Rose + ASTERISK-24649 + Reported by: John Bigelow - * Alembic: Add enumerator value to sippeers -> directmedia - 'outgoing' + Review: https://reviewboard.asterisk.org/r/4354/ - The 'outgoing' value was left off of the enumerator when first creating the - column. This patch adds it, and should gracefully upgrade keeping the existing - data in tact. + This patch is a remedial cherry-pick from v13. - ASTERISK-23781 #close - Reported by: Stephen More - Review: https://reviewboard.asterisk.org/r/4013/ - ........ + Change-Id: I73fdf13a3a1042566281c7d06d6e83e2ef87c120 - Merged revisions 424372 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-04-19 17:52 +0000 [1feead5760] gtjoseph - Merged revisions 424373 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_callerid: Clear out display name if id->name is not valid + When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning + the From header, then it overwrites the display name and uri from the channel's + connected.id. If the connected.id.name wasn't valid, create_new_id_hdr was + leaving the display name from the From header in the new RPID or PAI header. + On an attended transfer where the originator had a caller id number set but not + a display name, the re-INVITE to the final transferee had the number of the + originator but the display name of the transferer. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Added a check to clear out the display name in the new header if + connected.id.name was invalid. -2014-10-02 10:33 +0000 [2f570094b7] Jonathan Rose + ASTERISK-25942 #close - * chan_pjsip: Fix an assertion for channels that lack formats on creation + Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b - ASTERISK-24222 #close - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/4017/ - ........ +2016-04-20 10:48 +0000 Asterisk Development Team - Merged revisions 424333 from http://svn.asterisk.org/svn/asterisk/branches/13 + * asterisk certified/13.1-cert6 Released. +2016-04-20 05:48 +0000 [5700190dba] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424358 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Release summaries: Remove previous versions -2014-10-02 08:36 +0000 [aa5458d6ab] Scott Griepentrog +2016-04-20 05:48 +0000 [21dfb6be03] Joshua Colp - * res_pjsip: document use of rewrite_contact in sample conf + * .version: Update for certified/13.1-cert6 - Without setting rewrite_contact, an invite to an endpoint - behind NAT will not reach it - unless the endpoint itself - uses STUN or TURN to discover it's public URI. Thus, the - use of this should be in the sample documentation. +2016-04-20 05:48 +0000 [58cff8e219] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4036/ - ........ + * .lastclean: Update for certified/13.1-cert6 - Merged revisions 424337 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-04-20 05:48 +0000 [a98618d0ed] Joshua Colp - Merged revisions 424338 from http://svn.asterisk.org/svn/asterisk/branches/13 + * realtime: Add database scripts for certified/13.1-cert6 +2016-04-18 12:12 +0000 [5d390bc4c6] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424339 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * PJSIP: Remove PJSIP parsing functions from uri length validation. -2014-10-01 15:37 +0000 [a752ca00bd] Corey Farrell + The PJSIP parsing functions provide a nice concise way to check the + length of a hostname in a SIP URI. The problem is that in order to use + those parsing functions, it's required to use them from a thread that + has registered with PJLib. - * res_hep: Release allocation reference to configuration. + On startup, when parsing AOR configuration, the permanent URI handler + may not be run from a PJLib-registered thread. Specifically, this could + happen when Asterisk was started in daemon mode rather than + console-mode. If PJProject were compiled with assertions enabled, then + this would cause Asterisk to crash on startup. - ASTERISK-24362 #close - Reported by: Corey Farrell - Review: https://reviewboard.asterisk.org/r/4026/ - ........ + The solution presented here is to do our own parsing of the contact URI + in order to ensure that the hostname in the URI is not too long. The + parsing does not attempt to perform a full SIP URI parse/validation, + since the hostname in the URI is what is important. - Merged revisions 424312 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-25928 #close + Reported by Joshua Colp - Merged revisions 424313 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60 +2016-04-18 17:00 +0000 [204861b305] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424314 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_registrar: Fix bad memory-ness with user_agent. -2014-10-01 11:39 +0000 [adba2a8d7f] Joshua Colp + Recent changes to the PJSIP registrar resulted in tests failing due to + missing AOR_CONTACT_ADDED test events. The reason for this was that the + user_agent string had junk values in it, resulting in being unable to + generate the event. - * res_pjsip: Add 'dtls_fingerprint' option to configure DTLS fingerprint hash. + I'm going to be honest here, I have no idea why this was happening. Here + are the steps needed for the user_agent variable to get messed up: + * REGISTER is received + * First contact in the REGISTER results in a contact being removed + * Second contact in the REGISTER results in a contact being added + * The contact, AOR, expiration, and user agent all have to be passed as + format parameters to the creation of a string. Any subset of those + parameters would not be enough to cause the problem. - During the latest update to DTLS-SRTP support the ability to configure - the hash used for fingerprints was added. This gave us two supported ones: - SHA-1 and SHA-256. The default was accordingly updated to SHA-256. - Unfortunately this configuration ability was not exposed within res_pjsip. - This change adds a dtls_fingerprint option that controls it. + Looking into what was happening, the thing that struck me as odd was + that the user_agent variable was meant to be set to the value of the + User-Agent SIP header in the incoming REGISTER. However, when removing a + contact, the user_agent variable would be set (via ast_strdupa inside a + loop) to the stored contact's user_agent. This means that the + user_agent's value would be incorrect when attempting to process further + contacts in the incoming REGISTER. - #SIPit31 - ........ + The fix here is to use a different variable for the stored user agent + when removing a contact. Correcting the behavior to be correct also + means the memory usage is less weird, and the issue no longer occurs. - Merged revisions 424290 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-25929 #close + Reported by Joshua Colp - Merged revisions 424291 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08 +2016-04-18 13:41 +0000 [08b8a5eea9] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424292 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_transport_management: Allow unload to occur. -2014-10-01 11:20 +0000 [9233b1cf44] Joshua Colp + At shutdown it is possible for modules to be unloaded that wouldn't + normally be unloaded. This allows the environment to be cleaned up. - * res_pjsip_sdp_rtp: Accept DTLS attributes in top level, not just media session. + The res_pjsip_transport_management module did not have the unload + logic in it to clean itself up causing the res_pjsip module to not + get unloaded. As a result the res_pjsip monitor thread kept going + processing traffic and timers when it shouldn't. - #SIPit31 - ........ + Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a - Merged revisions 424287 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-04-14 20:22 +0000 Asterisk Development Team - Merged revisions 424288 from http://svn.asterisk.org/svn/asterisk/branches/13 + * asterisk certified/13.1-cert5 Released. +2016-04-14 15:22 +0000 [9edfb2c1b8] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424289 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Release summaries: Remove previous versions -2014-10-01 07:28 +0000 [4d2c7c23f8] Kinsey Moore +2016-04-14 15:22 +0000 [ec42f1d5e6] Kevin Harwell - * PJSIP: Handle defaults properly + * .version: Update for certified/13.1-cert5 - This updates the code behind PJSIP configuration options with custom - handlers to deal with the assigned default values properly where it - makes sense and adjusting the default value where it doesn't. Before - applying this patch, there were several cases where the default value - for an option would prevent that config section from loading properly. +2016-04-14 15:22 +0000 [5fca21d105] Kevin Harwell - Reported by: Thomas Thompson - Review: https://reviewboard.asterisk.org/r/4019/ - ........ + * .lastclean: Update for certified/13.1-cert5 - Merged revisions 424263 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-04-14 15:22 +0000 [445e8b9dfc] Kevin Harwell - Merged revisions 424266 from http://svn.asterisk.org/svn/asterisk/branches/13 + * realtime: Add database scripts for certified/13.1-cert5 +2016-04-14 13:49 +0000 [b66c7367ec] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424267 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * transport management: Register thread with PJProject. -2014-10-01 07:15 +0000 [122cc050d0] Kinsey Moore + The scheduler thread that kills idle TCP connections was not registering + with PJProject properly and causing assertions if PJProject was built in + debug mode. - * PJSIP: Force transport on contact rewrite + This change registers the thread with PJProject the first time that the + scheduler callback executes. - If contact rewriting is enabled but the contact differs in transport - from what is actually being used, messages after the initial INVITE - transaction can be sent to an incorrect transport/port combination. In - the case where this bug occurred the remote party never received a BYE - since it was sent to the remote party's TCP port over UDP. + AST-2016-005 - Review: https://reviewboard.asterisk.org/r/4032/ - ........ + Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283 - Merged revisions 424244 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-03-08 12:12 +0000 [023d2936ba] Mark Michelson - Merged revisions 424245 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_transport_management: Kill idle TCP connections. + "Idle" here means that someone connects to us and does not send a SIP + request. PJProject will not automatically time out such connections, so + it's up to Asterisk to do it instead. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424246 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When we receive an incoming TCP connection, we will start a timer + (equivalent to transaction timer D) waiting to receive an incoming + request. If we do not receive a request in that timeframe, then we will + shut down the TCP connection. -2014-10-01 05:10 +0000 [c3a7524457] ibercom (License #6599) + ASTERISK-25796 #close + Reported by George Joseph - * chan_sip: Simplify some unref code by removing unlink_peer_from_tables. + AST-2016-005 - ASTERISK-22945 #related - Reported by: ibercom - Patches: - asterisk11-chan_sip-simplifies.patch uploaded by ibercom (License #6599) - ........ + Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6 - Merged revisions 424181 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ +2016-03-08 10:52 +0000 [0b1fe6b0ee] Mark Michelson - Merged revisions 424182 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Rename res_pjsip_keepalive res_pjsip_transport_management - Merged revisions 424183 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-25796 + Reported by George Joseph - Merged revisions 424184 from http://svn.asterisk.org/svn/asterisk/branches/13 + AST-2016-005 + Change-Id: Id322a05f927392293570599730050bc677d99433 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424185 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2016-04-14 07:20 +0000 [e2e8699d00] Mark Michelson -2014-10-01 04:55 +0000 [841d978a30] ibercom (License #6599) + * AST-2016-004: Fix crash on REGISTER with long URI. - * chan_sip: Remove excess ref of realtime peer before sip_poke_peer. + Due to some ignored return values, Asterisk could crash if processing an + incoming REGISTER whose contact URI was above a certain length. - The peer is referenced at the end of sip_poke_peer, it should not get - an extra ref before the call to sip_poke_peer. This fixes a memory - leak. + ASTERISK-25707 #close + Reported by George Joseph - ASTERISK-22945 #close - Reported by: ibercom - Tested by: Yuriy Gorlichenko Patches: - asterisk11.patch uploaded by ibercom (License #6599) - - Review: https://reviewboard.asterisk.org/r/4031/ - ........ - - Merged revisions 424176 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + 0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch - Merged revisions 424177 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + AST-2016-004 - Merged revisions 424178 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: Ic4f5e49f1a83fef4951ffeeef8f443a7f6ac15eb - Merged revisions 424179 from http://svn.asterisk.org/svn/asterisk/branches/13 +2016-04-05 14:23 +0000 [967bb9eaf7] Mark Michelson + * res_pjsip: Handle deferred SDP hold/unhold properly. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424180 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Some SIP devices indicate hold/unhold using deferred SDP reinvites. In + other words, they provide no SDP in the reinvite. -2014-09-30 06:42 +0000 [d7c29885ad] Joshua Colp + A typical transaction that starts hold might look something like this: - * res_pjsip_sdp_rtp: Don't place an extra whitespace before 'rport' and don't put IPv6 addresses in brackets. + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating sendrecv on streams. + * Device sends ACK with SDP indicating sendonly on streams. - #SIPit31 - ........ + At this point, PJMedia's SDP negotiator saves Asterisk's local state as + being recvonly. - Merged revisions 424155 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Now, when the device attempts to unhold, it again uses a deferred SDP + reinvite, so we end up doing the following: - Merged revisions 424156 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Device sends reinvite with no SDP + * Asterisk sends 200 OK with SDP indicating recvonly on streams + * Device sends ACK with SDP indicating sendonly on streams + The problem here is that Asterisk offered recvonly, and by RFC 3264's + rules, if an offer is recvonly, the answer has to be sendonly. The + result is that the device is not taken off hold. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424157 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + What is supposed to happen is that Asterisk should indicate sendrecv in + the 200 OK that it sends. This way, the device has the freedom to + indicate sendrecv if it wants the stream taken off hold, or it can + continue to respond with sendonly if the purpose of the reinvite was + something else (like a session timer refresher). -2014-09-30 06:36 +0000 [3641ebcf96] Joshua Colp + The fix here is to alter the SDP negotiator's state when we receive a + reinvite with no SDP. If the negotiator's state is currently in the + recvonly or inactive state, then we alter our local state to be + sendrecv. This way, we allow the device to indicate the stream state as + desired. - * res_rtp_asterisk: Ensure that the base and mapped address for candidates is present in SDP. + ASTERISK-25854 #close + Reported by Robert McGilvray - This change fixes an issue where ICE candidates put into the SDP did not contain - the 'raddr' and 'rport' information for server reflexive and relay candidates. + Change-Id: I7615737276165eef3a593038413d936247dcc6ed - #SIPit31 - ........ +2016-03-28 18:10 +0000 [6739081385] Richard Mudgett - Merged revisions 424151 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_stasis: Fix crash on a hanging up channel. - Merged revisions 424152 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Give the struct stasis_app_control ao2 object a ref to the channel held + in the object. Now the channel will still be around if a thread needs to + post a stasis message instead of crash because the topic was destroyed. - Merged revisions 424153 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Moved stopping any lingering silence generator out of the struct + stasis_app_control destructor and made it a part of exiting the Stasis + application. Who knows which thread the destructor will be called under + so it cannot affect the channel's silence generator. Not only was the + channel unprotected when the silence generator was stopped, stasis may no + longer even control the channel. + ASTERISK-25882 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424154 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4 -2014-09-29 17:00 +0000 [27396a6b59] gtjoseph +2016-02-26 18:54 +0000 [a06d6811b6] Richard Mudgett - * pjsip_cli: Suppress header print on error or no objects + * res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason. - If there's an error on the pjsip command line or there are no objects, don't - print the column headers. + Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd - ASTERISK-24350 #close - Reported-by: Brad Latus - Tested-by: George Joseph - Tested-by: Brad Latus +2016-02-15 12:52 +0000 [b7b193a430] Joshua Colp - Review: https://reviewboard.asterisk.org/r/4025/ - ........ + * res_pjsip_pubsub: Move where the subscription is stored to after initialized. - Merged revisions 424128 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + A problem arose when testing the AMI subscription listing actions where it + was possible for a subscription that had not been fully initialized to be + listed. This was problematic as the underlying listing code would crash. - Merged revisions 424129 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change makes it so the subscription tree is fully set up before it is + added to the list of subscriptions. This ensures that when the listing actions + get the subscription it is valid. + ASTERISK-25738 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424130 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48 + (cherry picked from commit 1c4f2a920db173412b38aab785ba22c2cc489f89) -2014-09-29 16:32 +0000 [b56dfb78c5] Walter Doekes +2016-02-11 18:31 +0000 Asterisk Development Team - * autosupport: Fix bashism. + * asterisk certified/13.1-cert4 Released. - '==' is bashism (bashspecific, fails when dash is /bin/sh). Anyway, a - 'case' works better there. +2016-02-11 12:31 +0000 [7df413fbb3] Kevin Harwell - Originally committed in r375059 and r375060 on 2012-10-16 21:13:08. + * Release summaries: Remove previous versions - ASTERISK-20567 #close - Reported by: Tzafrir Cohen - ........ +2016-02-11 12:31 +0000 [1423445b23] Kevin Harwell - Merged revisions 424117 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * .version: Update for certified/13.1-cert4 - Merged revisions 424125 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2016-02-11 12:31 +0000 [9a8b627f26] Kevin Harwell - Merged revisions 424126 from http://svn.asterisk.org/svn/asterisk/branches/13 + * .lastclean: Update for certified/13.1-cert4 +2016-02-11 12:31 +0000 [d424452711] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424127 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * realtime: Add database scripts for certified/13.1-cert4 -2014-09-29 16:18 +0000 [270932635d] Richard Mudgett +2016-02-04 16:17 +0000 [59ccc89054] Mark Michelson - * Simplify UUID generation in several places. + * Check for OpenSSL defines before trying to use them. - Replace code using ast_uuid_generate() with simpler and faster code using - ast_uuid_generate_str(). The new code avoids a malloc(), free(), and - copy. - ........ + The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior + to OpenSSL version 1.0.1. A recent commit attempts to, by default, set + these options, which can cause problems on systems with older OpenSSL + installations. - Merged revisions 424103 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + This commit adds a configure script check for those defines and will not + attempt to make use of those if they do not exist. We will print a + warning urging the user to upgrade their OpenSSL installation if those + defines are not present. - Merged revisions 424105 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d +2016-02-04 11:39 +0000 [bffd954a63] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424109 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_stasis_device_state: Fix refcounting error. -2014-09-29 15:28 +0000 [9d2bc0675a] Richard Mudgett + Device state subscription lifetimes were governed by when the + subscription was established and unsubscribed from. However, it is + possible that at the time of unsubscription, there could be device state + events still in flight. When those device state events occur, the device + state callback could attempt to dereference a freed pointer. Crash. - * threadpool.c: Minor cleanup fixes. + This change ensures that the lifetime of the device state subscription + does not end until the underlying stasis subscription has confirmed that + its final message has been sent. - * Fix threadpool_alloc() prototype. + Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2 - * Add missing off-nominal NULL check of pool in threadpool_alloc(). +2016-01-25 15:48 +0000 [0eb43ea9ee] Richard Mudgett - * searializer_create() does not need to create the object with a lock as - the lock is not used. - ........ + * app_confbridge: Make non-admin users join a muted conference muted. - Merged revisions 424096 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-20987 #close + Reported by: hristo - Merged revisions 424097 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38 +2016-02-03 22:14 +0000 Asterisk Development Team - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424098 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * asterisk certified/13.1-cert3 Released. -2014-09-27 12:29 +0000 [2eef53c465] Joshua Colp +2016-02-03 16:05 +0000 [2142c74a02] Kevin Harwell - * res_pjsip_session: Reduce SDP size by removing duplicate connection lines. + * .version: Update for certified/13.1-cert3 - Due to the architecture of how media streams are handled each individual - handler adds connection details (IP address) for it. The first media stream - is then used as the top level SDP connection line. In practice each - line ends up being the same so to reduce the SDP size stream-level connection - information is also added to the SDP if it differs from the top level SDP - connection line. +2016-02-03 16:04 +0000 [07c95d33bd] Kevin Harwell + * .lastclean: Update for certified/13.1-cert3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424077 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2016-02-03 16:04 +0000 [ce314be09d] Kevin Harwell -2014-09-27 07:44 +0000 [76744543b4] Joshua Colp + * realtime: Add database scripts for certified/13.1-cert3 - * res_pjsip_session: Add additional checks for delaying session refreshes. +2016-02-03 12:05 +0000 [b50d584022] Joshua Colp - There are certain situations which no checks existed for which need to prevent - session refreshes. This includes sending a session refresh with SDP before SDP - negotiation has completed and sending a session refresh before the dialog itself - has been established. Checks for these have been added. + * AST-2016-001 http: Provide greater control of TLS and set modern defaults. - Additionally COLP related UPDATEs were including SDP when it is not needed. + This change exposes the configuration of various aspects of the TLS + support and sets the default to the modern standards. - Review: https://reviewboard.asterisk.org/r/4008/ - ........ + The TLS cipher is now set to the best values according to the + Mozilla OpSec team, different TLS versions can now be disabled, and + the cipher order can be forced to be that of the server instead of + the client. - Merged revisions 424056 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24972 #close - Merged revisions 424057 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I8635470e722ce6d47951a5045ae9ef348271d395 +2015-12-07 12:46 +0000 [4fe2aa9a20] Richard Mudgett + * AST-2016-003 udptl.c: Fix uninitialized values. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424058 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Sending UDPTL packets to Asterisk with the right amount of missing + sequence numbers and enough redundant 0-length IFP packets, can make + Asterisk crash. -2014-09-26 10:51 +0000 [3c1804eb0d] Richard Mudgett + ASTERISK-25603 #close + Reported by: Walter Doekes - * format_mp3: Made the get script conditionally apply patch if not already there. + ASTERISK-25742 #close + Reported by: Torrey Searle - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424039 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I97df8375041be986f3f266ac1946a538023a5255 +2015-09-28 17:07 +0000 [c7ab026196] Richard Mudgett -2014-09-26 10:43 +0000 [e0abb82ab8] Walter Doekes + * AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow. - * core: Ouch, forgot to undo a test free() in r423978. + Setting the sip.conf timert1 value to a value higher than 1245 can cause + an integer overflow and result in large retransmit timeout times. These + large timeout times hold system file descriptors hostage and can cause the + system to run out of file descriptors. + NOTE: The default sip.conf timert1 value is 500 which does not expose the + vulnerability. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424038 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * The overflow is now detected and the previous timeout time is + calculated. -2014-09-26 10:28 +0000 [d07b9af24b] Jeremy Laine + ASTERISK-25397 #close + Reported by: Alexander Traud - * res_fax: Fix out of bounds error in update_modem_bits(). + Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290 +2016-01-25 09:35 +0000 [7d581b32e9] Joshua Colp - ASTERISK-24357 #close - Reported by: Jeremy Laine - Patches: - res_fax_bounds.patch (license #6561) patch uploaded by Jeremy Laine - Modified patch to not use magic numbers. - ........ + * config: Allow options to register when documentation is unavailable. - Merged revisions 423979 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + The config options framework is strict in that configuration options must + be documented unless XML documentation support is not available. In + practice this is useful as it ensures documentation exists however in + off-nominal cases this can cause strange problems. - Merged revisions 423983 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + If it is expected that a config option has a non-zero or non-empty + default value but the config option documentation is unavailable + this reasonable expectation will not be met. This can cause obscure + crashes and weirdness depending on how the code handles it. - Merged revisions 423987 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + This change tweaks the behavior to ensure that the config option + is still allowed to register, apply default values, and be set when + devmode is not enabled. If devmode is enabled then the option can + NOT be set. - Merged revisions 423992 from http://svn.asterisk.org/svn/asterisk/branches/13 + This also does not remove the initial documentation error message that + is output on load when registering the configuration option. + ASTERISK-25725 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@424016 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8 + (cherry picked from commit f22074e5d9ed1882be976299311b8e093d25e1da) -2014-09-26 09:41 +0000 [37179a2b1f] Walter Doekes +2016-01-25 16:51 +0000 [22eb1b48c0] Mark Michelson - * core: Don't allow free to mean ast_free (and malloc, etc..). + * res_pjsip_pubsub: Prevent crash from AMI command on freed subscription. - This gets rid of most old libc free/malloc/realloc and replaces them - with ast_free and friends. When compiling with MALLOC_DEBUG you'll - notice it when you're mistakenly using one of the libc variants. For - the legacy cases you can define WRAP_LIBC_MALLOC before including - asterisk.h. + A test recently uncovered that running an ill-timed AMI command to show + inbound subscriptions could cause a crash since Asterisk will try to + operate on a freed subscription. - Even better would be if the errors were also enabled when compiling - without MALLOC_DEBUG, but that's a slightly more invasive header - file change. + The fix for this is to remove the subscription tree from the list of + subscriptions at the time that we are sending our final NOTIFY request + out. This way, as the subscription is in the process of dying, it is + inaccessible from AMI. - Those compiling addons/format_mp3 will need to rerun - ./contrib/scripts/get_mp3_source.sh. + Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23 + (cherry picked from commit b073244c511f9634de57ea401ab9dbebcf2390e8) - ASTERISK-24348 #related - Review: https://reviewboard.asterisk.org/r/4015/ +2016-01-19 18:20 +0000 [826ff1d7a3] Richard Mudgett + * res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423978 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25712 #close + Reported by: Richard Mudgett -2014-09-26 03:26 +0000 [b8c1130ed1] Jeremy Lainé (License #6561) + Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f - * docs: Escape unescaped minus sign in asterisk.8 manpage. +2016-01-14 14:42 +0000 [6e18a60a47] Kevin Harwell - ASTERISK-23768 #close - Reported by: Jeremy Lainé - Patches: - escape_manpage_hyphen.patch uploaded by Jeremy Lainé (License #6561) - ........ + * bridge_basic: don't cache xferfailsound during an attended transfer - Merged revisions 423915 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + The xferfailsound was read from the channel at the beginning of the transfer, + and that value is "cached" for the duration of the transfer. Therefore, changing + the xferfailsound on the channel using the FEATURE() dialplan function does + nothing once the transfer is under way. - Merged revisions 423916 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + This makes it so the transfer code instead gets the xferfailsound configuration + options from the channel when it is actually going to be used. - Merged revisions 423917 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + This patch also fixes a potential memory leak of the props object as well as + making sure the condition variable gets initialized before being destroyed. - Merged revisions 423918 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25696 #close + Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423919 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-12-28 14:02 +0000 [f63fb0e337] Joshua Colp -2014-09-25 16:03 +0000 [fa0c33ebc1] Richard Mudgett + * test_time: Provide a timeout when waiting. - * res_pjsip.c: Add missing off nominal cleanup in ast_sip_push_task_synchronous(). + The test_timezone_watch unit test is written to expect a + condition to be signaled when the inotify daemon thread runs. + There exists a small window where the test_timezone_watch + thread can signal the inotify daemon thread while it is not + reading on the underlying file descriptor. If this occurs + the test_timezone_watch thread will wait indefinitely for a + signal that will never arrive. - * Made memset the std struct in ast_sip_push_task_synchronous() because if - DEBUG_THREADS is enabled then uninitialized lock tracking data is used. - ........ + This change adds a timeout to the condition so it will return + regardless after a period of time. - Merged revisions 423894 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390 + (cherry picked from commit c8499b8d5adc805efadb91b483d9d987f62891ff) - Merged revisions 423895 from http://svn.asterisk.org/svn/asterisk/branches/13 +2016-01-12 11:14 +0000 [def98bb996] Joshua Colp + * app: Queue hangup if channel is hung up during sub or macro execution. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423896 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This issue was exposed when executing a connected line subroutine. + When connected or redirected subroutines or macros are executed it is + expected that the underlying applications and logic invoked are fast + and do not consume frames. In practice this constraint is not enforced + and if not adhered to will cause channels to continue when they shouldn't. + This is because each caller of the connected or redirected logic does not + check whether the channel has been hung up on return. As a result the + the hung up channel continues. -2014-09-25 15:49 +0000 [d172d84fe1] Kristian Høgh (License #6639) + This change makes it so when the API to execute a subroutine or + macro is invoked the channel is checked to determine if it has hung up. + If it has then a hangup is queued again so the caller will see it + and stop. - * musiconhold: Add preferchannelclass=no option to prefer app class. + ASTERISK-25690 #close - The new option 'preferchannelclass' is added to musiconhold.conf. If yes - (the default) the CHANNEL(musicclass) is preferred when choosing the - hold music. If it is no, the class suggested by the application that - calls the MoH (e.g. the Queue() app) gets preferred (new behaviour). + Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea - This way you set a different hold-music from the Queue-music by setting - both the CHANNEL(musicclass) and the queue-context musicclass. +2016-01-08 15:22 +0000 [bb29802615] Kevin Harwell - ASTERISK-24276 #close - Reported by: Kristian Høgh - Patches: - app_override_channel_moh.patch uploaded by Kristian Høgh (License #6639) + * pbx: Deadlock between contexts container and context_merge locks - Review: https://reviewboard.asterisk.org/r/4010/ + Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5) + introduced the possibility of a deadlock. Due to the mentioned modifications + ast_change_hints now needs to keep both merge/delete and state callbacks from + occurring while it executes. Unfortunately, sometimes ast_change_hints can be + called with the contexts container locked. When this happens it's possible for + another thread to grab the context_merge_lock before the thread calling into + ast_change_hints does and then try to obtain the contexts container lock. This + of course causes a deadlock between the two threads. The thread calling into + ast_change_hints waits for the other thread to release context_merge_lock and + the other thread is waiting on that one to release the contexts container lock. + Unfortunately, there is not a great way to fix this problem. When hints change, + the subsequent state callbacks cannot run at the same time as a merge/delete, + nor when the usual state callbacks do. This patch alleviates the problem by + having those particular callbacks (the ones run after a hint change) occur in a + serialized task. By moving the context_merge_lock to a task it can now safely be + attempted or held without a deadlock occurring. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423893 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25640 #close + Reported by: Krzysztof Trempala -2014-09-24 13:35 +0000 [68077634fe] Richard Mudgett + Change-Id: If2210ea241afd1585dc2594c16faff84579bf302 - * pjsip_options.c: Fix race condition stopping periodic out of dialog OPTIONS request. +2016-01-07 15:37 +0000 [ca869878b4] Mark Michelson - The crash on the issues is a result of an invalid transport configuration - change when asterisk is restarted. The attempt to send the qualify - request fails and we cleaned up. However, the callback is also called - which results in a double unref of the objects involved. + * PJSIP: Prevent deadlock due to dialog/transaction lock inversion. - * Put a wrapper around pjsip_endpt_send_request() to detect when the - passed in callback is called because of an error so callers can know to - not cleanup. + A deadlock was observed where the monitor thread was stuck, therefore + resulting in no incoming SIP traffic being processed. - * Made send_request_cb() able to handle repeated challenges (Up to 10). + The problem occurred when two 200 OK responses arrived in response to a + terminating NOTIFY request sent from Asterisk. The first 200 OK was + dispatched to a threadpool worker, who locked the corresponding + transaction. The second 200 OK arrived, resulting in the monitor thread + locking the dialog. At this point, the two threads are at odds, because + the monitor thread attempts to lock the transaction, and the threadpool + thread loops attempting to try to lock the dialog. - * Fix periodic endpoint qualify OPTIONS sched deletion race by avoiding - it. The sched entry will no longer self stop and must be externally - stopped. + In this case, the fix is to not have the monitor thread attempt to hold + both the dialog and transaction locks at the same time. Instead, we + release the dialog lock before attempting to lock the transaction. - * Added REF_DEBUG description tags to struct sched_data in - pjsip_options.c. + There have also been some debug messages added to the process in an + attempt to make it more clear what is going on in the process. - * Fix some off-nominal ref leaks in schedule_qualify(), - qualify_and_schedule(). + ASTERISK-25668 #close + Reported by Mark Michelson - * Reordered pjsip_options.c module start/stop code to cleanup better on - error. + Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a - ASTERISK-24295 #close - Reported by: Rogger Padilla +2015-12-10 11:44 +0000 [4e5aec3f0a] Jonathan Rose - Review: https://reviewboard.asterisk.org/r/3954/ - ........ + * chan_sip: Add TCP/TLS keepalive to TCP/TLS server - Merged revisions 423866 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Adds the TCP Keep Alive option to TCP and TLS server sockets. Previously + this option was only being set on session sockets. + http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ + According to the link above, the SO_KEEPALIVE option is useful for knowing + when a TCP connected endpoint has severed communication without indicating + it or has become unreachable for some reason. Without this patch, keep + alive is not set on the socket listening for incoming TCP sessions and + in Komatsu's report this resulted in the thread listening for TCP becoming + stuck in a waiting state. - Merged revisions 423867 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25364 #close + Reported by: Hiroaki Komatsu + Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36 +2015-06-26 10:36 +0000 [4d10ed67d0] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423868 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences. -2014-09-24 03:55 +0000 [39fada4dc9] Walter Doekes + When a caller calls a FAX number and then hangs up right after the call is + answered then the T.38 re-INVITE automatic reject timer may still be + running after the channel goes away. - * chan_sip: Unref outbound proxy structure on dialog/pvt destruction. + * Added session NULL channel checks on the code paths that get executed by + t38_automatic_reject() to prevent a crash when the T.38 re-INVITE + automatic reject timer expires. - Make sure outbound proxy refs are always unreffed on dialog destruction. + ASTERISK-25168 + Reported by: Carl Fortin - Review: https://reviewboard.asterisk.org/r/4016/ - ........ + Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403 + (cherry picked from commit 8ea214aed782424a884b9a2f67d6dca270854e83) - Merged revisions 423800 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ +2015-12-01 16:11 +0000 [1ec791a3ba] Jonathan Rose - Merged revisions 423801 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Unset BRIDGEPEER when leaving a bridge - Merged revisions 423802 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Currently if a channel is transferred out of a bridge, the BRIDGEPEER + variable (also BRIDGEPVTCALLID) remain set even once the channel is + out of the bridge. This patch removes these variables when leaving + the bridge. - Merged revisions 423803 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25600 #close + Reported by: Mark Michelson + Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-11-30 16:42 +0000 [a164f2ce7f] Richard Mudgett -2014-09-23 09:36 +0000 [a89964a510] Mark Michelson + * sched.c: Make not return a sched id of 0. - * Make CDR and CEL unit tests less FRACKy. + According to the API doxygen a sched ID of 0 is valid. Unfortunately, 0 + was never returned historically and several users incorrectly coded usage + of the returned sched ID assuming that 0 was invalid. - Prior to this commit, CDR and CEL tests were expected to trigger - FRACKs (i.e. assertions) due to the fact that the channels they - create have no formats on them. Some code was independently added - recently that attempts to prevent FRACKs from occurring by failing - early when attempting to set up translation paths if one or both - channels support no formats. Unfortunately, this attempt to be helpful - made the CDR and CEL tests go from simply FRACKing to outright - failing and in some cases, failing so badly as to crash Asterisk. + ASTERISK-25476 - This commit seeks to correct past mistakes by adding the ulaw format - to channels created by the CDR and CEL unit tests. This makes setting - up translation paths succeed, eliminates previously-seen FRACKs, and - ultimately causes the unit tests to succeed again. + Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20 - Review: https://reviewboard.asterisk.org/r/4014 - ........ +2015-11-25 12:23 +0000 [a24db35ae3] Richard Mudgett - Merged revisions 423783 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions) + chan_sip.c: + * Initialize mwi subscription scheduler ids earlier because of ASTOBJ to + ao2 conversion. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423784 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Initialize register scheduler ids earlier because of ASTOBJ to ao2 + conversion. -2014-09-22 14:49 +0000 [593455621b] Torrey Searle (License #5334) + chan_skinny.c: + * Fix more scheduler usage for the valid 0 id value. - * chan_sip: On INVITE retransmission, don't add an extra 503 response. + ASTERISK-25476 - INVITE arrives to asterisk, asterisk responds Busy(). If the INVITE is - retransmitted, asterisk would generate a 503 in addition to the 486. + Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95 - Thanks Torrey Searle for providing a working regression test. +2015-11-24 12:44 +0000 [bea904e001] Richard Mudgett - ASTERISK-24335 #close + * Audit improper usage of scheduler exposed by 5c713fdf18f. - Review: https://reviewboard.asterisk.org/r/4003/ - Patches: - retrans_486_invite.patch uploaded by Torrey Searle (License #5334) - ........ + channels/chan_iax2.c: + * Initialize struct chan_iax2_pvt scheduler ids earlier because of + iax2_destroy_helper(). - Merged revisions 423720 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + channels/chan_sip.c: + channels/sip/config_parser.c: + * Fix initialization of scheduler id struct members. Some off nominal + paths had 0 as a scheduler id to be destroyed when it was never started. - Merged revisions 423721 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + chan_skinny.c: + * Fix some scheduler id comparisons that excluded the valid 0 id. - Merged revisions 423722 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + channel.c: + * Fix channel initialization of the video stream scheduler id. - Merged revisions 423723 from http://svn.asterisk.org/svn/asterisk/branches/13 + pbx_dundi.c: + * Fix channel initialization of the packet retransmission scheduler id. + ASTERISK-25476 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423724 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8 -2014-09-22 12:42 +0000 [63a4da4a0d] Walter Doekes +2015-11-23 14:27 +0000 [f5a6060707] Richard Mudgett - * cli.c: Fix tab completion "module load" when MALLOC_DEBUG is enabled. + * res_sorcery_realtime.c: Fix crash from NULL sorcery object type. - r421600 conflicted with r155763. + If the sorcery object type is not found a NULL is returned. + Unfortunately, sorcery_realtime_filter_objectset() will crash after + complaining about not finding the object type and saying to expect errors. - ASTERISK-24348 #close - ........ + * Use ao2_cleanup() instead of ao2_ref() to prevent the crash. - Merged revisions 423657 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + ASTERISK-25165 + Reported by Corey Farrell - Merged revisions 423658 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97 - Merged revisions 423659 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-05-05 18:17 +0000 [de43ae38b4] Richard Mudgett - Merged revisions 423660 from http://svn.asterisk.org/svn/asterisk/branches/13 + * features: Fix crash when transferee hangs up during DTMF attended transfer. + A crash happens with this sequence of steps: + 1) Party A is connected to party B. + 2) Party B starts a DTMF attended transfer. + 3) Party A hangs up while party B is dialing party C. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423661 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When party A hangs up the bridge that party A and party B are in is + dissolved and party B is kicked out of the bridge. When party B finishes + dialing party C he attempts to move to the new bridge with party C. Since + party B is no longer in a bridge the attempted move dereferences a NULL + bridge_channel pointer and crashes. -2014-09-20 20:16 +0000 [64a9e5f001] Matt Jordan + * Made the hold(), unhold(), ringing(), and the bridge_move() functions + tolerant of the channel not being in a bridge. The assertion that party B + is always in a bridge is not true if the bridged peer of party B hangs up + and dissolves the bridge. Being tolerant of not being in a bridge allows + the peer hangup stimulus to be processed by the FSM. - * main/channel: Unlock channel in off-nominal path + * Made the bridge_move() function return void since where the return value + for a failed move was checked generated a FSM coding ERROR message for a + normal off-nominal condition. - In r423414 (13) / r423415 (trunk), an API call that determines if a format - capability structure is empty was added. This returns true if the format - capability structure is completely empty or "none". A check for this was added - in channel.c's set_format call. Unfortunately, when this check was true, it - returned from the function while still holding the channel lock. This caused - the CDR unit tests - which have a tendency to create channels with no formats - - to deadlock. Whoops. + * Eliminated most uses of RAII_VAR in bridge_basic.c. - This patch unlocks the channel on the off-nominal path. - ........ + ASTERISK-25003 #close + Reported by: Artem Volodin - Merged revisions 423641 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada + (cherry picked from commit be1260a35f88faea4fa029d59343b124d250a8a6) +2015-11-16 04:29 +0000 [457d8dc124] Alec Davis - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423642 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked! -2014-09-20 18:55 +0000 [9bf039346a] Matt Jordan + commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525) + refer ASTERISK-24958 - * rest-api/api-docs/events.json: Remove non-compliant 'extends' attribute + above commit removed ast_channel_lock(qe->chan); + but failed to remove corresponding ast_channel_unlock(qe->chan); - Prior to the release of Swagger 1.2, the attribute 'extends' was being - promoted as a possible way to show that a particular object extends an existing - object. Instead, the Swagger specification went with the 'subTypes' attribute - in the base object. This patch removes the unsupported attribute; the object - that the offending objects proposed to extend already lists them in its - 'subTypes' attribute. + ASTERISK-25561 #close + Reported Alec Davis - ASTERISK-24300 #close - Reported by: Bradley Watkins - ........ + Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a - Merged revisions 423620 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-11-13 14:03 +0000 [c4751171a0] Mark Michelson - Merged revisions 423621 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Confbridge: Add a user timeout option + This option adds the ability to specify a timeout, in seconds, for a + participant in a ConfBridge. When the user's timeout has been reached, + the user is ejected from the conference with the CONFBRIDGE_RESULT + channel variable set to "TIMEOUT". - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423622 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The rationale for this change is that there have been times where we + have seen channels get "stuck" in ConfBridge because a network issue + results in a SIP BYE not being received by Asterisk. While these + channels can be hung up manually via CLI/AMI/ARI, adding some sort of + automatic cleanup of the channels is a nice feature to have. -2014-09-20 18:41 +0000 [de6e467db7] Matt Jordan + ASTERISK-25549 #close + Reported by Mark Michelson - * rest-api/api-docs: Correct basePath in resources to match top resources file + Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98 - The resources.json file that defines the resource JSON files used with ARI - references a basePath of 'http://localhost:8088/ari'. This does not match what - is defined in the resource files themselves, 'http://localhost:8088/stasis'. - The correct base path is the one that includes 'ari' in the URL; this patch - updates the various resource JSON files to have the correct basePath. +2015-11-13 14:19 +0000 [c0a7df1021] Mark Michelson - ASTERISK-24339 #close - Reported by: Bradley Watkins - ........ + * Taskprocessors: Increase high-water mark - Merged revisions 423617 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + In practical tests, we have seen certain taskprocessors, specifically + Stasis subscription taskprocessors, cross the recently-added high-water + mark and emit a warning. This high-water mark warning is only intended + to be emitted when things have tanked on the system and things are + heading south quickly. In the practical tests, the Stasis taskprocessors + sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in + any danger at all. - Merged revisions 423618 from http://svn.asterisk.org/svn/asterisk/branches/13 + As such, this ups the high-water mark to 500 tasks instead. It also + redefines the SIP threadpool request denial number to be a multiple of + the taskprocessor high-water mark. + Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423619 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-11-12 11:17 +0000 [2fc3267677] Mark Michelson -2014-09-19 14:51 +0000 [354fff327d] Joshua Colp + * res_pjsip distributor: Don't send 503 response to responses. - * res_pjsip_notify: Fix crash on unload/load and don't say the module doesn't exist on reload. + When the SIP threadpool is backed up with tasks, we send 503 responses + to ensure that we don't try to overload ourselves. The problem is that + we were not insuring that we were not trying to send a 503 to an + incoming SIP response. - When unloading the module did not unregister the CLI commands causing a crash upon - load when they were registered again. + This change makes it so that we only send the 503 on incoming requests. - When reloading the module the return value from the config options framework was not - checked to determine if an error occurred or not. This caused a message to be output - saying the module did not exist when reloading if no changes were present. + Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404 - AST-1433 #close - AST-1434 #close - ........ +2015-11-11 04:16 +0000 [d760c21038] Steve Davies - Merged revisions 423579 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Further fixes to improper usage of scheduler - Merged revisions 423580 from http://svn.asterisk.org/svn/asterisk/branches/13 + When ASTERISK-25449 was closed, a number of scheduler issues mentioned in + the comments were missed. These have since beed raised in ASTERISK-25476 + and elsewhere. + This patch attempts to collect all of the scheduler issues discovered so + far and address them sensibly. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423581 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25476 #close -2014-09-19 12:16 +0000 [ec0313c411] Richard Mudgett + Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b + (cherry picked from commit 07583c288828a496cd7730b55112128fea31eaef) - * res_pjsip_sdp_rtp.c: Fix native formats containing formats that were not negotiated. +2015-11-11 17:11 +0000 [287cab1a53] Mark Michelson - Outgoing PJSIP calls can result in non-negotiated formats listed in the - channel's native formats if video formats are listed in the endpoint's - configuration. The resulting call could then use a non-negotiated format - resulting in one way audio. + * res_pjsip: Deny requests when threadpool queue is backed up. - * Simplified the update of session->req_caps in set_caps(). Why do - something in five steps when only one is needed? + We have observed situations where the SIP threadpool may become + deadlocked. However, because incoming traffic is still arriving, the SIP + threadpool's queue can continue to grow, eventually running the system + out of memory. - AFS-162 #close + This change makes it so that incoming traffic gets rejected with a 503 + response if the queue is backed up too much. - Review: https://reviewboard.asterisk.org/r/4000/ - ........ + Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816 - Merged revisions 423561 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-11-11 11:04 +0000 [d073cb4b6d] Joshua Colp + * threadpool: Handle worker thread transitioning to dead when going active. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423563 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change adds handling of dead worker threads when moving them + to be active. When this happens the worker thread is removed from + both the active and idle threads container. If no threads are able + to be moved to active then the pool grows as configured. -2014-09-19 10:54 +0000 [6dae345674] Jonathan Rose + A unit test has also been added which thrashes the idle timeout + and thread activation to exploit any race conditions between the + two. - * Stasis_channels: Resolve unfinished Dials when doing masquerades + ASTERISK-25546 #close - Masquerades into channels that are in the dialing state don't end their dial - and this goes against the model for things like CDRs and generating Dial end - manager actions and such. + Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143 - ASTERISK-24237 #close - Reported by: Richard Mudgett - Review: https://reviewboard.asterisk.org/r/3990/ - ........ +2015-11-03 16:19 +0000 [b9713354dc] Jonathan Rose - Merged revisions 423525 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * taskprocessor: Add high water mark warnings - Merged revisions 423530 from http://svn.asterisk.org/svn/asterisk/branches/13 + If a taskprocessor's queue grows large, this can indicate that there + may be a problem with tasks not leaving the processor or else that + the number of available task processors for a given type of task is + too low. This patch makes it so that if a taskprocessor's task queue + grows above 100 queued tasks that it will emit a warning message. + Warning messages are emitted only once per task processor. + ASTERISK-25518 #close + Reported by: Jonathan Rose - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423546 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c -2014-09-19 10:11 +0000 [7e602175ff] Jonathan Rose +2015-06-23 11:21 +0000 [ac9432fdb6] Joshua Colp - * chan_iax2: Fix a crash when using chan_iax2 jitterbuffer settings + * app_dial: Hold reference to calling channel formats when dialing outbound. - Caused by format changes in Asterisk 13 + Currently when requesting a channel the native formats of the + calling channel are provided to the core for usage when dialing + the outbound channel. This occurs without holding the channel lock + or keeping a reference to the formats. This is problematic as + the channel driver may end up changing the formats during this time. + In the case of chan_sip this happens when an SDP negotiation + completes. - ASTERISK-24265 #close - Reported by: Dafi Ni - Review: https://reviewboard.asterisk.org/r/3999/ - ........ + This change makes it so app_dial keeps a reference to the native + formats of the calling channel which guarantees that they will + remain valid for the period of time needed. - Merged revisions 423524 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25172 #close + Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db + (cherry picked from commit 3b2b004d699b8cc7b808f62536bb2bc4db8b4e0e) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423526 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-11-04 14:31 +0000 [385e26efe2] Matt Jordan -2014-09-19 07:50 +0000 [7f2623a26f] Kinsey Moore + * main/dial: Protect access to the format_cap structure of the requesting channel - * PJSIP: Prevent T38 framehook being put on wrong channel + When a dial attempt is made that involves a requesting channel, we previously + were not: + a) Protecting access to the native format capabilities structure on the + requesting channel. That is inherently unsafe. + b) Reference bumping the lifetime of the format capabilities structure. - This change gives framehooks a reverse-direction masquerade callback in - addition to chan_fixup_cb similar to the callback added to datastores - to handle the same situation. The new callback provides the same - parameters as the fixup callback, but is called on the new channel's - framehooks before moving framehooks from the old channel to the new - channel. This gives the framehooks an oppurtunity to decide whether - they should remain on the new channel or be removed. + In both cases, something else could sneak in, blow away the format + capabilities, and we'd be holding onto an invalid format_cap structure. When + the newly created channel attempts to construct its format capabilities, things + go poorly. - This new callback is used to prevent the PJSIP T.38 framehook from - remaining on a masqueraded channel if the new channel is not also a - PJSIP channel. This was causing a crash when a local channel was - masqueraded into a PJSIP channel and the framehook was executed on the - local channel since the channel's tech private data was not structured - as expected. + This patch: + a) Ensures that we get a reference to the native format capabilities while + the requesting channel is locked + b) Holds a reference to the native format capabilities during the creation + of the new channel. - Review: https://reviewboard.asterisk.org/r/4001/ - ........ + ASTERISK-25522 #close - Merged revisions 423503 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f - Merged revisions 423504 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-11-02 17:19 +0000 [62799fe778] Mark Michelson + * res_pjsip: Set threadpool max size default to 50. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + During a stress test of subscriptions, a huge blast of + subscription-related traffic resulted in the threadpool expanding to a + ridiculous number of threads. The balooning of threads resulted in an + increase of memory, which led to a crash due to being out of memory. -2014-09-18 14:31 +0000 [40e033a6b6] Sean Bright + An easy fix for the particular test was to limit the size of the + threadpool, thus reining in the amount of memory that would be used. It + was decided that there really is no downside to having a non-infinite + default value for the maximum size of the threadpool, so this change + introduces 50 threads as the maximum threadpool size for the SIP + threadpool. - * res_pjsip: Don't require a password when doing userpass authentication. + ASTERISK-25513 #close + Reported by John Bigelow - An empty password is valid for username/password authentication so we should - allow password to be empty/not supplied. + Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be - Review: https://reviewboard.asterisk.org/r/3988 - ........ +2015-10-23 16:53 +0000 [6eda60936a] Kevin Harwell - Merged revisions 423481 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * alembic: Bad down revision in add_default_from_user script - Merged revisions 423482 from http://svn.asterisk.org/svn/asterisk/branches/13 + The down revision wasn't set correct in the add_default_from_user script. + This patch points it to the correct revision. + Change-Id: Ied45786db265a1d4fb350ef0dd33b4d043c9a74d - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423483 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-10-21 12:35 +0000 [c425e26595] Kevin Harwell -2014-09-18 14:23 +0000 [ad8ef9175a] gtjoseph + * res_pjsip_outbound_registration: registration stops due to fatal 4xx response - * utils: Create ast_strsep function that ignores separators inside quotes + During outbound registration it is possible to receive a fatal (any permanent/ + non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due + to a problem with the registrar itself. Upon receiving the failure response + Asterisk terminates outbound registration for the given endpoint. - This function acts like strsep with three exceptions... - * The separator is a single character instead of a string. - * Separators inside quotes are treated literally instead of like separators. - * You can elect to have leading and trailing whitespace and quotes - stripped from the result and have '\' sequences unescaped. + This patch adds an option, 'fatal_retry_interval', that when set continues + outbound registration at the given interval up to 'max_retries' upon receiving + a fatal response. - Like strsep, ast_strsep maintains no internal state and you can call it - recursively using different separators on the same storage. + ASTERISK-25485 #close - Also like strsep, for consistent results, consecutive separators are not - collapsed so you may get an empty string as a valid result. + Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2 - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3989/ - ........ +2015-10-22 17:07 +0000 [b95101aab0] Mark Michelson - Merged revisions 423476 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * format_cap: Detect vector allocation failures. - Merged revisions 423478 from http://svn.asterisk.org/svn/asterisk/branches/13 + A crash was seen on a system that ran out of memory due to Asterisk not + checking for vector allocation failures in format_cap.c. With this + change, if either of the AST_VECTOR_INIT calls fail, we will return a + value indicating failure. + Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423480 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-10-02 15:32 +0000 [dd4d4e40e5] Mark Michelson -2014-09-18 13:56 +0000 [de72f3edbc] Mark Michelson + * res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog. - * Add subscription state test events. + A certain situation can result in our attempting to send a NOTIFY on a + destroyed dialog. Say we attempt to send a NOTIFY to a subscriber, but + that subscriber has dropped off the network. We end up retransmitting + that NOTIFY until the appropriate SIP timer says to destroy the NOTIFY + transaction. When the pjsip evsub code is told that the transaction has + been terminated, it responds in kind by alerting us that the + subscription has been terminated, destroying the subscription, and then + removing its reference to the dialog, thus destroying the dialog. - These are needed for a set of batched notification RLS tests that are - about to be committed to the testsuite. + The problem is that when we get told that the subscription is being + terminated, we detect that we have not sent a terminating NOTIFY + request, so we queue up such a NOTIFY to be sent out. By the time that + queued NOTIFY gets sent, the dialog has been destroyed, so attempting to + send that NOTIFY can result in a crash. - Review: https://reviewboard.asterisk.org/r/3967 - ........ + The fix being introduced here is actually a reintroduction of something + the pubsub code used to employ. We hold a reference to the dialog and + wait to decrement our reference to the dialog until our subscription + tree object is destroyed. This way, we can send messages on the dialog + even if the PJSIP evsub code wants to terminate earlier than we would + like. - Merged revisions 423462 from http://svn.asterisk.org/svn/asterisk/branches/13 + In doing this, some NULL checks for subscription tree dialogs have been + removed since NULL dialogs are no longer actually possible. + Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423463 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-29 14:53 +0000 [bda0a24206] Mark Michelson -2014-09-18 12:22 +0000 [ac46240b62] Jonathan Rose + * res_pjsip_pubsub: Ensure dialog lock balance. - * res_pjsip_endpoint_identifier_ip: Fix parsing of match value with CIDR + When sending a NOTIFY, we lock the dialog and then unlock the dialog + when finished. A recent change made it so that the subscription tree's + dialog pointer will be set NULL when sending the final NOTIFY request + out. This means that when we attempt to unlock the dialog, we pass a + NULL pointer to pjsip_dlg_dec_lock(). The result is that the dialog + remains locked after we think we have unlocked it. When a response to + the NOTIFY arrives, the monitor thread attempts to lock the dialog, but + it cannot because we never released the dialog lock. This results in + Asterisk being unable to process incoming SIP traffic any longer. - Also fixes comma separates match lists + The fix in this patch is to use a local pointer to save off the pointer + value of the subscription tree's dialog when locking and unlocking the + dialog. This way, if the subscription tree's dialog pointer is NULLed + out, the local pointer will still have point to the proper place and the + dialog lock will be unlocked as we expect. - ASTERISK-24290 #close - Reported by: Ray Crumrine - Review: https://reviewboard.asterisk.org/r/3995/ - ........ + Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a - Merged revisions 423417 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-09-28 16:36 +0000 [7a22fc27fb] Mark Michelson - Merged revisions 423425 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_pubsub: Prevent crashes on final NOTIFY. + The SIP dialog is removed from the subscription tree when the final + NOTIFY is sent. However, after the final NOTIFY is sent, the persistence + update function still attempts to access the cseq from the dialog, + resulting in a crash. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423442 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This fix removes the subscription persistence at the same time that the + dialog is removed from the subscription tree. This way, there is no + attempt to update persistence when the subscription is being destroyed. -2014-09-18 12:10 +0000 [02cf1835e3] Richard Mudgett + Change-Id: Ibb46977a6cef9c51dc95f40f43446e3d11eed5bb - * bridge_softmix.c: Made use ao2_replace() instead of the inline equivalent. +2015-09-17 17:28 +0000 [7fc9a998b1] Mark Michelson - * Clarified some read/write format comments. + * res_pjsip_pubsub: Remove serializer when sending final NOTIFY. - * Fixed a doxygen tag typo. - ........ + There have been crashes seen where a taskprocessor's listener is NULL + unexpectedly. - Merged revisions 423423 from http://svn.asterisk.org/svn/asterisk/branches/13 + Looking at backtraces, the problem was specifically seen in PJSIP + serializers. + Subscriptions make the mistake of removing a serializer from a dialog + during subscription tree destruction. Since subscription trees are + reference-counted, guaranteeing the circumstances behind the destruction + are not possible. This makes it so that the dialog serializer can be + removed while not holding the dialog lock. This makes it possible for + the distributor to get a pointer to the dialog serializer and have that + serializer get freed out from under it. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The fix for this is to remove the serializer from a subscription dialog + when sending the final NOTIFY. This guarantees that the serializer is + removed with the dialog lock held. By doing this, we guarantee that if + the distributor gains access to the dialog's serializer, it will not be + possible for the serializer to get freed by another thread. -2014-09-18 11:56 +0000 [a7add3a257] Richard Mudgett + Change-Id: I21f5dac33529f65cec45679bdace60670800ff66 - * astobj2.c/refcounter.py: Fix to deal with invalid object refs. +2015-09-02 09:14 +0000 [7a47ab77c1] Mark Michelson - * Make astob2 REF_DEBUG output an invalid object line when an invalid ao2 - object ref/unref is attempted. This is similar to the - constructor/destructor lines. + * res_pjsip_pubsub: Fix crash on destruction of empty subscription tree. - * Fixed refcounter.py to handle skewed objects that have - constructor/destructor states. + If an old persistent subscription is recreated but then immediately + destroyed because it is out of date, the subscription tree will have no + leaf subscriptions on it. This was resulting in a crash when attempting + to destroy the subscription tree. - * Made refcounter.py highlight the invalid ao2 object refs by putting them - in their own section of the processed output file. + A simple NULL check fixes this problem. - * Made refcounter.py highlight unreffing an object by more than one that - results in a negative ref count and the object being destroyed. The - abnormally destroyed object is reported in the invalid and finalized - object sections of the output. + Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac - Review: https://reviewboard.asterisk.org/r/3971/ - ........ +2015-09-01 15:47 +0000 [8def38f6a2] Mark Michelson - Merged revisions 423349 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * res_pjsip_pubsub: Solidify lifetime and ownership of objects. - Merged revisions 423400 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + There have been crashes and general instability seen in the pubsub code, + so this patch introduces three changes to increase the stability. - Merged revisions 423416 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + First, the ownership model for subscriptions has been modified. Due to + RLS, subscriptions are stored in memory as a tree structure. Prior to my + patch, the PJSIP subscription was the owner of the subscription tree. + When the PJSIP subscription told us that it was terminating, we started + destroying the subscription tree along with all of the individual leaf + subscriptions that belong to the tree. The problem with this model is + that the two actors in play here, the PJSIP subscription and the + individual leaf subscriptions, need to have joint ownership of the + subscription tree. So now, the PJSIP subscription and the individual + leaf subscriptions each have a reference to the subscription tree. This + way, we will not actually free memory until no players are left that + care. The PJSIP subscription is a bigger stakeholder, in that if the + PJSIP subscription's reference to the subscription tree is removed, the + subscription tree instructs the leaf subscriptions to shut down and drop + their references to the subscription tree when possible. The individual + leaf subscriptions, upon being told to shut down, can drop their stasis + subscriptions or whatever they use to learn of new state, and then drop + their reference to the subscription tree once they are ready to die. - Merged revisions 423418 from http://svn.asterisk.org/svn/asterisk/branches/13 + Second, the lifetime of a PJSIP subscription's reference to our + subscription tree has been altered. As I learned from doing a deep dive, + the PJSIP evsub code can tell Asterisk multiple times that the + subscription has been terminated, and not all of these times + are especially helpful. I have altered the message flow that we use for + SIP subscriptions such that we will always drop the PJSIP subscription's + reference to the subscription tree when we send the NOTIFY that + terminates a SIP subscription. This also means that we will now queue + NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so + that we can have predictable state changes from the PJSIP evsub code. + + Third, the synchronization of operations has been improved. PJSIP can + call into our code from a serializer thread (e.g. upon receiving an + incoming request) or from the monitor thread (e.g. when a subscription + times out). Because of this, there is the possibility of competing + threads stepping on each other. PJSIP attempts to do some + synchronization on its own by always keeping the dialog lock held when + it calls into us. However, since we end up pushing tasks into the + serializer, the result was that serialized operations were not grabbing + the dialog lock and could, as a result, step on something that was being + attempted by a different thread. Now we ensure that serialized + operations grab the dialog lock, then check for extenuating + circumstances, then proceed with their operation if they can. + Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423422 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-20 14:30 +0000 [16afb39aec] Mark Michelson -2014-09-18 11:38 +0000 [fa6313ad29] Mark Michelson + * res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs. - * Add API call to determine if format capability structure is "empty". + When SUBSCRIBE dialogs were established, we never associated + the endpoint that created the subscription with the dialog + we end up creating. In most cases, this ended up not causing + any problems. - Empty here means that there are no formats in the format_cap structure - or the only format in it is the "none" format. + The actual bug that was observed was that when a device that + was behind NAT established a subscription with Asterisk, Asterisk + would end up sending in-dialog NOTIFY requests to the device's + private IP addres instead of the public address of the NAT router. - I've added calls to check the emptiness of a format_cap in a few places - in order to short-circuit operations that would otherwise be pointless - as well as to prevent some assertions from being triggered in cases - where channels with no formats are used. - ........ + When Asterisk receives the initial SUBSCRIBE from the device, + res_pjsip_nat rewrites the contact to the public address on which the + SUBSCRIBE was received. This allows for the dialog to have its target + address set to the proper public address. Asterisk then would send a 200 + OK response to the SUBSCRIBE, then a NOTIFY with the initial + subscription state. The device would then send a 200 OK response to + Asterisk's NOTIFY. - Merged revisions 423414 from http://svn.asterisk.org/svn/asterisk/branches/13 + Here's where things went wrong. When the 200 OK arrived, res_pjsip_nat + did not rewrite the address in the Contact header. Then, when the PJSIP + dialog layer processed the 200 OK, PJSIP would perform a comparison + between the IP address in the Contact header and its saved target + address for the dialog. Since they differed, PJSIP would update the + target dialog address to be the address in the Contact header. From this + point, if Asterisk needed to send a NOTIFY to the device, the result was + that the NOTIFY would be sent to the private address that the device + placed in the Contact header. + The reason why res_pjsip_nat did not rewrite the address when it + received the 200 OK response was that it could not associate the + incoming response with a configured endpoint. This is because on a + response, the only way to associate the response to an endpoint is by + finding the dialog that the response is associated with and then finding + the endpoint that is associated with that dialog. We do not perform + endpoint lookups on responses. res_pjsip_pubsub skipped the step of + associating the endpoint with the dialog we created, so res_pjsip_nat + could not find the associated endpoint and therefore couldn't rewrite + the contact. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423415 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This commit message is like 50x longer than the actual fix. -2014-09-18 11:24 +0000 [389db2b720] Mark Michelson (License #5049) + ASTERISK 24981 #close + Reported by Mark Michelson - * res_fax_spandsp: Properly handle cleanup before starting FAXes. + Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd - If faxing fails at a very early stage, then it is possible for - us to pass a NULL t30 state pointer to spandsp, which spandsp - is none too pleased with. +2015-10-19 15:27 +0000 [78e4783572] Richard Mudgett - This patch ensures that we pass the correct pointer to spandsp - in the situation where we have not yet set our local t30 state - pointer. + * Add missing failure checks to ast_str_set_va() callers. - ASTERISK-24301 #close - Reported by Matt Jordan - Patches: - ASTERISK-24301-fax.diff Uploaded by Mark Michelson (License #5049) - ........ + Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f - Merged revisions 423360 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-10-21 11:44 +0000 [43323995ba] Joshua Colp - Merged revisions 423365 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip: Move URI validation to use time. - Merged revisions 423372 from http://svn.asterisk.org/svn/asterisk/branches/13 + In a realtime based system with a limited number of threadpool threads + it is possible for a deadlock to occur. This happens when permanent + endpoint state is updated, which will cause database queries to be done. + These queries may result in URI validation being done which is done + synchronously using a PJSIP thread. If all PJSIP threads are in use + processing traffic they themselves may be blocked waiting to get the + permanent endpoint container lock when identifying an endpoint. + This change moves URI validation to occur at use time instead of + configuration time. While this comes at a cost of not seeing a problem + until you use it it does solve the underlying deadlock problem. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25486 #close -2014-09-18 11:09 +0000 [79eac1ffca] Mark Michelson + Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a - * res_pjsip_pubsub: Add some type safety when generating NOTIFY bodies. +2015-03-26 17:19 +0000 [cdd2d5b484] Corey Farrell - res_pjsip_pubsub has two separate checks that it makes when a SUBSCRIBE - arrives. - * It checks that there is a subscription handler for the Event - * It checks that there are body generators for the types in the Accept header + * Replace most uses of ast_register_atexit with ast_register_cleanup. - The problem is, there's nothing that ensures that these two things will - actually mesh with each other. For instance, Asterisk will accept a subscription - to MWI that accepts pidf+xml bodies. That doesn't make sense. + Since 'core stop now' and 'core restart now' do not stop modules, + it is unsafe for most of the core to run cleanups. Originally all + cleanups used ast_register_atexit, and were only changed when it + was shown to be unsafe. ast_register_atexit is now used only when + absolutely required to prevent corruption and close child processes. - With this commit, we add some type information to the mix. Subscription - handlers state they generate data of type X, and body generators state - that they consume data of type X. This way, Asterisk doesn't end up in - some hilariously mismatched situation like the one in the previous paragraph. + Exceptions that need to use ast_register_atexit: + * CDR: Flush records. + * res_musiconhold: Kill external applications. + * AstDB: Close the DB. + * canary_exit: Kill canary process. - ASTERISK-24136 #close - Reported by Mark Michelson + ASTERISK-24142 #close + Reported by: David Brillert - Review: https://reviewboard.asterisk.org/r/3877 - Review: https://reviewboard.asterisk.org/r/3878 - ........ + ASTERISK-24683 #close + Reported by: Peter Katzmann - Merged revisions 423344 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24805 #close + Reported by: Badalian Vyacheslav - Merged revisions 423348 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24881 #close + Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4500/ + Review: https://reviewboard.asterisk.org/r/4501/ + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423350 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11 -2014-09-18 10:14 +0000 [126334a7aa] gtjoseph + Change-Id: I6a67336050dea74327d79cdd6f7c7ea34d0b473e + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497 - * res_pjsip: ami: Fix error in AMI output when an endpoint has no transport +2015-10-19 19:59 +0000 [b5cfcfc427] Matt Jordan - When no transport is associated to an endpoint, the AMI output for - PJSIPShowEndpoint indicates an error instead of silently ignoring the - missing transport. + * contrib/scripts/autosupport: Update for Asterisk 13 - This patch causes the error to appear only if a transport was specified - on the endpoint and the transport doesn't exist. It also fixes an issue - with counting the objects that were actually found. + This patch adds some minor tweaks for autosupport to update it for Asterisk 13. + This includes: + * Finally removing most references to Zaptel + * Adding support for some additional 'core' commands, and fixing nomenclature + that generally hasn't been used for some time + * Adding some PJSIP/SIP commands to gather endpoints/peers and active channels - ASTERISK-24161 #close - ASTERISK-24331 #close - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3998/ - ........ + Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1 + (cherry picked from commit 9fc9777fa34753fb38991d42d8dbed516e907ca2) - Merged revisions 423282 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-06-05 15:37 +0000 [813b743baa] Richard Mudgett - Merged revisions 423284 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip: Need to use the same serializer for a pjproject SIP transaction. + All send/receive processing for a SIP transaction needs to be done under + the same threadpool serializer to prevent reentrancy problems inside + pjproject and res_pjsip. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423285 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Add threadpool API call to get the current serializer associated with + the worker thread. -2014-09-18 10:07 +0000 [b89491e39c] David M. Lee + * Pick a serializer from a pool of default serializers if the caller of + res_pjsip.c:ast_sip_push_task() does not provide one. - * Only install dahdi_span_config_hook if DAHDI is enabled + This is a simple way to ensure that all outgoing SIP request messages are + processed under a serializer. Otherwise, any place where a pushed task is + done that would result in an outgoing out-of-dialog request would need to + be modified to supply a serializer. Serializers from the default + serializer pool are picked in a round robin sequence for simplicity. - This patch changes the install to only install the hook script if - DAHDI is enabled. It also adds the script to the uninstall task, and - moves the DAHDI_UDEV_HOOK_DIR variable so that it's not between the - _MAKEOPTS variables and their comment. + A side effect is that the default serializer pool will limit the growth of + the thread pool from random tasks. This is not necessarily a bad thing. - This allows installs which specify a --prefix to work normally, as - long as they don't enable DAHDI. + * Made pjsip_distributor.c save the thread's serializer name on the + outgoing request tdata struct so the response can be processed under the + same serializer. - Review: https://reviewboard.asterisk.org/r/3972/ - ........ + This is a cherry-pick from master. - Merged revisions 423281 from http://svn.asterisk.org/svn/asterisk/branches/13 + **** ASTERISK-25115 Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a + NOTE: session_inv_on_state_changed() is disassociating the dialog from the + session when the invite dialog becomes PJSIP_INV_STATE_DISCONNECTED. + Unfortunately this is a tad too soon because our BYE request transaction + has not completed yet. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423283 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This is a cherry-pick from v13. -2014-09-18 09:46 +0000 [d120e40309] gtjoseph + ASTERISK-25183 #close + Reported by: Matt Jordan - * config: bug: Fix SEGV in ast_category_insert when matching category isn't found + Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a - If you call ast_category_insert with a match category that doesn't exist, the - list traverse runs out of 'next' categories and you get a SEGV. This patch - adds check for the end-of-list condition and changes the signature to return - an int for success/failure indication instead of a void. +2015-10-02 17:05 +0000 [78ab76b46c] Richard Mudgett - The only consumer of this function is manager and it was also changed to use - the return value. + * Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled. - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3993/ - ........ + When DEBUG_THREADLOCALS is enabled it causes the threadlocal cleanup to be + called as a function. This causes a compile error with raw threadstorage as + it uses NULL for cleanup. This fix uses a macro that provides NULL when + DEBUG_THREADLOCALS is disabled, and replaces the call to "c_cleanup(data);" + with "{};" when DEBUG_THREADLOCALS is enabled. - Merged revisions 423276 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + ASTERISK-24975 #close + Reported by: Ashley Sanders - Merged revisions 423277 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + **** ASTERISK-24975 Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402 - Merged revisions 423278 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Cherry-pick from v13 with additional definitions of + AST_THREADSTORAGE_RAW(), ast_threadstorage_get_ptr() and + ast_threadstorage_set_ptr() from + commit d01706ce1ee518118456d5673f529204bdac73bb. - Merged revisions 423279 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I3222102d005f76744561b95a3b97700d82a5ee58 +2015-10-12 11:21 +0000 [47a9452780] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423280 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * config.c: Fix off-nominal memory leak. -2014-09-17 13:06 +0000 [8839ba3727] Joshua Colp + Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0 - * res_rtp_asterisk: Ensure that the thread terminating pj stuff is registered. - ........ +2015-10-12 11:20 +0000 [728a2b7013] Richard Mudgett - Merged revisions 423253 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * config.c: Fix potential memory corruption after [section](+). - Merged revisions 423254 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The memory corruption could happen if the [section](+) is the last section + in the file with trailing comments. In this case process_text_line() has + left *last_cat is set to newcat and newcat is destroyed. - Merged revisions 423255 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93 +2015-10-12 11:21 +0000 [6c11fa2277] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423256 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * config.c: Fix #include after [section](+). -2014-09-16 17:46 +0000 [fcc09fd0de] Matt Jordan + An #include right after a [section](+) would associate any variable + assignments before a new section in the #include with the wrong section. - * pbx/Makefile: Revert r423237 + * Fix section association by setting the current section to the appended + section. - This patch was supposed to go into a team branch, but I was a bit fast on the - gun before 'svn switch' had apparently moved the target branch over. + * Fix '+' and '!' section flag interaction corner case depending upon + which flag came first. If the '!' came first then it would be ignored. + If the '!' came after then it would affect the appended section. The '!' + will now no longer be ignored. + ASTERISK-25461 #close + Reported by: Sean Pimental - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423238 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3 -2014-09-16 17:42 +0000 [712b4195ef] Matt Jordan +2015-10-06 20:43 +0000 [0fe83cad51] Matt Jordan - * Add some pbx python stuff + * res/res_rtp_asterisk: Fix assignment after ao2 decrement + When we decide we will no longer schedule an RTCP write, we remove the + reference to the RTP instance, then assign -1 to the stored scheduler ID + in case something else comes along and wants to see if anything is scheduled. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423237 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to + fix the regression introduced by 3cf0f29310, this improper assignment on a + potentially destroyed object started getting tripped on the build agents. -2014-09-16 16:06 +0000 [618b46d8f0] Joshua Colp + Frankly, this should have been crashing a lot more often earlier. I can only + assume that the timing was changed just enough by both changes to start + actually hitting this problem. - * Multiple revisions 423209,423212 + As it is, simply moving the assignment prior to the ao2 deference is sufficient + to keep the RTP instance from being referenced when it is very, truly, + aboslutely dead. - ........ - r423209 | file | 2014-09-16 17:35:34 -0300 (Tue, 16 Sep 2014) | 8 lines - - res_rtp_asterisk: Fix building when pjproject is not used. - ........ - - Merged revisions 423207 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - - Merged revisions 423208 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ - r423212 | file | 2014-09-16 18:03:59 -0300 (Tue, 16 Sep 2014) | 10 lines - - res_rtp_asterisk: Fix 100% CPU usage due to timer heap thread spinning. - - Side note: I need a vacation. - ........ - - Merged revisions 423210 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - - Merged revisions 423211 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + (Note that it is still good practice to assign -1 to the scheduler ID when we + know we won't be scheduling it again, as the ao2 deref *may* not always destroy + the ao2 object.) - Merged revisions 423209,423212 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25449 + Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423213 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-10-05 16:53 +0000 [c4f63952fc] Richard Mudgett -2014-09-16 11:33 +0000 [662b687dbe] Scott Griepentrog + * chan_pjsip: Fix crash on reINVITE before initial INVITE completes. - * Voicemail: get correct duration when copying file to vm + Apparently some endpoints attempt to send a reINVITE before completing the + initial INVITE transaction. In this case PJSIP responds appropriately to + the reINVITE with a 491 INVITE request pending. Unfortunately chan_pjsip + is using the initial INVITE transaction state to determine if an INVITE is + the initial INVITE or a reINVITE. Since the initial INVITE transaction + has not been confirmed yet chan_pjsip thinks the reINVITE is an initial + INVITE and starts another PBX thread on the channel. The extra PBX thread + ensures that hilarity ensues. - Changes made during format improvements resulted in the - recording to voicemail option 'm' of the MixMonitor app - writing a zero length duration in the msgXXXX.txt file. + * Fix checks for a reINVITE on incoming requests to look for the presence + of a to-tag instead of the initial INVITE transaction state. - This change introduces a new function ast_ratestream(), - which provides the sample rate of the format associated - with the stream, and updates the app_voicemail function - for ast_app_copy_recording_to_vm to calculate the right - duration. + * Made caller_id_incoming_request() determine what to do if there is a + channel on the session or not. After a channel is created it is too late + to just store the new party id on the session because the session's party + id has already been copied to the channel's caller id. - Review: https://reviewboard.asterisk.org/r/3996/ - ASTERISK-24328 #close - ........ + ASTERISK-25404 #close + Reported by: Chet Stevens - Merged revisions 423192 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be +2015-10-05 21:34 +0000 [d61da57428] Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423193 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fix improper usage of scheduler exposed by 5c713fdf18f -2014-09-16 07:12 +0000 [ceedf44edd] Joshua Colp + When 5c713fdf18f was merged, it allowed for scheduled items to have an ID of + '0' returned. While this was valid per the documentation for the API, it was + apparently never returned previously. As a result, several users of the + scheduler API viewed the result as being invalid, causing them to reschedule + already scheduled items or otherwise fail in interesting ways. - * res_pjsip_session: Fix usage of wrong memory pool when creating local SDP. - ........ + This patch corrects the users such that they view '0' as valid, and a returned + ID of -1 as being invalid. - Merged revisions 423172 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Note that the failing HEP RTCP tests now pass with this patch. These tests + failed due to a duplicate scheduling of the RTCP transmissions. - Merged revisions 423173 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25449 #close + Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39 +2015-09-30 17:28 +0000 [5d12653d2a] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423174 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_sorcery_memory_cache.c: Fix deadlock with scheduler. -2014-09-16 06:12 +0000 [e977425bc8] Joshua Colp + A deadlock can happen when a sorcery object is being expired from the + memory cache when at the same time another object is being placed into the + memory cache. There are a couple other variations on this theme that + could cause the deadlock. Basically if an object is being expired from + the sorcery memory cache at the same time as another thread tries to + update the next object expiration timer the deadlock can happen. - * res_rtp_asterisk: Fix a myriad of TURN client issues. + * Add a deadlock avoidance loop in expire_objects_from_cache() to check if + someone is trying to remove the scheduler callback from the scheduler. - 1. The number of file descriptors an ioqueue instance can handle is fixed, so we - now spawn the required number to handle the load. - 2. Our transport identifiers were exceeding the range supported by pjnath. - 3. The TURN client did not set up client binding causing needless bandwidth usage. - 4. The code no longer updates address information on each packet. - 5. STUN traffic was getting looped back to Asterisk instead of going through the - TURN server. - 6. Synchronization now ensures things are completely setup or destroyed. - 7. Logging now reflects the target the TURN server is sending to/receiving from - on our behalf. + ASTERISK-25441 #close - ASTERISK-23577 #close - Reported by: Jay Jideliov + Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc - ASTERISK-23634 #close - Reported by: Roman Skvirsky +2015-10-01 14:30 +0000 [b35b9a9e32] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/3982/ - ........ + * res_sorcery_memory_cache.c: Replace inline code with function. - Merged revisions 423150 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Make sorcery_memory_cache_close() call remove_all_from_cache() instead of + partially inlining it. - Merged revisions 423151 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-25441 - Merged revisions 423152 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c +2015-10-01 14:27 +0000 [9ec52447bd] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423153 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_sorcery_memory_cache.c: Shutdown in a less crash potential order. -2014-09-15 05:50 +0000 [77834b72d3] Zogot, cleaned up by me. + Basically you should shutdown in the opposite order of how you setup since + later setup pieces likely depend on earlier setup pieces. e.g., + Registering your external API with the rest of the system should be the + last thing setup and the first thing unregistered during shutdown. - * contrib: Fix verifyi typo in alembic DB script ps_transport table. + Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e - Reported by: Zogot (on IRC) - Patches: - tmp.diff uploaded by Zogot, cleaned up by me. - ........ +2015-09-30 17:27 +0000 [110927bacc] Richard Mudgett - Merged revisions 423128 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_sorcery_memory_cache.c: Misc tweaks. - Merged revisions 423129 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160 +2015-09-30 17:27 +0000 [14ac763ab3] Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423130 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK. -2014-09-14 10:54 +0000 [a62fedf0cb] Walter Doekes + Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c - * chan_sip: Clarify that sipdebug=yes cannot be undone by the CLI. +2015-04-09 10:42 +0000 [39fe210fd9] yaron nahum (License 6676) - Document it in sip.conf. + * res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests - ASTERISK-24249 #close - Reported by: Avinash Mohod + This patch adds a new session supplement that handles in-dialog OPTIONS + requests. Said OPTIONS requests are sent a 200 OK, as an endpoint lookup + for the OPTIONS request would already have been done by the time the + session supplement receives the inbound request. - Review: https://reviewboard.asterisk.org/r/3926/ - ........ + ASTERISK-24862 #close + Reported by: yaron nahum + patches: + res_pjsip_dlg_options.c submitted by yaron nahum (License 6676) - Merged revisions 423066 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Change-Id: Iefc901a7c5c88d9d4b853188f85092d9eb7b6ada - Merged revisions 423067 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-09-24 14:56 +0000 [00be2f6b4f] Richard Mudgett - Merged revisions 423068 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * app_queue.c: Force COLP update if outgoing channel name changed. - Merged revisions 423069 from http://svn.asterisk.org/svn/asterisk/branches/13 + * When a call is answered and the outgoing channel name has changed then + force a connected line update because the channel is no longer the same. + The channel was masqueraded into by another channel. This is usually + because of a call pickup. + Note: Forwarded calls are handled in a controlled manner so the original + channel name is replaced with the forwarded channel. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423070 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25423 #close + Reported by: John Hardin -2014-09-14 10:41 +0000 [9c1f34c7e9] Walter Doekes + Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172 - * musiconhold: Add sort=randstart, and deprecate old stuff. +2015-09-24 14:20 +0000 [bd43638622] Richard Mudgett - - adds sort=randstart (next to sort=, sort=random, sort=alpha) - - combines duplicate moh option parsing code into a single function - - adds deprecationwarnings for application=r to sort randomly - - adds deprecationwarnings for random=yes to sort randomly - - removes invisible code that was supposed to stay until 1.8 + * app_queue.c: Factor out a connected line update routine. - The sort=randstart works like sort=alpha, except we start at a random - position. + Replace inlined code with update_connected_line_from_peer(). - Review: https://reviewboard.asterisk.org/r/3991/ + ASTERISK-25423 + Reported by: John Hardin + Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423065 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-24 13:27 +0000 [f5a935f9d1] Richard Mudgett -2014-09-12 12:42 +0000 [02295456ef] Joshua Colp + * app_dial.c: Make 'A' option pass COLP updates. - * chan_rtp: Add unicast RTP support. + While the 'A' option is playing the announcement file allow the caller and + peer to exchange COLP update frames. - This module supports sending both unicast and multicast RTP - to a specified target. Multicast functionality is the same as - chan_multicast_rtp was. In the case of unicast a specific - IP address and port can be specified, along with optional RTP - engine and format in the form of: + ASTERISK-25423 + Reported by: John Hardin - UnicastRTP/:// + Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9 - This can be useful for sending a copy of a media stream to - another application for processing. +2015-09-24 12:59 +0000 [91f754cb89] Richard Mudgett - Review: https://reviewboard.asterisk.org/r/3981/ + * app_dial.c: Force COLP update if outgoing channel name changed. + * When a call is answered and the outgoing channel name has changed then + force a connected line update because the channel is no longer the same. + The channel was masqueraded into by another channel. This is usually + because of a call pickup. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423004 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Note: Forwarded calls are handled in a controlled manner so the original + channel name is replaced with the forwarded channel. -2014-09-12 11:19 +0000 [dd6bdede7d] Jonathan Rose + ASTERISK-25423 + Reported by: John Hardin - * Realtime: Fix a bug that caused realtime destroy command to crash + Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c - Also has could affect with anything that goes through ast_destroy_realtime. - If a CLI user used the command 'realtime destroy ' with only a single - column/value pair, Asterisk would crash when trying to create a variable list - from a NULL value. +2015-09-24 12:37 +0000 [9792b21720] Richard Mudgett - ASTERISK-24231 #close - Reported by: Niklas Larsson - Review: https://reviewboard.asterisk.org/r/3985/ - ........ + * app_dial.c: Factor out a connected line update routine. - Merged revisions 422984 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Replace inlined code with update_connected_line_from_peer(). - Merged revisions 422985 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25423 + Reported by: John Hardin + Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422991 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-24 14:49 +0000 [7a4581a41b] Mark Michelson -2014-09-11 17:17 +0000 [c212a71f0b] Mark Michelson + * Do not swallow frames on channels leaving bridges. - * Remove undocumented default behavior of ast_play_and_record_full acceptdtmf. + When leaving a bridge, indications on a channel could be swallowed by + the internal indication logic because it appears that the channel is on + its way to be hung up anyway. One such situation where this is + detrimental is when channels on hold are redirected out of a bridge. The + AST_CONTROL_UNHOLD indication from the bridging code is swallowed, + leaving the channel in question to still appear to be on hold. - ast_play_and_record_full() has a parameter called "acceptdtmf" that is a - string of acceptable DTMF digits that may be pressed by a caller to end - and accept the recording. + The fix here is to modify the logic inside ast_indicate_data() to not + drop the indication if the channel is simply leaving a bridge. This way, + channels on hold redirected out of a bridge revert to their expected "in + use" state after the redirection. - ARI uses this function in order to perform recording, and it provides - options for what is passed as acceptdtmf to ast_play_and_record_full(). - By default, ARI passes an empty string, with the intention that no DTMF - can be used to end the recording. + ASTERISK-25418 #close + Reported by Mark Michelson - The problem is that ast_play_and_record_full() attempts to be "helpful" - by setting "#" as the acceptdtmf if an empty string or NULL pointer - has been passed in. With ARI, this results in unexpected behavior - occurring if you have attempted to intercept "#" yourself in order - to perform some other manipulation of the live recording. + Change-Id: If6115204dfa0551c050974ee138fabd15f978949 - This change removes the "helpful" behavior by no longer accepting - "#" as a default acceptdtmf if none is specified by the caller of - ast_play_and_record_full(). This makes the ARI scenario work as - expected. +2015-09-22 17:08 +0000 [86eee104be] Richard Mudgett - The other callers of ast_play_and_record_full() are app_voicemail - and app_minivm, and in both cases, they pass an explicit "#" to - ast_play_and_record_full() as acceptdtmf, so they are unaffected - by this change. - ........ + * app_page.c: Fix crash when forwarding with a predial handler. - Merged revisions 422964 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Page uses the async method of dialing with the dial API. When a call gets + forwarded there is no calling channel available. If the predial handler + was set then the calling channel could not be put into auto-service + for the forwarded call because it doesn't exist. A crash is the result. - Merged revisions 422965 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Moved the callee predial parameter string processing to before the + string is passed to the dial API rather than having the dial API do it. + There are a few benefits do doing this. The first is the predial + parameter string processing doesn't need to be done for each channel + called by the dial API. The second is in async mode and the forwarded + channel is to have the predial handler executed on it then the + non-existent calling channel does not need to be present to process the + predial parameter string. + * Don't start auto-service on a non-existent calling channel to execute + the predial handler when the dial API is in async mode and forwarding a + call. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422967 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25384 #close + Reported by: Chet Stevens -2014-09-10 11:07 +0000 [93894d53c4] gtjoseph + Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981 - * config: bug: fix truncation of included config files on permissions error +2015-06-18 13:16 +0000 [deccd2ef3c] Mark Michelson - ast_config_text_file_save() currently truncates include files as they - are processed. If a subsequent include file or the main config file has - a permissions error that prevents writing, earlier include files are left - truncated resulting in a frantic search for backups. + * Resolve race conditions involving Stasis bridges. - This patch causes ast_config_text_file_save to check for write access - on all files before it truncates any of them. + This resolves two observed race conditions. - Will be applied 1.8 > trunk. + First, a bit of background on what the Stasis application does: - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3986/ - ........ + 1a Creates a stasis_app_control structure. This structure is linked into + a global container and can be looked up using a channel's unique ID. + 2a Puts the channel in an event loop. The event loop can exit either + because the stasis_app_control structure has been marked done, or + because of some other factor, such as a hangup. In the event loop, the + stasis_app_control determines if any specific ARI commands need to be + run on the channel and will run them from this thread. + 3a Checks if the channel is bridged. If the channel is bridged, then + ast_bridge_depart() is called since channels that are added to Stasis + bridges are always imparted as departable. + 4a Unlink the stasis_app_control from the container. - Merged revisions 422900 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + When an ARI command is received by Asterisk, the following occurs + 1b A thread is spawned to handle the HTTP request + 2b The stasis_app_control(s) that corresponds to the channel(s) in the + request is/are retrieved. If the stasis_app_control cannot be + retrieved, then it is assumed that the channel in question has exited + the Stasis app or perhaps was never in Stasis in the first place. + 3b A command is queued onto the stasis_app_control, and the channel's + event loop thread is signaled to run the command. + 4b While most ARI commands do nothing further, some, such as adding or + removing channels from a bridge, will block until the command they + issued has been completed by the channel's event loop. - Merged revisions 422903 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + The first race condition that is solved by this patch involves a crash + that can occur due to faulty detection of the channel's bridged status + in step 3a. What can happen is that in step 2a, the event loop may run + the ast_bridge_impart() function to asynchronously place the channel + into a bridge, then immediately exit the event loop because the channel + has hung up. In step 3a, we would detect that the channel was not + bridged and would not call ast_bridge_depart(). The reason that the + channel did not appear to be bridged was that the depart_thread that is + spawned by ast_bridge_impart() had not yet started. That is the thread + where the channel is marked as being bridged. Since we did not call + ast_bridge_depart(), the Stasis application would exit, and then the + channel would be destroyed Then the depart_thread would start up and + try to manipulate the destroyed channel, causing a crash. - Merged revisions 422904 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The fix for this is to switch from using ast_channel_is_bridged() to + checking the NULLity of ast_channel_internal_bridge_channel() to + determine if ast_bridge_depart() needs to be called. The channel's + internal bridge_channel is set when ast_bridge_impart() is called and + is NULLed by the call to ast_bridge_depart(). If the channel's internal + bridge_channel is non-NULL, then the channel must have been imparted + into the bridge and needs to be departed, even if the actual bridging + operation has not yet started. By departing the channel when necessary, + the thread that is running the Stasis application will block until the + bridge gives the okay that the depart_thread has exited. - Merged revisions 422905 from http://svn.asterisk.org/svn/asterisk/branches/13 + The second race condition that is solved by this patch involves a leak + of HTTP handler threads. The problem was that step 2b would successfully + retrieve a stasis_app_control structure. Then step 2a would exit the + channel from the event loop due to a hangup. Steps 3a and 4a would + execute, and then finally steps 3b and 4b would. The problem is that at + step 4b, when attempting to add a channel to a bridge, the thread would + block forever since the channel would never execute the queued command + since it was finished with the event loop. This meant that the HTTP + handling thread would be leaked, along with any references that thread + may have owned (in my case, I was seeing bridges leaked). + The fix for this is to hone in better on when the channel has exited the + event loop. The stasis_app_control structure has an is_done field that + is now set at each point where the channel may exit the event loop. If + step 2b retrieves a valid stasis_app_control structure but the control + is marked as done, then the attempted operation exits immediately since + there will be nothing to service the attempted command. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422906 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25091 #close + Reported by Ilya Trikoz -2014-09-10 11:00 +0000 [7bd3287a11] Sean Bright + Change-Id: If66265b73b4c9f8f58599124d777fedc54576628 - * pjsip/config_auth.c: Add missing whitespace to log messages. +2015-09-21 18:06 +0000 [43e6804b0c] Kevin Harwell - The errors generated when validating 'auth' settings are missing a space which - makes the messages a little confusing. - ........ + * app_record: RECORDED_FILE variable not being populated - Merged revisions 422899 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The RECORDED_FILE variable is empty unless a '%d' is specified in the filename. + This patch makes it so the variable is always set to the filename. - Merged revisions 422901 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25410 #close + Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422902 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-09-16 08:22 +0000 [ca401c6842] Joshua Colp -2014-09-09 15:15 +0000 [a47873168a] Richard Mudgett + * pbx: Update device and presence state when changing a hint extension. - * Update CHANGES for CHANNEL(onhold). + When changing a hint extension without removing the hint first the + device state and presence state is not updated. This causes the state + of the hint to be that of the previous extension and not the current + one. This state is kept until a state change occurs as a result of + something (presence state change, device state change). - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422885 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change updates the hint with the current device and presence + state of the new extension when it is changed. Any state callbacks + which may have been added before the hint extension is changed are + also informed of the new device and presence state if either have + changed. -2014-09-09 15:11 +0000 [51f082af34] Rusty Newton + ASTERISK-25394 #close - * Sounds/BuildSystem: Modifications to include new releases and Japanese language. + Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f - Modifying Makefile and sounds.xml to include new core 1.4.26 and extra 1.4.15 - sound prompt releases, plus the new Japanese core sound prompts contributed - by QLOOG. +2015-09-16 17:36 +0000 [20702e0cf2] Mark Michelson - ASTERISK-23324 - Reported by: Kevin McCoy - Tested by: Rusty Newton - ........ + * res_pjsip_pubsub: Eliminate race during initial NOTIFY. - Merged revisions 422789 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + There is a slim chance of a race condition occurring where two threads + can both attempt to manipulate the same area. - Merged revisions 422790 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Thread A can be handling an incoming initial SUBSCRIBE request. Thread A + lets the specific subscription handler know that the subscription has + been established. - Merged revisions 422791 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + At this point, Thread B may detect a state change on the subscribed + resource and queue up a notification task on Thread C, the subscription + serializer thread. - Merged revisions 422883 from http://svn.asterisk.org/svn/asterisk/branches/13 + Now Thread A attempts to generate the initial NOTIFY request to send to + the subscriber at the same time that Thread C attempts to generate a + state change NOTIFY request to send to the subscriber. + The result is that Threads A and C can step on the same memory area, + resulting in a crash. The crash has been observed as happening when + attempting to allocate more space to hold the body for the NOTIFY. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422884 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The solution presented here is to queue the subscription establishment + and initial NOTIFY generation onto the subscription serializer thread + (Thread C in the above scenario). This way, there is no way that a state + change notification can occur before the initial NOTIFY is sent, and if + there is a quick succession of NOTIFYs, we can guarantee that the two + NOTIFY requests will be sent in succession. -2014-09-09 11:14 +0000 [9183416fe2] Richard Mudgett + Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815 - * func_channel: Add CHANNEL(onhold) item to get the current hold status of the channel. +2015-09-10 17:19 +0000 [3ef74244a4] Mark Michelson - It would be useful to get the current hold status of a channel. + * scheduler: Use queue for allocating sched IDs. - Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for - the hold status of a channel. + It has been observed that on long-running busy systems, a scheduler + context can eventually hit INT_MAX for its assigned IDs and end up + overflowing into a very low negative number. When this occurs, this can + result in odd behaviors, because a negative return is interpreted by + callers as being a failure. However, the item actually was successfully + scheduled. The result may be that a freed item remains in the scheduler, + resulting in a crash at some point in the future. - ASTERISK-24038 - Reported by: Matt Jordan + The scheduler can overflow because every time that an item is added to + the scheduler, a counter is bumped and that counter's current value is + assigned as the new item's ID. - AFS-113 #close - Reported by: Mark Michelson + This patch introduces a new method for assigning scheduler IDs. Instead + of assigning from a counter, a queue of available IDs is maintained. + When assigning a new ID, an ID is pulled from the queue. When a + scheduler item is released, its ID is pushed back onto the queue. This + way, IDs may be reused when they become available, and the growth of ID + numbers is directly related to concurrent activity within a scheduler + context rather than the uptime of the system. - Review: https://reviewboard.asterisk.org/r/3983/ + Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2 +2015-09-10 09:49 +0000 [8826e6c416] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422870 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: Copy default_from_user to avoid crash. -2014-09-08 13:04 +0000 [baf99dffac] Mark Michelson + The default_from_user retrieval function was pulling the + default_from_user from the global configuration struct in an unsafe way. + If using a database as a backend configuration store, the global + configuration struct is short-lived, so grabbing a pointer from it + results in referencing freed memory. - * Add note about configuring list_items on a single line. - ........ + The fix here is to copy the default_from_user value out of the global + configuration struct. - Merged revisions 422855 from http://svn.asterisk.org/svn/asterisk/branches/13 + Thanks go to John Hardin for discovering this problem and proposing the + patch on which this fix is based. + ASTERISK-25390 #close + Reported by Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422856 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c -2014-09-08 12:53 +0000 [5ad0edacb6] Mark Michelson +2015-04-23 09:16 +0000 [943d5c0c99] gtjoseph - * Add sample configuration for resource lists. + * res_pjsip: Validate that contact uris start with sip: or sips: - On review /r/3977, it was recommended to note in the - sample configuration about the size limitation for - resource lists. However, since there was no section in - the sample configuration at all for resource list - subscriptions, I decided to make a separate commit - where I have added the necessary sample configuration - as well as the size limitation warning. - ........ + Currently we use pjsip_parse_hdr to validate contact uris but it + appears that it allows uris without a scheme if there's a port + supplied. I.E myexample.com will fail but myexample.com:5060 will + pass even though it has no scheme. This causes SEGVs later on + whenever the uri is used. - Merged revisions 422853 from http://svn.asterisk.org/svn/asterisk/branches/13 + To prevent this, permanent_contact_validate has been updated to check + that the scheme is either 'sip' or 'sips'. + 2 uses of possibly-null endpoint have also been fixed in + create_out_of_dialog_request. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422854 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24999 -2014-09-08 12:35 +0000 [c6bc44f700] Mark Michelson + Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2 + Reported-by: Brad Latus + (cherry picked from commit 75666ad7c608ad9968a216a8f0a5832bf85b785c) - * Pre-allocate transmission data buffer for RLS NOTIFY requests. +2015-09-03 14:07 +0000 [7b5bcbeebe] Jonathan Rose - PJSIP, unless a constant is modified at compilation time, limits - SIP requests to 4000 bytes. Full-state RLS notifications can easily - exceed this limit with moderately small lists. + * ParkAndAnnounce: Add variable inheritance + + In Asterisk 11, the announcer channel would receive channel variables + from the channel being parked by means of normal channel inheritance. + This functionality was lost during the big res_parking project in + Asterisk 12. This patch restores that functionality. - This changeset allows for Asterisk to work around this size limit by - performing its own allocation of the transmission data buffer. This - way, Asterisk can allocate a buffer that exceeds the built-in maximum. + ASTERISK-25369 #close + Review: https://gerrit.asterisk.org/#/c/1180/ - We still impose our own limit of 64000 bytes, mainly because making - allocations larger than that is a bit absurd. + Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e - ASTERISK-24181 #close - Reported by Mark Michelson +2015-08-29 10:36 +0000 [0901a82adb] Joshua Colp - Review: https://reviewboard.asterisk.org/r/3977 - ........ + * taskprocessor: Fix race condition between unreferencing and finding. - Merged revisions 422851 from http://svn.asterisk.org/svn/asterisk/branches/13 + When unreferencing a taskprocessor its reference count is checked + to determine if it should be unlinked from the taskprocessors + container and its listener shut down. In between the time when the + reference count is checked and unlinking it is possible for + another thread to jump in, find it, and get a reference to it. If + the thread then uses the taskprocessor it may find that it is not + in the state it expects. + This change locks the taskprocessors container during almost the + entire unreference operation to ensure that any other thread which + may attempt to find the taskprocessor has to wait. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422852 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25295 -2014-09-08 10:58 +0000 [ef5f7a0e32] Jonathan Rose + Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c + (cherry picked from commit a676ba2aad5525926ae31b8317b95ae52cbbabbb) - * res_pjsip_pubsub: Check supported headers for eventlist when subscribing to - resource list +2015-09-04 14:40 +0000 [500856b4f0] Mark Michelson - https://wiki.asterisk.org/wiki/display/AST/Resource+List+Subscription+Test+Plan - According to the off-nominal plan, if evenlist support is not specified in a - SUBSCRIBE's supported header(s), that subscription should be rejected with an - error. + * res_pjsip: Change default from user value. - ASTERISK-23871 - Reported by: Mark Michelson - Review: https://reviewboard.asterisk.org/r/3960/diff/#index_header - ........ + When Asterisk sends an outbound SIP request, if there is no direct + reason to place a specific value for the username in the From header, + Asterisk would generate a UUID. For example, this would happen when + sending outbound OPTIONS requests when qualifying or when sending + outbound INVITE requests when originating (if no explicit caller ID were + provided). The issue is that some SIP providers reject these sorts of + requests with a "Name too long" error response. - Merged revisions 422836 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch aims to fix this by changing the default outbound username in + From headers to "asterisk". This value can be overridden by changing the + default_from_user option in the global options if desired. + ASTERISK-25377 #close + Reported by Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422837 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190 -2014-09-06 17:50 +0000 [71acca4de2] Matt Jordan +2015-05-13 15:41 +0000 [42c40b59b6] Jonathan Rose - * main/cdr: Copy over location information during a fork + * Message.c: Clear message channel frames on cleanup - When a CDR is forked, a new CDR is created and appended to the CDR chain for - the Party A. The forked CDR starts life off as a clone of the last - non-finalized for the particular Party A. In the past, merely copying over - the snapshots for Party A/Party B would be sufficient. However, as the CDRs - now contain cached information from Party A - specifically application/data, - context, and extension - we need to copy that over during a fork as well. + The message channel is a special channel that doesn't actually process frames. + However, certain actions can cause frames to be placed in the channel's read + queue including the Hangup application which is called on the channel after + each message is processed. Since the channel will continually be reused for + many messages, it's necessary to flush these frames at some point. - Huzzah for unit tests catching this when the context/extension were derived - from a cached value on the CDR instead of on Party A. - ........ + ASTERISK-25083 #close + Reported by: Jonathan Rose - Merged revisions 422769 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f + (cherry picked from commit 02c513058905dae19f28393ea840a47ae4a9e66d) - Merged revisions 422770 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-09-02 17:26 +0000 [a1e1d8e815] Mark Michelson + * res_pjsip: Fix contact refleak on stateful responses. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422771 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When sending a stateful response, creation of the transaction can fail, + most commonly because we are trying to create a transaction from a + retransmitted request. When creation of the transaction fails, we end up + leaking a reference to a contact that was bumped when the response was + created. -2014-09-06 17:22 +0000 [e4591f98b1] Matt Jordan + This patch adds the missing deref and fixes the reference leak. - * main/rtp_engine: Format NTP timestamps as unsigned ints + Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07 - On some systems, a timeval's tv_sec/tv_usec will be unsigned lont ints, as - opposed to long ints. When the RTP engine formats these as strings, it was - previously formatting them as signed integers, which can result in some - odd negative timestamp values (particularly on 32-bit systems). This patch - formats the values as unsigned long integers. - ........ +2015-09-02 12:41 +0000 [9f5e1c0e56] Joshua Colp - Merged revisions 422766 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * pbx: Fix crash when issuing "core show hints" with long pattern match. - Merged revisions 422767 from http://svn.asterisk.org/svn/asterisk/branches/13 + When issuing the "core show hints" CLI command a combination of both + the hint extension and context is created. This uses a fixed size + buffer expecting that the extension will not exceed maximum extension + length. When the extension is actually a pattern match this constraint + does not hold true, and the extension may exceed the maximum extension + length. In this case extra characters are written past the end of the + fixed size buffer. + This change makes it so the construction of the combined hint extension + and context can not exceed the size of the buffer. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422768 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25367 #close -2014-09-06 14:13 +0000 [fd8010de2b] Joshua Colp + Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499 - * res_pjsip_sdp_rtp: Fix retrieval of "ice-pwd" attribute if in session and not media stream. - ........ +2015-07-02 14:51 +0000 [1c89230e2a] Richard Mudgett - Merged revisions 422746 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error. - Merged revisions 422747 from http://svn.asterisk.org/svn/asterisk/branches/13 + When res_pjsip body generator modules were generating XML or XPIDF + response bodies, there was a chance that the generated body would be the + exact size of the supplied buffer. Adding the nul string terminator would + then write beyond the end of the buffer and potentially corrupt memory. + * Fix MALLOC_DEBUG high fence violations caused by adding a nul string + terminator on the end of a buffer for XML or XPIDF response bodies. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422748 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Made calls to pj_xml_print() safer if the XML prolog is requested. Due + to a bug in pjproject, the return value could be -1 _or_ + AST_PJSIP_XML_PROLOG_LEN if the supplied buffer is not large enough. -2014-09-05 17:04 +0000 [d42b116925] Matt Jordan + * Updated the doxygen comment of AST_PJSIP_XML_PROLOG_LEN to describe the + return value of pj_xml_print() when the supplied buffer is not large + enough. - * main/cdrs: Preserve context/extension when executing a Macro or GoSub + ASTERISK-25168 + Reported by: Carl Fortin - The context/extension in a CDR is generally considered the destination of a - call. When looking at a 2-party call CDR, users will typically be presented - with the following: + Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de - context exten channel dest_channel app data - default 1000 SIP/8675309 SIP/1000 Dial SIP/1000,,20 +2015-09-01 09:05 +0000 [2f2c35e91d] Mark Michelson - However, if the Dial actually takes place in a Macro, the current behaviour - in 12 will result in the following CDR: + * res_pjsip_pubsub: re-re-fix persistent subscription storage. - context exten channel dest_channel app data - macro-dial s SIP/8675309 SIP/1000 Dial SIP/1000,,20 + A recent change to res_pjsip_pubsub switched to using pjsip_msg_print as + a means of writing an appropriate packet to persistent storage. While + this partially solved the issue, it had its own problems. + pjsip_msg_print will always add a Content-Length header to the message + it prints. Frequent restarts of Asterisk can result in persistent + subscriptions being written with five or more Content-Length headers. In + addition, sometimes some apparent corruption of individual headers could + be seen. - The same is true of a GoSub: + This aims to fix the problem by not running a parsed message through an + interpreter but rather by taking the raw message and saving it. The + logic for what to save is going to be different depending on whether a + SUBSCRIBE was received from the wire or if it was pulled from + persistence. When receiving a packet from the wire, when using a + streaming transport, the rdata->pkt_info.packet may contain multiple SIP + messages or fragments. However, the rdata->msg_info.msg_buf will always + contain the current SIP message to be processed. When pulling from + persistence, though, the rdata->msg_info.msg_buf will be NULL since no + transport actually handled the packet. However, since we know that we + will always ever pull one SIP message from persistence, we are free to + save directly from rdata->pkt_info.packet instead. - context exten channel dest_channel app data - subs dial_stuff SIP/8675309 SIP/1000 Dial SIP/1000,,20 + ASTERISK-25365 #close + Reported by Mark Michelson - This generally makes the context/exten fields less than useful. + Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b - It isn't hard to preserve these values in the CDR state machine; however, we - need to have something that informs us when a channel is executing a - subroutine. Prior to this patch, there isn't anything that does this. +2015-08-31 15:24 +0000 [88ee3b3ef2] Mark Michelson - This patch solves this problem by adding a new channel flag, - AST_FLAG_SUBROUTINE_EXEC. This flag is set on a channel when it executes a - Macro or a GoSub. The CDR engine looks for this value when updating a Party A - snapshot; if the flag is present, we don't override the context/exten on the - main CDR object. In a funny quirk, executing a hangup handler must *not* abide - by this logic, as the endbeforehexten logic assumes that the user wants to see - data that occurs in hangup logic, which includes those subroutines. Since - those execute outside of a typical Dial operation (and will typically have - their own dedicated CDR anyway), this is unlikely to cause any heartburn. + * Fix deadlock on presence state changes. - Review: https://reviewboard.asterisk.org/r/3962/ + A deadlock was observed where three threads were competing for different + locks: - ASTERISK-24254 #close - Reported by: tm1000, Tony Lewis - Tested by: Tony Lewis - ........ + * One thread held the hints lock and was attempting to lock a specific + hint. + * One thread was holding the specific hint's lock and was attempting to + lock the contexts lock + * One thread was holding the contexts lock and attempting to lock the + hints lock. - Merged revisions 422718 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Clearly the second thread was doing the wrong thing here. The fix for + this is to make sure that the hint's lock is not held on presence state + changes. Something similar is already done (and commented about) for + device state changes. - Merged revisions 422719 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25362 #close + Reported by Mark Michelson + Change-Id: I15ec2416b92978a4c0c08273b2d46cb21aff97e2 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422720 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-08-28 20:22 +0000 [8842637d8f] Joshua Colp -2014-09-05 16:56 +0000 [4499eb05d8] Matt Jordan + * res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items. - * main/cdr: Fix crash/memory consumption in CDRs in multi-party bridge scenarios + The keepalive support in res_pjsip_sdp_rtp currently assumes + that a stream will only be negotiated once. This is false. + If the stream is replaced and later added back it can be + negotiated again causing multiple keepalive scheduled items + to exist. This change explicitly deletes the existing + keepalive scheduled item before adding the new one. - This patch fixes an issue where CDRs would get stuck generating an infinite - number of CDRs, eventually crashing Asterisk (and consuming a lot of memory - along the way). + The res_pjsip_sdp_rtp module also does not stop RTP + keepalives or timeout timer if the stream has been + replaced. This change adds a callback to the session media + interface to allow a media stream to be stopped without + the resources being destroyed. This allows the scheduled + items and RTP to be stopped when the stream no longer + exists. - When a channel enters into a multi-party bridge, the CDR engine creates - mappings of each participant to each other participant, picking the 'A' party - as it goes. So, if we have four channels in a multi-party bridge (Alice, Bob, - Charlie, Denise), we would have something like: + ASTERISK-25356 #close - Alice => Bob - Alice => Charlie - Alice => Denise - Bob => Charlie - Bob => Denise - Charlie => Denise + Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de - This works fine when participants enter the bridge a single time. +2015-08-28 19:57 +0000 [06d42fede3] Joshua Colp - When a participant leaves a bridge, the CDRs for that channel are transitioned - to a finalized state. + * sched: ast_sched_del may return prematurely due to spurious wakeup - The bug occurs if Bob rejoins. When the CDR engine creates mappings between the - channels, it walks through all the participants currently in the bridge, and - realizes that no one in the bridge can create a CDR with the channel (Bob). - As such it creates a new CDR for the candidate and appends it to that - candidate's chain. Unfortunately, on this particular code path, it doesn't - stop traversing the candidate's chain. Since we just added ourselves to the - chain, this causes the loop to keep going, constantly adding new CDRs. + When deleting a scheduled item if the item in question is currently + executing the ast_sched_del function waits until it has completed. + This is accomplished using ast_cond_wait. Unfortunately the + ast_cond_wait function can suffer from spurious wakeups so the + predicate needs to be checked after it returns to make sure it has + really woken up as a result of being signaled. - This patch makes it so the engine bails when it creates a CDR match in this - case. + This change adds a loop around the ast_cond_wait to make sure that + it only exits when the executing task has really completed. - Review: https://reviewboard.asterisk.org/r/3964/ + ASTERISK-25355 #close - ASTERISK-24241 #close - Reported by: Deepak Singh Rawat - Tested by: Deepak Singh Rawat + Change-Id: I51198270eb0b637c956c61aa409f46283432be61 - ASTERISK-24208 - Reported by: Frankie Chin - ........ +2015-07-23 13:11 +0000 [74d6ae20cb] Mark Michelson - Merged revisions 422715 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Local channels: Alternate solution to ringback problem. - Merged revisions 422716 from http://svn.asterisk.org/svn/asterisk/branches/13 + Commit 54b25c80c8387aea9eb20f9f4f077486cbdf3e5d solved an issue where a + specific scenario involving local channels and a native local RTP bridge + could result in ringback still being heard on a calling channel even + after the call is bridged. + That commit caused many tests in the testsuite to fail with alarming + consequences, such as not sending DialBegin and DialEnd events, and + giving incorrect hangup causes during calls. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422717 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This commit reverts the previous commit and implements and alternate + solution. This new solution involves only passing AST_CONTROL_RINGING + frames across local channels if the local channel is in AST_STATE_RING. + Otherwise, the frame does not traverse the local channels. By doing + this, we can ensure that a playtones generator does not get started on + the calling channel but rather is started on the local channel on which + the ringing frame was initially indicated. -2014-09-05 15:38 +0000 [025bd1bf3f] Richard Mudgett + ASTERISK-25250 #close + Reported by Etienne Lessard - * func_channel.c: Add missing locking to some CHANNEL() requests. + Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39 - * The CHANNEL() audionativeformat, videonativeformat, audioreadformat, and - audiowriteformat now need locking since the media format rework when - accessing the channel's format pointers. +2015-08-26 05:40 +0000 [54a09e4cb5] Joshua Colp - * Increased the buffer size for CHANNEL() audionativeformat and - videonativeformat output strings since the allow=all can be a lengthy - list. + * chan_sip: Allow call pickup to set the hangup cause. - * Tweaked the CHANNEL() XML documentation for secure_bridge_signaling, - secure_bridge_media, and state. + The call pickup implementation in chan_sip currently sets the channel + hangup cause to "normal clearing" if call pickup is successfully + performed. This action overwrites the "answered elsewhere" hangup cause + set by the call pickup code and can result in the SIP device in + question showing a missed call when it should not. - * Ensured the output buffer is initialized for secure_bridge_signaling and - secure_bridge_media. + This change sets the hangup cause to "normal clearing" as a + default initially but allows the call pickup to change it as + needed. - * Made use the locked_copy_string() macro instead of inlining it for trace - and checkhangup. - ........ + ASTERISK-25346 #close - Merged revisions 422700 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff +2015-08-25 07:17 +0000 [942d0ba96f] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422701 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: Add common ast_sip_get_host_ip API. -2014-09-05 15:22 +0000 [85878c4dd8] Jonathan Rose + Modules commonly used the pj_gethostip function for retrieving the + IP address of the host. This function does not cache the result and may + result in a DNS lookup occurring, or additional work. If the DNS + server is unreachable or network issues arise this can cause the + pj_gethostip function to block for a period of time. - * Dial API: Add a dial option to indicate the dialed channel will replace dialer + This change adds an ast_sip_get_host_ip and ast_sip_get_host_ip_string + function which does the same thing but caches the host IP address at + module load time. This results in no additional work being done each + time the local host IP address is needed. - Adds an option to the dial API that marks an outgoing dial as replacing the dialing channel for the purpose of propagating accountcode. When it is used, AST_CHANNEL_REQUESTOR_REPLACEMENT is used instead of AST_CHANNEL_REQUESTOR_BRIDGE_PEER when setting accountcodes on the involved channels with ast_channel_req_accountcodes. + ASTERISK-25342 #close - Review: https://reviewboard.asterisk.org/r/3968/ - ........ + Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e - Merged revisions 422684 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-08-24 06:21 +0000 [ad4e895928] Joshua Colp + * bridge: Kick channel from bridge if hung up during action. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422697 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When executing an action in a bridge it is possible for the + channel to be hung up without the bridge becoming aware of it. + This is most easily reproducible by hanging up when the bridge + is streaming DTMF due to a feature timeout. This change makes + it so after action execution the channel is checked to determine + if it has been hung up and if it has it is kicked from the bridge. -2014-09-05 14:39 +0000 [e19017fc00] Jonathan Rose + ASTERISK-25341 #close - * Call IDs: Fix appearance of call ID in core show channels when NULL + Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062 - NULL call IDs were meant to appear as '(none)' but instead were showing - the contents of an uninitialized character buffer. +2015-08-24 11:04 +0000 [4083e543fd] Joshua Colp - ASTERISK-24223 - Review: https://reviewboard.asterisk.org/r/3979/ - ........ + * res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced - Merged revisions 422664 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + When recreating a subscription it is possible for a freed sub_tree + to be referenced when the initial NOTIFY fails to be created. - Merged revisions 422665 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788 +2015-04-16 13:20 +0000 [0b04269e73] Scott Griepentrog - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422683 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced -2014-09-05 12:45 +0000 [5a1de68b9a] Richard Mudgett + This change makes the send_notify of the sub_tree + not happen when the sub_tree has been deleted due + to the notify call failing, which avoids a crash. - * devicestate.c: Minor tweaks + ASTERISK-24970 #close - * In ast_state_chan2dev() use ARRAY_LEN() instead of a sentinel value in - chan2dev[]. + Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf + (cherry picked from commit 8d4ce7cc2b87317005588e700b278a8cca7005c8) - * Fix some comments in chan_iax2.c. - ........ +2015-08-14 15:46 +0000 [f049ad951b] Mark Michelson - Merged revisions 422661 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_sdp_rtp: Restore removed NULL check. + When sending an RTP keepalive, we need to be sure we're not dealing with + a NULL RTP instance. There had been a NULL check, but the commit that + added the rtp_timeout and rtp_hold_timeout options removed the NULL + check. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422663 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64 -2014-09-05 08:29 +0000 [2362d88a18] Kinsey Moore +2015-08-13 12:22 +0000 [fb347a4ded] Richard Mudgett - * Menuselect: Fix incorrect enabling on failed deps + * audiohook.c: Fix MixMonitor crash when using the r() or t() options. - This corrects a situation where menuselect can incorrectly enable a - module by default that has defaultenabled set to "no" and has - failed/non-selected dependencies. The bug is due to an inverted test - when checking for whether the given module should be set to enabled by - default on load. + The built frame format in audiohook_read_frame_both() is now set to a + signed linear format before the rx and tx frames are duplicated instead of + only for the mixed audio frame duplication. - Review: https://reviewboard.asterisk.org/r/3975/ - Reported by: John Bigelow - ........ + ASTERISK-25322 #close + Reported by Sean Pimental - Merged revisions 422646 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538 +2015-08-12 12:59 +0000 [a5049df640] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422647 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * chan_sip.c: wrong peer searched in sip_report_security_event -2014-09-04 17:05 +0000 [af75e45da1] Jonathan Rose + In chan_sip, after handling an incoming invite a security event is raised + describing authorization (success, failure, etc...). However, it was doing + a lookup of the peer by extension. This is fine for register messages, but + in the case of an invite it may search and find the wrong peer, or a non + existent one (for instance, in the case of call pickup). Also, if the peers + are configured through realtime this may cause an unnecessary database lookup + when caching is enabled. - * Manager: Require read permission for SYSTEM in order to send FullyBooted + This patch makes it so that sip_report_security_event searches by IP address + when looking for a peer instead of by extension after an invite is processed. - Review: https://reviewboard.asterisk.org/r/3969/ - ........ + ASTERISK-25320 #close - Merged revisions 422584 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4 +2015-08-13 05:26 +0000 [7089472637] Joshua Colp - Merged revisions 422625 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * res_http_websocket: When shutting down a session don't close closed socket - Merged revisions 422626 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Due to the use of ast_websocket_close in session termination it is + possible for the underlying socket to already be closed when the + session is terminated. This occurs when the close frame is attempted + to be written out but fails. - Merged revisions 422631 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b +2015-08-11 05:24 +0000 [128d2348e6] Joshua Colp + * res_http_websocket: Forcefully terminate on write errors. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422632 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The res_http_websocket module will currently attempt to close + the WebSocket connection if fatal cases occur, such as when + attempting to write out data and being unable to. When the + fatal cases occur the code attempts to write a WebSocket close + frame out to have the remote side close the connection. If + writing this fails then the connection is not terminated. -2014-09-03 09:05 +0000 [3cd36d0e10] Joshua Colp + This change forcefully terminates the connection if the + WebSocket is to be closed but is unable to send the close frame. - * res_pjsip_transport_websocket: Fix crash when the Contact header is not a URI. + ASTERISK-25312 #close - The code for changing the Contact header wrongly assumed that the Contact - would always contain a URI. This is incorrect. + Change-Id: I10973086671cc192a76424060d9ec8e688602845 - ASTERISK-24271 - Reported by: Dafi Ni - ........ +2015-08-10 13:43 +0000 [6b219a866c] Richard Mudgett - Merged revisions 422557 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF. - Merged revisions 422558 from http://svn.asterisk.org/svn/asterisk/branches/13 + Pressing DTMF digits on a phone to go out on a DAHDI channel can result in + the digit not being recognized or even heard by the peer. + Phone -> Asterisk -> DAHDI/channel - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422559 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Turns out the DAHDI behavior with DTMF generation (and any other generated + tones) is exposed by the "buffers=" setting in chan_dahdi.conf. When + Asterisk requests to start sending DTMF then DAHDI waits until its write + buffer is empty before generating any samples for the DTMF tones. When + Asterisk subsequently requests DAHDI to stop sending DTMF then DAHDI + immediately stops generating the DTMF samples. As a result, the more + samples there are in the DAHDI write buffer the shorter the time DTMF + actually gets sent on the wire. If there are more samples in the write + buffer than the time DTMF is supposed to be sent then no DTMF gets sent on + the wire. With the "buffers=12,half" setting and each buffer representing + 20 ms of samples then the DAHDI write buffer is going to contain around + 120 ms of samples. For DTMF to be recognized by the peer the actual sent + DTMF duration needs to be a minimum of 40 ms. Therefore, the intended + duration needs to be a minimum of 160 ms for the peer to receive the + minimum DTMF digit duration to recognize it. -2014-09-02 15:29 +0000 [1b64f353f1] Mark Michelson + A simple and effective solution to work around the DAHDI behavior is for + Asterisk to flush the DAHDI write buffer when sending DTMF so the full + duration of DTMF is actually sent on the wire. When someone is going to + send DTMF they are not likely to be talking before sending the tones so + the flushed write samples are expected to just contain silence. - * Resolve race condition where channels enter dialplan application before media has been negotiated. + * Made dahdi_digit_begin() flush the DAHDI write buffer after requesting + to send a DTMF digit. - Testsuite tests will occasionally fail because on reception of a 200 OK SIP response, - an AST_CONTROL_ANSWER frame is queued prior to when media has finished being - negotiated. This is because session supplements are called into before PJSIP's - inv_session code has told us that media has been updated. Sometimes the queued answer - frame is handled by the PBX thread before the ensuing media negotiations occur, causing - a test failure. + ASTERISK-25315 #close + Reported by John Hardin - As it turns out, there is another place that session supplements could be called into, which is - after media has finished getting negotiated. What this commit introduces is a means for session - supplements to indicate when they wish to be called into when handling an incoming SIP response. - By default, all session supplements will be run at the same point that they were prior to this - commit. However, session supplements may indicate that they wish to be handled earlier than - normal on redirects, or they may indicate they wish to be handled after media has been negotiated. + Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a - In this changeset, two session supplements have been updated to indicate a preference for when - they should be run: res_pjsip_diversion executes before handling redirection in order to get - information from the Diversion header, and chan_pjsip now handles responses to INVITEs after - media negotiation to fix the race condition mentioned previously. +2015-08-05 14:21 +0000 [fc4455216a] Richard Mudgett - ASTERISK-24212 #close - Reported by Matt Jordan + * chan_dahdi.c: Lock private struct for ast_write(). - Review: https://reviewboard.asterisk.org/r/3930 - ........ + There is a window of opportunity for DTMF to not go out if an audio frame + is in the process of being written to DAHDI while another thread starts + sending DTMF. The thread sending the audio frame could be past the + currently dialing check before being preempted by another thread starting + a DTMF generation request. When the thread sending the audio frame + resumes it will then cause DAHDI to stop the DTMF tone generation. The + result is no DTMF goes out. - Merged revisions 422536 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Made dahdi_write() lock the private struct before writing to the DAHDI + file descriptor. - Merged revisions 422542 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25315 + Reported by John Hardin + Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422543 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-08-10 18:23 +0000 [739fca6084] Richard Mudgett -2014-09-01 10:25 +0000 [897cbf6a4f] Matt Jordan + * res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message. - * main/cli: Do not attempt to show CDR data for internal channels + If the saved SUBSCRIBE message is not parseable for whatever reason then + Asterisk could crash when libpjsip tries to parse the message and adds an + error message to the parse error list. - Internal channels don't have CDRs. Querying the CDR engine for their variables - will make it cranky. - ........ + * Made ast_sip_create_rdata() initialize the parse error rdata list. The + list is checked after parsing to see that it remains empty for the + function to return successful. - Merged revisions 422506 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-25306 + Reported by Mark Michelson - Merged revisions 422507 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ie0677f69f707503b1a37df18723bd59418085256 +2015-08-06 12:48 +0000 [bfb15bea06] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422524 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip_pubsub: More accurately persist packet. -2014-09-01 09:15 +0000 [df5dbbd878] Matt Jordan + The pjsip_rx_data structure has a pkt_info.packet field on it that is + the packet that was read from the transport. For datagram transports, + the packet read from the transport will correspond to the SIP message + that arrived. For streamed transports, however, it is possible to read + multiple SIP messages in one packet. - * res_stasis: Don't play MoH to channels by default when added to holding bridges + In a recent case, Asterisk crashed on a system where TCP was being used. + This is because at some point, a read from the TCP socket resulted in a + 200 OK response as well as an incoming SUBSCRIBE request being stored in + rdata->pkt_info.packet. When the SUBSCRIBE was processed, the + combination 200 OK and SUBSCRIBE was saved in persistent storage. Later, + a restart of Asterisk resulted in the crash because the persistent + subscription recreation code ended up building the 200 OK response + instead of a SUBSCRIBE request, and we attempted to access + request-specific data. - When ARI manipulates a bridge, it generally doesn't care what the mixing - technology is. Operations on a bridge initiated through ARI should perform - their action in generally the same way, regardless of the bridge's mixing - technology. While the mixing technology may determine how media flows to - channels, the actual operations on a bridge themselves should be the same. + The fix here is to use the pjsip_msg_print() function in order to + persist SUBSCRIBE requests. This way, rather than using the raw socket + data, we use the parsed SIP message that PJSIP has given us. If we + receive multiple SIP messages from a single read, we will be sure only + to save off the relevant SIP message. There also is a safeguard put in + place to make sure that if we do end up reconstructing a SIP response, + it will not cause a crash. - Currently, this isn't the case with holding bridges. When a channel joins - without a role, MoH is started on that channel automatically. Subsequent bridge - operations that would stop MoH would fail (as there is no Announcer channel - playing MoH to the bridge). Starting MoH on the bridge will also create two - MoH streams: one from the MoH being played on the participant channel, and one - from the announcer channel. From the perspective of ARI users, this is - counter-intuitive - I would not expect MoH to be started for me. The mixing - technology determines how media is shared between participants, not the - application experience. + ASTERISK-25306 #close + Reported by Mark Michelson - This patch does the following: - * The Stasis bridge class now inspects channels as they are going into a - bridge. If the bridge has a holding capability, and the channel has no - roles, we give it a participant role and mark the default behaviour to have - no entertainment. This allows addChannel operations to continue to set a - participant role with an entertainment option if it felt like it (or could - do it). - * The music on hold channel is now Stasis approved (tm) + Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2 - Review: https://reviewboard.asterisk.org/r/3929/ +2015-08-04 16:12 +0000 [9e93ad109b] Joshua Colp - ASTERISK-24264 #close - Reported by: Samuel Galarneau - Tested by: Samuel Galarneau - ........ + * res_pjsip: Ensure sanitized XML is NULL terminated. - Merged revisions 422503 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The ast_sip_sanitize_xml function is used to sanitize + a string for placement into XML. This is done by examining + an input string and then appending values to an output + buffer. The function used by its implementation, strncat, + has specific behavior that was not taken into account. + If the size of the input string exceeded the available + output buffer size it was possible for the sanitization + function to write past the output buffer itself causing + a crash. The crash would either occur because it was + writing into memory it shouldn't be or because the resulting + string was not NULL terminated. - Merged revisions 422504 from http://svn.asterisk.org/svn/asterisk/branches/13 + This change keeps count of how much remaining space is + available in the output buffer for text and only allows + strncat to use that amount. + Since this was exposed by the res_pjsip_pidf_digium_body_supplement + module attempting to send a large message the maximum allowed + message size has also been increased in it. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + A unit test has also been added which confirms that the + ast_sip_sanitize_xml function is providing NULL terminated + output even when the input length exceeds the output + buffer size. -2014-08-30 12:33 +0000 [5aefecd81e] gtjoseph + ASTERISK-25304 #close - * confbridge: Add Duration to ConfbridgeList event + Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302 - The ConfbridgeList event doesn't include how long the user has been a - member of the conference. This patch adds Duration (seconds) which - is based on user->chan->answertime. +2015-02-13 11:21 +0000 [f6dcbd9707] Richard Mudgett - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3955/ - ........ + * res_pjsip_session: Fix double re-INVITE collision crash. - Merged revisions 422444 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + A multi-asterisk box setup with direct media enabled would occasionally + crash when two re-INVITE collisions on a call leg happen in a row. - Merged revisions 422445 from http://svn.asterisk.org/svn/asterisk/branches/13 + The re-INVITE logic only had one timer struct to defer the re-INVITE. + When the second collision happens the timer struct is overwritten and put + into the timer heap again. Resources for the first timer are leaked and + the heap has two positions occupied by the same timer struct. Now the + heap ordering is potentially corrupted, the timer will fire twice, and any + resources allocated for the second timer will be released twice. + * The solution is to put the collided re-INVITE into the delayed requests + queue with all the other delayed requests and cherry pick the next request + that can come off the queue when an event happens. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422446 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Changed to put delayed BYE requests at the head of the delayed queue. + There is no sense in processing delayed UPDATEs and re-INVITEs when a BYE + has been requested. -2014-08-30 12:24 +0000 [59d4dbd3d0] gtjoseph + * Made the start of a BYE request flush the delayed requests queue to + prevent a delayed request from overlapping the BYE transaction. I saw a + few cases where a delayed re-INVITE got started after the BYE transaction + started. - * manager: Make WaitEvent action respect eventfilters + * Changed the delayed_request struct to use an enum instead of a string + for the request method. Cherry picking the queue is easier with an enum + than string comparisons and the compiler can warn if a switch statement + does not cover all defined enum values. - A WaitEvent issued via an http session isn't respecting eventfilters defined - for the user. I just added a match_filter to the predicate that controls - astman_append. + * Improved the debug output to give more information. It helps to know + which channel is involved with an endpoint. Trunks can have many channels + associated with the endpoint at the same time. - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3958/ - ........ + ASTERISK-24727 #close + Reported by: Mark Michelson - Merged revisions 422439 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Review: https://reviewboard.asterisk.org/r/4414/ - Merged revisions 422440 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: Ib05700c3a13ceac53b17d66099ef0d296a5e1863 - Merged revisions 422441 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-01-16 16:12 +0000 [4350fd22c8] Mark Michelson - Merged revisions 422442 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Fix problem where a hung channel could occur on a failed blind transfer. + Different clients react differently to being told that a blind transfer + has failed. Some will simply send a BYE and be done with it. Others will + attempt to reinvite themselves back onto the call. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422443 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + In the latter case, we were creating a new channel and then leaving it to + sit forever doing nothing. With this code change, that new channel will + not be created and the dialog with the transferring channel will be cleaned + up properly. -2014-08-29 14:40 +0000 [664f83a03b] Jeremy Laine (License 6561) + ASTERISK-24624 #close + Reported by Zane Conkle - * doc: Add a manpage for the smsq utility + Review: https://reviewboard.asterisk.org/r/4339 - This patch adds a manpage for the smsq utility. Note that this is one of - the patches the Debian distro applies for the Asterisk project, as per - ASTERISK-24191. + Change-Id: I76e440e08e603c1eea40a14951e7b171c0472a55 - Review: https://reviewboard.asterisk.org/r/3895/ +2015-07-18 11:16 +0000 [fae081ad5b] Joshua Colp - ASTERISK-24171 #close - Reported by: Jeremy Laine - patches: - smsq.8 uploaded by Jeremy Laine (License 6561) - ........ + * pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options. - Merged revisions 422376 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + This change adds support for the 'rtp_timeout' and 'rtp_timeout_hold' + endpoint options. These allow the channel to be hung up if RTP + is not received from the remote endpoint for a specified number of + seconds. - Merged revisions 422377 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + ASTERISK-25259 #close - Merged revisions 422378 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9 - Merged revisions 422379 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-09 14:17 +0000 [d66abb6746] Mark Michelson + * res_pjsip: Add rtp_keepalive endpoint option. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This adds an "rtp_keepalive" option for PJSIP endpoints. Similar to the + chan_sip option, this specifies an interval, in seconds, at which we + will send RTP comfort noise frames. This can be useful for keeping RTP + sessions alive as well as keeping NAT associations alive during lulls. -2014-08-29 14:35 +0000 [81598fa082] Jeremy Laine (License 6561) + ASTERISK-25242 #close + Reported by Mark Michelson - * doc: Add a manpage for the aelparse utility + Change-Id: I683bdc206c8c7def586ecaa64dcf2b86550be3bf - This patch adds a manpage for the aelparse utility. Note that this is one of - the patches the Debian distro applies for the Asterisk project, as per - ASTERISK-24191. +2015-07-16 09:46 +0000 [1b744ab684] Joshua Colp - Review: https://reviewboard.asterisk.org/r/3896/ + * chan_pjsip: Don't change formats when frame of unsupported format is received. - ASTERISK-24171 #close - Reported by: Jeremy Laine - patches: - aelparse.8 uploaded by Jeremy Laine (License 6561) - ........ + Receipt of an RTP packet currently causes the formats on an PJSIP channel to + change to the format of the RTP packet. In some off-nominal cases it's possible + for this to be a format that has not been configured or negotiated. This change + makes it so only formats explicitly configured on the endpoint are allowed. - Merged revisions 422371 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + ASTERISK-25258 #close - Merged revisions 422372 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: If93d641fb6418a285928839300d7854cab8c1020 - Merged revisions 422373 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-07-15 15:40 +0000 [147b86a8d1] Richard Mudgett - Merged revisions 422374 from http://svn.asterisk.org/svn/asterisk/branches/13 + * strings.h: Fix issues with escape string functions. + Fixes for issues with the ASTERISK-24934 patch. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422375 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is + an empty string. If it were an empty string the functions returned NULL + as if there were a memory allocation failure. This failure caused the AMI + VarSet event to not get posted if the new value was an empty string. -2014-08-29 13:46 +0000 [2df2d785b7] Scott Griepentrog + * Fixed dest buffer overwrite potential in ast_escape() and + ast_escape_c(). If the dest buffer size is smaller than the space needed + by the escaped s parameter string then the dest buffer would be written + beyond the end by the nul string terminator. The num parameter was really + the dest buffer size parameter so I renamed it to size. - * The assertion that peer was not found on final event - message was being triggered on configuration reload. - This patch changes that case to just return instead. + * Made nul terminate the dest buffer if the source string parameter s was + an empty string in ast_escape() and ast_escape_c(). - Review: https://reviewboard.asterisk.org/r/3953/ + * Updated ast_escape() and ast_escape_c() doxygen function description + comments to reflect reality. + * Added some more unit test cases to /main/strings/escape to cover the + empty source string issues. + ASTERISK-25255 #close + Reported by: Richard Mudgett - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422358 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: Id77fc704600ebcce81615c1200296f74de254104 -2014-08-28 16:54 +0000 [3194892ea2] Matt Jordan +2015-07-14 14:36 +0000 [131f6ef8f5] Richard Mudgett - * LICENSE: Clarify language in Asterisk's LICENSE to allow for linking to UniMRCP + * res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park. - The UniMRCP project distributes Asterisk modules that integrate Asterisk with - UniMRCP, and other Asterisk users use the UniMRCP library as well. - Unfortunately, the UniMRCP license is Apache 2.0, which per the Free Software - Foundation, is not a compatible license with the GPLv2. + setup_park_common_datastore() was assuming that a non-NULL string returned + for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty + strings. Things got crashy as a result. - "Please note that this license is not compatible with GPL version 2, because it - has some requirements that are not in that GPL version. These include certain - patent termination and indemnification provisions. The patent termination - provision is a good thing, which is why we recommend the Apache 2.0 license for - substantial programs over other lax permissive licenses." + * Made setup_park_common_datastore() treat the channel variable values the + same whether they are NULL or empty for ATTENDEDTRANSFER and + BLINDTRANSFER. - On the other hand, UniMRCP is a great project and we'd like to let people use - it with Asterisk. + ASTERISK-25254 #close + Reported by: Richard Mudgett - This patch updates the LICENSE text to allow users to link Asterisk with - UniMRCP and distribute the resulting binaries. - ........ + Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2 - Merged revisions 422293 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ +2015-07-09 09:18 +0000 [23b7b109c2] Joshua Colp - Merged revisions 422294 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * bridge_native_rtp.c: Don't start native RTP bridging after attended transfer. - Merged revisions 422295 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The bridge_native_rtp module adds a frame hook to channels which are in + a native RTP bridge. This frame hook is used to intercept when a hold + or unhold frame traverses the bridge so native RTP can be stopped or + started as appropriate. This is expected but exposes a specific bug + when attended transfers are involved. - Merged revisions 422296 from http://svn.asterisk.org/svn/asterisk/branches/13 + Upon completion of an attended transfer an unhold frame is queued up + to take one of the channels involved off hold. After this is done + the channel is moved between bridges. + When the frame hook is involved in this case for the unhold it + releases the channel lock and acquires the bridge lock. This + allows the bridge core to step in and move the channel + (potentially changing the bridging techology) from another thread. + Once completed the bridge lock is released by the bridge core. + The frame hook is then able to acquire the bridge lock and + wrongfully starts native RTP again, despite the channel no longer + being in the bridge or needing to start native RTP. In fact at + this point the frame hook is no longer attached to the channel. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422297 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change makes it so the native RTP bridge data is available to + the frame hook when it is invoked. Whether the frame hook has + been detached or not is stored on the native RTP bridge data and + is checked by the frame hook before starting or stopping native + RTP bridging. If the frame hook has been detached it does nothing. -2014-08-28 15:31 +0000 [c5916fb39f] Michael L. Young (license 5026) + ASTERISK-25240 #close - * chan_iax2: Fix Dynamic IAX2 Registrations After Temporary DNS Failure + Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2 - The reporter on the issue found some issues when upgrading from version 10 to 11 - on 55 hosts. +2015-05-26 07:44 +0000 [0fcc530dc7] Joshua Colp - Two situations that can occur with dynamic registrations. + * sorcery: Fix cache creation callback. - 1. With dnsmgr disabled, if the host is not resolvable we are not trying to - resolve the host again when it is time to attempt to register again. This - results in never registering to the host. - 2. With dnsmgr enabled, when the host is temporarily not resolvable the - address is set to 0.0.0.0:0 and then when the host is resolvable the port - is not being restored and stays set to 0. + The cache creation callback function expects to receive a sorcery_details + structure and not just a standalone object. - This patch resolves these two issues by: + Change-Id: Id2a9e5f271c466686e6d0def461fa50c8b2cae53 - * Storing the hostname so that it can be used for resolving with DNS. - * Resolve the hostname on the next scheduled attempt to register. - * Storing the port used to reach the host so that when the hostname is - resolvable again, we can set the port again if the port is still unset after - looking up the host. +2015-07-08 14:39 +0000 [c8d53f2372] Mark Michelson - ASTERISK-23767 #close - Reported by: David Herselman - Tested by: David Herselman, Michael L. Young - Patches: - asterisk-23767-dns_reg_retry_and_set_port_11_v3.diff - uploaded by Michael L. Young (license 5026) + * res_sorcery_memory_cache: Remove ASTERISK_REGISTER_FILE() macro. - Review: https://reviewboard.asterisk.org/r/3856/ - ........ + This was part of the backport of res_sorcery_memory_cache from master + but will not compile in 13. - Merged revisions 422274 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I27b3d833acda9dd1770fdbe594964197b93779b0 - Merged revisions 422275 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-07-06 09:24 +0000 [a72cf6ce81] Joshua Colp - Merged revisions 422276 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_sorcery_memory_cache: Execute stale unit test last. + In Jenkins there is currently a sporadic test failure of a + variable number of sorcery memory cache unit tests. I have not + been able to reproduce this on the build agents themselves or + on my development machine. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422277 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + My working theory is that the stale unit test is causing a + sorcery instance to persist longer than expected, causing subsequent + tests to fail when setting up and initializing the next + sorcery instance. -2014-08-28 12:29 +0000 [4e750a26fd] Richard Mudgett + To see if this is the case this change moves the stale unit test + to execute last so no subsequent unit tests can have issues + initializing their sorcery instance. - * Added ConfBridge AMI event note to UPGRADE.txt. - ........ + Change-Id: Ifd6550a949613be774b75fa5db12c02110f82c4a - Merged revisions 422255 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-06-17 07:00 +0000 [e0cd8216bb] Joshua Colp - Merged revisions 422256 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_sorcery_memory_cache: Remove 'prefetch' option. + To prevent confusion I am removing the prefetch option until such + time as it is implemented. All other functionality, however, has + been implemented. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422257 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25067 -2014-08-28 11:06 +0000 [ef28cc0d43] Paul Belanger + Change-Id: I9ce6aa3e5c6c5bc3c5baa8ff90fa036d73939895 - * chan_sip.c: Add 'rtpbindaddr' setting +2015-06-02 10:20 +0000 [8b2bad7740] Joshua Colp - Users now have the ability to bind the rtpengine instance to a specific IP - address. For example, you want chan_sip (call control) on eth0 but rtp (media) - on eth1. + * test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache. - ASTERISK-24280 #close - Reported by: Paul Belanger - Tested by: Paul Belanger - Review: https://reviewboard.asterisk.org/r/3952/ - Patches: - rtpengine.diff uploaded by Paul Belanger + This change adds a CLI command which can perform memory cache thrashing as well + as unit tests which perform thrashing under the following configurations: + 1. Low number of unique objects that go stale after 1 second + 2. Low number of unique objects that expire after 1 second + 3. Low number of unique objects which are constantly updated + 4. Large number of unique objects which exceed a defined cache size + 5. Large number of unique objects which exceed a defined cache size + that also expire and go stale rapidly + 6. Large number of unique objects which expire and go stale rapidly + 7. Large number of unique objects - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422241 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + For all of the above there are a large number of threads constantly + attempting to retrieve random objects and each test runs for a few + seconds. -2014-08-28 10:50 +0000 [327d67270f] Mark Michelson + ASTERISK-25067 + Reported by: Matt Jordan - * Fix bug that did not allow for multiple batched RLS notifications to be sent. + Change-Id: I8c8ceff977332c80ed4a31f10d694d48552b2f78 - A misunderstanding of how the scheduler worked caused further batched notifications - beyond the first not to get scheduled. Now we reset our scheduler ID to -1 after - the batched notification is sent. This way, further notifications can be scheduled - when they arise. - ........ +2015-06-04 13:11 +0000 [8575c4f18d] Joshua Colp - Merged revisions 422239 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_sorcery_memory_cache: Implement expire_on_reload option. + This change implements the expire_on_reload option for memory caches. + If enabled and a reload is performed all objects within the cache + will be expired and the cache emptied. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422240 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25067 + Reported by: Matt Jordan -2014-08-27 19:44 +0000 [94e1b4a8a4] Richard Mudgett + Change-Id: Id46aa1957d660556700e689e195eed57c989b85e - * res/res_pjsip/pjsip_options.c: Eliminate excessive RAII_VAR usage. +2015-06-04 05:33 +0000 [da52527136] Joshua Colp - * Fix off nominal ref leak in find_or_create_contact_status(). + * res_sorcery_memory_cache: Add test event when a refresh occurs. - * Add missing NULL check of status in update_contact_status() and - init_start_time(). - ........ + This change adds a testsuite event for when a refresh occurs. + This is useful as it provides a guaranteed mechanism of knowing when + it has occurred instead of waiting an arbitrary amount of time. - Merged revisions 422214 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-25067 + Reported by: Matt Jordan - Merged revisions 422215 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Iaa6b8d2d6bab7f99ee08e1c8908b8272a8987e65 +2015-05-26 07:34 +0000 [f596b4a85c] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422216 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_sorcery_memory_cache: Add CLI commands and AMI actions. -2014-08-27 19:16 +0000 [4728c05957] Richard Mudgett + This change adds the following CLI commands and AMI actions: - * sched: Fix typo and whitespace change. - ........ + sorcery memory cache show + sorcery memory cache dump + sorcery memory cache expire + sorcery memory cache stale - Merged revisions 422200 from http://svn.asterisk.org/svn/asterisk/branches/13 + SorceryMemoryCacheExpire + SorceryMemoryCacheExpireObject + SorceryMemoryCacheStale + SorceryMemoryCacheStaleObject + These allow both examination and manipulation of sorcery memory + caches from external sources. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Cached objects can be explicitly expired from a cache or marked + as stale. If expired they are immediately removed. If marked as + stale they will be background refreshed when next retrieved. -2014-08-27 12:30 +0000 [7c1a22fba7] gtjoseph + ASTERISK-25067 + Reported by Matt Jordan - * confbridge: Add 'Admin' param to join, leave, mute, unmute and talking events + Change-Id: I68e03cfd8c34b5e07f4b6ee4fd93a3f4a00a3d9e - Currently there's no way to tell if a user is an admin or not when receiving - the join, leave, mute, unmute and talking events. This patch adds that - capability. +2015-05-26 13:01 +0000 [9c2de310be] Mark Michelson - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3950/ - ........ + * res_sorcery_memory_cache: Add support for refreshing stale objects. - Merged revisions 422176 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + This change introduces a check of object_lifetime_stale when retrieving + cached objects. If the amount of time the object has been in the cache + exceeds the lifetime, then a task is scheduled to update the cached + object based on an object retrieved from other sorcery wizards instead. - Merged revisions 422177 from http://svn.asterisk.org/svn/asterisk/branches/13 + To prevent the cached object from being retrieved during a refresh, + thread-local storage is used to mark the thread as being a stale object + update. This results in the cache returning no object, leading to + sorcery querying other wizards for the object instead. + A test has been added for stale objects as well. This test ensures that + stale objects are retrieved the same as freshly-cached objects. The test + also ensures that after an object is stale, changes in the backend are + reflected in the cache, to include if the object has been deleted from + the backend. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422178 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-25067 + Reported by Matt Jordan -2014-08-27 10:39 +0000 [bf85018107] Kinsey Moore + Change-Id: I9bd7c049adf6939bfe2899f393c2bfbbf412d217 - * CallerID: Fix parsing of malformed callerid +2015-05-20 17:35 +0000 [9a7fccc50c] Joshua Colp - This allows the callerid parsing function to handle malformed input - strings and strings containing escaped and unescaped double quotes. - This also adds a unittest to cover many of the cases where the parsing - algorithm previously failed. + * res_sorcery_memory_cache: Add support for object_lifetime_maximum. - Review: https://reviewboard.asterisk.org/r/3923/ - Review: https://reviewboard.asterisk.org/r/3933/ - ........ + This makes the "object_lifetime_maximum" option operational. - Merged revisions 422112 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + On the addition of an object to an empty memory cache a scheduled + task is created which, when invoked, expires objects from the cache + which have exceeded their lifetime. If more objects have been added + the remaining life of the oldest object is used to schedule the + next invocation of the scheduled task. - Merged revisions 422113 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + If the oldest object is removed from the cache before it can be + expired automatically the scheduled task is cancelled, if possible, + and the lifetime of the next oldest is used to schedule the task. - Merged revisions 422114 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + If during these two operations no additional objects exist in the + cache then no task is scheduled. - Merged revisions 422154 from http://svn.asterisk.org/svn/asterisk/branches/13 + An additional unit test has been added which verifies this + functionality. + ASTERISK-25067 + Reported by: Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422158 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I87409674674a508e7717ee20739ca15cec6ba7b6 -2014-08-26 18:30 +0000 [d199536a04] gtjoseph +2015-05-20 15:19 +0000 [9ae9221d2b] Mark Michelson - * confbridge: Make kick, mute and unmute handle channel targets consistently. + * res_sorcery_memory_cache: Add support for maximum_objects. - Kick, mute and unmute were a little inconsistent in their handling of channel - targets. This patch cleans that up by insuring they all handle the 'all' - target consistently and adds the 'participants' target which acts on - non-admins. Documentation for kick was also cleaned up as it never - supported partial channel names. + This makes the "maximum_objects" option operational. - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3944/ - ........ + A heap has been added alongside the hash table in the cache. When + objects are added to the cache, they are also added to the heap. + Similarly, when objects are removed from the cache, they are removed + from the heap. - Merged revisions 422090 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + The heap's use comes into play when an item is to be added to a "full" + cache. When the cache is full, the oldest item is removed from the + cache, using the heap to determine the oldest item. - Merged revisions 422091 from http://svn.asterisk.org/svn/asterisk/branches/13 + A unit test has been added that verifies that the maximum_objects option + works as expected and that the oldest object is removed from the cache + when an object beyond the maximum is added. + ASTERISK-25067 #close + Reported by Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422092 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I490658830e9c4cbf0b3051e4cdc4913cf9f1b73a -2014-08-26 17:14 +0000 [c5ab4adf17] Mark Michelson +2015-05-16 17:02 +0000 [e4d42119b5] Joshua Colp - * Fix race condition in the scheduler when deleting a running entry. + * res_sorcery_memory_cache: Add basic module implementation. - When scheduled tasks run, they are removed from the heap (or hashtab). - When a scheduled task is deleted, if the task can't be found in the - heap (or hashtab), an assertion is triggered. If DO_CRASH is enabled, - this assertion causes a crash. + This change adds a basic res_sorcery_memory_cache module which implements + configuration option parsing, configuration file parsing for threading, + sorcery interface implementation, and unit tests. - The problem is, sometimes it just so happens that someone attempts - to delete a scheduled task at the time that it is running, leading - to a crash. This change corrects the issue by tracking which task - is currently running. If that task is attempted to be deleted, - then we mark the task, and then wait for the task to complete. - This way, we can be sure to coordinate task deletion and memory - freeing. + Objects can be added, updated, deleted, and retrieved from the memory + cache. Automatic expiration and stale handling will be added in the + future. - ASTERISK-24212 - Reported by Matt Jordan + Note that unit tests exist within the module itself in case the + threading done as a result of expiration results in asynchronous + actions (which it likely will). Providing access and a notification + mechanism for an external test module would be complicated and + not worth it. - Review: https://reviewboard.asterisk.org/r/3927 - ........ + ASTERISK-25067 #close + Reported by: Matt Jordan - Merged revisions 422070 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: Id8a6a357ef5a83d466f81eee56a67d13eeb118b9 - Merged revisions 422071 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-07-02 17:03 +0000 [49a37f22e1] Jonathan Rose + * app: Add functions to swap vm function table - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422072 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This patch adds function-mocking methods for testing voicemail + features in external modules. It is being pulled over from r432556 + on SVN because DPMA won't presently compile with TEST_FRAMEWORK + set in Asterisk 13.1 certified. -2014-08-25 11:45 +0000 [fefa6fba82] Richard Mudgett + Change-Id: I1c2cf6d5a8589104154a86538ecd3f62a2694681 +2015-04-22 16:22 +0000 [f58c0acfa2] gtjoseph - * res_musiconhold.c: Release any format refs before memset(). + * res/res_corosync: Always decline module load, instead of failing - * Clear the channel music_state pointer before destroying the music_state - object for safety. - ........ + Returns a 'failure' from the module load routine indicates to Asterisk + that it should abort loading completely. This is rarely - in fact, + really, never - a good option. Aborting load of Asterisk from a dynamic + module implies that the core, and the rest of the dynamic modules, don't + matter: we should abandon all processing. - Merged revisions 422037 from http://svn.asterisk.org/svn/asterisk/branches/13 + res_corosync is really not that important. + This patch updates the module such that, if it fails to load, it + politely declines (emitting ERROR messages along the way), and allows + Asterisk to continue to function. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@422038 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Note that this issue was keeping Asterisk unit tests from running on + certain build agents. -2014-08-25 11:16 +0000 [2b19d94a71] Richard Mudgett + Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f - * res_musiconhold: Fix MOH restarting where it left off from the last hold. +2015-06-29 12:45 +0000 [9cbd76630a] Mark Michelson - Restore code removed by https://reviewboard.asterisk.org/r/3536/ that - introduced a regression that prevents MOH from restarting were it left off - the last time. + * res_sorcery_realtime: Fix leak of sorcery object type. - ASTERISK-24019 #close - Reported by: Jason Richards - Patches: - jira_asterisk_24019_v1.8.patch (license #5621) patch uploaded by rmudgett + This prevents a leak of a sorcery object type when realtime sorcery + objects are retrieved by fields or when multiple objects are retrieved. - Review: https://reviewboard.asterisk.org/r/3928/ - ........ + The extent of this leak is that sorcery object types would be leaked. + These are allocated whenever an object type is registered with sorcery, + meaning that on module shutdown, these objects would be leaked. This + could be problematic if many reloads were performed, but it is not as + severe as if every sorcery object retrieved from realtime were being + leaked. - Merged revisions 421976 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + ASTERISK-25165 #close + Reported by Corey Farrell - Merged revisions 421977 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8 - Merged revisions 421978 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-06-26 16:12 +0000 [8ba3de43ad] Mark Michelson - Merged revisions 421979 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_nat: Adjust when contact should be rewritten. + A previous change made the contact only get rewritten if the dialog's + route set was not marked frozen. Unfortunately, while the intent of this + is correct, the dialog's route set actually gets marked as frozen + earlier than expected, especially for UAS dialogs. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421980 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Instead, the idea is that the contact needs to not be rewritten if there + is a pre-existing route set on the dialog. This is now accomplished by + checking the dialog's route set list instead of checking if the route + set is frozen. -2014-08-24 14:37 +0000 [497a92d079] Joshua Colp + Doing this causes some broken tests to begin passing again. - * res_pjsip_transport_websocket: Attach the Websocket module on outgoing INVITEs. + ASTERISK-25196 + Reported by Mark Michelson - In order to alter the Contact header on in-dialog requests and responses the - Websocket module must be attached on outgoing INVITEs. The Contact header is - modified so that the PJSIP transport layer can find and use the existing - Websocket connection based on the source IP address, port, and transport. + Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e - ASTERISK-24143 #close - Reported by: Aleksei Kulakov - ........ +2015-06-26 10:41 +0000 [20f50131d7] Mark Michelson - Merged revisions 421955 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip_refer: Prevent sending duplicate headers. - Merged revisions 421956 from http://svn.asterisk.org/svn/asterisk/branches/13 + res_pjsip_refer will attempt to add Referred-By or Replaces headers to + outbound INVITEs at times. If the INVITE gets challenged for + authentication, then we will resend the INVITE. Prior to this patch, the + Referred-By or Replaces header would be re-added to the outbound INVITE, + resulting in duplicated headers. + ASTERISK-25204 #close + Reported by Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421957 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d -2014-08-24 14:21 +0000 [477e2e6edb] Joshua Colp +2015-06-23 17:43 +0000 [0d535df734] Mark Michelson - * res_pjsip_transport_websocket: Fix a progressive memory growth. + * res_pjsip_nat: Rewrite route set when required. - The packet structure used to receive messages was using the transport - pool. This meant that for each parsing the pool would grow accordingly. - Since memory can not be reclaimed without resetting it this would - cause the memory pool to grow and grow. + When performing some provider testing, the rewrite_contact option was + interfering with proper construction of a route set when sending an ACK + after receiving a 200 OK response to an INVITE. - This change uses a specific memory pool for the packet structure and - resets it to a fresh state after the message has been received and - handled. - ........ + The initial INVITE was sent to address sip:foo. The 200 OK had a Contact + header with URI sip:bar. In addition, the 200 OK had Record-Route + headers for sip:baz and sip:foo, in that order. Since the Record-Route + headers had the lr parameter, the result should have been: - Merged revisions 421939 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Set R-URI of the ACK to sip:bar. + * Add Route headers for sip:foo and sip:baz, in that order. - Merged revisions 421945 from http://svn.asterisk.org/svn/asterisk/branches/13 + However, the rewrite_contact option resulted in our rewriting the + Contact header on the 200 OK to sip:foo. The result was: + * R-URI remained sip:foo. + * We added Route headers for sip:foo and sip:baz, in that order. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421950 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The result was that sip:bar was not indicated in the ACK at all, so the + far end never received our ACK. The call eventually dropped. -2014-08-24 13:54 +0000 [2c0cbf8e64] Joshua Colp + The intention of rewrite_contact is to rewrite the most immediate + destination of our SIP request to be the same address on which we + received a request or response. In the case of processing a SIP response + with Record-Route headers, this means that instead of rewriting the + Contact header, we should instead rewrite the bottom-most Record-Route + header. In the case of processing a SIP request with Record-Route + headers, this means we rewrite the top-most Record-route header. + Like when we rewrite the Contact header, we also ensure to update + the dialog's route set if it exists. - * res_pjsip_transport_websocket: Ensure secure Websocket clients can be called. + ASTERISK-25196 #close + Reported by Mark Michelson - This change enforces the transport in the Contact header for Websocket clients. - Previously a client may provide a transport of 'ws' when it is actually using - a transport of 'wss'. This would cause outgoing calls to fail as the existing - connection could not be found. - ........ + Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f +2015-06-23 14:34 +0000 [3332869b48] Richard Mudgett - Merged revisions 421931 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * AMI: Add Linkedid to the standard channel snapshot AMI event headers. - Merged revisions 421932 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25189 #close + Reported by: John Hardin + Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421933 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-06-17 05:04 +0000 [a35d6feae2] Joshua Colp -2014-08-24 12:22 +0000 [cee660dadf] Badalian Vyacheslav (license 5249) + * res_pjsip_mwi: Set up unsolicited MWI upon registration. - * chan_sip: Use the server reflexive ICE candidate RTCP port as provided. + The res_pjsip_mwi previously required a reload to set up the proper + subscriptions to allow unsolicited MWI to work. This change + makes it so the act of registering will also cause this to occur. + This is particularly useful if realtime is involved as no reload + needs to occur within Asterisk to cause the MWI information + to get sent. - This code originally worked around an issue within res_rtp_asterisk itself. - The wrong socket was being used for the STUN check for RTCP, causing the - port to be the same as RTP. This was subsequently fixed and the RTCP port - provided for the ICE candidate is correct and does not need to be incremented. + ASTERISK-25180 #close - ASTERISK-23997 #close - Reported by: Badalian Vyacheslav - Patches: - plus1.diff submitted by Badalian Vyacheslav (license 5249) - ........ + Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252 - Merged revisions 421909 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-06-10 18:28 +0000 [75589c4a3b] Joshua Colp - Merged revisions 421910 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * bridge: When performing a blonde transfer update connected line information. - Merged revisions 421911 from http://svn.asterisk.org/svn/asterisk/branches/13 + When performing a blonde transfer the code uses the old masquerade + mechanism to move a channel around. As a result of this certain information, + such as connected line, is moved between the channels involved. Upon + completion of the move a frame is queued which is supposed to update the + connected line information on the channel. This does not occur as the + code considers it a redundant update since the masquerade operation + updated the channel (but did not inform it of the new connected line + information). The code also does not queue a connected line update + to be handled by the thread handling the channel. Without this any + other channel that may be loosely involved does not know it is + talking to a different caller. + This change does the following to resolve this: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421912 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + 1. The indicated connected line information is cleared upon + completion of the masquerade operation when doing a blonde transfer. + This prevents the connected line update from being considered + redundant. -2014-08-22 11:56 +0000 [dcfffce66d] Mark Michelson + 2. A connected line update frame is now queued upon the completion + of the masquerade operation so any other channel loosely involved + knows that there is a different caller. - * Fix a locking inversion in MixMonitor. + ASTERISK-25157 #close + Reported by: Joshua Colp - We need to unlock the audiohook before trying to lock - the channel, since the correct locking order is channel - then audiohook. - ........ + Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20 - Merged revisions 421882 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-06-11 14:39 +0000 [8142b922ab] Richard Mudgett + * app_directory: Fix crash when using the alias option 'a'. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421883 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The voicemail.conf mailbox key/value pair is defined as: + =[[,[,[,[,]]]]] + Where all fields in the value including the field values are optional. -2014-08-22 11:52 +0000 [33835e17a0] Jonathan Rose + Since the parsing code for the mailbox key/value pair is sloppy, this + patch tightens the parsing for the directory information. - * ARI: Fix a crash caused by hanging during playback to a channel in a bridge + * Renamed the 'pos' and 'bufptr' variables to 'name' and 'options' + respectively in search_directory_sub(). Those names make more sense. - ASTERISK-24147 #close - Reported by: Edvin Vidmar - Review: https://reviewboard.asterisk.org/r/3908/ - ........ + * Made sure that search_directory_sub() is dealing with the voicemail.conf + mailbox options field if it even exists when looking for the 'hidefromdir' + and 'alias' options. - Merged revisions 421879 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Fix crash if a voicemail.conf mailbox is just + =, when the 'a' option is used. If there were no + fields after the name then the 'options' pointer was not checked for NULL. - Merged revisions 421880 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Fix users.conf alias processing if the 'a' option is used. The wrong + variable was used. + ASTERISK-25087 #close + Reported by: Chet Stevens - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421881 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I86052ea77307beddddba5279824d39dc0d593374 -2014-08-22 09:09 +0000 [1498ae0830] Matt Jordan +2015-06-08 12:28 +0000 [ca2174bb23] Matt Jordan - * main/message: Add a new-line to a DEBUG message - ........ + * .version: Update for certified/13.1-cert3-rc1 - Merged revisions 421859 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-06-08 12:28 +0000 [2ef2c12fae] Matt Jordan - Merged revisions 421860 from http://svn.asterisk.org/svn/asterisk/branches/13 + * .lastclean: Update for certified/13.1-cert3-rc1 +2015-06-08 12:28 +0000 [5032390639] Matt Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421861 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * realtime: Add database scripts for certified/13.1-cert3-rc1 -2014-08-21 17:09 +0000 [f8c4fc1121] Richard Mudgett +2015-06-08 09:43 +0000 [2bf6fd263a] Kevin Harwell - * res_musiconhold.c: Remove obsolete REF_DEBUG code. + * AMI: Escape string values. - Remove unneeded code that writes to the wrong file location in an obsolete - format. - ........ + So this issue is a bit complicated. Since it is possible to pass values to AMI + that contain a '\r\n' (or other similar sequences) these values need to be + escaped. One way to solve this is to escape the values and then pass the escaped + values to the AMI variable parameter string building function. However, this + puts the onus on the pre-build function to escape all string values. This + potentially requires a fair amount of changes along with a lot of string + allocations/freeing for all values. - Merged revisions 421799 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Surely there is a way to push this complexity down a level into the string + building function itself? This of course is possible, but ends up requiring a + way to distinguish between strings that need to be escaped and those that don't. + The best way to handle this is by introducing a new format specifier in the + format string. For instance a %s (no escape) and %S (escape). However, that is + a bit weird and unexpected. - Merged revisions 421800 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + So faced with those possibilities this patch implements a limited version of the + first option. Instead of attempting to escape all string values this patch only + escapes those values that make sense. This approach limits the number of changes + and doesn't suffer from the odd format specifier problem. - Merged revisions 421801 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + ASTERISK-24934 #close + Reported by: warren smith - Merged revisions 421802 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0 +2015-06-03 17:41 +0000 [5f954e1e00] Mark Michelson - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421803 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_pjsip: Prevent access of NULL channels. -2014-08-21 16:43 +0000 [644e693645] Mark Michelson + It is possible to receive incoming requests or responses after the channel + on an ast_sip_session has been destroyed and NULLed out. Handlers of these + sorts of requests or responses need to be prepared for the possibility + that the channel is NULL or else they could cause a crash. - * Switch from hostname to an IP address in the SDP origin line. + While several places have been amended to deal with NULL channels, there + were still a couple of places that needed updating. - Using the hostname in the SDP origin line may not satisfy the requirement - of RFC 4566 that we use a FQDN or IP address. This change has us use the - same information from the SDP connection line if possible. If not possible, - we'll use the configured media address. And if that's not possible, we use - the result of a PJLIB call to get the IP address of ourself. + res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to + return early if there is no channel on the session. - ASTERISK-23994 #close - Reported by Private Name + res_pjsip_session.c: When handling a 302 response, we need to stop the + redirecting attempt if there is no channel on the session. - Review: https://reviewboard.asterisk.org/r/3925 - ........ + ASTERISK-25148 #close + reported by Mark Michelson - Merged revisions 421796 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9 - Merged revisions 421797 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-02-17 09:34 +0000 [c994a3bfa0] Richard Mudgett + * res_pjsip_refer: Fix crash from a REFER and BYE collision. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421798 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Analyzing a one-off crash on a busy system showed that processing a REFER + request had a NULL session channel pointer. The only way I can think of + that could cause this is if an outgoing BYE transaction overlapped the + incoming REFER transaction in a collision. Asterisk sends a BYE while the + phone sends a REFER to complete an attended transfer. -2014-08-21 16:37 +0000 [56a1d4930a] Mark Michelson + * Made check the session channel pointer before processing an incoming + REFER request in res_pjsip_refer. - * Ensure after-bridge behavior is correct when moving from Stasis to a non-Stasis bridge. + * Fixed similar crash potential for res_pjsip supplement incoming request + processing for res_pjsip_sdp_rtp INFO, res_pjsip_caller_id INVITE/UPDATE, + res_pjsip_messaging MESSAGE, and res_pjsip_send_to_voicemail REFER + messages. - Because of the departable state of channels that enter Stasis bridges, Stasis has to - take responsibility for directing the channel to its intended after-bridge destination - if the channel moves from a Stasis bridge to a non-Stasis bridge. This change ensures - that when such a move occurs, when the channel leaves the bridging system, any after - bridge gotos are honored. + * Made res_pjsip_messaging respond to a message body too large with a 413 + instead of ignoring it. - Review: https://reviewboard.asterisk.org/r/3920 - ........ + ASTERISK-24700 #close + Reported by: Zane Conkle - Merged revisions 421792 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4417/ ........ - Merged revisions 421794 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421795 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 431898 from http://svn.asterisk.org/svn/asterisk/branches/13 -2014-08-21 16:35 +0000 [4946981646] Jonathan Rose (license 6182) + Change-Id: I57878adc0846dd942a699ad36dcec9cba5e57994 - * res_musiconhold: Fix reference leaks caused when reloading with REF_DEBUG set +2015-04-06 14:23 +0000 [1e98fcac6b] Kevin Harwell - Due to a faulty function for debugging reference decrementing, it was possible - to reduce the refcount on the wrong object if two moh classes of the same name - were in the moh class container. + * res_pjsip: config option 'timers' can't be set to 'no' - (closes issue ASTERISK-22252) - Reported by: Walter Doekes - Patches: - 18_moh_debug_ref_patch.diff Uploaded by Jonathan Rose (license 6182) - ........ + When setting the configuration option 'timers' equal to 'no' the bit flag was + not properly negated. This patch clears all associated flags and only sets the + specified one. pjsip will handle any necessary flag combinations. Also went + ahead and did similar for the '100rel' option. - Merged revisions 398937 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ASTERISK-24910 #close + Reported by: Ray Crumrine + Review: https://reviewboard.asterisk.org/r/4582/ ........ - Merged revisions 421777 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Merged revisions 434131 from http://svn.asterisk.org/svn/asterisk/branches/13 - Merged revisions 421779 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: Ibbc25d4592aabf7596ef473447d630961f88c217 - Merged revisions 421788 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-05-26 13:56 +0000 [bd32327353] Richard Mudgett + * res_pjsip_session: Fix in-dialog authentication. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421793 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When the remote peer requires authentication for in-dialog requests then + re-INVITEs to the peer cause the call to be disconnected and other + in-dialog requests to the peer like MESSAGE just don't go through. -2014-08-21 16:28 +0000 [12d34bb12f] Mark Michelson + * Made session_inv_on_tsx_state_changed() handle in-dialog authentication + for re-INVITEs and other methods. Initial INVITEs cannot be handled here + because the INVITE transaction must be restarted earlier. - * Let's try checking the name and number, instead of the name twice. - ........ + * Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in + preparation for removing the file. The generic outbound authentication + code did not work as well as anticipated. - Merged revisions 421789 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Created outbound_invite_auth() to only handle initial outbound INVITEs. + Re-INVITEs cannot be handled here. The re-INVITE transaction is still in + progress and the PJSIP library cannot handle the overlapping INVITE + transactions. Other method types should not be handled here as this code + only works on outgoing calls and we need to handle incoming and outgoing + calls. - Merged revisions 421790 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25131 #close + Reported by: Richard Mudgett + Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421791 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-05-12 17:45 +0000 [b81353a0ec] Jonathan Rose -2014-08-21 16:19 +0000 [2150daf748] Mark Michelson + * app_voicemail: fix moving when old messages full - * Improve consistency of party ID privacy usage. + When completing voicemail playback of a message in the 'INBOX', the + message gets moved to the 'Old' messages folder. Without this patch, if + the 'Old' folder is already at its set limit, then the 'INBOX' message will + simply be deleted. With this patch, the flag to delete the message will be + removed if the save_to_folder function indicates that the message could + not be moved due to a full folder. - Prior to this change, the Remote-Party-ID header took the position of - "If caller name and number are not explicitly allowed, then they are private" - and P-Asserted-Identity took the position of - "Caller name and number are only private if marked explicitly so" + ASTERISK-25082 #close + Reported by: Jonathan Rose + Review: https://gerrit.asterisk.org/#/c/448/ - Now both mechanisms of conveying party identification use the former approach. - ........ + Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f - Merged revisions 421778 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-05-12 17:34 +0000 [523fab02d8] Richard Mudgett - Merged revisions 421783 from http://svn.asterisk.org/svn/asterisk/branches/13 + * chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision. + If an ISDN call is hungup by both sides at the same time a crash could + happen. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421785 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Added missing NULL checks for the owner channel after calling + pri_queue_pvt_cause_data() in two places. Code after those calls need to + check the owner channel pointer for NULL before use because + pri_queue_pvt_cause_data() needs to do deadlock avoidance to lock the + owner and the owner may get hung up. -2014-08-21 12:35 +0000 [77ddc5b713] Elazar Broad (License 5835) + ASTERISK-21893 #close + Reported by: Alexandr Gordeev - * chan_sip: Don't use port derived from fromdomain if it isn't set + Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a - If a user does not provide a port in the fromdomain setting, chan_sip will set - the fromdomainport to STANDARD_SIP_PORT (5060). The fromdomainport value will - then get used unilaterally in certain places. This causes issues with TLS, - where the default port is expected to be 5061. +2015-04-16 10:51 +0000 [b764454d4d] Kevin Harwell - This patch modifies chan_sip such that fromdomainport is only used if it is - not the standard SIP port; otherwise, the port from the SIP pvt's recorded - self IP address is used. + * bridge.c: NULL app causes crash during attended transfer - Review: https://reviewboard.asterisk.org/r/3893/ + Due to a race condition there was a chance that during an attended transfer the + channel's application would return NULL. This, of course, would cause a crash + when attempting to access the memory. This patch retrieves the channel's app + at an earlier time in processing in hopes that the app name is available. + However, if it is not then "unknown" is used instead. Since some string value + is now always present the crash can no longer occur. - ASTERISK-24178 #close - Reported by: Elazar Broad - patches: - fromdomainport_fix.diff uploaded by Elazar Broad (License 5835) - ........ + ASTERISK-24869 #close + Reported by: viniciusfontes + Review: - Merged revisions 421717 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Change-Id: I5134b84c4524906d8148817719d76ffb306488ac - Merged revisions 421718 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2015-05-06 13:24 +0000 [6433b697ae] Joshua Colp - Merged revisions 421719 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination - Merged revisions 421720 from http://svn.asterisk.org/svn/asterisk/branches/13 + The res_pjsip_exten_state module currently has a race condition between + processing the extension state callback from the PBX core and processing + the subscription shutdown callback from res_pjsip_pubsub. There is currently + no synchronization between the two. This can present a problem as while + the SIP subscription will remain valid the tree it points to may not. + This is in particular a problem as a task to send a NOTIFY may get queued + which will try to use the tree that may no longer be valid. + This change does the following to fix this problem: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421721 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + 1. All access to the subscription tree is done within the task that + sends the NOTIFY to ensure that no other thread is modifying or + destroying the tree. This task executes on the serializer for the + subscriptions. -2014-08-21 10:25 +0000 [f3a525e9a6] Matt Jordan + 2. A reference to the subscription serializer is kept to ensure it + remains valid for the lifetime of the extension state subscription. - * ARI: Fix implicit answer when playback is initiated on unanswered channel + 3. The NOTIFY task has been changed so it will no longer attempt + to send a NOTIFY if the subscription has already been terminated. - When issuing a POST /channels/{channel_id}/play on a channel that is not - yet answered, ARI is supposed to: - * Queue up an AST_CONTROL_PROGRESS on the channel - * Start up the playback of the media + ASTERISK-25057 #close + Reported by: Matt Jordan - Instead, we sneak an answer on the channel right before starting playing media. + Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643 - This is due to ARI's usage of control_streamfile. This function implicitly - answers the channel (and doesn't give ARI the option to stop it). The answering - of the channel here is probably unnecessary: - * app_voicemail, by far the biggest consumer of this function, always answers - the channels anyway - * control stream file (in res_agi) and ControlPlayback probably shouldn't be - implicitly answering the channel. Answering should not be tied directly to - playing back media. +2015-01-19 07:18 +0000 [bf31a486cb] Joshua Colp - As it turns out, the answering of the channel here is pretty old: - 356042 twilson if (ast_channel_state(chan) != AST_STATE_UP) { - 3087 anthm res = ast_answer(chan); - 180259 tilghman } + * res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions. - (As in, ancient?) + The first thing this patch fixes is UAS dialogs. Previously if a transport was + configured on an endpoint and an inbound session was created there was no guarantee + that requests sent on the dialog would use the correct transport and address + information. This has now been fixed so an explicitly configured transport + is taken into account. - Note that others ran into this problem and commented about it on various - mailing lists. + The second thing this patch fixes is res_pjsip_multihomed. The res_pjsip_multihomed + module attempts to determine what transport a message should go out on and what + addressing information should go into the message itself. In a scenario where + multiple transports exist bound to the same IP address but a different port the + code would incorrectly alter the transport and change the message to the wrong + transport. This change makes the res_pjsip_multihomed module smarter so it will + only change the transport and address information in the message when it is + possible and makes sense. - Review: https://reviewboard.asterisk.org/r/3907/ + ASTERISK-24615 #close + Reported by: David Justl - ASTERISK-24229 #close - Reported by: Matt Jordan - ........ + Change-Id: I5b57362201cc8c6555834ec8707e9fbddeff7904 - Merged revisions 421695 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-05-04 12:16 +0000 [7c687c8e54] Joshua Colp - Merged revisions 421696 from http://svn.asterisk.org/svn/asterisk/branches/13 + * stasis: Fix dial masquerade datastore lifetime + A recent change went into Asterisk which added reference counts to the + channels stored in a dial masquerade datastore. Unfortunately this + included a reference to the caller in a dialing operation. While all + of the dialed targets have the datastore removed from them upon dialing + completion this did not occur for the caller, causing it to have a + reference to itself that could go never go away (as it depended on + the destruction of the datastore which only happened when the channel + was destroyed). This resulted in the caller channel remaining on the + system despite it having hung up. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421699 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + This change does the following to fix this issue: -2014-08-21 09:52 +0000 [085d5a2629] Shaun Ruffell (License 5417) + 1. The dial masquerade datastore is now removed from the caller upon + dialing completion, just like the dialed targets. + 2. Upon destruction of the caller all the dialed targets are also + removed from the dial masquerade datastore (just in case). + 3. The reference to the caller has been removed as it should not be + possible for the datastore to now be valid/useful after the lifetime + of the caller has ended. - * Clean up files that do not end with newlines + ASTERISK-25025 #close - Trivial patch to add new lines to several files missing them. This fixes - warnings when compiling with gcc 4.1.2 on CentOS 5. + Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f - ASTERISK-24245 #close - Reported by: Shaun Ruffell - patches: - 0002-Trivial-addition-of-newlines-at-end-of-three-files.patch uploaded by Shaun Ruffell (License 5417) - ........ +2015-04-29 14:29 +0000 [0602409c89] Richard Mudgett - Merged revisions 421677 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option. - Merged revisions 421678 from http://svn.asterisk.org/svn/asterisk/branches/13 + Some telco switches occasionally ignore ISDN RESTART requests. The fix + for ASTERISK-19608 added an escape clause for B channels in the restarting + state if the telco ignores a RESTART request. If the telco fails to + acknowledge the RESTART then Asterisk will assume the telco acknowledged + the RESTART on the second call attempt requesting the B channel by the + telco. The escape clause is good for dealing with RESTART requests in + general but it does cause the next call for the restarting B channel to be + rejected if the telco insists the call must go on that B channel. + chan_dahdi doesn't really need to issue a RESTART request in response to + receiving a cause 44 (Requested channel not available) code. Sending the + RESTART in such a situation is not required (nor prohibited) by the + standards. I think chan_dahdi does this for historical reasons to deal + with buggy peers to get channels unstuck in a similar fashion as the + chan_dahdi.conf resetinterval option. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421679 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Add the chan_dahdi.conf force_restart_unavailable_chans compatability + option that when disabled will prevent chan_dahdi from trying to RESTART + the channel in response to a cause 44 code. -2014-08-21 09:42 +0000 [da91946df7] Shaun Ruffell (License 5417) + ASTERISK-25034 #close + Reported by: Richard Mudgett - * uri: Quiet warning about type qualifiers ignored on function return type + Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65 - This patch fixes gcc warnings that occur due to the type qualifier 'const' - being ignored on a return type of int. +2015-04-30 15:20 +0000 [c6c06bbe70] Mark Michelson - ASTERISK-24246 #close - Reported by: Shaun Ruffell - patches: - 0001-main-uri-Quiet-warning-about-ignored-attribute-on-re.patch uploaded by Shaun Ruffell (License 5417) - ........ + * Prevent potential crash on blond transfer. - Merged revisions 421675 from http://svn.asterisk.org/svn/asterisk/branches/13 + Scenario: + Alice calls Bob. Bob performs a blond transfer to Carol. Carol rejects + the incoming call (or some other immediate circumstance causes Carol not + to answer the call) + What occurs in this case is that when the bridge between Alice and Bob + breaks, Alice is told to masquerade into Bob's channel that had placed + the call to Carol. The actual masquerade goes down without a hitch. + However, a channel fixup callback that attempts to publish dial events + over Stasis has a crash. The reason for this crash is that the datastore + on Bob's channel that placed the outbound call to Carol only had a bare + pointer to Carol's channel. Since Carol rejected the incoming call, + Carol's channel has been hung up and freed, meaning accessing her + channel results in a crash. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421676 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + The fix here is simple. The dial fixup code has been altered to hold + references to the involved channels and to drop those references when + freeing data. -2014-08-20 17:52 +0000 [b7f98c3da4] Richard Mudgett + ASTERISK-25025 #close + Reported by Chet Stevens - * chan_pjsip: Update media translation paths when new SDP negotiated. + Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197 - On a SIP reinvite that changes media strams, the PJSIP channel driver was - flooding the log with "Asked to transmit frame type %s, while native - formats is %s" warnings. +2015-04-30 14:09 +0000 [08a4cf3237] Mark Michelson - * Fixes PJSIP not setting up translation paths when the formats change on - a reinvite. AFS-63 was effectively reintroduced because of the media - formats work. res_pjsip_sdp_rtp.c:set_caps() + * res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback. - * Improved the unexpected frame format WARNING message to include more - information. + The Asterisk 13 version of the fix for outbound registration was missing + a key component that set the outbound authenticator's callback that + creates an authenticated request based on an old request. This was + picked up by some outbound registration tests failing in the testsuite. - * Added protective locking while altering formats on a channel. Reworked - set_format() to simplify and protect the formats under manipulation. + Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3 +2015-04-30 06:04 +0000 [47df4e031c] Joshua Colp - * Restored some code that got lost in the media_formats work. - (channel.c:set_format() and res_pjsip_sdp_rtp.c:set_caps()) + * res_pjsip_outbound_registration: Fix double unref on error return. - AFS-137 #close - Reported by: Mark Michelson + When the PJSIP pjsip_regc_send function is invoked and an error + status returned the caller currently decrements the reference count + of the client state that it just incremented, assuming the + registration callback would not have been invoked. In practice + this is not correct. If the failure happens after the transaction + has been set up the callback will still be invoked. This will + cause the reference count to be incorrectly decremented twice, once + by the registration callback and second by the caller of + pjsip_regc_send. - Review: https://reviewboard.asterisk.org/r/3906/ - ........ + This change makes it so that whether the callback is invoked or + not is known by the caller of pjsip_regc_send. Depending on + this it can know whether it is responsible for decrementing the + reference count of the client state or not. - Merged revisions 421645 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25037 #close + Reported by: Joshua Colp + Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421646 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-27 16:56 +0000 [11d85ea251] Mark Michelson -2014-08-20 17:23 +0000 [4672c139dd] Richard Mudgett + * res_pjsip_outbound_registration: Don't fail on delayed processing: 13. - * cli.c: Fix tab completion of "module load" when MALLOC_DEBUG is enabled. + This is the Asterisk 13 version of a change to master that allows for + registration responses to be processed successfully potentially after + the original transaction has timed out. The main difference between this + and the master change is that the master version has API changes that + are unacceptable for 13. For 13, this is worked around by adding a new + API call that the outbound registration code uses instead. - filename_completion_function() returns memory that was not allocated by - the MALLOC_DEBUG allocation tracker so the memory must be freed by - ast_std_free(). - ........ + The following is the text from the master version of this commit: - Merged revisions 421600 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Odd behaviors have been observed during outbound registrations. The most + common problem witnessed has been one where a request with + authentication credentials cannot be created after receiving a 401 + response. Other behaviors include apparently processing an incorrect SIP + response. - Merged revisions 421602 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Inspecting the code led to an apparent issue with regards to how we + handle transactions in outbound registration code. When a response to a + REGISTER arrives, we save a pointer to the transaction and then push a + task onto the registration serializer. Between the time that we save the + pointer and push the task, it's possible for the transaction to be + destroyed due to a timeout. It's also possible for the address to be + reused by the transaction layer for a new transaction. - Merged revisions 421608 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + To allow for authentication of a REGISTER request to be authenticated + after the transaction has timed out, we now also hold a reference to the + original REGISTER request instead of the transaction. The function for + creating a request with authentication has been altered to take the + original request instead of the transaction where the original request + was sent. - Merged revisions 421616 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-25020 + Reported by Mark Michelson + Change-Id: If1ee5f601be839479a219424f0358a229f358f7c - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421623 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-27 14:44 +0000 [0037ca59a6] Mark Michelson -2014-08-20 15:41 +0000 [49f8bd4ad4] Mark Michelson + * res_pjsip_outbound_registration: Add debugging messages. - * Set the role for inbound subscriptions correctly. + When problems occur regarding outbound registrations, it currently + is difficult to debug. Most off-nominal paths had warning messages, + but sometimes we want to know what's going on before hitting the + off-nominal path. This patch adds lots of debugging output that + should give a clearer picture of what is happening with regards + to outbound registrations. - This was causing the AMI show_subscriptions test in - the testsuite to fail since all subscriptions were being - seen as subscribers instead of notifiers. - ........ + ASTERISK-25020 + Reported by Mark Michelson - Merged revisions 421585 from http://svn.asterisk.org/svn/asterisk/branches/13 + Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45 +2015-04-11 10:10 +0000 [e84fcb2464] Juergen Spies (License 6698) - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421586 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram -2014-08-20 15:04 +0000 [d0640ad7df] Mark Michelson + Prior to this patch, the far_max_datagram value on the UDPTL structure would + remain -1 if the remote endpoint fails to provide the SDP media attribute + T38FaxMaxDatagram. This can result in the INVITE request being rejected. With + this patch, we will now properly initialize the value with either the default + value or with the value provided by pjsip.conf's t38_udptl_maxdatagram + parameter. - * Move evaluation of set_var options in pjsip to the end of channel initialization. + Review: https://reviewboard.asterisk.org/r/4589 - This allows for set_var to override certain defaults such as caller ID and codec - values. This also fixes a test suite regression. The "set_var" test suite test attempted - to use set_var to override caller ID, but a recent change caused that to no longer work. - ........ + ASTERISK-24928 #close + Reported by: Juergen Spies + Tested by: Juergen Spies + patches: + pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698) - Merged revisions 421565 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I15bde169fd59a224a02005fec9a439f0679a375e - Merged revisions 421566 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-23 12:54 +0000 [008076ecf4] Mark Michelson + * res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421567 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + When Asterisk originates a channel to an application, the channel is + hung up once the application finishes executing. When the application + in question is SendFax, the Asterisk PJSIP code will attempt to reinvite + the T.38 session to audio after the FAX completes. The hangup of the + channel happens in the midst of this reinvite transaction. In most + circumstances, this works out okay because the BYE is delayed until the + reinvite transaction can complete. -2014-08-20 08:06 +0000 [36f4bff943] Kinsey Moore + However, if the reinvite that Asterisk sends receives a 401/407 + response, then Asterisk's attempt to re-send the reinvite with + authentication will fail. This is because the session supplement in + res_pjsip_t38 makes the assumption that the channel on the session will + always be non-NULL. Since the channel has been hung up, though, the + channel is now NULL. Attempting to operate on the channel causes a + crash. - * Stasis: Add information to blind transfer event + This patch fixes the issue by ensuring that the channel on the session + is not NULL before attempting to mess with the T.38 framehook. - When a blind transfer occurs that is forced to create a local channel - pair to satisfy the transfer request, information about the local - channel pair is not published. This adds a field to describe that - channel to the blind transfer message struct so that this information - is conveyed properly to consumers of the blind transfer message. + This patch also contains some corrections for comments that were + incorrect and really confused me when I first started looking at the + code. - This also fixes a bug in which Stasis() was unable to properly identify - the channel that was replacing an existing Stasis-controlled channel - due to a blind transfer. + ASTERISK-25004 #close + Reported by Mark Michelson - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/3921/ - ........ + Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0 - Merged revisions 421537 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2015-04-15 10:38 +0000 [1bb6122f35] Mark Michelson - Merged revisions 421538 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Detect potential forwarding loops based on count. + A potential problem that can arise is the following: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421539 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Bob's phone is programmed to automatically forward to Carol. + * Carol's phone is programmed to automatically forward to Bob. + * Alice calls Bob. -2014-08-20 07:39 +0000 [01f1ff1f77] Kinsey Moore + If left unchecked, this results in an endless loops of call forwards + that would eventually result in some sort of fiery crash. - * AMI: Add AllVariables parameter to Status + Asterisk's method of solving this issue was to track which interfaces + had been dialed. If a destination were dialed a second time, then + the attempt to call that destination would fail since a loop was + detected. - This adds the AllVariables parameter to the Status AMI action such that - if defined and set to "true", all channel variables will be reported in - the subsequent Status event(s). This parameter does not negate the - functionality of the "Variables" parameter so that global variables and - dialplan functions can be requested. + The problem with this method is that call forwarding has evolved. Some + SIP phones allow for a user to manually forward an incoming call to an + ad-hoc destination. This can mean that: - Review: https://reviewboard.asterisk.org/r/3915/ + * There are legitimate use cases where a device may be dialed multiple + times, or + * There can be human error when forwarding calls. + This change removes the old method of detecting forwarding loops in + favor of keeping a count of the number of destinations a channel has + dialed on a particular branch of a call. If the number exceeds the + set number of max forwards, then the call fails. This approach has + the following advantages over the old: - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421534 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * It is much simpler. + * It can detect loops involving local channels. + * It is user configurable. -2014-08-19 15:28 +0000 [76290adf50] Mark Michelson + The only disadvantage it has is that in the case where there is a + legitimate forwarding loop present, it takes longer to detect it. + However, the forwarding loop is still properly detected and the + call is cleaned up as it should be. - * Alter documentation for callerid_privacy to use correct values. - ........ + Address review feedback on gerrit. - Merged revisions 421485 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Correct "mfgium" to "Digium" + * Decrement max forwards by one in the case where allocation of the + max forwards datastore is required. + * Remove irrelevant code change from pjsip_global_headers.c - Merged revisions 421488 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24958 #close + Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421490 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-15 16:08 +0000 [cb67aae596] gtjoseph -2014-08-19 14:55 +0000 [28a89e7685] Mark Michelson + * More .gitignore updates - * Fix compilation error on certain versions of GCC. - ........ + Added .pyc and .sha1 to the top-level .gitignore. - Merged revisions 421447 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a + Tested-by: George Joseph - Merged revisions 421448 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-04-13 19:06 +0000 [70fab74baf] gtjoseph + * .gitignore updates for master/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421449 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Added products of ./bootstrap -2014-08-19 14:43 +0000 [a85a483fcd] Kinsey Moore + Added nmenuselect and gmenuselect to menuselect/ - * AMI Docs: Fix Status channel parameter optionality - ........ + Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35 - Merged revisions 421442 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ +2015-04-13 09:54 +0000 [735bea479a] Matt Jordan - Merged revisions 421443 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * build_tools/make_version: Update version parsing for Git migration - Merged revisions 421444 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + External systems - such as the Asterisk Test Suite - require knowledge of the + upstream branch. Unfortunately, after moving to Git, the Asterisk version + currently consists of only a 'GIT" prefix followed by an object blob, + e.g., GIT-as08d7. This makes it difficult for such systems to know what + features are available in a particular check out of Asterisk. - Merged revisions 421445 from http://svn.asterisk.org/svn/asterisk/branches/13 + This patch fixes this by hardcoding the branch in a variable in the + make_version script. Since the mainline branches are not changed often - + typically only once a year - this is a reasonable approach to solving + the problem, and is more reliable than parsing the output of 'git branch + -vv'. Branches that track off of an upstream primary branch will then get the + benefit of knowing which mainline branch they are currently based off + of. + ASTERISK-24954 #close - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421446 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799 -2014-08-19 11:36 +0000 [222b5cd036] Krandon Bruse (license 6631) +2015-04-12 12:59 +0000 [7d64479748] Matt Jordan - * ARI: Fix a bug where /channels/{channelID}/continue doesn't execute PBX + * git migration: Remove support for file versions - If /channels/{channelID}/continue is called on a channel that was originated - without a PBX (such as the ARI command POST channel with a stasis application - argument), the channel will not start dialplan execution. This patch will now - run the PBX out of the stasis execution if the channel doesn't currently have - an active PBX upon continuing. + Git does not support the ability to replace a token with a version + string during check-in. While it does have support for replacing a + token on clone, this is somewhat sub-optimal: the token is replaced + with the object hash, which is not particularly easy for human + consumption. What's more, in practice, the source file version was often + not terribly useful. Generally, when triaging bugs, the overall version + of Asterisk is far more useful than an individual SVN version of a file. + As a result, this patch removes Asterisk's support for showing source file + versions. - ASTERISK-24043 #close - Reported by: Krandon Bruse - Review: https://reviewboard.asterisk.org/r/3917/ - Patches: - stasis-continue.diff submitted by Krandon Bruse (license 6631) - ........ + Specifically, it does the following: + * main/asterisk: + - Refactor the file_version structure to reflect that it no longer + tracks a version field. + - Alter the "core show file version" CLI command such that it always + reports the version of Asterisk. The file version is no longer + available. - Merged revisions 421416 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * main/manager: The Version key now always reports the Asterisk version. - Merged revisions 421423 from http://svn.asterisk.org/svn/asterisk/branches/13 + * UPGRADE: Add notes for: + - Modification to the ModuleCheck AMI Action. + - Modification of the "core show file version" CLI command. + Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-04-12 06:12 +0000 [9237e8b11e] Corey Farrell -2014-08-19 11:16 +0000 [83a9b91da9] Richard Mudgett + * main/editline: Add .gitignore. - * chan_pjsip: Fix attended transfer connected line name update. + This patch adds a .gitignore for main/editline to ignore all build results. - A calls B - B answers - B SIP attended transfers to C - C answers, B and C can see each other's connected line information - B completes the transfer - A has number but no name connected line information about C - while C has the full information about A + Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d - I examined the incoming and outgoing party id information handling of - chan_pjsip and found several issues: +2015-04-11 23:22 +0000 [630dbcb8b4] Matt Jordan - * Fixed ast_sip_session_create_outgoing() not setting up the configured - endpoint id as the new channel's caller id. This is why party A got - default connected line information. + * .gitignore: Ignore tarballs (*.gz) - * Made update_initial_connected_line() use the channel's CALLERID(id) - information. The core, app_dial, or predial routine may have filled in or - changed the endpoint caller id information. + This patch updates the root .gitignore file to ignore files with a .gz + extension. This will cause git to ignore downloaded sound tarballs in + the the sounds/ directory. - * Fixed chan_pjsip_new() not setting the full party id information - available on the caller id and ANI party id. This includes the configured - callerid_tag string and other party id fields. + Change-Id: I1e42fbfa02a8884231507b683e8e49ac3e278aaa - * Fixed accessing channel party id information without the channel lock - held. +2015-04-11 13:20 +0000 [e4892f9aa4] gtjoseph - * Fixed using the effective connected line id without doing a deep copy - outside of holding the channel lock. Shallow copy string pointers can - become stale if the channel lock is not held. + * Add .gitignore and .gitreview files - * Made queue_connected_line_update() also update the channel's - CALLERID(id) information. Moving the channel to another bridge would need - the information there for the new bridge peer. + Add the .gitignore and .gitreview files to the asterisk repo. - * Fixed off nominal memory leak in update_incoming_connected_line(). + NB: You can add local ignores to the .git/info/exclude file + without having to do a commit. - * Added pjsip.conf callerid_tag string to party id information from - enabled trust_inbound endpoint in caller_id_incoming_request(). + Common ignore patterns are in the top-level .gitignore file. + Subdirectory-specific ignore patterns are in their own .gitignore + files. - AFS-98 #close - Reported by: Mark Michelson + Change-Id: I4c8af3b8e3739957db545f7368ac53f38e99f696 + Tested-by: George Joseph - Review: https://reviewboard.asterisk.org/r/3913/ - ........ +2015-04-14 14:04 +0000 [677898f839] Joshua Colp - Merged revisions 421400 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers. - Merged revisions 421403 from http://svn.asterisk.org/svn/asterisk/branches/13 + Currently the res_pjsip_mwi module only sends an unsolicited MWI NOTIFY upon + a mailbox state change (such as a new message being left, or one being deleted). + In practice this is not sufficient to keep clients aware of the current MWI status. + This change makes the module send unsolicited MWI NOTIFY on startup so that + clients are guaranteed to have the most up to date MWI information. It also makes + clients receive an unsolicited MWI NOTIFY upon registration so if they are unaware + of the current MWI status they receive it. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421404 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24982 #close + Reported by: Joshua Colp -2014-08-18 16:18 +0000 [c4c9d4ad6c] Damien Wedhorn + Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58 - * Skinny: Fixup compile warning for non dev-mode. - ........ +2015-04-08 13:19 +0000 [918ca7dd36] Jonathan Rose - Merged revisions 421376 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip_t38: Fix FAX failures when using PJSIP with authentication + + Without this patch, if a PJSIP endpoint with udptl enabled and authentication + set attempted to use sendFax, the FAX session would fail during setup. This + was because the invite issued in response to being auth challenged would cause + the PJSIP channel performing the FAX to receive a second T38 framehook and + this would cause frames to be consumed in an inappropriate manner. + ASTERISK-24933 #close + Reported by: Jonathan Rose + Review: https://reviewboard.asterisk.org/r/4577/ + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421380 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 434425 from http://svn.asterisk.org/svn/asterisk/branches/13 -2014-08-18 15:20 +0000 [1de8b8035e] gtjoseph - * func_config: Change 'Not Found' message from ERROR to DEBUG + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434428 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - When you call the CONFIG dialplan function with the name of a variable that - doesn't exist in the target context you get an ERROR. This does nothing but - clutter up the logs with messages that may be perfectly acceptable. Just - because a variable wasn't in the context doesn't mean it's an error. Maybei - t's optional or just needs to be defaulted or ignored. +2015-04-08 12:24 +0000 [08945a5c77] Maciej Szmigiero (license 6085) - This patch changes the log level from ERROR to DEBUG. If a dialplan developer - wants to debug their dialplan they still canby setting the console debug level - as needed. + * Security/tcptls: MitM Attack potential from certificate with NULL byte in CN. - Tested by: George Joseph - Review: https://reviewboard.asterisk.org/r/3919/ - ........ + When registering to a SIP server with TLS, Asterisk will accept CA signed + certificates with a common name that was signed for a domain other than the + one requested if it contains a null character in the common name portion of + the cert. This patch fixes that by checking that the common name length + matches the the length of the content we actually read from the common name + segment. Some certificate authorities automatically sign CA requests when + the requesting CN isn't already taken, so an attacker could potentially + register a CN with something like www.google.com\x00www.secretlyevil.net + and have their certificate signed and Asterisk would accept that certificate + as though it had been for www.google.com - this is a security fix and is + noted in AST-2015-003. - Merged revisions 421327 from http://svn.asterisk.org/svn/asterisk/branches/1.8 + ASTERISK-24847 #close + Reported by: Maciej Szmigiero + Patches: + asterisk-null-in-cn.patch submitted by mhej (license 6085) ........ - Merged revisions 421328 from http://svn.asterisk.org/svn/asterisk/branches/11 + Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ - Merged revisions 421329 from http://svn.asterisk.org/svn/asterisk/branches/12 + Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ - Merged revisions 421337 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 434384 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421341 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434418 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-17 20:14 +0000 [bb494067a5] Matt Jordan +2015-04-07 10:35 +0000 [45f09898e9] Mark Michelson - * Multiple revisions 421311-421312 + * Do not queue message requests that we do not respond to. - ........ - r421311 | mjordan | 2014-08-17 20:11:28 -0500 (Sun, 17 Aug 2014) | 9 lines - - res/ari/resource_channels: Don't return allocation failure on failed function - - If a function fails to execute, it is most likely due to one of two reasons: - (1) The function doesn't exist or can't be read from - (2) The function is dangerous and is restricted based on the user's permissions - - Currently we return allocation failure, which is incorrect. This updates the - reason code to more accurately reflect why the request failed. + If we receive a MESSAGE request that we cannot send a response + to, we should not send the incoming MESSAGE to the dialplan. - ASTERISK-24215 - ........ - r421312 | mjordan | 2014-08-17 20:13:41 -0500 (Sun, 17 Aug 2014) | 4 lines - - res/ari/resource_channels: Fix compilation issue - - Forgot a parameter. Whoops. + This commit should help the bouncing message_retrans test to + pass consistently. ........ - Merged revisions 421311-421312 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 434218 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421313 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434220 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-17 19:57 +0000 [ba5d5da60b] Matt Jordan (License #6283) +2015-04-03 16:59 +0000 [42b7ebdd4d] Mark Michelson - * Improve call forwarding reporting, especially with regards to ARI. + * res_pjsip_messaging: Serialize outbound SIP MESSAGEs - This patch addresses a few issues: + Outbound SIP MESSAGEs had the potential to be sent out + of order from how they were specified in a set of + dialplan steps. - 1) The order of Dial events have been changed when performing a call forward. - The order has now been altered to - 1) Dial begins dialing channel A. - 2) When A forwards the call to B, we issue the dial end event to channel - A, indicating the dial is being canceled due to a forward to B. - 3) When the call to channel B occurs, we then issue a new dial begin to - channel B. + This change creates a serializer for sending outbound + MESSAGE requests on. This ensures that the MESSAGEs are + sent by Asterisk in the same order that they were sent + from the dialplan. - 2) Call forwards are now reported on the calling channel, not the peer channel. + ASTERISK-24937 #close + Reported by Mark Michelson - 3) AMI DialEnd events have been altered to display the extension the call is - being forwarded to when relevant. + Review: https://reviewboard.asterisk.org/r/4579 + ........ - 4) You can now get the values of channel variables for channels that are not - currently in the Stasis application. This brings the retrieval of channel - variables more in line with the rest of channel read operations since they - may be performed on channels not in Stasis. + Merged revisions 433968 from http://svn.asterisk.org/svn/asterisk/branches/13 - ASTERISK-24134 #close - Reported by Matt Jordan - ASTERISK-24138 #close - Reported by Matt Jordan + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433970 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Patches: - forward-shenanigans.diff uploaded by Matt Jordan (License #6283) +2015-04-01 15:32 +0000 [b6fff2719d] Mark Michelson - Review: https://reviewboard.asterisk.org/r/3899 - ........ + * core: avoid possible asterisk -r crash from long id - Merged revisions 420794 from http://svn.asterisk.org/svn/asterisk/branches/13 + When connecting to the remote console, an id string + is first provided that consts of the hostname, pid, + and version. This is parsed by the remote instance + using a buffer that may be too short, and can allow + a buffer overrun because it is not terminated. This + patch adds termination and a larger buffer. + Review: https://reviewboard.asterisk.org/r/4182/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421310 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + AFS-254 + ........ -2014-08-17 18:29 +0000 [6525f374db] Matt Jordan + Merged revisions 429223 from http://svn.asterisk.org/svn/asterisk/branches/13 - * apps/app_meetme: Fix crash when publishing MeetMe messages with no channel - The same function, meetme_stasis_generate_msg, handles creating and publishing - Stasis message both when there are channels in the MeetMe conference and when - there are no channels in the conference. When the performance improvement was - made to use cached snapshots, this created a situation where Asterisk would - crash: obtaining a cached snapshot is not NULL tolerant. + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433918 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This patch restores the previous implementation, which used a NULL safe set - of routines to produce a blob containing the channel snapshot (if available) - and information about the MeetMe conference. +2015-04-01 11:29 +0000 [8ae3670781] Ashley Sanders - ASTERISK-24234 #close - Reported by: Shaun Ruffell - Tested by: Shaun Ruffell - ........ + * stasis: set a channel variable on websocket disconnect error - Merged revisions 421270 from http://svn.asterisk.org/svn/asterisk/branches/12 + Resolve compile errors caused by r433863 by fixing the + documentation xml to comply with the schema. ........ - Merged revisions 421273 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421276 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - -2014-08-17 18:10 +0000 [44fc6ea6ff] Richard Mudgett (License 5621) + Merged revisions 433888 from http://svn.asterisk.org/svn/asterisk/branches/13 - * apps/app_dial: Fix Dial 'z' option - The 'z' option is supposed to disable the dial timeout in the case of a call - forward. Unfortunately, the wrong timeout timer was passed to the do_forward - function, resulting in the option not working. + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433890 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - ASTERISK-24225 #close - Reported by: dimitripietro - Tested by: dimitripietro - patches: - jira_asterisk_24225_v1.8.patch uploaded by rmudgett (License 5621) - jira_asterisk_24225_v11.patch uploaded by rmudgett (License 5621) - ........ +2015-03-31 22:39 +0000 [259227eb1a] Ashley Sanders - Merged revisions 421232 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * stasis: set a channel variable on websocket disconnect error - Merged revisions 421233 from http://svn.asterisk.org/svn/asterisk/branches/11 + Resolve compile errors caused by r433839 by included the missing + header file, pbx.h. ........ - Merged revisions 421234 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 433863 from http://svn.asterisk.org/svn/asterisk/branches/13 - Merged revisions 421235 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433864 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421236 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-31 17:34 +0000 [758fead630] Ashley Sanders -2014-08-17 17:35 +0000 [98ca5c0b5f] cloos (License 5956) + * stasis: set a channel variable on websocket disconnect error - * configure: Undefine FORTIFY_SOURCE prior to defining it for patched gcc + When an error occurs while writing to a web socket, the web socket is + disconnected and the event is logged. A side-effect of this, however, is that + any application on the other side waiting for a response from Stasis is left + hanging indefinitely (as there is no mechanism presently available for + notifying interested parties about web socket error states in Stasis). - Some distributions of Linux patch gcc to define FORTIFY_SOURCE when gcc is - executed with optimization. This "help" unfortunately results in re-definition - warnings when FORTIFY_SOURCE is later defined in Asterisk's build system. This - patch undefines FORTIFY_SOURCE prior to defining it to prevent this warning. + To remedy this scenario, this patch introduces a new channel variable: + STASISSTATUS. - Review: https://reviewboard.asterisk.org/r/3912/ + The possible values for STASISSTATUS are: + SUCCESS - The channel has exited Stasis without any failures + FAILED - Something caused Stasis to croak. Some (not all) possible + reasons for this: + - The app registry is not instantiated; + - The app requested is not registered; + - The app requested is not active; + - Stasis couldn't send a start message - ASTERISK-24032 #close - Reported by: Kilburn - Tested by: Kilburn, wdoekes - patches: - 1.8.diff uploaded by cloos (License 5956) - 10.diff uploaded by cloos (License 5956) - 11.diff uploaded by cloos (License 5956) - 12.diff uploaded by cloos (License 5956) - 13.diff uploaded by cloos (License 5956) + ASTERISK-24802 + Reported By: Kevin Harwell + Review: https://reviewboard.asterisk.org/r/4519/ ........ - Merged revisions 421227 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + Merged revisions 433839 from http://svn.asterisk.org/svn/asterisk/branches/13 - Merged revisions 421228 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ - Merged revisions 421229 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433842 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Merged revisions 421230 from http://svn.asterisk.org/svn/asterisk/branches/13 +2015-03-27 15:55 +0000 [b5b44876c2] Mark Michelson + * Add stateful PJSIP response API call, and use it for out-of-dialog responses. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421231 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Asterisk had an issue where retransmissions of MESSAGE requests resulted in + Asterisk processing the retransmission as if it were a new MESSAGE request. -2014-08-17 11:11 +0000 [952da298ce] Joshua Colp + This patch fixes the issue by creating a transaction in PJSIP on the incoming + request. This way, if a retransmission arrives, the PJSIP transaction layer + will resend the response and Asterisk will not ever see the retransmission. - * res_http_websocket: Include query parameters in client connection requests. + ASTERISK-24920 #close + Reported by Mark Michelson - Review: https://reviewboard.asterisk.org/r/3914/ + Review: https://reviewboard.asterisk.org/r/4532/ ........ - Merged revisions 421210 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433619 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421211 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433621 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-15 12:26 +0000 [9b658b7c60] Jonathan Rose +2015-03-27 15:25 +0000 [66b8c7cab4] Richard Mudgett - * Bridging: Fix a behavioral change when checking if a channel is leaving a bridge + * res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown. - r420934 introduced some failures in the test suite. Upon investigating, it was - discovered that differences in the way we were evaluating whether a channel was in - the process of leaving a bridge were causing some reinvites not to occur (mostly - reinvites back to Asterisk when ending a call). This patch fixes that behavioral - change. + Contact expiration object refs were leaked when the module was unloaded. - ASTERISK-24027 #close - Reported by: Matt Jordan - Review: https://reviewboard.asterisk.org/r/3910/ - ........ + * Made empty the scheduler of entries before destroying it to release the + object ref held by the scheduler entry. - Merged revisions 421186 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4523/ ........ - Merged revisions 421187 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433596 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421195 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433618 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-15 10:50 +0000 [0d0a616e1a] Matt Jordan +2015-03-20 14:57 +0000 [fb7062afca] Richard Mudgett - * app_voicemail/app: Remove test events that were duplicated by r421059 + * Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks. - Moving the test event raised when a file is played back (which occurred in - r421059) broke the ever loving snot out of the voicemail tests. This caused - duplicate test events to get raised, as app_voicemail and main/app were raising - events prior to call ast_streamfile. The voicemail tests did not enjoy getting - multiple events. + Valgrind found some memory leaks associated with + ast_pjsip_rdata_get_endpoint(). The leaks would manifest when sending + responses to OPTIONS requests, processing MESSAGE requests, and + res_pjsip supplements implementing the incoming_request callback. - Since raising the playback event in ast_streamfile is far more useful to the - vast majority of tests, this patch keeps the call there and simply removes the - extraneous calls that duplicated the event. - ........ + * Fix ast_pjsip_rdata_get_endpoint() endpoint ref leaks in + res/res_pjsip.c:supplement_on_rx_request(), + res/res_pjsip/pjsip_options.c:send_options_response(), + res/res_pjsip_messaging.c:rx_data_to_ast_msg(), and + res/res_pjsip_messaging.c:send_response(). - Merged revisions 421125 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in + res/res_pjsip_nat.c:nat_on_rx_message(). - Merged revisions 421164 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Fixed inconsistent but benign return value in + res/res_pjsip/pjsip_options.c:options_on_rx_request(). - Merged revisions 421165 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4511/ ........ - Merged revisions 421166 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433222 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421167 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-14 16:16 +0000 [980e49614c] Matt Jordan +2015-03-20 14:04 +0000 [cf9799845f] Richard Mudgett - * res/res_hep_rtcp: Remove dependency on PJSIP + * res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively. - The res_hep_rtcp module was incorrectly including . This didn't need - to be included, as the module does not using PJPROJECT any fashion. - Unfortunately, because res_hep_rtcp did not include pjsip in its MODULEINFO as - a dependency, this also meant that res_hep_rtcp will fail to compile on a - system without PJPROJECT. + Valgrind found a memory leak and invalid access. - This patch removes the include. + * Fix invalid access by sscanf() being fed a non-nul terminated string of + digits in res/res_pjsip_sdp_rtp.c:get_codecs(). - Thanks to Damien Wedhorn for pointing this out in #asterisk-dev. + * Fix memory leak in main/sorcery.c:sorcery_object_field_destructor(). - ASTERISK-24236 #close - Reported by: Damien Wedhorn, Matt Jordan - Tested by: Damien Wedhorn - ........ + * Fix potential NULL pointer dereference in + main/xmldoc.c:xmldoc_get_syntax_config_option(). - Merged revisions 421064 from http://svn.asterisk.org/svn/asterisk/branches/12 + Review: https://reviewboard.asterisk.org/r/4513/ ........ - Merged revisions 421065 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433199 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421066 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-14 15:59 +0000 [513981c89d] Matt Jordan +2015-03-17 16:56 +0000 [90fc65da62] Richard Mudgett - * main/file: Move test event to emit PLAYBACK event more consistently + * Audit ast_sockaddr_resolve() usage for memory leaks. - This is being done in advance of the test for ASTERISK-23953 - ........ + Valgrind found some memory leaks associated with ast_sockaddr_resolve(). + Most of the leaks had already been fixed by earlier memory leak hunt + patches. This patch performs an audit of ast_sockaddr_resolve() and found + one more. - Merged revisions 421059 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * Fix ast_sockaddr_resolve() memory leak in + apps/app_externalivr.c:app_exec(). - Merged revisions 421060 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + * Made main/netsock2.c:ast_sockaddr_resolve() always set the addrs + parameter for safety so the pointer will never be uninitialized on return. + The same goes for res/res_pjsip_acl.c:extract_contact_addr(). - Merged revisions 421061 from http://svn.asterisk.org/svn/asterisk/branches/12 + * Made functions that call ast_sockaddr_resolve() with RAII_VAR() + controlling the addrs variable use ast_free instead of ast_free_ptr to + provide better MALLOC_DEBUG information. + + Review: https://reviewboard.asterisk.org/r/4509/ ........ - Merged revisions 421062 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + Merged revisions 433057 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421063 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-14 14:21 +0000 [0b11c48522] Matt Jordan + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433059 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * cel: Make sure channels in extra fields include their unique IDs as well +2015-03-17 13:44 +0000 [e0b644ddb7] Kevin Harwell - CEL typically tracks a lot of information using the unique ID of the channel. - This is typically needed due to tying events together using the linked ID of - the various channels involved in a "call", which is derived from the channel ID - of the oldest channel involved in a bridge (or in the case of a Dial, the - parent channel). + * res_pjsip: Allow configuration of endpoint identifier query order - Previously, we had updated the extra fields to include the involved channel - names, but forgot to put in the unique ID. This patch corrects that error. - ........ + Updated some documentation stating that endpoint identifiers registered without + a name are place at the front of the lookup list. Also renamed register method + 'ast_sip_register_endpoint_identifier_by_name' to + 'ast_sip_register_endpoint_identifier_with_name' - Merged revisions 421037 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24840 + Reported by: Mark Michelson ........ - Merged revisions 421042 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 433031 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421043 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-14 11:33 +0000 [79c5c08db9] Richard Mudgett +2015-03-17 13:43 +0000 [d7c8041f6b] Kevin Harwell - * ARI: Originate to app local channel subscription code optimization. + * res_pjsip: Allow configuration of endpoint identifier query order - Reduce the scope of local_peer and only get it if the ARI originate is - subscribing to the channels. + This patch fixes previously reverted code that caused binary incompatibility + problems with some modules. And like the original patch it makes sure that + no matter what order the endpoint identifier modules were loaded, priority is + given based on the ones specified in the new global 'endpoint_identifier_order' + option. - Review: https://reviewboard.asterisk.org/r/3905/ + ASTERISK-24840 + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4489/ ........ - Merged revisions 421009 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + Merged revisions 433028 from http://svn.asterisk.org/svn/asterisk/branches/13 - Merged revisions 421010 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433033 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@421012 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-03-17 11:25 +0000 [cd4e18c4cc] Richard Mudgett -2014-08-14 11:01 +0000 [e4b32731b9] Richard Mudgett + * Multiple revisions 431583,433005 - * channel_internal_api.c: Replace some code with ao2_replace(). + ........ + r431583 | sgriepentrog | 2015-02-06 15:26:12 -0600 (Fri, 06 Feb 2015) | 10 lines + + various: cleanup issues found during leak hunt + + In this collection of small patches to prevent + Valgrind errors are: fixes for reference leaks + in config hooks, evaluating a parameter beyond + bounds, and accessing a structure after a lock + where it could have been already free'd. + + Review: https://reviewboard.asterisk.org/r/4407/ + ........ + r433005 | rmudgett | 2015-03-17 11:10:39 -0500 (Tue, 17 Mar 2015) | 1 line + + res_pjsip: Add reason comment. + ........ - Use ao2_replace() instead of ao2_cleanup(); ao2_bump(). + Merged revisions 431583,433005 from http://svn.asterisk.org/svn/asterisk/branches/13 - ao2_replace() has the advantange of not altering the ref count if the - replaced pointer is the same. - Review: https://reviewboard.asterisk.org/r/3904/ + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433025 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + +2015-03-13 10:51 +0000 [6cd70450fd] Kevin Harwell + + * Revert - res_pjsip: Allow configuration of endpoint identifier query order + + Due to a break in binary compatibility with some other modules these changes + are being reverted until the issue can be resolved. + + ASTERISK-24840 + Reported by: Mark Michelson ........ - Merged revisions 420992 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432868 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420993 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432888 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-13 12:05 +0000 [dd41d0ff01] Richard Mudgett +2015-03-09 11:44 +0000 [4eb1dd4b35] Kevin Harwell - * res_pjsip_send_to_voicemail.c: Fix svn file properties. - ........ + * res_pjsip: Allow configuration of endpoint identifier query order - Merged revisions 420956 from http://svn.asterisk.org/svn/asterisk/branches/12 + It's possible to have a scenario that will create a conflict between endpoint + identifiers. For instance an incoming call could be identified by two different + endpoint identifiers and the one chosen depended upon which identifier module + loaded first. This of course causes problems when, for example, the incoming + call is expected to be identified by username, but instead is identified by ip. + This patch adds a new 'global' option to res_pjsip called + 'endpoint_identifier_order'. It is a comma separated list of endpoint + identifier names that specifies the order by which identifiers are processed + and checked. + + ASTERISK-24840 #close + Reported by: Mark Michelson + Review: https://reviewboard.asterisk.org/r/4455/ ........ - Merged revisions 420957 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432638 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420958 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432658 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-13 11:56 +0000 [6aa510b41f] Kinsey Moore +2015-03-04 12:53 +0000 [52366a423c] Matt Jordan - * PJSIP: Prevent crash no-URI contacts + * translate: Prevent invalid memory accesses on fast shutdown - This prevents a crash from occurring when a contact with no URI is used - for the creation of an outbound out-of-dialog request with no - associated endpoint. - ........ + When a 'core restart now' or 'core stop now' is executed and a channel is + currently in a media operation, the translator matrix can be destroyed while a + channel is currently blocked on getting the best translation choice + (see ast_translator_best_choice). When the channel gets the mutex, the + translation matrix now has invalid memory, and Asterisk crashes. - Merged revisions 420949 from http://svn.asterisk.org/svn/asterisk/branches/12 + This patch does two things: + (1) We now only clean up the translation matrix on a graceful shutdown. In that + case, there are no channels, and so there is no risk of this occurring. + (2) We also now set the __matrix and __indextable to NULL. In some initial + backtraces when this occurred, it looked as if there was a memory corruption + occurring, and it wasn't until we determined that something had restarted + Asterisk that the issue became clear. By setting these to NULL on shutdown, + it becomes a bit easier to determine why a crash is occurring. + + Note that we could litter the code with NULL checks on the __matrix, but the + act of making the translation matrix cleaned up on shutdown should preclude + this issue from occurring in the first place, and this part of the code needs + to be as fast as possible. + + Review: https://reviewboard.asterisk.org/r/4457/ ........ - Merged revisions 420950 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432453 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420953 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432454 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-13 11:24 +0000 [d4695774e7] Jonathan Rose +2015-03-02 13:15 +0000 [b17d0953b6] Matt Jordan - * Bridges: Fix feature interruption/unintended kick caused by external actions + * res/res_pjsip_sdp_rtp: Revert portion of r432195 - If a manager or CLI user attached a mixmonitor to a call running a dynamic - bridge feature while in a bridge, the feature would be interrupted and the - channel would be forcibly kicked out of the bridge (usually ending the call - during a simple 1 to 1 call). This would also occur during any similar action - that could set the unbridge soft hangup flag, so the fix for this was to - remove unbridge from the soft hangup flags and make it a separate thing all - together. + Unfortunately, while initial testing with ConfBridge did not reproduce the + audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing + did show that bridge_softmix and/or ConfBridge has a severe problem bridging + two or more participants at different sampling rates. Sometimes, it even picks + odd sampling rates that cause hideous audio problems. - ASTERISK-24027 #close - Reported by: mjordan - Review: https://reviewboard.asterisk.org/r/3900/ - ........ + This patch backs out the offending portion of the code until the issues in + the affected bridging modules can be more properly analyzed. - Merged revisions 420934 from http://svn.asterisk.org/svn/asterisk/branches/12 + ASTERISK-24841 ........ - Merged revisions 420940 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432423 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420947 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-13 09:31 +0000 [6a6702bb0f] Kinsey Moore +2015-02-26 11:15 +0000 [3b4ba353f0] Kevin Harwell - * AMI: Improve documentation for Status action + * app_chanspy, channel: fix frame leaks + + Fixed a couple of frame leaks that were found during testing. + + ASTERISK-24828 #close + Reported by: John Hardin + Review: https://reviewboard.asterisk.org/r/4445/ ........ - Merged revisions 420919 from http://svn.asterisk.org/svn/asterisk/branches/13 + Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ + Merged revisions 432363 from http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420921 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-13 02:54 +0000 [52c94d3af4] Walter Doekes + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432365 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * logger: Don't store verbose-magic in the log files. +2015-02-24 16:01 +0000 [33c73ffeaa] Matt Jordan - In r399267, the verbose2magic stuff was edited. This time it results - in magic characters in the log files for multiline messages. + * ARI/PJSIP: Apply requesting channel's format cap to created channels + + This patch addresses the following problems: + * ari/resource_channels: In ARI, we currently create a format capability + structure of SLIN and apply it to the new channel being created. This was + originally done when the PBX core was used to create the channel, as there + was a condition where a newly created channel could be created without any + formats. Unfortunately, now that the Dial API is being used, this has two + drawbacks: + (a) SLIN, while it will ensure audio will flows, can cause a lot of + needless transcodings to occur, particularly when a Local channel is + created to the dialplan. When no format capabilities are available, the + Dial API handles this better by handing all audio formats to the requsted + channels. As such, we defer to that API to provide the format + capabilities. + (b) If a channel (requester) is causing this channel to be created, we + currently don't use its format capabilities as we are passing in our own. + However, the Dial API will use the requester channel's formats if none + are passed into it, and the requester channel exists and has format + capabilities. This is the "best" scenario, as it is the most likely to + create a media path that minimizes transcoding. + Fixing this simply entails removing the providing of the format capabilities + structure to the Dial API. - In trunk (and 13) this was fixed by the "stripping" of those - characters from multiline messages (in r414798). + * chan_pjsip: Rather than blindly picking the first format in the format + capability structure - which actually *can* be a video or text format - we + select an audio format, and only pick the first format if that fails. That + minimizes the weird scenario where we attempt to transcode between video/audio. - This fix is altered to actually strip the characters and not replace - them with blanks. + * res_pjsip_sdp_rtp: Applied the joint capapbilites to the format structure. + Since ast_request already limits us down to one format capability once the + format capabilities are passed along, there's no reason to squelch it here. - Review: https://reviewboard.asterisk.org/r/3901/ - Review: https://reviewboard.asterisk.org/r/3902/ - ........ + * channel: Fixed a comment. The reason we have to minimize our requested + format capabilities down to a single format is due to Asterisk's inability + to convey the format to be used back "up" a channel chain. Consider the + following: - Merged revisions 420897 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + PJSIP/A => L;1 <=> L;2 => PJSIP/B + g,u,a g,u,a g,u,a u - Merged revisions 420898 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + That is, we have PJSIP/A dialing a Local channel, where the Local;2 dials + PJSIP/B. PJSIP/A has native format capabilities g722,ulaw,alaw; the Local + channel has inherited those format capabilities down the line; PJSIP/B + supports only ulaw. According to these format capabilities, ulaw is + acceptable and should be selected across all the channels, and no + transcoding should occur. However, there is no way to convey this: when L;2 + and PJSIP/B are put into a bridge, we will select ulaw, but that is not + conveyed to PJSIP/A and L;1. Thus, we end up with: - Merged revisions 420899 from http://svn.asterisk.org/svn/asterisk/branches/13 + PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B + g g X u u + Which causes g722 to be written to PJSIP/B. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420900 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Even if we can convey the 'ulaw' choice back up the chain (which through + some severe hacking in Local channels was accomplished), such that the chain + looks like: -2014-08-12 18:45 +0000 [969982b878] Richard Mudgett + PJSIP/A <=> L;1 <=> L;2 <=> PJSIP/B + u u u u - * chan_sip: Fix type mismatch when the format is changed. + We have no way to tell PJSIP/A's *channel driver* to Answer in the SDP back + with only 'ulaw'. This results in all the channel structures being set up + correctly, but PJSIP/A *still* sending g722 and causing the chain to fall + apart. - Symptom is most likely an invalid ao2 object bad magic number message or a - less likely crash. - ........ + There's a lot of difficulty just in setting this up, as there are numerous + race conditions in the act of bridging, and no clean mechanism to pass the + selected format backwards down an established channel chain. As such, the + best that can be done at this point in time is clarifying the comment. - Merged revisions 420881 from http://svn.asterisk.org/svn/asterisk/branches/13 + Review: https://reviewboard.asterisk.org/r/4434/ + ASTERISK-24812 #close + Reported by: Matt Jordan + ........ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420882 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 432195 from http://svn.asterisk.org/svn/asterisk/branches/13 -2014-08-12 18:36 +0000 [8526d967c9] Richard Mudgett - * res_stasis_snoop.c: Fix off nominial exit path leaving Snoop channel locked and not hungup. + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Made use ast_copy_string() instead of strcpy() for snoop uniqueid for - safety. There is no guarantee that the max channel uniqueid length will - remain the same as the snoop uniqueid space. - ........ +2015-02-11 12:04 +0000 [3ad393b043] Kevin Harwell - Merged revisions 420879 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res_pjsip: dtls_handler causes Asterisk to crash + There have been a couple of times where a crash occurred in the dtls_handler + section of the code for res_pjsip. Unfortunately, in working this issue the + problem was unable to be reproduced. After looking at the backtraces and + through the code the current best guess as to why this happened might be due + to a reentrance problem and the strtok function. So, the current fix is to + convert the strtok function into the reentrant version of the function, + strtok_r. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420880 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + ASTERISK-24741 #close + Reported by: Zane Conkle + Review: https://reviewboard.asterisk.org/r/4409/ + ........ -2014-08-12 06:18 +0000 [ca61f8ac82] Joshua Colp + Merged revisions 431698 from http://svn.asterisk.org/svn/asterisk/branches/13 - * app_voicemail: Fix the "test_voicemail_vm_info" unit test. - ........ - Merged revisions 420856 from http://svn.asterisk.org/svn/asterisk/branches/13 + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431700 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-02-11 11:52 +0000 [8be00450b9] Kevin Harwell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420858 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res_http_websocket: websocket write timeout fails to fully disconnect -2014-08-11 16:04 +0000 [aba07a0f6e] Richard Mudgett + When writing to a websocket if a timeout occurred the underlying socket did not + get closed/disconnected. This patch makes sure the websocket gets disconnected + on a write timeout. Also a notice is logged stating that the websocket was + disconnected. - * res/stasis/command.c: Fix recent commit using spaces instead of tabs. + ASTERISK-24701 #close + Reported by: Matt Jordan + Review: https://reviewboard.asterisk.org/r/4412/ ........ - Merged revisions 420836 from http://svn.asterisk.org/svn/asterisk/branches/12 + Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ - Merged revisions 420837 from http://svn.asterisk.org/svn/asterisk/branches/13 - - - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420838 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Merged revisions 431670 from http://svn.asterisk.org/svn/asterisk/branches/13 -2014-08-11 13:51 +0000 [ffccae8269] Matt Jordan - * AMI/ARI: Update version to 2.5.0/1.5.0 respectively + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431697 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - This is to support the backwards compatible changes made in the next version - of Asterisk. - ........ +2015-02-11 11:48 +0000 [340588c721] Richard Mudgett - Merged revisions 420805 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * HTTP: Stop accepting requests on final system shutdown. - Merged revisions 420808 from http://svn.asterisk.org/svn/asterisk/branches/13 + There are three CLI commands to stop and restart Asterisk each. + 1) core stop/restart now - Hangup all calls and stop or restart Asterisk. + New channels are prevented while the shutdown request is pending. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420811 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + 2) core stop/restart gracefully - Stop or restart Asterisk when there are + no calls remaining in the system. New channels are prevented while the + shutdown request is pending. -2014-08-11 13:46 +0000 [7a4691b425] Kinsey Moore + 3) core stop/restart when convenient - Stop or restart Asterisk when there + are no calls in the system. New calls are not prevented while the + shutdown request is pending. - * Stasis: Use the correct return value + ARI has made stopping/restarting Asterisk more problematic. While a + shutdown request is pending it is desirable to continue to process ARI + HTTP requests for current calls. To handle the current calls while a + shutdown request is pending, a new committed to shutdown phase is needed + so ARI applications can deal with the calls until the system is fully + committed to shutdown. - Return the correct value instead of always returning 0 when setting - internal status on unreal channels. + * Added a new shutdown committed phase so ARI applications can deal with + calls until the final committed to shutdown phase is reached. - Reported by: Richard Mudgett - ........ + * Made refuse new HTTP requests when the system has reached the final + system shutdown phase. Starting anything while the system is actively + releasing resources and unloading modules is not a good thing. - Merged revisions 420802 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * Split the bridging framework shutdown to not cleanup the global bridging + containers when shutting down in a hurry. This is similar to how other + modules prevent crashes on rapid system shutdown. - Merged revisions 420803 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Moved ast_begin_shutdown(), ast_cancel_shutdown(), and + ast_shutting_down(). You should not have to include channel.h just to + access these system functions. + ASTERISK-24752 #close + Reported by: Matthew Jordan - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420804 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Review: https://reviewboard.asterisk.org/r/4399/ + ........ -2014-08-11 13:38 +0000 [6f735288b0] Kinsey Moore + Merged revisions 431692 from http://svn.asterisk.org/svn/asterisk/branches/13 - * Stasis: Allow internal channels directly into bridges - The patch to catch channels being shoehorned into Stasis() via external - mechanisms also happens to catch Announcer and Recorder channels - because they aren't known to be stasis-controlled channels in the usual - sense. This marks those channels as Stasis()-internal channels and - allows them directly into bridges. + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431696 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - Review: https://reviewboard.asterisk.org/r/3903/ - ........ +2015-02-11 10:19 +0000 [69dc8f9ec2] Kevin Harwell - Merged revisions 420795 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * pjsip_options: Fix continued qualifies after endpoint/aor deletion - Merged revisions 420796 from http://svn.asterisk.org/svn/asterisk/branches/13 + If you remove an endpoint/aor from pjsip.conf then do a core reload, + qualifies will continue even though the object are gone. This happens + because nothing clears out the qualify tasks. + This patch unschedules all existing qualify tasks before scheduling + new ones on reload. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420797 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + Tested-by: George Joseph -2014-08-11 12:40 +0000 [db0a97f8ce] Mark Michelson + Review: https://reviewboard.asterisk.org/r/4290/ + ........ - * Fix crashing unit tests with regards to RLS. + Merged revisions 430064 from http://svn.asterisk.org/svn/asterisk/branches/13 - The unit tests require a sorcery.conf file that has been - set up to store resource lists in memory rather than retrieving - from configuration. - With a setup that is not conducive to running the tests, a fault - in sorcery currently causes Asterisk to crash when attempting to - run any of the tests. + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431667 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - To get around the crash, this adds a function that verifies the - current environment and marks the tests as "not run" if the setup - is not correct. - ........ +2015-02-05 09:50 +0000 [2125e1b2de] Mark Michelson - Merged revisions 420779 from http://svn.asterisk.org/svn/asterisk/branches/13 + * Add Asterisk 13 revision 431420 that fixes disabling 100rel option on PJSIP endpoints. - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420780 65c4cc65-6c06-0410-ace0-fbb531ad65f3 -2014-08-11 11:03 +0000 [b4e33c81e3] Mark Michelson + git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 - * Fix crash encountered by the testsuite. +2015-04-08 Asterisk Development Team - Running testsuite tests locally produced no errors, but when - run using the continuous integration framework, crashes occurred. + * Certified Asterisk 13.1-cert2 Released. - The crashes occurred due to a refcounting error that had been fixed - for a similar situation. - ........ + * Mitigate MitM attack potential from certificate with NULL byte in CN. - Merged revisions 420758 from http://svn.asterisk.org/svn/asterisk/branches/13 + When registering to a SIP server with TLS, Asterisk will accept CA + signed certificates with a common name that was signed for a domain + other than the one requested if it contains a null character in the + common name portion of the cert. This patch fixes that by checking + that the common name length matches the the length of the content we + actually read from the common name segment. Some certificate + authorities automatically sign CA requests when the requesting CN + isn't already taken, so an attacker could potentially register a CN + with something like www.google.com\x00www.secretlyevil.net and have + their certificate signed and Asterisk would accept that certificate + as though it had been for www.google.com. + ASTERISK-24847 #close + Reported by: Maciej Szmigiero + patches: + asterisk-null-in-cn.patch uploaded by mhej (license 6085) + + AST-2015-003 + +2015-01-30 Asterisk Development Team + + * Certified Asterisk 13.1-cert1 Released. + +2015-01-30 17:53 +0000 [r431494] Richard Mudgett + + * apps/app_agent_pool.c, /: app_agent_pool: Fix initial module load + agent device state reporting. When the app_agent_pool module + initially loads there is a race condition between the thread + loading agents.conf and the device state internal processing + thread. If the device state internal processing thread handles + the agent creation state updates before the thread that loaded + agents.conf registers the device state provider callback then the + cached agent state is "Invalid". When a consumer module like + app_queue asks for the agent state it gets the cached "Invalid" + state instead of the real state from the provider. * Moved + loading the agents.conf configuration to the last thing setup by + app_agent_pool in load_module(). Now the device state provider + callback is registered before the config is loaded so the agent + creation state updates are guaranteed to get the initial device + state. * Removed some now redundant config cleanup on error in + load_config(). * Added lock protection when accessing the device + state in agent_pvt_devstate_get() and eliminated the RAII_VAR() + usage. ASTERISK-24737 #close Reported by: Steve Pitts Review: + https://reviewboard.asterisk.org/r/4390/ ........ Merged + revisions 431492 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-30 16:50 +0000 [r431470] Mark Michelson + + * main/stasis_channels.c, channels/chan_pjsip.c, main/xmldoc.c, + res/res_pjsip_refer.c, main/pbx.c, main/manager.c, + pbx/pbx_spool.c, /, main/bridge_after.c: Fix some memory leaks. + These memory leaks were found and fixed by John Hardin. I'm just + committing them for him. ASTERISK-24736 #close Reported by Mark + Michelson Review: https://reviewboard.asterisk.org/r/4389 + ........ Merged revisions 431468 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-30 16:41 +0000 [r431467] Jonathan Rose + + * main/manager.c, /: Merge r431153 from asterisk/branches/13 + r431153 | jrose | 2015-01-27 11:22:52 -0600 (Tue, 27 Jan 2015) | + 9 lines Manager: Fix Manager Action ModuleLoad to give correct + response when reloading Prior to this patch, ModuleLoad would + respond with an error indicating that the requested module wasn't + found in spite of finding and reloading the module. Review: + https://reviewboard.asterisk.org/r/4373/ ASTERISK-24721 #close + +2015-01-28 21:53 +0000 [r431326-431334] Mark Michelson + + * funcs/func_curl.c, /: Multiple revisions 431297-431298 ........ + r431297 | mmichelson | 2015-01-28 11:05:26 -0600 (Wed, 28 Jan + 2015) | 17 lines Mitigate possible HTTP injection attacks using + CURL() function in Asterisk. CVE-2014-8150 disclosed a + vulnerability in libcURL where HTTP request injection can be + performed given properly-crafted URLs. Since Asterisk makes use + of libcURL, and it is possible that users of Asterisk may get + cURL URLs from user input or remote sources, we have made a patch + to Asterisk to prevent such HTTP injection attacks from + originating from Asterisk. ASTERISK-24676 #close Reported by Matt + Jordan Review: https://reviewboard.asterisk.org/r/4364 + AST-2015-002 ........ r431298 | mmichelson | 2015-01-28 11:12:49 + -0600 (Wed, 28 Jan 2015) | 3 lines Fix compilation error from + previous patch. ........ Merged revisions 431297-431298 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 431299 from + http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged + revisions 431301 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * res/res_pjsip_t38.c, res/res_pjsip_session.c, /, + res/res_pjsip_sdp_rtp.c: Fix file descriptor leak in RTP code. + SIP requests that offered codecs incompatible with configured + values could result in the allocation of RTP and RTCP ports that + would not get reclaimed later. ASTERISK-24666 #close Reported by + Y Ateya Review: https://reviewboard.asterisk.org/r/4323 + AST-2015-001 ........ Merged revisions 431300 from + http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged + revisions 431303 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-28 04:11 +0000 [r431244] Richard Mudgett + + * /, res/res_pjsip_outbound_registration.c, res/res_pjsip.c, + main/sorcery.c: res_pjsip_outbound_registration: Fix reload race + condition. Performing a CLI "module reload" command when there + are new pjsip.conf registration objects defined frequently failed + to load them correctly. What happens is a race condition between + res_pjsip pushing its reload into an asynchronous task processor + task and the thread that does the rest of the reloads when it + gets to reloading the res_pjsip_outbound_registration module. A + similar race condition happens between a reload and the CLI/AMI + show registrations commands. The reload updates the + current_states container and the CLI/AMI commands call + get_registrations() which builds a new current_states container. + * Made res_pjsip.c reload_module() use + ast_sip_push_task_synchronous() instead of ast_sip_push_task() to + eliminate two threads processing config reloads at the same time. + * Made get_registrations() not replace the global current_states + container so the CLI/AMI show registrations command cannot + interfere with reloading. You could never add/remove objects in + the container without the possibility of the container being + replaced out from under you by get_registrations(). * Added a + registration loaded sorcery instance observer to purge any dead + registration objects since get_registrations() cannot do this job + anymore. The struct ast_sorcery_instance_observer callbacks must + be used because the callback happens inline with the load + process. The struct ast_sorcery_observer callbacks are pushed to + a different thread. * Added some global current_states NULL + pointer checks in case the container disappears because of + unload_module(). * Made sorcery's struct + ast_sorcery_instance_observer.object_type_loaded callbacks + guaranteed to be called before any struct + ast_sorcery_observer.loaded callbacks will be called. * Moved the + check for non-reloadable objects to before the sorcery instance + loading callbacks happen to short circuit unnecessary work. + Previously with non-reloadable objects, the sorcery instance + loading/loaded callbacks would always happen, the individual + wizard loading/loaded would be prevented, and the non-reloadable + type logging message would be logged for each associated wizard. + ASTERISK-24729 #close Review: + https://reviewboard.asterisk.org/r/4381/ ........ Merged + revisions 431243 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-27 23:02 +0000 [r431200-431221] Kevin Harwell + + * main/tcptls.c, /: tcptls: Bad file descriptor error when + reloading chan_sip While running through some scenarios using + chan_sip and tcp a problem would occur that resulted in a flood + of bad file descriptor messages on the cli: tcptls.c:712 + ast_tcptls_server_root: Accept failed: Bad file descriptor The + message is received because the underlying socket has been + closed, so is valid. This is probably happening because unloading + of chan_sip is not atomic. That however is outside the scope of + this patch. This patch simply stops the logging of multiple + occurrences of that message. ASTERISK-24728 #close Reported by: + Thomas Thompson Review: https://reviewboard.asterisk.org/r/4380/ + ........ Merged revisions 431218 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 431219 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * /, channels/chan_sip.c: chan_sip: stale nonce causes failure When + refreshing (with a small expiration) a registration that was sent + to chan_sip the nonce would be considered stale and reject the + registration. What was happening was that the initial + registration's "dialog" still existed in the dialogs container + and upon refresh the dialog match algorithm would choose that as + the "dialog" instead of the newly created one. This occurred + because the algorithm did not check to see if the from tag + matched if authentication info was available after the 401. So, + it ended up assuming the original "dialog" was a match and + stopped the search. The old "dialog" of course had an old nonce, + thus the stale nonce message. This fix attempts to leave the + original functionality alone except in the case of a REGISTER. If + a REGISTER is received if searches for an existing "dialog" + matching only on the callid. If the expires value is low enough + it will reuse dialog that is there, otherwise it will create a + new one. ASTERISK-24715 #close Reported by: John Bigelow Review: + https://reviewboard.asterisk.org/r/4367/ ........ Merged + revisions 431187 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 431194 from + http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420759 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2015-01-27 17:52 +0000 [r431162] Richard Mudgett -2014-08-11 08:57 +0000 [becf7c7003] Matt Jordan + * /, apps/confbridge/include/confbridge.h, apps/app_confbridge.c: + app_confbridge: Repeatedly starting and stopping recording ref + leaks the recording channel. Starting and stopping conference + recording more than once causes the recording channels to be + leaked. For v13 the channels also show up in the CLI "core show + channels" output. * Reworked and simplified the recording channel + code to use ast_bridge_impart() instead of managing the recording + thread in the ConfBridge code. The recording channel's ref + handling easily falls into place and other off nominal code paths + get handled better as a result. ASTERISK-24719 #close Reported + by: John Bigelow Review: https://reviewboard.asterisk.org/r/4368/ + Review: https://reviewboard.asterisk.org/r/4369/ ........ Merged + revisions 431135 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 431160 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-27 17:35 +0000 [r431159] Joshua Colp + + * res/res_pjsip_sdp_rtp.c, main/bridge_channel.c, /: bridge / + res_pjsip_sdp_rtp: Fix issues with media not being reinvited + during direct media. This change fixes two issues: 1. During a + swap operation bridging added the new channel before having the + swap channel leave. This was not handled in bridge_native_rtp and + could result in a channel not getting reinvited back to Asterisk. + After this change the swap channel will leave first and the new + channel will then join. 2. If a re-invite was received after a + session had been established any upstream elements (such as + bridge_native_rtp) were not notified that they may want to + re-evaluate things. After this change an UPDATE_RTP_PEER control + frame is queued when this situation occurs and upstream can + react. AST-1524 #close Review: + https://reviewboard.asterisk.org/r/4378/ ........ Merged + revisions 431157 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-27 17:18 +0000 [r431140] Matthew Jordan + + * /, apps/confbridge/include/confbridge.h, + apps/confbridge/conf_config_parser.c: app_confbridge: Restore + user's menu name to CLI output of 'confbridge list' When issuing + a 'confbridge list XXXX' CLI command, the resulting output no + longer displays the menu associated with a ConfBridge + participant. The issue was caused by ASTERISK-22760. When that + patch was done, it removed the copying of the menu name + associated with the user from the actual user profile. This patch + fixes the issue by copying the menu name over to the user profile + when the menu hooks are applied to the user. Since that function + now does a little bit more than just apply the hooks, the name of + the function has been changed to cover the copying of the menu + name over as well. In addition, there is a disparity between the + menu name length as it is stored on the conf_menu structure and + the confbridge_user structure; this patch makes the lengths match + so that a strcpy can be used. Review: + https://reviewboard.asterisk.org/r/4372/ ASTERISK-24723 #close + Reported by: Steve Pitts ........ Merged revisions 431134 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-27 11:48 +0000 [r431116] Joshua Colp + + * res/parking/parking_manager.c, /: res_parking: Fix crash due to + race condition when unloading. There is currently a race + condition when unloading the res_parking module. Depending on the + will of the universe the subscription invocation may occur AFTER + the module is unloaded. This is because the module does NOT use + stasis_unsubscribe_and_join when terminating the subscription. It + merely uses stasis_unsubscribe. This change makes it use + stasis_unsubscribe_and_join which is documented for usage in this + exact scenario. AST-1520 #close Review: + https://reviewboard.asterisk.org/r/4375/ ........ Merged + revisions 431114 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-23 15:24 +0000 [r431016] Kevin Harwell + + * res/res_ari_events.c, include/asterisk/stasis_app.h, + res/res_pjsip_mwi.c, res/parking/parking_applications.c, + channels/chan_iax2.c, res/res_pjsip/pjsip_global_headers.c, + res/res_pjsip_pubsub.c, res/res_ari_channels.c, res/res_stasis.c, + rest-api-templates/param_parsing.mustache, /, + res/res_ari_endpoints.c: Investigate and fix memory leaks in + Asterisk Fixed memory leaks that were found in Asterisk. + ASTERISK-24693 #close Reported by: Kevin Harwell Review: + https://reviewboard.asterisk.org/r/4347/ ........ Merged + revisions 430999 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-21 19:47 +0000 [r430898] Richard Mudgett + + * CHANGES, /, res/res_pjsip_outbound_registration.c: Multiple + revisions 430223,430373,430395 ........ r430223 | gtjoseph | + 2015-01-06 11:35:21 -0600 (Tue, 06 Jan 2015) | 24 lines + outbound_registration: Add 'pjsip send register' and update 'send + unregister' The current behavior of 'pjsip send unregister' is to + send the unregister (REGISTER with 0 exp) but let the next + scheduled register proceed normally. I don't think that's a good + idea. If you unregister, it should stay unregistered until you + decide to start registrations again. So this patch just adds a + cancel_registration call to the current unregister_task to cancel + the timer. Of course, now you need a way to start registration + again so I've added a 'pjsip send register' command that + unregisters and cancels any existing registration (the same as + send unregister), then sends an immediate registration and starts + the timer back up again. Both changes also ripple to AMI. There's + a new PJSIPRegister command. There's no harm in calling either + command repeatedly. They don't care about the actual state. + Tested-by: George Joseph Review: + https://reviewboard.asterisk.org/r/4301/ ........ r430373 | + gtjoseph | 2015-01-08 11:48:29 -0600 (Thu, 08 Jan 2015) | 25 + lines res_pjsip_outbound_registration: Fix several reload issues + There are 2 issues with reloading registrations... 1. The + 'can_reuse_registration' test wasn't considering the intervals or + expiration in its determination of whether a registration changed + or not so if you changed any of the intervals or the expiration + and reloaded, the object would get reloaded but the actual timers + wouldn't change. can_reuse_registration now does a sorcery diff + on the old and new objects instead of discretely testing certain + fields. Now if you change expiration for instance, and reload, + the timer is updated and re-registration will occur on the new + value. 2. If you mung up your password on an outbound + registration you get a permanent failure. If you fix the password + (on the outbound_auth object) and reload, nothing tells + outbound_registration to try again because the registration + itself didn't change. This patch adds an observer on the "auth" + object type and if any auth changes, existing registration states + are searched and those in a REJECTED_PERMANENT state are retried. + Tested-by: George Joseph Review: + https://reviewboard.asterisk.org/r/4304/ ........ r430395 | + gtjoseph | 2015-01-08 15:37:42 -0600 (Thu, 08 Jan 2015) | 14 + lines res_pjsip_outbound_registration: Fix reference leak. Every + time a registration started, + sip_outbound_registration_response_cb bumps the ref count on + client_state then pushes a handle_registration_response task. + handle_registration_response never unreffed it though. So every + time a registration goes out, the ref count goes up by one. This + patch adds the unreffs to handle_registration_response. + Tested-by: George Joseph Review: + https://reviewboard.asterisk.org/r/4303/ ........ Merged + revisions 430223,430373,430395 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-21 13:36 +0000 [r430843-430865] Matthew Jordan + + * /, channels/chan_sip.c: channels/chan_sip: Fix registration leak + during reload When the SIP registrations were migrated to using + ao2 in what was then trunk, the explicit destruction of the + registrations on module reload was removed and not replaced with + an ao2 equivalent. Debugging done by Stefan Engström, the issue + reporter, on ASTERISK-24673 confirmed that the reference in the + registry_list container was being leaked. Since the purpose of + cleanup_all_regs is to prep a registration for destruction, this + function now calls an ao2_callback function callback with the + OBJ_MULTIPLE | OBJ_NODATA | OBJ_UNLINK flags used to remove the + registrations. This cleans up each registration, and also removes + it from the registration container registry_list. Review: + https://reviewboard.asterisk.org/r/4355/ ASTERISK-24640 #close + Reported by: Max Man ASTERISK-24673 #close Reported by: Stefan + Engström Tested by: Stefan Engström ........ Merged revisions + 430864 from http://svn.asterisk.org/svn/asterisk/branches/13 + + * apps/app_dial.c, /: apps/app_dial: Don't publish DialEnd twice on + unexpected GoSub/Macro values The Dial application has some + interesting options with the mid-call Macro (M) and GoSub (U) + options. If the MACRO_RESULT/GOSUB_RESULT returns specific + values, the Dial application will take some action upon the + channels involved in the dial operation (such as hanging up a + particular party, etc.) The Dial application ensures that a + Stasis message is published in the event that + MACRO_RESULT/GOSUB_RESULT returns a value that kills the dial + operation, so that there is a corresponding DialEnd event + published in AMI/ARI for the DialBegin event that preceeded it. A + bug exists where that same DialEnd event will be published on + Stasis even if the value returned in MACRO_RESULT/GOSUB_RESULT is + not one that the Dial application cares about. This causes two + DialEnd events to be published - one with the + MACRO_RESULT/GOSUB_RESULT and another with "ANSWERED" - which is + all sorts of wrong. This patch fixes the bug by ensuring that we + only publish a DialEnd message to Stasis if the Dial + application's mid-call Macro/GoSub returns something that Dial + cares about. Review: https://reviewboard.asterisk.org/r/4336 + ASTERISK-24682 #close Reported by: Matt Jordan ........ Merged + revisions 430842 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-19 18:18 +0000 [r430782] Mark Michelson + + * main/pbx.c, /: Call extension state callbacks at hint creation. + When a hint gets created, any subsequent device or presence state + changes result in extension status events getting sent out to + interested parties. However, at the time of hint creation, no + such event gets sent out, so watchers of extension state are + potentially left in the dark until the first state change after + hint creation. Patch contributed by John Hardin (License #6512) + ........ Merged revisions 430776 from + http://svn.asterisk.org/svn/asterisk/branches/13 - * res_hep: Remove disabling of modules +2015-01-15 12:11 +0000 [r430666] Joshua Colp - These modules were originally specified as being disabled, as they were - introduced midstream in Asterisk 12. That makes it nicer for folks who are - upgrading to a new release in the middle of Asterisk 12. That's not the case - for Asterisk 13: it's a brand new release. There's no reason to have the - modules disabled by default in that case. - ........ + * /, res/res_pjsip_outbound_registration.c: + res_pjsip_outbound_registration: Fix race condition when + reloading and listing registrations. Due to the split of outbound + registration state from configuration it is possible during a + reload for a "pjsip show registrations" CLI command to be + executed which gets an older snapshot of the configuration. This + configuration may include outbound registrations which have been + removed due to a reload operation occurring at the same time. The + code for printing the outbound registration did not take this + into account but now it does. AST-1506 #close Review: + https://reviewboard.asterisk.org/r/4338/ ........ Merged + revisions 430664 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-07 03:29 +0000 [r430253-430293] Matthew Jordan + + * utils/conf2ael.c, apps/app_waitforring.c, formats/format_vox.c, + res/res_timing_pthread.c, pbx/pbx_ael.c, + cel/cel_sqlite3_custom.c, res/res_hep_rtcp.c, + formats/format_jpeg.c, apps/app_jack.c, apps/app_adsiprog.c, + cdr/cdr_sqlite3_custom.c, res/res_snmp.c, channels/chan_sip.c, + cel/cel_tds.c, apps/app_dictate.c, apps/app_festival.c, + agi/eagi-test.c, res/res_hep_pjsip.c, apps/app_alarmreceiver.c, + apps/app_image.c, channels/chan_console.c, apps/app_getcpeid.c, + apps/app_talkdetect.c, channels/chan_oss.c, + channels/chan_misdn.c, apps/app_mp3.c, channels/chan_alsa.c, + pbx/pbx_dundi.c, channels/chan_nbs.c, utils/extconf.c, + apps/app_zapateller.c, cel/cel_pgsql.c, res/res_config_pgsql.c, + utils/muted.c, apps/app_test.c, utils/smsq.c, + apps/app_morsecode.c, apps/app_ices.c, cdr/cdr_csv.c, + channels/chan_phone.c, funcs/func_pitchshift.c, + funcs/func_audiohookinherit.c, + res/res_pjsip_phoneprov_provider.c, apps/app_minivm.c, + res/res_statsd.c, apps/app_sms.c, res/res_config_ldap.c, + utils/streamplayer.c, utils/check_expr.c, cel/cel_radius.c, + apps/app_nbscat.c, res/res_hep.c, apps/app_waitforsilence.c, + apps/app_dahdiras.c, pbx/pbx_lua.c, res/res_ael_share.c, + cdr/cdr_radius.c, cdr/cdr_tds.c, utils/stereorize.c, + apps/app_osplookup.c, channels/chan_skinny.c, + funcs/func_frame_trace.c, apps/app_amd.c, pbx/pbx_realtime.c, + apps/app_url.c, apps/app_externalivr.c, cdr/cdr_odbc.c, + res/res_timing_kqueue.c, channels/chan_mgcp.c, + channels/chan_unistim.c, res/res_phoneprov.c, utils/astman.c, + cdr/cdr_pgsql.c, res/res_config_sqlite.c: Disable extended + support modules - Merged revisions 420742 from http://svn.asterisk.org/svn/asterisk/branches/13 + * /, + contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py: + contrib/ast-db-manage: Correct down_revision path for + user_eq_phone When the user_eq_phone patch was backported to 13, + it referenced the downward revision that the PJSIP optimistic + encryption option also references. This creates a multi-path + upgrade Exception when generating the SQL files. This patch + corrects this in the 13 branch. Note that trunk, which already + contained both of these features, is unaffected by this problem. + ........ Merged revisions 430252 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2015-01-06 19:53 +0000 [r430245] Scott Griepentrog + + * main/bridge_basic.c, /: bridge: avoid leaking channel during + blond transfer pt2 A blond transfer to a failed destination, when + followed by a recall attempt, lead to a leak of the reference to + the destination channel. In addition to correcting the regression + on the previous attempt (r429826) this fixes the leak and two + additional reference leaks on failures of bridge_import. + ASTERISK-24513 #close Review: + https://reviewboard.asterisk.org/r/4302/ ........ Merged + revisions 430199 from + http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged + revisions 430200 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2014-12-24 15:27 +0000 [r430085-430094] Matthew Jordan + + * res/res_agi.c, /: res/res_agi: Make Verbose message for 'stream + file' match other playbacks The Verbose message displayed when a + file is played back via 'stream file' was formatted differently + than other playbacks: * It didn't include the channel name * It + didn't include the channel language It does, however, include the + playback offset as well as any escape digits. That information + was kept; however, this patch updates the formatting to more + closely match the Verbose messages displayed when a file is + played back by 'control stream file', Playback, ControlPlayback, + or any other file playback operation. ........ Merged revisions + 429519 from http://svn.asterisk.org/svn/asterisk/branches/13 + + * contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py + (added), /, res/res_pjsip.c: res_pjsip: Backport missing commits + for user_eq_phone This backports the following from trunk, which + were missed: r427257 | file | 2014-11-04 16:31:16 -0600 (Tue, 04 + Nov 2014) | 2 lines res_pjsip: Allow + at the beginning of a + phone number when user_eq_phone is enabled. r427259 | file | + 2014-11-04 16:51:32 -0600 (Tue, 04 Nov 2014) | 2 lines res_pjsip: + Apply the 'user_eq_phone' setting to the To header as well. It + also adds the Alembic script for the option. ASTERISK-24643 + ........ Merged revisions 430092 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * /, tests/test_stasis_channels.c: Stasis: Update unittest for + channel snapshots This adjusts the unit test for channel + snapshots to take the new language key into account. ........ + Merged revisions 429352 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * CHANGES, res/res_pjsip.c, include/asterisk/res_pjsip.h, + res/res_pjsip_keepalive.c (added), res/res_pjsip/config_global.c, + /, configs/samples/pjsip.conf.sample: res_pjsip_keepalive: Add + runtime configurable keepalive module for connection-oriented + transports. Note that this is backport from trunk of r425825. + This change adds a module which is configurable using the + keep_alive_interval setting in the global section that will send + a CRLF keep alive to all active connection-oriented transports at + the provided interval. This is useful because it can help keep + connections open through NATs. This functionality also exists + within PJSIP but can not be controlled at runtime and requires + recompiling it. Review: https://reviewboard.asterisk.org/r/4084/ + ASTERISK-24644 #close ........ Merged revisions 430084 from + http://svn.asterisk.org/svn/asterisk/branches/13 + * /, res/res_pjsip/pjsip_configuration.c, + res/res_pjsip_caller_id.c, CHANGES, res/res_pjsip.c, + include/asterisk/res_pjsip.h: res_pjsip: Add 'user_eq_phone' + option to add a 'user=phone' parameter when applicable. Note that + this is a backport of r425804 from trunk. This change adds a + configuration option which adds a 'user=phone' parameter if the + user portion of the request URI or the From URI is determined to + be a number. Review: https://reviewboard.asterisk.org/r/4073/ + ASTERISK-24643 #close ........ Merged revisions 430083 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2014-12-22 21:22 +0000 [r430030-430046] Richard Mudgett + + * main/bridge_basic.c, /: DTMF atxfer: Setup recall channels as if + the transferee initiated the call. After the initial DTMF atxfer + call attempt to the transfer target fails to answer during a + blonde transfer, the recall callback channels do not get setup + with information from the initial transferrer channel. As a + result, the recall callback to the transferrer does not have + callid, channel variables, datastores, accountcode, peeraccount, + COLP, and CLID setup. A similar situation happens with the recall + callback to the transfer target but it is less visible. The + recall callback to the transfer target does not have callid, + channel variables, datastores, accountcode, peeraccount, and COLP + setup. * Added missing information to the recall callback + channels before initiating the call. callid, channel variables, + datastores, accountcode, peeraccount, COLP, and CLID * Set callid + of the transferrer channel on the DTMF atxfer controller thread + attended_transfer_monitor_thread(). * Added missing channel + unlocks and props unref to off nominal paths in + attended_transfer_properties_alloc(). ASTERISK-23841 #close + Reported by: Richard Mudgett Review: + https://reviewboard.asterisk.org/r/4259/ ........ Merged + revisions 430034 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * include/asterisk/_private.h, main/asterisk.c, /, main/logger.c: + queue_log: Post QUEUESTART entry when Asterisk fully boots. The + QUEUESTART log entry has historically acted like a fully booted + event for the queue_log file. When the QUEUESTART entry was + posted to the log was broken by the change made by + ASTERISK-15863. * Made post the QUEUESTART queue_log entry when + Asterisk fully boots. This restores the intent of that log entry + and happens after realtime has had a chance to load. AST-1444 + #close Reported by: Denis Martinez Review: + https://reviewboard.asterisk.org/r/4282/ ........ Merged + revisions 430009 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 430010 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2014-12-22 18:35 +0000 [r430007-430008] bebuild : + + * /, res/res_pjsip/pjsip_options.c: Multiple revisions + 429128,429246 ........ r429128 | kmoore | 2014-12-09 08:00:50 + -0600 (Tue, 09 Dec 2014) | 12 lines PJSIP: Stagger outbound + qualifies This change staggers initiation of outbound qualify + (OPTIONS) attempts to reduce instantaneous server load and + prevent network congestion. Review: + https://reviewboard.asterisk.org/r/4246/ ASTERISK-24342 #close + Reported by: Richard Mudgett ........ Merged revisions 429127 + from http://svn.asterisk.org/svn/asterisk/branches/12 ........ + r429246 | kmoore | 2014-12-10 07:14:56 -0600 (Wed, 10 Dec 2014) | + 8 lines PJSIP: Fix assert on initial mass qualify This fixes the + MWI test regressions caused by r429127 and ensures that contacts + have non-zero qualify_frequency before attempting scheduling. + ........ Merged revisions 429245 from + http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged + revisions 429128,429246 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * main/manager.c, /: Prevent possible race condition on dual + redirect of channels in the same bridge. The + AST_FLAG_BRIDGE_DUAL_REDIRECT_WAIT flag was created to prevent + bridges from prematurely acting on orphaned channels in bridges. + The problem with the AMI redirect action was that it was setting + this flag on channels based on the presence of a PBX, not whether + the channel was in a bridge. Whether a channel has a PBX is + irrelevant, so the condition has been altered to check if the + channel is in a bridge. ASTERISK-24536 #close Reported by Niklas + Larsson Review: https://reviewboard.asterisk.org/r/4268 ........ + Merged revisions 429741 from + http://svn.asterisk.org/svn/asterisk/branches/13 + +2014-12-19 21:52 +0000 [r429855-429892] bebuild : + + * CHANGES, res/res_ari_channels.c, res/ari/resource_channels.h, /, + rest-api/api-docs/channels.json, res/ari/resource_channels.c: + ari: Add support for specifying an originator channel when + originating. If an originator channel is specified when + originating a channel the linked ID of it will be applied to the + newly originated outgoing channel. This allows an association to + be made between the two so it is known that the originator has + dialed the originated channel. ASTERISK-24552 #close Reported by: + Matt Jordan Review: https://reviewboard.asterisk.org/r/4243/ + ........ Merged revisions 429153 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * res/ari/ari_model_validators.c, main/manager_channels.c, + res/ari/ari_model_validators.h, /, main/stasis_channels.c, + rest-api/api-docs/channels.json: ARI/AMI: Include language in + standard channel snapshot output The channel "language" was + already part of a channel snapshot, however is was not sent out + over AMI or ARI. This patch makes it so the channel "language" is + included in the appropriate AMI or ARI events. ASTERISK-24553 + #close Reported by: Matt Jordan Review: + https://reviewboard.asterisk.org/r/4245/ ........ Merged + revisions 429204 from + http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged + revisions 429206 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * res/res_pjsip_session.c, /: res_pjsip_session: Fix issue where a + declined media stream in a re-INVITE would fail SDP negotiation. + In the past the SDP negotiation within res_pjsip_session was made + more tolerant of certain situations. The only case where SDP + negotiation will fail is when a major error occurs during + negotiation. Receiving an already declined media stream is not + considered a major error. When producing the local SDP the logic + took this into account so on the initial INVITE the declined + media stream did not cause an SDP negotiation failure. + Unfortunately the logic for handling media streams with a handler + did not mirror this logic and considered an already declined + media stream an error and thus failed the SDP negotiation. This + change makes the logic between both situations match so only + under major errors will the SDP negotiation fail. ASTERISK-24607 + #close Reported by: Matt Jordan Review: + https://reviewboard.asterisk.org/r/4254/ ........ Merged + revisions 429407 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * include/asterisk/format.h, main/format.c, /, main/codec.c: media: + Fix crash when determining sample count of a frame during + shutdown. When shutting down Asterisk the codecs are cleaned up. + As a result anything attempting to get a codec based on ID or + details will find that no codec exists. This currently occurs + when determining the sample count of a frame. This code did not + take this situation into account. This change fixes this by + getting the codec directly from the format and eliminates the + lookup. This is both faster and also provides a guarantee that + the codec will exist and will be valid. ASTERISK-24604 #close + Reported by: Matt Jordan Review: + https://reviewboard.asterisk.org/r/4260/ ........ Merged + revisions 429497 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * /, res/res_pjsip_outbound_registration.c: Prevent potential + infinite outbound authentication loops in registration. Prior to + this patch, Asterisk would always respond to 401 responses to + registration attempts by trying to provide a registration with + authentication credentials. Even if subsequent attempts were + rejected with 401 responses, Asterisk would continue this + behavior. If authentication credentials were incorrect, this + could continue forever. With this patch, we keep track of whether + we have attempted authentication on an outbound registration + attempt. If we already have, we don not try again until the next + attempt. This prevents the infinite loop scenario. Review: + https://reviewboard.asterisk.org/r/4273 ........ Merged revisions + 429761 from http://svn.asterisk.org/svn/asterisk/branches/13 + + * res/res_pjsip_outbound_publish.c, /: res_pjsip_outbound_publish: + stack overflow when using non-default sorcery wizard When using a + non-default sorcery wizard (in this instance realtime) for + outbound publishes Asterisk will crash after a stack overflow + occurs due to the code infinitely recursing. The fix entails + removing the outbound publish state dependency from the outbound + publish sorcery object and instead keeping an in memory container + that can be used to lookup the state when needed. ASTERISK-24514 + #close Reported by: Mark Michelson Review: + https://reviewboard.asterisk.org/r/4178/ ........ Merged + revisions 429175 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * /, res/res_pjsip_sdp_rtp.c: PJSIP: Allow use of 'inactive' + streams for hold This allows use of the 'inactive' stream + direction identifier to be used for hold where 'sendonly' is + normally used. Some Seimens phones use 'inactive' and this change + allows music on hold to operate properly. Review: + https://reviewboard.asterisk.org/r/4252/ Reported by: Steve Pitts + ........ Merged revisions 429432 from + http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged + revisions 429433 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * channels/chan_pjsip.c, res/res_pjsip_session.c, + include/asterisk/res_pjsip_session.h, /, + res/res_pjsip_session.exports.in: res_pjsip_session: Delay + sending BYE if a re-INVITE transaction is in progress. Given the + scenario where a PJSIP channel is in a native RTP bridge with + direct media and the channel is then hung up the code will + currently re-INVITE the channel back to Asterisk and send a BYE + at the same time. Many SIP implementations dislike this greatly. + This change makes it so that if a re-INVITE transaction is in + progress the BYE is queued to occur after the completion of the + transaction (be it through normal means or a timeout). Review: + https://reviewboard.asterisk.org/r/4248/ ........ Merged + revisions 429409 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * /, channels/chan_pjsip.c: chan_pjsip: Race between channel answer + and bridge setup when using direct media When direct media is + enabled and a pjsip channel is answered a race would occur + between the handling of the answer and bridge setup. Sometimes + the media negotiation would take place after the native bridge + was setup. This resulted in a NULL media address, which in turn + resulted in Asterisk using its address as the remote media + address when sending a reinvite. This patch makes the chan_pjsip + answer handler synchronous thus alleviating the race condition + (the bridge won't start setting things up until after it + returns). ASTERISK-24563 #close Reported by: Steve Pitts Review: + https://reviewboard.asterisk.org/r/4257/ ........ Merged + revisions 429477 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * main/rtp_engine.c, /, channels/chan_sip.c, + include/asterisk/rtp_engine.h, res/res_rtp_asterisk.c: Direct + Media calls within private network sometimes get one way audio + When endpoints with direct_media enabled, behind a firewall + (Asterisk on a separate network) and were bridged sometimes + Asterisk would send the ip address of the firewall in the sdp to + one of the phones in the reinvite resulting in one way audio. + When sending the reinvite Asterisk will retrieve the media + address from the associated rtp instance, but if frames were + being read this can be overwritten with another address (in this + case the firewall's). This patch ensures that Asterisk uses the + original device address when using direct media. ASTERISK-24563 + Reported by: Steve Pitts Review: + https://reviewboard.asterisk.org/r/4216/ ........ Merged + revisions 429195 from + http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged + revisions 429196 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * channels/pjsip/dialplan_functions.c, /: Ensure the correct value + is returned for CHANNEL(pjsip, secure) Prior to this patch, we + were using the PJSIP dialog's secure flag to determine if a + secure transport was being used. Unfortunately, the dialog's + secure flag was only set if a SIPS URI were in use, as required + by RFC 3261 sections 12.1.1 and 12.1.2. What we're interested in + is not dialog security, but transport security. This code change + switches to a model where we use the dialog's target URI to + determine what transport would be used to communicate, and then + check if that transport is secure. AST-1450 #close Reported by + John Bigelow Review: https://reviewboard.asterisk.org/r/4277 + ........ Merged revisions 429739 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * channels/chan_dahdi.c, /: chan_dahdi: Don't ignore setvar when + using configuration section scheme. When the configuration + section scheme of chan_dahdi.conf is used (keyword dahdichan + instead of channel) all setvar= options are completely ignored. + No variable defined this way appears in the created DAHDI + channels. * Move the clearing of setvar values to after the + deferred processing of dahdichan. AST-1378 #close Reported by: + Guenther Kelleter Patch by: Guenther Kelleter ........ Merged + revisions 429825 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 429829 from + http://svn.asterisk.org/svn/asterisk/branches/13 + + * /, include/asterisk/lock.h, main/lock.c: DEBUG_THREADS: Fix + regression and lock tracking initialization problems. This patch + started with David Lee's patch at + https://reviewboard.asterisk.org/r/2826/ and includes a + regression fix introduced by the ASTERISK-22455 patch. The + initialization of a mutex's lock tracking structure was not + protected in a critical section. This is fine for any mutex that + is explicitly initialized, but a static mutex may have its lock + tracking double initialized if multiple threads attempt the first + lock simultaneously. * Added a global mutex to properly serialize + initialization of the lock tracking structure. The painful global + lock can be mitigated by adding a double checked lock flag as + discussed on the original review request. * Defer lock tracking + initialization until first use. * Don't be "helpful" and + initialize an uninitialized lock when DEBUG_THREADS is enabled. + Debug code is not supposed to fix or change normal code behavior. + We don't need a lock initialization race that would force a + re-setup of lock tracking. Lock tracking already handles + initialization on first use. * Properly handle allocation + failures of the lock tracking structure. * No need to initialize + tracking data in __ast_pthread_mutex_destroy() just to turn + around and destroy it. The regression introduced by + ASTERISK-22455 is the result of manipulating a pthread_mutex_t + struct outside of the pthread library code. The pthread_mutex_t + struct seems to have a global linked list pointer member that can + get changed by other threads. Therefore, saving and restoring the + contents of a pthread_mutex_t struct is a bad thing. Thanks to + Thomas Airmont for finding this obscure regression. * Don't + overwrite the struct ast_lock_track.reentr_mutex member to + restore tracking data in __ast_cond_wait() and + __ast_cond_timedwait(). The pthread_mutex_t struct must be + treated as a read-only opaque variable. Miscellaneous other items + fixed by this patch: * Match ast_suspend_lock_info() with + ast_restore_lock_info() in __ast_cond_timedwait(). * Made some + uninitialized lock sanity checks return EINVAL and try a + DO_THREAD_CRASH. * Fix bad canlog initialization expressions. + ASTERISK-24614 #close Reported by: Thomas Airmont Review: + https://reviewboard.asterisk.org/r/4247/ Review: + https://reviewboard.asterisk.org/r/2826/ ........ Merged + revisions 429539 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 429540 from + http://svn.asterisk.org/svn/asterisk/branches/13 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420743 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * /, res/res_pjsip_pubsub.c: Activate persistent subscriptions when + they are recreated. Prior to this change, recreating persistent + subscriptions would create the subscription but would not + activate it. This led to subscriptions being listed in the "NULL" + state by diagnostics and not sending NOTIFYs when expected. + Review: https://reviewboard.asterisk.org/r/4261 ........ Merged + revisions 429571 from + http://svn.asterisk.org/svn/asterisk/branches/13 -2014-08-11 05:41 +0000 [1e0846167b] Walter Doekes + * /, asterisk-13.1.0-summary.html (removed), + asterisk-13.1.0-summary.txt (removed): Update properties; remove + old summaries - * general: Fix memory Corruption in __ast_string_field_ptr_build_va. + * / (added): Create Certified Asterisk 13.1 branch - If the space left in a stringfield is between 0 and - (alignof(ast_string_field_allocation)-1) adding new data would cause - memory corruption, because we would assume enough space (unsigned - underrun). +2014-12-15 Asterisk Development Team - Thanks Arnd Schmitter for reporting and finding out the cause! + * Asterisk 13.1.0 Released. - ASTERISK-23508 #close - Reported by: Arnd Schmitter - Tested by: Arnd Schmitter, JoshE +2014-12-10 Asterisk Development Team - Review: https://reviewboard.asterisk.org/r/3898/ - ........ + * Asterisk 13.1.0-rc2 Released. - Merged revisions 420680 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ + * AST-2014-019: Fix crash when receiving a WebSocket packet with a + payload length of zero. - Merged revisions 420715 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ + Frames with a payload length of 0 were incorrectly handled in + res_http_websocket. Provided a frame with a payload had been + received prior it was possible for a double free to occur. The + realloc operation would succeed (thus freeing the payload) but be + treated as an error. When the session was then torn down the payload + would be freed again causing a crash. The read function now takes + this into account. - Merged revisions 420716 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + This change also fixes assumptions made by users of + res_http_websocket. There is no guarantee that a frame received from + it will be NULL terminated. - Merged revisions 420717 from http://svn.asterisk.org/svn/asterisk/branches/13 + ASTERISK-24472 #close + Reported by: Badalian Vyacheslav +2014-12-08 Asterisk Development Team - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420718 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * Asterisk 13.1.0-rc1 Released. -2014-08-11 04:55 +0000 [b2afbc48e4] Walter Doekes +2014-12-08 16:53 +0000 [r429091] Matthew Jordan - * tcptls: Avoid compiler warning on non-dev-mode. - ........ + * rest-api/api-docs/playbacks.json, UPGRADE.txt, + rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json, + rest-api/resources.json, CHANGES, include/asterisk/manager.h, + rest-api/api-docs/bridges.json, + rest-api/api-docs/recordings.json, + rest-api/api-docs/deviceStates.json, + rest-api/api-docs/endpoints.json, + rest-api/api-docs/mailboxes.json, rest-api/api-docs/events.json, + rest-api/api-docs/asterisk.json, + rest-api/api-docs/applications.json: AMI/ARI: Update version to + 2.6.0/1.6.0 respectively for new features AMI/ARI are getting a + few enhancements in the next release of Asterisk 13. Per semantic + versioning, that warrants a bump in the minor version number, as + it reflects a backwards compatible change. Hence, this commit. + +2014-12-08 16:41 +0000 [r429064-429089] Mark Michelson + + * res/res_pjsip_session.c: Fix a crash that would occur when + receiving a 491 response to a reinvite. The reviewboard + description does a fine job of summarizing this, so here it is: A + reporter discovered that Asterisk would crash when attempting to + retransmit a reinvite that had previously received a 491 + response. The crash occurred because a pjsip_tx_data structure + was being saved for reuse, but its reference count was not being + increased. The result was that the pjsip_tx_data was being freed + before we were actually done with it. When we attempted to re-use + the structure when re-sending the reinvite, Asterisk would crash. + The fix implemented here is not to try holding onto the + pjsip_tx_data at all. Instead, when we reschedule sending the + reinvite, we create a brand new pjsip_tx_data and send that + instead. Because of this change, there is no need for an + ast_sip_session_delayed_request structure to have a pjsip_tx_data + on it any more. So any code referencing its use has been removed. + When this initial fix was introduced, I encountered a second + crash when processing a subsequent 200 OK on a rescheduled + reinvite. The reason was that when rescheduling the reinvite, we + gave the wrong location for a response callback. This has been + fixed in this patch as well. ASTERISK-24556 #close Reported by + Abhay Gupta Review: https://reviewboard.asterisk.org/r/4233 + + * main/stasis_channels.c, CHANGES, res/ari/ari_model_validators.c, + main/manager_channels.c, main/channel.c, + res/ari/ari_model_validators.h, + include/asterisk/stasis_channels.h, + rest-api/api-docs/events.json, res/stasis/app.c: Add new AMI and + ARI events for connected line changes on a channel. The AMI event + is called NewConnectedLine and the ARI event is called + ChannelConnectedLine. ASTERISK-24554 #close Reported by Matt + Jordan Review: https://reviewboard.asterisk.org/r/4231 + +2014-12-08 15:43 +0000 [r429062] Kinsey Moore + + * /, res/stasis/app.c, main/channel_internal_api.c, + res/stasis/stasis_bridge.c, res/stasis/app.h, + include/asterisk/channel.h, res/res_stasis.c, main/channel.c: + Stasis: Fix StasisStart/End order and missing events This + corrects several bugs that currently exist in the stasis + application code. * After a masquerade, the resulting channels + have channel topics that do not match their uniqueids ** + Masquerades now swap channel topics appropriately * StasisStart + and StasisEnd messages are leaked to observer applications due to + being published on channel topics ** StasisStart and StasisEnd + publishing is now properly restricted to controlling apps via app + topics * Race conditions exist where StasisStart and StasisEnd + messages due to a masquerade may be received out of order due to + being published on different topics ** These messages are now + published directly on the app topic so this is now a non-issue * + StasisEnds are sometimes missing when sent due to masquerades and + bridge swaps into and out of Stasis() ** This was due to + StasisEnd processing adjusting message-sent flags after Stasis() + had already exited and Stasis() had been re-entered ** This was + corrected by adjusting these flags prior to sending the message + while the initial Stasis() application was still shutting down + Review: https://reviewboard.asterisk.org/r/4213/ ASTERISK-24537 + #close Reported by: Matt DiMeo ........ Merged revisions 429061 + from http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420654 from http://svn.asterisk.org/svn/asterisk/branches/1.8 - ........ +2014-12-06 18:16 +0000 [r429029-429033] Matthew Jordan + + * res/res_monitor.c, /: res/res_monitor: Reset in/out sample counts + on Monitor start When repeatedly starting/stopping a Monitor on a + channel, the accumulated in/out sample counts are never reset to + 0. This can cause inadvertent jumps in the recordings, as the + code in the channel core will determine incorrectly that a jump + in the recorded file position should occur. Setting the sample + counts to 0 simply reflects the initial state a Monitor should be + in when it is started, as this is the initial count that would be + on the channels at that time. ASTERISK-24573 #close Reported by: + Nuno Borges patches: 24573.patch uploaded by Nuno Borges (License + 6116) ........ Merged revisions 429031 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 429032 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, apps/app_meetme.c: apps/app_meetme: Apply default values on + initial load with no config file When the app_meetme module is + loaded without its configuration file, the module settings aren't + initialized. In particular, this impacts the use of logging + realtime members. This patch guarantees that we always set the + default module settings on initial load. Review: + https://reviewboard.asterisk.org/r/4242/ ASTERISK-24572 #close + Reported by: Nuno Borges patches: 24572.patch uploaded by Nuno + Borges (License 6116) ........ Merged revisions 429027 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 429028 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-12-05 17:06 +0000 [r429000] George Joseph + + * tests/test_sorcery.c, main/sorcery.c, include/asterisk/test.h, /, + include/asterisk/sorcery.h: sorcery: Add additional observer + capabilities. Add new global, instance and wizard observers. + instance_created wizard_registered wizard_unregistered + instance_destroying instance_loading instance_loaded + wizard_mapped object_type_registered object_type_loading + object_type_loaded wizard_loading wizard_loaded Tested-by: George + Joseph Review: https://reviewboard.asterisk.org/r/4215/ ........ + Merged revisions 428999 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-12-04 17:13 +0000 [r428865-428973] Matthew Jordan + + * /, main/test.c: main/test: Fix compilation issue on 32-bit + systems On a 32-bit system, a type of intmax_t will result in a + compilation warning when formatted as a 'long int'. Use the + format specifier of %jd (which was what was used originally in + manager.c) to format the JSON extracted integer on both + 32-/64-bit systems. ........ Merged revisions 428972 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * main/manager.c, /, main/test.c: main/test: Fix race condition + between AMI topic and Test Suite topic This patch fixes a race + condition between the raising of test AMI events (which drive + many tests in the Asterisk Test Suite) and other AMI events. + Prior to this patch, the Stasis messages published to the test + topic were not forwarded to the AMI topic. Instead, the code in + manager had a dedicated handler for test messages that was + independent of the topics forwarded to the AMI topic. This + results in no synchronization between the test messages and the + rest of the Stasis messages published out over AMI. In some test + with very tight timing constraints, this can result in out of + order messages and spurious test failures. Properly forwarding + the Test Suite topic to the AMI topic ensures that the messages + are synchronized properly. This patch does that, and moves the + message handling to the Stasis definition of the Test Suite + message in test.c as well. Review: + https://reviewboard.asterisk.org/r/4221/ ........ Merged + revisions 428945 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * tests/test_cel.c, /: tests/test_cel: Add + test_cel_attended_transfer_bridges_link to racey tests Despite + failing less often, the ordering of the ATTENDEDTRANSFER event + and the BRIDGE_EXIT event for the Alice and David channels is not + defined. This makes the test still fail. ........ Merged + revisions 428918 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * tests/test_cel.c, /: tests/test_cel: Fix CEL unit test failures + caused by attended transfer changes When the publication of + attended transfer messages were pushed to another thread, some + subtle race conditions were introduced with the CEL unit tests. + This patch fixes one of them, and pushes the other to + ASTERISK-22367, which already exists to fix another bouncy CEL + unit test. In particular, this patch fixes the + test_cel_attended_transfer_bridges_link test, and defers the + test_cel_attended_transfer_bridges_swap test to the + aforementioned JIRA issue. ASTERISK-22367 ........ Merged + revisions 428891 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * apps/app_voicemail.c, /: apps/app_voicemail: Fix crash with IMAP + when streams are opened simultaneously The UW IMAP library is + instrinsically not thread-safe, and relies upon higher level + applications to guarantee thread safety. For the most part, this + is provided by the vms object, which provides locking for + individual streams. Unfortunately, this is not sufficient for + calls to mail_open which create the IMAP stream. mail_open can, + on some systems, call into a UW IMAP specific function for + determining the address of a system based on a hostname, + ip_nametoaddr. In the ip6_unix implementation of this function, + static variables are used to hold parsing buffers. This can cause + a crash if multiple threads attempt to convert a hostname to an + address at the same time. Locking on a single mail stream is not + sufficient to prevent simultaneous access to these static + variables. In the IMAP library, this function can be called from + the mail_open and imap_status functions. As the imap_status + function is not used by app_voicemail, locking on access to + mail_open is sufficient to prevent any mangling of the buffers. + Review: https://reviewboard.asterisk.org/r/4188/ ASTERISK-24516 + #close Reported by: David Duncan Ross Palmer Tested by: David + Duncan Ross Palmer patches: ASTERISK-24516.diff uploaded by David + Duncan Ross Palmer (License 6660) ........ Merged revisions + 428863 from http://svn.asterisk.org/svn/asterisk/branches/11 + ........ Merged revisions 428864 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-12-02 21:53 +0000 [r428837] George Joseph + + * CHANGES, /: CHANGES: Add item for new 'pjsip show identif(y|ies) + commands Tested-by: George Joseph ........ Merged revisions + 428836 from http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-12-02 19:03 +0000 [r428789-428815] Matthew Jordan + + * tests/test_stasis.c: tests/test_stasis: Resolve compilation + issues from Asterisk 12 merge When merging the changes up stream + in r428687, I missed the fact that the signature for + stasis_message_type_create was changed. This patch fixes the + compilation issues introduced by that merge. + + * pbx/pbx_loopback.c, /: pbx/pbx_loopback: Speed up switches by + avoiding unneeded lookups This patch makes a small rearrangement + to only do dialplan lookups during loopback switches if the + pattern matches. Prior to this patch, the dialplan lookups were + always performed, even when the result would be discarded. + Dialplan lookups can be very costly if remote switches - like + DUNDi - are present. In those cases extension matching is sped up + considerably, making the issue of lost digits more manageable. As + collateral damage, 6 trailing spaces were killed. Review: + https://reviewboard.asterisk.org/r/4211 ASTERISK-24577 #close + Reported by: Birger Harzenetter patches: ast-loopback.patch + uploaded by Birger Harzenetter (License 5870) ........ Merged + revisions 428787 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428788 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420655 from http://svn.asterisk.org/svn/asterisk/branches/11 - ........ +2014-12-02 12:20 +0000 [r428761] Joshua Colp - Merged revisions 420656 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * res/res_pjsip_refer.c, /: res_pjsip_refer: Fix issue where native + bridge may not occur upon completion of a transfer. There are two + methods within res_pjsip_refer for keeping track of the state of + a transfer. The first is a framehook which looks at frames + passing by to determine the state. The second subscribes to know + when the channel joins a bridge. In the case when the channel + joins the bridge the framehook is *NOT* removed and this prevents + the native RTP bridging technology from getting used. This change + gets the channel and if it still exists remove the framehook. + Review: https://reviewboard.asterisk.org/r/4218/ ........ Merged + revisions 428760 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420657 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-12-02 00:38 +0000 [r428731-428734] George Joseph + * /, include/asterisk/config.h, main/config.c: config: Create + ast_variable_find_in_list() Add const char + *ast_variable_find_in_list(const struct ast_variable *list, const + char *variable); ast_variable_find() requires a config category + to search whereas ast_variable_find_in_list() just needs the root + list element which is useful if you don't have a category. + Tested-by: George Joseph Review: + https://reviewboard.asterisk.org/r/4217/ ........ Merged + revisions 428733 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420658 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * /, res/res_pjsip_endpoint_identifier_ip.c, + res/res_pjsip/pjsip_cli.c: res_pjsip_endpoint_identifier_ip: Add + 'show identify(ies)' cli commands While troubleshooting other + things I realized there were no pjsip cli commands for identify. + This patch adds them. It also also fixes a reference leak when a + 'show endpoint' displayed identifies and properly sets the return + code if load_module can't allocate a cli formatter structure. + Tested-by: George Joseph Review: + https://reviewboard.asterisk.org/r/4212/ ........ Merged + revisions 428725 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-12-01 17:57 +0000 [r428687] Matthew Jordan + + * channels/chan_skinny.c, res/res_pjsip_mwi.c, tests/test_stasis.c, + res/res_pjsip_pubsub.c, res/res_pjsip_refer.c, + channels/chan_mgcp.c, main/stasis_cache.c, channels/chan_sip.c, + include/asterisk/stasis_internal.h, /, include/asterisk/stasis.h, + UPGRADE.txt, configs/samples/stasis.conf.sample, + res/parking/parking_applications.c, res/res_xmpp.c, + channels/chan_iax2.c, apps/app_queue.c, + res/res_stasis_device_state.c, channels/sig_pri.c, + include/asterisk/stasis_message_router.h, main/endpoints.c, + res/parking/parking_bridge_features.c, main/stasis.c, + channels/chan_dahdi.c, main/stasis_message_router.c: main/stasis: + Allow subscriptions to use a threadpool for message delivery + Prior to this patch, all Stasis subscriptions would receive a + dedicated thread for servicing published messages. In contrast, + prior to r400178 (see review + https://reviewboard.asterisk.org/r/2881/), the subscriptions + shared a thread pool. It was discovered during some initial work + on Stasis that, for a low subscription count with high message + throughput, the threadpool was not as performant as simply having + a dedicated thread per subscriber. For situations where a + subscriber receives a substantial number of messages and is + always present, the model of having a dedicated thread per + subscriber makes sense. While we still have plenty of + subscriptions that would follow this model, e.g., AMI, CDRs, CEL, + etc., there are plenty that also fall into the following two + categories: * Large number of subscriptions, specifically those + tied to endpoints/peers. * Low number of messages. Some + subscriptions exist specifically to coordinate a single message - + the subscription is created, a message is published, the delivery + is synchronized, and the subscription is destroyed. In both of + the latter two cases, creating a dedicated thread is wasteful + (and in the case of a large number of peers/endpoints, harmful). + In those cases, having shared delivery threads is far more + performant. This patch adds the ability of a subscriber to Stasis + to choose whether or not their messages are dispatched on a + dedicated thread or on a threadpool. The threadpool is + configurable through stasis.conf. Review: + https://reviewboard.asterisk.org/r/4193 ASTERISK-24533 #close + Reported by: xrobau Tested by: xrobau ........ Merged revisions + 428681 from http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-12-01 13:41 +0000 [r428632-428655] Joshua Colp + + * /, apps/app_record.c: app_record: Fix bug where using the 'k' + option and hanging up would trim 1/4 of a second of the + recording. The Record dialplan function trims 1/4 of a second + from the end of recordings in case they are terminated because of + DTMF. When hanging up, however, you don't want this to happen. + This change makes it so on hangup this does not occur. + ASTERISK-24530 #close Reported by: Ben Smithurst patches: + app_record_v2.diff submitted by Ben Smithurst (license 6529) + Review: https://reviewboard.asterisk.org/r/4201/ ........ Merged + revisions 428653 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428654 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * main/channel.c: channel: Extend size of buffer for codecs in + "core show channeltype" CLI command. The static buffer for codecs + when invoking the "core show channeltype" CLI command did not + have enough room for all codecs. This has been extended so it + does. ASTERISK-24542 #close Reported by: snuffy patches: + channeltype-tech.diff submitted by snuffy (license 5024) Review: + https://reviewboard.asterisk.org/r/4204/ + +2014-11-24 20:37 +0000 [r428602-428604] Richard Mudgett + + * tests/test_channel_feature_hooks.c: test_channel_feature_hooks.c: + Fix unit test for DTMF hooks. Fix the failing + /channels/features/test_features_channel_dtmf unit test. DTMF + emulation does not work without a stream of packets to prod the + emulation code. Review: https://reviewboard.asterisk.org/r/4199/ + + * /, main/bridge.c, main/bridge_channel.c: DTMF hooks: Leaving + channels need to push any collected digits into the bridge. Any + partially collected DTMF digits for a DTMF hook need to be pushed + into the bridge when a channel leaves the bridging system as if + there were a timeout. Review: + https://reviewboard.asterisk.org/r/4199/ ........ Merged + revisions 428601 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-21 19:09 +0000 [r428572] Richard Mudgett + + * main/manager.c, /: manager: Fix could not extend string messages. + When shutting down Asterisk that has an active AMI connection, + you get several "failed to extend from %d to %d" messages because + use of the EVENT_FLAG_SHUTDOWN attempts to add all AMI permission + strings to the event. * Created MAX_AUTH_PERM_STRING to use when + creating stack based struct ast_str variables used with the + authority_to_str() and user_authority_to_str() functions instead + of a variety of magic numbers that could be too small. * Added a + special check for EVENT_FLAG_SHUTDOWN to authority_to_str() so it + will not attempt to add all permission level strings. Review: + https://reviewboard.asterisk.org/r/4200/ ........ Merged + revisions 428570 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428571 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-21 17:45 +0000 [r428544] George Joseph + + * main/sorcery.c, /, res/res_pjsip_phoneprov_provider.c, + tests/test_sorcery.c: sorcery: Make is_object_field_registered + handle field names that are regexes. As a result of + https://reviewboard.asterisk.org/r/3305, res_sorcery_realtime was + tossing database fields that didn't have an exact match to a + sorcery registered field. This broke the ability to use regexes + as field names which manifested itself as a failure of + res_pjsip_phoneprov_provider which uses this capability. It also + broke handling of fields that start with '@' in realtime but I + don't think anyone noticed. This patch does the following... * + Modifies ast_sorcery_fields_register to pre-compile the name + regex. * Modifies ast_sorcery_is_object_field_registered to test + the regex if it exists instead of doing an exact strcmp. * + Modifies res_pjsip_phoneprov_provider with a few tweaks to get it + to work with realtime. Tested-by: George Joseph Review: + https://reviewboard.asterisk.org/r/4185/ ........ Merged + revisions 428543 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-21 02:16 +0000 [r428505] Matthew Jordan + + * main/bridge_basic.c: main/bridge_basic: Fix features regressions + introduced by r428165 In r428165, two bugs were introduced: * + Prior to entering the features retry loop, the buffer that holds + the collected digits is wiped. However, this inadvertently wipes + out the first collected digit on the first pass through, which is + obtained in ast_stream_and_wait. This caused all of the features + tests to fail. * If ast_app_dtget returns a hangup (-1), the loop + would retry incorrectly. If we detect a hangup, we have to stop + trying the feature. This patch fixes both issues. Review: + https://reviewboard.asterisk.org/r/4196/ + +2014-11-20 16:36 +0000 [r428425] Mark Michelson + + * main/acl.c, /: Fix error with mixed address family ACLs. Prior to + this commit, the address family of the first item in an ACL was + used to compare all incoming traffic. This could lead to traffic + of other IP address families bypassing ACLs. ASTERISK-24469 + #close Reported by Matt Jordan Patches: ASTERISK-24469-11.diff + uploaded by Matt Jordan (License #6283) AST-2014-012 ........ + Merged revisions 428402 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 428417 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428422 from + http://svn.asterisk.org/svn/asterisk/branches/12 -2014-08-10 20:31 +0000 [6650704414] Matt Jordan +2014-11-20 16:34 +0000 [r428413] Kevin Harwell - * funcs/func_jitterbuffer: Tweak documentation + * funcs/func_db.c, /: AST-2014-018 - func_db: DB Dialplan function + permission escalation via AMI. The DB dialplan function when + executed from an external protocol (for instance AMI), could + result in a privilege escalation. Asterisk now inhibits the DB + function from being executed from an external interface if the + live_dangerously option is set to no. ASTERISK-24534 Reported by: + Gareth Palmer patches: submitted by Gareth Palmer (license 5169) + ........ Merged revisions 428331 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 428363 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428409 from + http://svn.asterisk.org/svn/asterisk/branches/12 - This patch merely reformats and cleans up a bit of the jitterbuffer - documentation for the wiki. - ........ +2014-11-20 16:13 +0000 [r428343] Jonathan Rose - Merged revisions 420639 from http://svn.asterisk.org/svn/asterisk/branches/13 + * res/res_pjsip_acl.c, /: PJSIP ACLs: Fix ACLs not loading on + startup and apply/acl issues on contact The biggest problem this + patch fixes is that ACLs weren't previously being loaded when the + res_pjsip_acl module was loaded. Yikes. In addition, the ACL + options contact_permit and contact_acl were effectively + interpreted as contact_deny and this patch fixes that as well. + AST-1418 #close Reported by: Thomas Thompson Review: + https://reviewboard.asterisk.org/r/4120/ ASTERISK-24531 #close + Reported by: Matt Jordan Review: + https://reviewboard.asterisk.org/r/4171/ ........ Merged + revisions 428333 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-20 15:50 +0000 [r428339] Kevin Harwell + + * apps/app_confbridge.c, /: AST-2014-017 - app_confbridge: + permission escalation/ class authorization. Confbridge dialplan + function permission escalation via AMI and inappropriate class + authorization on the ConfbridgeStartRecord action. The CONFBRIDGE + dialplan function when executed from an external protocol (for + instance AMI), could result in a privilege escalation. Also, the + AMI action “ConfbridgeStartRecord” could also be used to execute + arbitrary system commands without first checking for system + access. Asterisk now inhibits the CONFBRIDGE function from being + executed from an external interface if the live_dangerously + option is set to no. Also, the “ConfbridgeStartRecord” AMI action + is now only allowed to execute under a user with system level + access. ASTERISK-24490 Reported by: Gareth Palmer ........ Merged + revisions 428332 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428334 from + http://svn.asterisk.org/svn/asterisk/branches/12 +2014-11-20 14:55 +0000 [r428302-428305] Joshua Colp - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420640 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * res/res_pjsip_refer.c, /: AST-2014-016: Fix crash when receiving + an in-dialog INVITE with Replaces in res_pjsip_refer. The + implementation of INVITE with Replaces in res_pjsip_refer did not + expect them to occur in-dialog. As a result it would incorrectly + attempt to hang up a channel it thought was under its control. In + reality the channel would be under the control of another thread. + When the other thread accessed the channel it would be accessing + freed memory and could crash. This change makes res_pjsip_refer + not act on an in-dialog INVITE with Replaces. ASTERISK-24528 + #close Reported by: Joshua Colp ........ Merged revisions 428304 + from http://svn.asterisk.org/svn/asterisk/branches/12 -2014-08-10 19:14 +0000 [add46fd27c] Michael K (License 6621) + * channels/chan_pjsip.c, /: AST-2014-015: Fix race condition in + chan_pjsip when sending responses after a CANCEL has been + received. Due to the serialized architecture of chan_pjsip there + exists a race condition where a CANCEL may be received and + processed before responses (such as 180 Ringing, 183 Session + Progress, and 200 OK) are sent. Since the session is in an + unexpected state PJSIP will assert when this is attempted. This + change makes it so that these responses are not sent on + disconnected sessions. ASTERISK-24471 #close Reported by: yaron + nahum ........ Merged revisions 428301 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-19 19:31 +0000 [r428273] Corey Farrell + + * include/asterisk/stringfields.h, /: stringfields: Fix bug in + ast_string_fields_copy. ast_string_fields_copy relies on the fact + that __ast_string_field_release_active never previously zeroed + pool->used, so keeping the existing pointer was "ok". Now that + existing pools can be reset to 'empty', it is important to set + each field to __ast_string_field_empty after releasing the + memory. ASTERISK-24535 #close Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4186/ ........ Merged + revisions 428272 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-19 17:13 +0000 [r428246] Richard Mudgett + + * res/res_calendar.c, main/manager.c, /, channels/chan_sip.c, + channels/sip/security_events.c: ast_str: Fix improper member + access to struct ast_str members. Accessing members of struct + ast_str outside of the string manipulation API routines is + invalid since struct ast_str is supposed to be treated as opaque. + Review: https://reviewboard.asterisk.org/r/4194/ ........ Merged + revisions 428244 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428245 from + http://svn.asterisk.org/svn/asterisk/branches/12 - * app_queue: Add RealTime support for queue rules +2014-11-19 12:40 +0000 [r428196-428222] Joshua Colp - This patch gives the optional ability to keep queue rules in RealTime. It is - important to note that with this patch: - (a) Queue rules in RealTime are only examined on module load/reload - (b) Queue rules are loaded both from the queuerules.conf file as well as the - RealTime backend - To inform app_queue to examine RealTime for queue rules, a new setting has been - added to queuerules.conf's general section "realtime_rules". RealTime queue - rules will only be used when this setting is set to "yes". + * res/res_pjsip_session.c, include/asterisk/res_pjsip.h, + include/asterisk/res_pjsip_session.h, res/res_pjsip_sdp_rtp.c, + res/res_pjsip/pjsip_configuration.c, + configs/samples/pjsip.conf.sample, + contrib/ast-db-manage/config/versions/eb88a14f2a_add_media_encryption_optimistic_to_pjsip.py + (added), CHANGES, res/res_pjsip.c: res_pjsip_sdp_rtp: Add support + for optimistic SRTP. Optimistic SRTP is the ability to enable + SRTP but not have it be a fatal requirement. If SRTP can be used + it will be, if not it won't be. This gives you a better chance of + using it without having your sessions fail when it can't be. + Encrypt all the things! Review: + https://reviewboard.asterisk.org/r/3992/ + + * res/res_pjsip_refer.c, /: res_pjsip_refer: Ensure Refer-To is + NULL terminated and parse it as a URI. There is no guarantee that + when we get a Refer-To that it will be NULL terminated. As the + URI parsing function requires it to be we now NULL terminate it. + Additionally parsing the Refer-To as a 'To' header is needless + and it can simply be done as a URI. This also fixes a problem + where certain Refer-To headers would not be parsed as a 'To' + header causing the REFER to fail. ASTERISK-24508 #close Reported + by: Beppo Mazzucato Review: + https://reviewboard.asterisk.org/r/4187/ ........ Merged + revisions 428195 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-18 18:54 +0000 [r428169] Richard Mudgett + + * /, res/parking/parking_tests.c: parking_tests.c: Add missing + newline on a unit test message. ........ Merged revisions 428168 + from http://svn.asterisk.org/svn/asterisk/branches/12 - The schema for the database table supports a rule_name, time, min_penalty, and - max_penalty columns. min_penalty and max_penalty can be relative, if a '-' or - '+' literal is provided. Otherwise, the penalties are treated as constants. +2014-11-17 16:51 +0000 [r428145] Mark Michelson - For example: - rule_name, time, min_penalty, max_penalty - 'default', '10', '20', '30' - 'test2', '20', '30', '55' - 'test2', '25', '-11', '+1111' - 'test2', '400', '112', '333' - 'test3', '0', '4564', '46546' - 'test_rule', '40', '15', '50' + * CHANGES, main/features_config.c, + configs/samples/features.conf.sample, + include/asterisk/features_config.h, main/bridge_basic.c: Allow + for transferer to retry when dialing an invalid extension. This + allows for a configurable number of attempts for a transferer to + dial an extension to transfer the call to. For Asterisk 13, the + default values are such that upgrading between versions will not + cause a behaivour change. For trunk, though, the defaults will be + changed to be more user-friendly. Review: + https://reviewboard.asterisk.org/r/4167 + +2014-11-17 16:00 +0000 [r428119] Corey Farrell + + * /, channels/chan_sip.c: chan_sip: Fix theoretical leak of + p->refer. If transmit_refer is called when p->refer is already + allocated, it leaks the previous allocation. Updated code to + always free previous allocation during a new allocation. Also + instead of checking if we have a previous allocation, always + create a clean record. ASTERISK-15242 #close Reported by: David + Woolley Review: https://reviewboard.asterisk.org/r/4160/ ........ + Merged revisions 428117 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428118 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-17 15:27 +0000 [r428079-428115] Matthew Jordan + + * /, apps/confbridge/conf_state_multi_marked.c: + apps/app_confbridge: Ensure 'normal' users hear message when last + marked leaves When r428077 was made for ASTERISK-24522, it failed + to take into account users who are neither wait_marked nor + end_marked. These users are *also* supposed to hear the 'leader + has left the conference' message. Granted, this behaviour is a + bit odd; however, that is how it used to work... and behaviour + changes are not good. This patch ensures that if there are any + 'normal' users present when the last marked user leaves the + conference, the message will still be played to them. Note that + this regression was caught by the Asterisk Test Suite's + confbridge_nominal test, which has a quirky combination of users. + ........ Merged revisions 428113 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428114 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, apps/confbridge/conf_state_multi_marked.c: app_confbridge: + Don't play leader leaving prompt if no one will hear it Consider + the following: - A marked user in a conference - One or more + end_marked only users in the conference When the marked users + leaves, we will be in the conf_state_multi_marked state. This + currently will traverse the users, kicking out any who have the + end_marked flags. When they are kicked, a full ast_bridge_remove + is immediately called on the channels. At this time, we also + unilaterally set the need_prompt flag. When the need_prompt flag + is set, we then playback a sound to the bridge informing everyone + that the leader has left; however, no one is left in the bridge. + This causes some odd behaviour for the end_marked users - they + are stuck waiting for the bridge to be unlocked. This results in + them waiting for 5 or 6 seconds of dead air before hearing that + they've been kicked. Unfortunately, we do have to keep the bridge + locked while we're playing back the 'leader-has-left' prompt. If + there are any wait_marked users in the conference, this behaviour + can't be easily changed - but we do make the case of the + end_marked users better with this patch. Review: + https://reviewboard.asterisk.org/r/4184/ ASTERISK-24522 #close + Reported by: Matt Jordan ........ Merged revisions 428077 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 428078 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-16 21:12 +0000 [r427979-428052] Joshua Colp + + * channels/chan_pjsip.c, /: chan_pjsip: Remove AOR check when + dialing and one is specified. The AOR value may contain the name + of an AOR or a full SIP URI. Checking if the AOR exists can't be + done as a result of this. ........ Merged revisions 428051 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, channels/chan_pjsip.c: chan_pjsip: Add additional log message + when an AOR is specified when dialing and it does not exist. + ASTERISK-24499 #close Reported by: Rusty Newton ........ Merged + revisions 428007 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * channels/chan_motif.c, channels/chan_pjsip.c, /: chan_motif / + chan_pjsip: Fix incorrect "No such module" messages when + reloading. For chan_motif the direct return value of the + underlying config options framework was passed back. This can + relay various states which the module loader would not interpet + as success. It has been changed so only on errors will it report + back an error. For chan_pjsip the code implemented a dummy reload + function which always returned an error. This has been removed as + all configuration is held within res_pjsip instead. + ASTERISK-23651 #close Reported by: Rusty Newton ........ Merged + revisions 427981 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Enforce + requirements for session timer minimum expiration period and + normal expiration period. This change enforces the requirements + in PJSIP for session timer configuration. The minimum expiration + period must be 90 seconds or higher and the normal expiration + period can not be lower than the minimum expiration period. If + either of these were done the code would assert at session setup + time. ASTERISK-24336 #close Reported by: Leon Rowland ........ + Merged revisions 427978 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-15 16:56 +0000 [r427927-427954] Matthew Jordan + + * cel/cel_odbc.c, /: cel/cel_odbc: Provide microsecond precision in + 'eventtime' column when possible This patch adds microsecond + precision when inserting a CEL record into a table with an + "eventtime" column of type timestamp, instead of second + precision. The documentation (configs/cel_odbc.conf.sample) was + already saying that the eventtime column included microseconds + precision, but that was not the case. Also, without this patch, + if you had a table with an "eventtime" column of type varchar, + you had millisecond precision. With this patch, you also get + microsecond precision in this case. Review: + https://reviewboard.asterisk.org/r/3980 ASTERISK-24283 #close + Reported by: Etienne Lessard patches: + cel_odbc_time_precision.patch uploaded by Etienne Lessard + (License 6394) ........ Merged revisions 427952 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427953 from + http://svn.asterisk.org/svn/asterisk/branches/12 - which would result in : + * tests/test_cel.c: tests/test_cel: Unlock bridge on off nominal + paths If the test fails due to memory allocation errors, we may + as well attempt to unlock the bridge on the way out. - Rule: default - - After 10 seconds, adjust QUEUE_MAX_PENALTY to 30 and adjust - QUEUE_MIN_PENALTY to 20 - Rule: test2 - - After 20 seconds, adjust QUEUE_MAX_PENALTY to 55 and adjust - QUEUE_MIN_PENALTY to 30 - - After 25 seconds, adjust QUEUE_MAX_PENALTY by 1111 and adjust - QUEUE_MIN_PENALTY by -11 - - After 400 seconds, adjust QUEUE_MAX_PENALTY to 333 and adjust - QUEUE_MIN_PENALTY to 112 - Rule: test3 - - After 0 seconds, adjust QUEUE_MAX_PENALTY to 46546 and adjust - QUEUE_MIN_PENALTY to 4564 - Rule: test_rule - - After 40 seconds, adjust QUEUE_MAX_PENALTY to 50 and adjust - QUEUE_MIN_PENALTY to 15 +2014-11-14 17:45 +0000 [r427902] Jonathan Rose - If you use RealTime, the queue rules will be always reloaded on a module - reload, even if the underlying file did not change. With the option disabled, - the rules will only be reloaded if the file was modified. + * configs/samples/cdr.conf.sample, main/cdr.c, /: Documentation: + Revise explanation of cdr.conf option 'Unanswered' ASTERISK-24279 + #close Reported by: Matt Jordan Review: + https://reviewboard.asterisk.org/r/4109/ ........ Merged + revisions 427901 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Review: https://reviewboard.asterisk.org/r/3607/ +2014-11-14 15:51 +0000 [r427876] Scott Griepentrog - ASTERISK-23823 #close - Reported by: Michael K - patches: - app_queue.c_realtime_trunk.patch uploaded by Michael K (License 6621) - ........ + * /, main/stun.c: stun: correct attribute string padding to match + rfc When sending the USERNAME attribute in an RTP STUN response, + the implementation in append_attr_string passed the actual + length, instead of padding it up to a multiple of four bytes as + required by the RFC 3489. This change adds separate variables for + the string and padded attributed lengths, and performs padding + correctly. Reported by: Thomas Arimont Review: + https://reviewboard.asterisk.org/r/4139/ ........ Merged + revisions 427874 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427875 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420624 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-11-14 15:24 +0000 [r427870] Mark Michelson + * main/bridge.c, main/bridge_basic.c, + include/asterisk/stasis_bridges.h, tests/test_cel.c, + apps/app_queue.c, main/cel.c, main/stasis_bridges.c, /, + res/stasis/app.c: Fix race condition that could result in ARI + transfer messages not being sent. From reviewboard: "During blind + transfer testing, it was noticed that tests were failing + occasionally because the ARI blind transfer event was not being + sent. After investigating, I detected a race condition in the + blind transfer code. When blind transferring a single channel, + the actual transfer operation (i.e. removing the transferee from + the bridge and directing them to the proper dialplan location) is + queued onto the transferee bridge channel. After queuing the + transfer operation, the blind transfer Stasis message is + published. At the time of publication, snapshots of the channels + and bridge involved are created. The ARI subscriber to the blind + transfer Stasis message then attempts to determine if the bridge + or any of the involved channels are subscribed to by ARI + applications. If so, then the blind transfer message is sent to + the applications. The way that the ARI blind transfer message + handler works is to first see if the transferer channel is + subscribed to. If not, then iterate over all the channel IDs in + the bridge snapshot and determine if any of those are subscribed + to. In the test we were running, the lone transferee channel was + subscribed to, so an ARI event should have been sent to our + application. Occasionally, though, the bridge snapshot did not + have any channels IDs on it at all. Why? The problem is that + since the blind transfer operation is handled by a separate + thread, it is possible that the transfer will have completed and + the channels removed from the bridge before we publish the blind + transfer Stasis message. Since the blind transfer has completed, + the bridge on which the transfer occurred no longer has any + channels on it, so the resulting bridge snapshot has no channels + on it. Through investigation of the code, I found that attended + transfers can have this issue too for the case where a transferee + is transferred to an application." The fix employed here is to + decouple the creation of snapshots for the transfer messages from + the publication of the transfer messages. This way, snapshots can + be created to reflect what they are at the time of the transfer + operation. Review: https://reviewboard.asterisk.org/r/4135 + ........ Merged revisions 427848 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-14 14:56 +0000 [r427846] Joshua Colp + + * /, apps/confbridge/conf_state_multi_marked.c: app_confbridge: + Play "leader has left" sound even when musiconhold is enabled. + Currently if the leader of a conference bridge leaves any + participant that has musiconhold enabled will not hear the + "leader has left" sound. This is because musiconhold is started + and THEN the sound is played. This change makes it so that the + sound is played and THEN musiconhold is started. This provides a + better experience for users as they may not have known previously + why they went back to musiconhold. Review: + https://reviewboard.asterisk.org/r/4177/ ........ Merged + revisions 427844 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427845 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420625 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-11-14 14:24 +0000 [r427841] Mark Michelson -2014-08-10 17:02 +0000 [f7bb772804] Matt Jordan + * res/res_pjsip.c, res/res_pjsip_pubsub.c, res/res_pjsip_session.c, + include/asterisk/res_pjsip.h: Fix race condition where duplicated + requests may be handled by multiple threads. This is the Asterisk + 13 version of the patch. The main difference is in the pubsub + code since it was completely refactored between Asterisk 12 and + 13. Review: https://reviewboard.asterisk.org/r/4175 - * Update CHANGES file - ........ +2014-11-13 22:03 +0000 [r427815] Kevin Harwell - Merged revisions 420609 from http://svn.asterisk.org/svn/asterisk/branches/13 + * /, res/res_pjsip_outbound_registration.c: res_pjsip_exten_state: + PJSIPShowSubscriptionsInbound causes crash When using a + non-default sorcery wizard (in this instance realtime) for + outbound registrations and after adding in an appropriate call to + ast_sorcery_apply_config() (since it is missing) Asterisk will + crash after a stack overflow occurs due to the code infinitely + recursing. The fix entails removing the outbound registration + state dependency from the outbound registration sorcery object + and instead keeping an in memory container that can be used to + lookup the state when needed. ASTERISK-24514 Reported by: Mark + Michelson Review: https://reviewboard.asterisk.org/r/4164/ + ........ Merged revisions 427814 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-13 15:44 +0000 [r427789] Kinsey Moore + + * include/asterisk/stasis.h, include/asterisk/stasis_app.h, + res/stasis/app.h, res/res_stasis.c, /, res/stasis/app.c, + res/stasis/stasis_bridge.c: Stasis: Fix StasisEnd message + ordering This change corrects message ordering in cases where a + channel-related message can be received after a Stasis/ARI + application has received the StasisEnd message. The StasisEnd + message was being passed to applications directly without waiting + for the channel topic to empty. As a result of this fix, other + bugs were also identified and fixed: * StasisStart messages were + also being sent directly to apps and are now routed through the + stasis message bus properly * Masquerade monitor datastores were + being removed at the incorrect time in some cases and were + causing StasisEnd messages to not be sent * General refactoring + where necessary for the above * Unsubscription on StasisEnd + timing changes to prevent additional messages from following the + StasisEnd when they shouldn't A channel sanitization function + pointer was added to reduce processing and AO2 lookups. Review: + https://reviewboard.asterisk.org/r/4163/ ASTERISK-24501 #close + Reported by: Matt Jordan ........ Merged revisions 427788 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-13 00:00 +0000 [r427763] Matthew Jordan + + * main/rtp_engine.c, /: main/rtp_engine: Fix crash when processing + more than one RTCP report info block Asterisk - in + res_rtp_asterisk - only understands a single RTCP report info + block. When the RTCP information was refactored in the RTP Engine + to be pushed over the Stasis message bus, I put in the hooks into + the engine to handle multiple RTCP report info blocks, in the + hope that a future RTP implementation would be able to provide + that data. Unfortunately, res_rtp_asterisk has a tendency to + "lie": (1) It will send RTCP reports with a + reception_report_count greater than 1 (which is pulled directly + from the RTCP packet itself, so that part is correct) (2) It will + only provide a single report block When the rtp_engine goes to + convert this to a JSON blob, hilarity ensues as it looks for a + report block that doesn't exist. This patch updates the + rtp_engine to be a bit more skeptical about what it is presented + with. While this could also be fixed in res_rtp_asterisk, this + patch prefers to fix it in the engine for two reasons: (1) The + engine is designed to work with multiple RTP implementation, and + hence having it be more robust is a good thing (tm) (2) + res_rtp_asterisk's handling of RTCP information is "fun". It + should report the correct reception_report_count; ideally it + should also be giving us all of the blocks - but it is + *definitely* not designed to do that. Going down that road is a + non-trivial effort. Review: + https://reviewboard.asterisk.org/r/4158/ ASTERISK-24489 #close + Reported by: Gregory Malsack Tested by: Gregory Malsack + ASTERISK-24498 #close Reported by: Beppo Mazzucato Tested by: + Beppo Maazucato ........ Merged revisions 427762 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-12 20:39 +0000 [r427737] Corey Farrell + + * /, main/features.c: Fix leak in AMI Action Bridge Add missing + reference cleanup for newly created bridge. ASTERISK-24281 + Reported by: Stefan Engström Review: + https://reviewboard.asterisk.org/r/4154/ ........ Merged + revisions 427736 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-12 16:12 +0000 [r427711] Joshua Colp + + * main/pbx.c, /: pbx: Fix off-nominal case where a freed extension + may still be used. If during the operation of adding an extension + a priority is added but fails it is possible for the extension to + be freed but still exist in the PBX core. If this occurs + subsequent lookups may try to access the extension and end up in + freed memory. This change removes the extension from the PBX core + when the priority addition fails and then frees the extension. + ASTERISK-24444 #close Reported by: Leandro Dardini Review: + https://reviewboard.asterisk.org/r/4162/ ........ Merged + revisions 427709 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427710 from + http://svn.asterisk.org/svn/asterisk/branches/12 +2014-11-12 13:46 +0000 [r427684] Corey Farrell - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420610 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * codecs/ilbc, /, tests, codecs/speex, apps/confbridge, + Makefile.rules: Fix compiler error when using ./configure + --enable-dev-mode --enable-coverage When DONT_OPTIMIZE is enabled + with dev-mode, it causes a shadow compilation to be done with + output to /dev/null. This can cause errors with coverage when GCC + attempts to write to /dev/null.gcno. This change disables + coverage for the shadow compilation. ASTERISK-24502 #close + Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4151/ ........ Merged + revisions 427682 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427683 from + http://svn.asterisk.org/svn/asterisk/branches/12 -2014-08-10 16:35 +0000 [455243cdd4] Matt Jordan +2014-11-09 08:00 +0000 [r427643] Corey Farrell - * Update UPGRADE-13.txt file + * main/manager.c, /: manager: Fix HTTP connection reference leaks. + Fix reference leak that happens if (session && !blastaway). + ASTERISK-24505 #close Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4153/ ........ Merged + revisions 427641 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427642 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420608 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-11-09 00:38 +0000 [r427583-427615] Matthew Jordan -2014-08-08 15:08 +0000 [3e452fa4d9] Jason Parker + * channels/chan_mgcp.c, /: channels/chan_mgcp: Fix regression which + causes gateways to be skipped In r227276, a while loop was turned + into a for loop. Unfortunately, a portion of the while loop was + left in the code such that, when a static gateway is encountered + in the list of MGCP gateways, the next gateway would be skipped. + At best, we would simply flip past a gateway; at worst, this + could lead to a crash. ASTERISK-24500 #close Reported by: Xavier + Hienne patches: chan_mgcp.patch uploaded by Xavier Hienne + (License 6657) ........ Merged revisions 427613 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427614 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, addons/chan_mobile.c: addons/chan_mobile: Increase buffer size + of UCS2 encoded SMS messages When UCS2 character encoding is + used, one symbol in national language can be expanded to 4 bytes. + The current buffer used for receiving message in do_monitor_phone + is 256 bytes, which is not large enough for incoming messages. + For example: * AT+CMGR phone response prefix '+CMGR: "REC + UNREAD","+7**********",,"14/10/29,13:31:39+12"\r\n' - 60 bytes * + SMS body with UCS2 encoding (max) - 280 bytes * AT+CMGR phone + response suffix '\r\n\r\nOK\r\n' - 8 bytes * Terminating null + character - 1 byte This results in a needed buffer size of 349 + bytes. Hence, this patch opts for a 350 byte buffer. + ASTERISK-24468 #close Reported by: Dmitriy Bubnov patches: + chan_mobile-1_8.diff uploaded by Dmitriy Bubnov (License 6651) + chan_mobile-trunk.diff uploaded by Dmitry Bubnov (License 6651) + ........ Merged revisions 427607 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427610 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * apps/app_voicemail.c: app_voicemail: Fix enhancement that allowed + multiple recipients in To: header An issue existed in r420577, + which added multiple recipients to voicemail emails. The patch, + when looking at the intended recipients, looked ahead for the '|' + character inside a while loop which already had pulled out the + appropriate field parsing on the '|' character. This would cause + it to skip the recipients. This patch fixes it such that it + relies completely on the while loop to parse through the e-mail + fields. Note that the original author of the patch looked at this + fix and approved it. ASTERISK-24250 #close Reported by: abelbeck + patches: voicemail-420577-to-comma-fix.diff uploaded by abelbeck + (License 5903) + + * /, bridges/bridge_native_rtp.c: bridge_native_rtp: Fix T.38 + issues with remote bridges After r425242 the + fax/sip/directmedia_reinvite_t38 test started failing due to the + surviving channel not being re-INVITEd back from T.38 to audio. + This patch fixes that bug - a deeper explanation of what happened + follows. When two RTP channels are in a native bridge, the + bridging layer will investigate each via the get_rtp_info glue + callback. This callback returns the native bridge preference of + the channel *at that moment in time* (that part is key). At + different points during the bridging, the native bridging layer + will inform the RTP capable channels of the status of the bridge + via the update_peer glue callback. In a T.38 scenario with audio + direct media, the sequence of events will often look like the + following: * SIP/A and SIP/B both have audio and enter a native + bridge. * Asterisk re-INVITEs audio between SIP/A and SIP/B + directly (via an update_peer callback). * SIP/A sends a re-INVITE + to T.38, which causes Asterisk to send a re-INVITE to T.38 to + SIP/B. Assuming everyone 200 OKs the process, the UDPTL stack + receives UDPTL packets in Asterisk from both endpoints. From the + perspective of the channels, we are now in a local bridge for + T.38, even though we are technically still in a remote bridge in + bridge_native_rtp. (YAY!) * When one side hangs up, + bridge_native_rtp is told to stop bridging. It then re-evaluates + the channels and asks them how they are bridged - and since T.38 + is enabled, they reply with a Local bridge (which is correct), + but is wrong because the audio portion is still technically in a + remote bridge. * Asterisk releases the surviving channel, whose + audio is *not* re-INVITED back to Asterisk as bridge_native_rtp + incorrectly assumes that it was in a local bridge. Ironically, + prior to r425242, this used to work mostly due to a fluke in the + bridging layer. The purpose of the get_rtp_info callback + shouldn't be modified: it should tell the bridging layer what + kind of bridge the channel prefers at that moment in time. If you + have T.38 enabled, that *must* be a local bridge, as the UDPTPL + stack must be in the media path. As such, this patch does not + modify that part of the code. However, we have to tell the + channels to re-evaluate themselves when they come out of a native + bridge, since we can no longer trust the get_rtp_info callbacks + when the native bridge is being stopped. Something else may have + changed in the channels, and they may now be lying to us. As + such, this patch makes it so that we unilaterally tell the + channels that they are no longer bridged via the update_peer + callback. This is actually what the channels expect anyway: code + in both chan_sip and chan_pjsip's callbacks look at the T.38 + state and - if they were in T.38 - send a re-INVITE to get the + audio back to Asterisk. Review: + https://reviewboard.asterisk.org/r/4157/ ........ Merged + revisions 427582 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-08 18:17 +0000 [r427557] Corey Farrell + + * /, channels/chan_console.c: chan_console: Fix reference leaks to + pvt. Fix a bunch of calls to get_active_pvt where the reference + is never released. ASTERISK-24504 #close Reported by: Corey + Farrell Review: https://reviewboard.asterisk.org/r/4152/ ........ + Merged revisions 427554 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427555 from + http://svn.asterisk.org/svn/asterisk/branches/12 - * Fix build in devmode. - ........ +2014-11-06 19:22 +0000 [r427494-427512] Richard Mudgett - Merged revisions 420592 from http://svn.asterisk.org/svn/asterisk/branches/13 + * apps/app_agent_pool.c, /: app_agent_pool: Made agent alert + interruptable by DTMF. Made agent able to interrupt the alerting + beep playback with DTMF. Any digit can interrupt if the call does + not need to be acknowledged. Only the first digit of the + acknowledgement can interrupt if the call needs to be + acknowledged. The agent interrupting the alerting playback builds + on the ASTERISK-24447 patch because it knows what digit + interrupted the playback and needs to be able to pass that digit + to the DTMF hook digit collection code. ASTERISK-24257 #close + Reported by: Steve Pitts Review: + https://reviewboard.asterisk.org/r/4123/ ........ Merged + revisions 427508 from + http://svn.asterisk.org/svn/asterisk/branches/12 + * /, include/asterisk/bridge_channel.h, main/bridge_channel.c: + Bridge DTMF hooks: Made audio pass from the bridge while waiting + for more matching digits. * Made collecting DTMF digits for the + DTMF feature hooks pass frames from the bridge. * Made collecting + DTMF digits possible by other bridge hooks if there is a need. + ASTERISK-24447 #close Reported by: Richard Mudgett Review: + https://reviewboard.asterisk.org/r/4123/ ........ Merged + revisions 427493 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-06 18:20 +0000 [r427491] Joshua Colp + + * /, res/res_pjsip/pjsip_distributor.c: res_pjsip: Ensure in-dialog + responses have an endpoint associated. When handling incoming + messages we determine if it is associated with a dialog. If so we + use that to determine what serializer and endpoint to use for the + message. Previously this would pass the endpoint to the endpoint + lookup module to actually place the endpoint completely on the + message. For in-dialog responses, however, this did not occur as + dialog processing took over and the endpoint lookup did not + occur. This change just places the endpoint in the expected spot + immediately instead of relying on the endpoint lookup module. + In-dialog responses thus have the expected endpoint. AST-1459 + #close Review: https://reviewboard.asterisk.org/r/4146/ ........ + Merged revisions 427490 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420593 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-11-06 12:13 +0000 [r427384-427466] Corey Farrell -2014-08-08 14:16 +0000 [5ce4ad8031] Jason Parker + * main/file.c, /: main/file.c: fix possible extra ast_module_unref + to format modules. fn_wrapper only adds a reference to the + format's module if the file was able to be opened. If not this + causes an unmatched ast_module_unref in filestream_destructor. + Move ast_module_ref to get_stream. ASTERISK-24492 #close Reported + by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4149/ ........ Merged + revisions 427464 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427465 from + http://svn.asterisk.org/svn/asterisk/branches/12 - * app_voicemail: Add the ability to specify multiple email addresses. + * res/res_hep.c, /: res_hep: fix major leak that occurs when config + is missing or enabled=no. Add missing unreference in + hepv3_send_packet. ASTERISK-24491 #close Reported by: Zane Conkle + Tested by: Zane Conkle Review: + https://reviewboard.asterisk.org/r/4150/ ........ Merged + revisions 427400 from + http://svn.asterisk.org/svn/asterisk/branches/12 - ASTERISK-24045 - Reported by: Jacob Barber - Review: https://reviewboard.asterisk.org/r/3833/ - ........ + * /, main/utils.c, include/asterisk/stringfields.h: Fix unintential + memory retention in stringfields. * Fix missing / unreachable + calls to __ast_string_field_release_active. * Reset pool->used to + zero when the current pool->active reaches zero. ASTERISK-24307 + #close Reported by: Etienne Lessard Tested by: ibercom, Etienne + Lessard Review: https://reviewboard.asterisk.org/r/4114/ ........ + Merged revisions 427380 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 427381 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427382 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420577 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-11-06 02:37 +0000 [r427356] George Joseph + * tests/test_strings.c, /: test_strings: Remove string tests that + exercise asserts. Since unit tests are run with DO_CRASH, those + tests were causing the test to fail. Tested-by: George Joseph + ........ Merged revisions 427354 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427355 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-05 19:52 +0000 [r427334] Mark Michelson + + * res/res_pjsip/config_system.c, configs/samples/pjsip.conf.sample, + res/res_pjsip.c: Make the disable_tcp_switch PJSIP system object + enabled by default. Testing has shown repeatedly that PJSIP's + default behavior of switching automatically to TCP for large + messages can cause issues. The most common issues are that + devices that we are communicating with do not handle the switch + to TCP gracefully, thus causing situations such as broken calls + or broken subscriptions. Now, in order to have this behavior + happen, you must opt into it. The sample file has been updated to + warn that enabling the TCP switch behavior may cause issues for + you, so use at your own risk. + +2014-11-05 12:18 +0000 [r427303] Joshua Colp + + * res/res_pjsip_multihomed.c, /: res_pjsip_multihomed: Add logging + during startup to aid debugging if local DNS is misbehaving. This + change adds a bit of logging so if the local DNS is misbehaving + it is easier to track down what is going on and where Asterisk + may be hanging. ASTERISK-24438 #close Reported by: Melissa + Shepherd Review: https://reviewboard.asterisk.org/r/4148/ + ........ Merged revisions 427300 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-05 00:15 +0000 [r427228-427276] George Joseph + + * pbx/pbx_config.c, main/config.c, tests/test_strings.c, + include/asterisk/utils.h, /, main/utils.c: config: Make + text_file_save and 'dialplan save' escape semicolons in values. + When a config file is read, an unescaped semicolon signals + comments which are stripped from the value before it's stored. + Escaped semicolons are then unescaped and become part of the + value. Both of these behaviors are normal and expected. When the + config is serialized either by 'dialplan save' or + AMI/UpdateConfig however, the now unescaped semicolons are + written as-is. If you actually reload the file just saved, the + unescaped semicolons are now treated as start of comments. Since + true comments are stripped on read, any semicolons in + ast_variable.value must have been escaped originally. This patch + re-escapes semicolons in ast_variable.values before they're + written to file either by 'dialplan save' or + config/ast_config_text_file_save which is called by + AMI/UpdateConfig. I also fixed a few pre-existing formatting + issues nearby in pbx_config.c Tested-by: George Joseph + ASTERISK-20127 #close Review: + https://reviewboard.asterisk.org/r/4132/ ........ Merged + revisions 427275 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * main/config.c, /: config: BUG: Restore ability for non-templ to + be used as base objs in config. My recent refactor of config.c + accidentally removed the capability for an object to inherit from + a non-template object. This patch restores the capability to + inherit from both template and non-template objects. Tested-by: + George Joseph Reported-by: Scott Griepentrog ASTERISK-24487 + #close Review: https://reviewboard.asterisk.org/r/4147/ ........ + Merged revisions 427227 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-11-04 19:44 +0000 [r427181-427204] Corey Farrell + + * funcs/func_talkdetect.c, /: func_talkdetect: Fix stasis message + leak in audiohook callback. ASTERISK-24482 #close Reported by: + Corey Farrell Review: https://reviewboard.asterisk.org/r/4142/ + ........ Merged revisions 427203 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, res/res_http_websocket.c: res_http_websockets: Fix extra unref + of module In websocket_add_protocol_internal is used to add the + "echo" protocol, but ast_websocket_remove_protocol is used to + remove it. This causes an extra call to ast_module_unref. + ASTERISK-24480 #close Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4140/ ........ Merged + revisions 427200 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * main/app.c: Fix crash caused by merge error on review 4138 When + merging from 12 to 13 there were conflicts, I mistakenly had the + loop run ast_closestream(others[0]) when it should be + ast_closestream(others[x]). + +2014-11-03 18:15 +0000 [r427130] Richard Mudgett + + * /, res/res_pjsip/config_system.c, UPGRADE.txt, + configs/samples/pjsip.conf.sample, res/res_pjsip.c: res_pjsip: + Add disable_tcp_switch option. When a packet exceeds the MTU, + pjproject will switch from UDP to TCP. In some circumstances (on + some networks), this can cause some issues with messages not + getting sent to the correct destination - and can also cause + connections to get dropped due to quirks in pjproject deciding to + terminate TCP connections with no messages. While fixing the + routing/messaging issues is important, having a configuration + option in Asterisk that tells pjproject to not switch over to TCP + would be useful. That way, if some glitch is discovered on some + other network/site, we can at least disable the behavior until a + fix is put into place. AFS-197 #close Review: + https://reviewboard.asterisk.org/r/4137/ ........ Merged + revisions 427129 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420578 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-11-03 02:34 +0000 [r427021-427089] Corey Farrell -2014-08-08 12:53 +0000 [91f7b66183] Matt Jordan + * apps/app_voicemail.c, /: Fix compile error caused by review 4138 + There is no procedure called ast_closeframe, fix code to use + ast_closestream. Reported By: Matt Jordan ........ Merged + revisions 427087 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427088 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * main/app.c, apps/app_voicemail.c, /: Fix ast_writestream leaks + Fix cleanup in __ast_play_and_record where others[x] may be + leaked. This was caught where prepend != NULL && outmsg != NULL, + once realfile[x] == NULL any further others[x] would be leaked. A + cleanup block was also added for prepend != NULL && outmsg == + NULL. 11+: Fix leak of ast_writestream recording_fs in + app_voicemail:leave_voicemail. ASTERISK-24476 #close Reported by: + Corey Farrell Review: https://reviewboard.asterisk.org/r/4138/ + ........ Merged revisions 427023 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 427024 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427025 from + http://svn.asterisk.org/svn/asterisk/branches/12 - * chan_sip: Mark chan_sip and its files as extended support - ........ + * /, main/abstract_jb.c: func_jitterbuffer: fix frame leaks. Fix + code paths where it is possible for frames to leak. Fix + uninitialized variable in jb_get_fixed and jb_get_adaptive. + ASTERISK-22409 #related Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4128/ ........ Merged + revisions 427019 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 427020 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420562 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-11-02 01:01 +0000 [r426996] Matthew Jordan + * /, res/res_stasis.c: res/res_stasis: Fix crash on module unload + while performing operation When the res_stasis module is + unloaded, it will dispose of the apps_registry container. This is + a problem if an ARI operation is in flight that attempts to use + the registry, as the shutdown occurs in a separate thread. This + patch adds some sanity checks to the various routines that access + the registry which cause the operations to fail if the + apps_registry does not exist. Crash caught by the Asterisk Test + Suite. ........ Merged revisions 426995 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420563 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-10-31 16:50 +0000 [r426934] Tzafrir Cohen -2014-08-08 07:40 +0000 [86e927a714] Matt Jordan + * Makefile, /: install init.d files on GNU/kFreeBSD Review: + https://reviewboard.asterisk.org/r/4118/ ........ Merged + revisions 426926 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 426927 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426933 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-10-31 16:40 +0000 [r426924-426930] Scott Griepentrog + + * /, configs/samples/pjsip.conf.sample, res/res_pjsip.c: pjsip: + clarify tls cert and key file usage A question arose as to + whether a .pem file could be provided in place of the .crt and + .key files in a PJSIP TLS configuration. I tested this and + discovered that although a cert will be read from the pem file, a + key will not, and thus the priv_key_file entry is still required. + This update to the fine documentation clarifies the option usage. + AST-1448 #close Review: https://reviewboard.asterisk.org/r/4129/ + Reported by: John Bigelow ........ Merged revisions 426928 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, res/res_pjsip_outbound_registration.c: pjsip: Handle outbound + unregister correctly This updates the status of the outbound + registration to reflect when it has been unregistered. Since the + registration is unregistered but is not stopped, the registration + schedule remains active as before. The patch also updates the + documentation of both the AMI and CLI commands. ASTERISK-24411 + #close Review: https://reviewboard.asterisk.org/r/4119/ Reported + by: John Bigelow patches: unregister-patch1.txt uploaded by John + Bigelow (License 5091) ........ Merged revisions 426923 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-10-31 03:26 +0000 [r426865] Matthew Jordan + + * /, channels/sip/reqresp_parser.c, + channels/sip/include/reqresp_parser.h: + channels/sip/reqresp_parser: Fix unit tests for r426594 When + r426594 was made, it did not take into account a unit test that + verified that the function properly populated the unsupported + buffer. The function would previously memset the buffer if it + detected it had any contents; since this function can now be + called iteratively on successive headers, the unit tests would + now fail. This patch updates the unit tests to reset the buffer + themselves between successive calls, and updates the + documentation of the function to note that this is now required. + ........ Merged revisions 426858 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 426860 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426863 from + http://svn.asterisk.org/svn/asterisk/branches/12 - * make_ari_stubs: Update wiki prefix to '13' - ........ +2014-10-31 03:08 +0000 [r426803-426833] Corey Farrell - Merged revisions 420538 from http://svn.asterisk.org/svn/asterisk/branches/13 + * contrib/Makefile (added), Makefile, /: REF_DEBUG: Install + refcounter.py to $(ASTDATADIR)/scripts This change ensures + refcounter.py is installed to a place where it can be found by + the Asterisk testsuite if REF_DEBUG is enabled. ASTERISK-24432 + #close Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4094/ ........ Merged + revisions 426830 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 426831 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426832 from + http://svn.asterisk.org/svn/asterisk/branches/12 + * /, apps/app_queue.c: app_queue: fix a couple leaks to struct + call_queue in set_member_value set_member_value has a couple + leaks to references in the variable q found through testsuite + tests/queues/set_penalty. Also remove the REF_DEBUG_ONLY_QUEUES + compiler declaration, this is no longer possible with the updated + REF_DEBUG code. ASTERISK-24466 #close Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4125/ ........ Merged + revisions 426805 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426806 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * main/audiohook.c: audiohooks: Clean references to formats Cleanup + references to in_translate[x].format and out_translate[x].format + in ast_audiohook_detach_list. ASTERISK-24465 #close Reported by: + Corey Farrell Review: https://reviewboard.asterisk.org/r/4124/ + +2014-10-30 21:13 +0000 [r426757-426780] Kevin Harwell + + * res/res_pjsip_exten_state.c, /: res_pjsip_exten_state: + PJSIPShowSubscriptionsInbound causes crash Currently, it is + possible for some subscriptions to get into a NULL state. When + this occurs and the PJSIPShowSubscriptionsInbound ami action is + issued and a device is subscribed for extension state then the + associated subscription state object can't be located. The code + then attempts to dereference a NULL object. Added a NULL check to + avoid the problem. Reported by: John Bigelow ........ Merged + revisions 426779 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * res/res_pjsip/pjsip_options.c, /: res_pjsip: incorrect qualify + statistics after disabling for contact When removing the + qualify_frequency from an AoR or a contact the statistics shown + when issuing "pjsip show aors" from the CLI are incorrect. This + patch deletes the contact's status object from sorcery, + disassociating it from the contact, if the qualify_freqency is + removed from configuration. ASTERISK-24462 #close Reported by: + Mark Michelson Review: https://reviewboard.asterisk.org/r/4116/ + ........ Merged revisions 426755 from + http://svn.asterisk.org/svn/asterisk/branches/12 + +2014-10-30 09:20 +0000 [r426702] Walter Doekes + + * apps/app_voicemail.c, /: app_voicemail: Fix unchecked bounds of + myArray in IMAP_STORAGE. In update_messages_by_imapuser(), + messages were appended to a finite array which resulted in a + crash when an IMAP mailbox contained more than 256 entries. This + memory is now dynamically increased as needed. Observe that this + patch adds a bunch of XXX's to questionable code. See the review + (url below) for more information. ASTERISK-24190 #close Reported + by: Nick Adams Tested by: Nick Adams Review: + https://reviewboard.asterisk.org/r/4126/ ........ Merged + revisions 426691 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 426692 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426696 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420539 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-10-30 06:09 +0000 [r426668] Igor Goncharovskiy -2014-08-08 07:38 +0000 [1f35fccda1] Matt Jordan + * channels/chan_unistim.c, /: Add additional checks for NULL + pointers to fix several crashes reported. ASTERISK-24304 #close + Reported by: dhanapathy sathya ........ Merged revisions 426666 + from http://svn.asterisk.org/svn/asterisk/branches/11 ........ + Merged revisions 426667 from + http://svn.asterisk.org/svn/asterisk/branches/12 - * res_ari_resource.c.mustache: Update template to emit module support level - ........ +2014-10-30 01:59 +0000 [r426597-426602] Matthew Jordan - Merged revisions 420536 from http://svn.asterisk.org/svn/asterisk/branches/13 + * /, channels/chan_sip.c: channels/chan_sip: Add improved support + for 4xx error codes This patch adds support for 414, 493, 479, + and a stray 400 response in REGISTER response handling. This + helps interoperability in a number of scenarios. Review: + https://reviewboard.asterisk.org/r/3437 patches: rb3437.patch + uploaded by oej (License 5267) ........ Merged revisions 426599 + from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ + Merged revisions 426600 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426601 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * channels/sip/reqresp_parser.c, /, channels/chan_sip.c: + channels/chan_sip: Support mutltiple Supported and Required + headers A SIP request may contain multiple Supported: and + Required: headers. Currently, chan_sip only parses the first + Supported/Required header it finds. This patch adds support for + multiple Supported/Required headers for INVITE requests. Review: + https://reviewboard.asterisk.org/r/2478 ASTERISK-21721 #close + Reported by: Olle Johansson patches: rb2478.patch uploaded by oej + (License 5267) ........ Merged revisions 426594 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 426595 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426596 from + http://svn.asterisk.org/svn/asterisk/branches/12 +2014-10-29 10:33 +0000 [r426570] Tzafrir Cohen - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420537 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * channels/chan_phone.c: Fix building chan_phone on big endian + systems A left over from the formats conversion (Corey Farrell). + ASTERISK-24458 #close Review: + https://reviewboard.asterisk.org/r/4117/ -2014-08-08 07:33 +0000 [008c1ad9bf] Matt Jordan +2014-10-28 21:26 +0000 [r426552] Richard Mudgett - * main/message: remove debug message - ........ + * /, bridges/bridge_builtin_features.c: bridge_builtin_features: + Add missing channel locks around + ast_get_chan_features_general_config(). The feature_automonitor() + and feature_automixmonitor() functions were not locking the + channel around ast_get_chan_features_general_config(). Accessing + the channel datastore list without the channel locked is a good + way to corrupt the list or follow the pointer chain into + oblivion. ........ Merged revisions 426531 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420533 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ +2014-10-28 21:05 +0000 [r426525-426529] Corey Farrell - Merged revisions 420534 from http://svn.asterisk.org/svn/asterisk/branches/13 + * /, res/res_fax.c: res_fax: Resolve T38 gateway frame leak. When + frames are translated by a fax gateway they need to be freed. The + existing call to ast_frfree was unreachable. This change + reorganizes fax_gateway_framehook to ensure that ast_frfree is + called when needed. ASTERISK-24457 #close Reported by: Corey + Farrell Review: https://reviewboard.asterisk.org/r/4115/ ........ + Merged revisions 426527 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426528 from + http://svn.asterisk.org/svn/asterisk/branches/12 + * main/manager.c, /: manager: Unsubscribe from acl_change_sub at + shutdown. ASTERISK-24453 #close Reported by: Corey Farrell + Review: https://reviewboard.asterisk.org/r/4110/ ........ Merged + revisions 426524 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420535 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-10-28 18:09 +0000 [r426459] mdavenport : -2014-08-07 22:07 +0000 [c94fef6f36] Kinsey Moore + * configs/samples/manager.conf.sample: ASTERISK-23512, correct + inaccurate comment in manager.conf.sample - * CEL: Update unit tests for additional information +2014-10-28 16:40 +0000 [r426368-426432] Matthew Jordan - This updates the CEL unit tests for the new information contained in - the attended transfer CEL extra field. - ........ + * /, main/bridge.c: main/bridge: Destroy features struct on off + nominal path during bridge impart When a channel is imparted to a + bridge, the invocation of the function may provide an + ast_bridge_features struct. Upon passing this to + ast_bridge_impart, the caller must assume that ownership has + passed to the function, as in all paths the function destroys the + struct prior to returning (as its purpose is to configure the + behavior of the channel while in the bridge). On one off nominal + path - where the channel already has a PBX thread - the struct + was not being destroyed. This patch fixes that glitch. + ASTERISK-24437 #close Reported by: Scott Griepentrog ........ + Merged revisions 426431 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420513 from http://svn.asterisk.org/svn/asterisk/branches/12 - ........ + * main/manager.c, /: main/manager: Fix typo in AMI event + documentation of "OriginateResponse" The parameter name is + "Response", not "Resonse". ASTERISK-24430 #close Reported by: + Dafi Ni ........ Merged revisions 426366 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426367 from + http://svn.asterisk.org/svn/asterisk/branches/12 - Merged revisions 420514 from http://svn.asterisk.org/svn/asterisk/branches/13 +2014-10-28 14:56 +0000 [r426294-426362] mdavenport : + * res/res_agi.c: ASTERISK-24323, fix bug in documentation of AGI + STREAM FILE CONTROL - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420515 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * configs/samples/extensions.conf.sample: ASTERISK-24419, fix + incorrect syntax for setting language in extensions.conf.sample -2014-08-07 20:37 +0000 [96be6b2228] Matt Jordan +2014-10-28 11:20 +0000 [r426252-426266] Corey Farrell - * Initialize svnmerge from branches/13 + * apps/app_queue.c, /: app_queue: Cleanup ao2_iterator Clean + ao2_iterator, resolving reference leak to queue members. + ASTERISK-24454 #close Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4111/ ........ Merged + revisions 426255 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426260 from + http://svn.asterisk.org/svn/asterisk/branches/12 - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420499 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * funcs/func_cdr.c: func_cdr: Fix CDR_PROP payload leak Remove + duplicate allocation of payload, preventing leak. ASTERISK-24455 + #close Reported by: Corey Farrell Review: + https://reviewboard.asterisk.org/r/4113/ -2014-08-07 20:36 +0000 [38a0df95b1] Matt Jordan +2014-10-27 17:54 +0000 [r426234] Sean Bright - * Remove 12 merge properties + * build_tools/menuselect-deps.in, configure, + include/asterisk/autoconfig.h.in, configure.ac, makeopts.in: + configure: Add autoconf check for libopus. Because opus + transcoding support cannot be included in the standard Asterisk + distribution, a few codec_opus implementations have popped up. To + make it easier for people to drop in opus support in their own + installations, this patch adds configure checks for libopus. + Review: https://reviewboard.asterisk.org/r/4106/ - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420498 65c4cc65-6c06-0410-ace0-fbb531ad65f3 +2014-10-27 02:46 +0000 [r426143-426211] Matthew Jordan -2014-08-07 20:33 +0000 [5760526f69] Matt Jordan + * res/res_http_websocket.c, /: res/res_http_websocket: Fix minor + nits found by wdoekes on r409681 When Moises committed the fixes + for WSS (which was a great patch), wdoekes had a few style nits + that were on the review that got missed. This patch resolves what + I *think* were all of the ones that were still on the review. + Thanks to both moy for the patch, and wdoekes for the reviews. + Review: https://reviewboard.asterisk.org/r/3248/ ........ Merged + revisions 426209 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426210 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * /, res/res_phoneprov.c: res/res_phoneprov: Fix crash on shutdown + caused by container cleanup In res_phoneprov, unloading the + module first destroys the http_routes container, followed by the + users. However, users may have a route in the http_routes + container; the validity of this container is not checked in the + users destructor. Hence, we hit an assert as the container has + already been set to NULL. This patch does two things: (1) It adds + a sanity check in the user destructor (because why not) (2) It + switches the order of destruction, so that users are disposed of + prior to the HTTP routes they may hold a reference to. Note that + this crash was caught by the Test Suite (go go testing!) ........ + Merged revisions 426174 from + http://svn.asterisk.org/svn/asterisk/branches/12 + + * res/res_srtp.c, /: res/res_srtp: Fix include issue for libsrtp + 1.5.0 In libsrtp 1.5.0, crypto_get_random is no longer resolved + simply by including srtp.h. Now, one must include crypto_kernel.h + as well. As it turns out, this header file has been provided by + the library since 2006, so this is a relatively benign change. + ASTERISK-24436 #close Reported by: Patrick Laimbock ........ + Merged revisions 426140 from + http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged + revisions 426141 from + http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged + revisions 426142 from + http://svn.asterisk.org/svn/asterisk/branches/12 - * Update UPGRADE.txt for 13 branch +2014-10-24 15:17 +0000 [r426120] Jonathan Rose - git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420497 65c4cc65-6c06-0410-ace0-fbb531ad65f3 + * main/manager.c: Documentation: Improve documentation for + ExtensionStatus AMI events Review: + https://reviewboard.asterisk.org/r/4085/ 2014-10-24 Asterisk Development Team diff --git a/asterisk-18.9.0-summary.html b/asterisk-18.9.0-summary.html deleted file mode 100644 index 3897ddc4f3..0000000000 --- a/asterisk-18.9.0-summary.html +++ /dev/null @@ -1,732 +0,0 @@ -Release Summary - asterisk-18.9.0

Release Summary

asterisk-18.9.0

Date: 2021-12-09

<asteriskteam@digium.com>


Table of Contents

    -
  1. Summary
  2. -
  3. Contributors
  4. -
  5. Closed Issues
  6. -
  7. Other Changes
  8. -
  9. Diffstat
  10. -

Summary

[Back to Top]

This release is a point release of an existing major version. The changes included were made to address problems that have been identified in this release series, or are minor, backwards compatible new features or improvements. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous version are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.

The data in this summary reflects changes that have been made since the previous release, asterisk-18.8.0.


Contributors

[Back to Top]

This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were affected by commits that went into this release.

- - -
CodersTestersReporters
30 Alexander Traud
24 Josh Soref
9 Naveen Albert
5 Sean Bright
3 George Joseph
3 Mike Bradeen
2 Kevin Harwell
2 Asterisk Development Team
1 Rodrigo Ramírez Norambuena
1 Shloime Rosenblum
1 Joshua C. Colp
1 Jaco Kroon
1 Ben Ford
1 Sebastien Duthil
1 Boris P. Korzun
29 Alexander Traud
24 Josh Soref
9 N A
2 George Joseph
1 Mario Ban
1 Shloime Rosenblum
1 Moritz Fain
1 Daniel Zanutti
1 Alexei Gradinari
1 George Joseph
1 Boris P. Korzun
1 Jamuel Starkey
1 Dennis Haney
1 Joshua C. Colp
1 Corey Farrell

Closed Issues

[Back to Top]

This is a list of all issues from the issue tracker that were closed by changes that went into this release.

New Feature

Category: Applications/app_queue

ASTERISK-18069: [patch] app_queue Add Login Time and Last Paused Times to Queue Members
Reported by: Jamuel Starkey
    -
  • [a203769c9d] Rodrigo Ramírez Norambuena -- app_queue: Add LoginTime field for member in a queue.
  • -

Category: Resources/NewFeature

ASTERISK-29720: res_tonedetect: Add call progress tone detection
Reported by: N A
    -
  • [ca2e13e18f] Naveen Albert -- res_tonedetect: Add call progress tone detection
  • -

Bug

Category: . I did not set the category correctly.

ASTERISK-29755: frame: Fix for Doxygen
Reported by: Alexander Traud

Category: Addons/chan_mobile

ASTERISK-29742: addons: Fix for Doxygen.
Reported by: Alexander Traud
    -
  • [026c6d51b1] Alexander Traud -- addons: Fix for Doxygen.
  • -

Category: Applications/General

ASTERISK-29752: app: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_agent_pool

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_alarmreceiver

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_bridgewait

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_chanspy

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_confbridge

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_dial

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_jack

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_meetme

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_minivm

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_mixmonitor

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_morsecode

ASTERISK-29744: app_morsecode: Fix deadlock
Reported by: N A
    -
  • [721026ff37] Naveen Albert -- app_morsecode: Fix deadlock
  • -

Category: Applications/app_page

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_queue

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_read

ASTERISK-29705: app_read: Fix custom terminator functionality regression
Reported by: N A
    -
  • [3c4b7cef64] Naveen Albert -- app_read: Fix custom terminator functionality regression
  • -

Category: Applications/app_voicemail

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29391: VoiceMail does not cancel recording on rerecord hangup
Reported by: N A
    -
  • [92857e70b6] Naveen Albert -- app_voicemail: Fix phantom voicemail bug on rerecord
  • -

Category: Bridges/bridge_holding

ASTERISK-29743: bridges: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen.
  • -

Category: Bridges/bridge_softmix

ASTERISK-29743: bridges: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen.
  • -

Category: Channels/chan_dahdi

ASTERISK-29762: channels: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen.
  • -
ASTERISK-29702: sig_analog: Fix truncated buffer copy
Reported by: N A
    -
  • [36c5f5e5fa] Naveen Albert -- sig_analog: Fix truncated buffer copy
  • -

Category: Channels/chan_iax2

ASTERISK-29737: chan_iax2: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [cb043633d4] Alexander Traud -- chan_iax2: Fix for Doxygen.
  • -

Category: Channels/chan_misdn

ASTERISK-29764: chan_misdn: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen.
  • -

Category: Channels/chan_sip/General

ASTERISK-29762: channels: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen.
  • -

Category: Core/Bridging

ASTERISK-29748: bridging: Infinite loop when both Local channel halves in same bridge
Reported by: Joshua C. Colp
    -
  • [7d4e37a180] Joshua C. Colp -- bridge: Deny full Local channel pair in bridge.
  • -
ASTERISK-29736: bridge_channel: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen.
  • -

Category: Core/BuildSystem

ASTERISK-29724: BuildSystem: In POSIX sh, == in place of = is undefined.
Reported by: Alexander Traud
    -
  • [608e52c939] Alexander Traud -- BuildSystem: In POSIX sh, == in place of = is undefined.
  • -
ASTERISK-29682: Squash compiler issues generated by gcc 11
Reported by: George Joseph
    -
  • [0b2646aee6] Mike Bradeen -- various: Fix GCC 11 compilation issues.
  • -
ASTERISK-29693: Using --with-crypto and --with-ssl fails on a recompile
Reported by: George Joseph
    -
  • [c07e3c2f4d] George Joseph -- BuildSystem: Check for alternate openssl packages
  • -
ASTERISK-26497: make install downloads x86_32 variants of external modules on non Intel architectures
Reported by: Corey Farrell
    -
  • [bac66e9743] Mike Bradeen -- build: prevent binary downloads for non x86 architectures
  • -

Category: Core/Channels

ASTERISK-29751: channel: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [e27b91d542] Alexander Traud -- channel: Fix for Doxygen.
  • -
ASTERISK-29713: GCC 11.2: two stringop-overread
Reported by: Alexander Traud
    -
  • [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues.
  • -

Category: Core/Configuration

ASTERISK-29771: Crash occurs when 2 realtime sippeers mysql connections are configured and we have a schema warning
Reported by: Mario Ban
    -
  • [04ac4fe509] Sean Bright -- config.c: Prevent UB in ast_realtime_require_field.
  • -

Category: Core/General

ASTERISK-29730: Segfault in __ao2_ref if refdebug = yes
Reported by: Alexei Gradinari
    -
  • [ea941032ff] Mike Bradeen -- astobj2.c: Fix core when ref_log enabled
  • -
ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request
Reported by: Dennis Haney
    -
  • [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN request timeout
  • -

Category: Core/Logging

ASTERISK-29713: GCC 11.2: two stringop-overread
Reported by: Alexander Traud
    -
  • [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues.
  • -

Category: Core/PBX

ASTERISK-28040: pbx: "dialplan reload" is removing minus symbol from dynamic hints
Reported by: Daniel Zanutti
    -
  • [e63461b008] Sean Bright -- pbx.c: Don't remove dashes from hints on reload.
  • -

Category: Core/Stasis

ASTERISK-29750: stasis: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [6988386234] Alexander Traud -- stasis: Fix for Doxygen.
  • -
ASTERISK-29710: stasis: Clang 13 warns about the unused but set variable dispatched.
Reported by: Alexander Traud
    -
  • [8b76a3cd3b] Alexander Traud -- stasis: Avoid 'dispatched' as unused variable in normal mode.
  • -

Category: Documentation

ASTERISK-29779: progdocs: Hidden code sections with syntax errors.
Reported by: Alexander Traud
    -
  • [f946b92553] Alexander Traud -- progdocs: Fix for Doxygen, the hidden parts.
  • -
ASTERISK-29732: progdocs: Fix grouping for latest Doxygen
Reported by: Alexander Traud
    -
  • [751bbf4b97] Alexander Traud -- progdocs: Fix grouping for latest Doxygen.
  • -
ASTERISK-29764: chan_misdn: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen.
  • -
ASTERISK-29773: progdocs: doxyref.h outdated
Reported by: Alexander Traud
    -
  • [422f5389f6] Alexander Traud -- progdocs: Remove outdated references in doxyref.h.
  • -
ASTERISK-29765: xmldoc: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [31e385bebb] Alexander Traud -- xmldoc: Fix for Doxygen.
  • -
ASTERISK-29762: channels: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen.
  • -
ASTERISK-29754: odbc: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29753: parking: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen.
  • -
ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -
ASTERISK-29751: channel: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [e27b91d542] Alexander Traud -- channel: Fix for Doxygen.
  • -
ASTERISK-29752: app: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29749: res_xmpp: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen.
  • -
ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -
ASTERISK-29741: tests: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29733: progdocs: Avoid name with Doxygen \file
Reported by: Alexander Traud
    -
  • [44a9c16e9c] Alexander Traud -- progdocs: Avoid 'name' with Doxygen \file.
  • -
ASTERISK-29736: bridge_channel: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen.
  • -
ASTERISK-29735: progdocs: Avoid multiple use of section labels
Reported by: Alexander Traud
    -
  • [57b4956a8a] Alexander Traud -- progdocs: Avoid multiple use of section labels.
  • -
ASTERISK-29734: progdocs: Use Doxygen \example correctly
Reported by: Alexander Traud
    -
  • [23b16c5372] Alexander Traud -- progdocs: Use Doxygen \example correctly.
  • -

Category: Functions/func_odbc

ASTERISK-29754: odbc: Fix for Doxygen
Reported by: Alexander Traud

Category: Functions/func_talkdetect

ASTERISK-27816: func_talkdetect's logic is completely broken
Reported by: Moritz Fain
    -
  • [8c2720e540] Sean Bright -- func_talkdetect.c: Fix logical errors in silence detection.
  • -

Category: Resources/res_ari

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_applications

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_bridges

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_channels

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_device_states

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_endpoints

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_events

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_mailboxes

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_playbacks

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_recordings

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_ari_sounds

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • -

Category: Resources/res_odbc

ASTERISK-29754: odbc: Fix for Doxygen
Reported by: Alexander Traud

Category: Resources/res_parking

ASTERISK-29753: parking: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen.
  • -

Category: Resources/res_pjsip

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_authenticator_digest

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_caller_id

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -
ASTERISK-29703: res_pjsip_callerid: Fix OLI parsing
Reported by: N A
    -
  • [1cd2584b27] Naveen Albert -- res_pjsip_callerid: Fix OLI parsing
  • -

Category: Resources/res_pjsip_config_wizard

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_messaging

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_outbound_authenticator_digest

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_outbound_registration

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_path

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_publish_asterisk

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_pubsub

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_registrar

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_sdp_rtp

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_pjsip_session

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • -

Category: Resources/res_snmp

ASTERISK-29709: res_snmp: Not build on recent Debian distributions.
Reported by: Alexander Traud
    -
  • [95da40cd50] Alexander Traud -- res_snmp: As build tool, prefer pkg-config over net-snmp-config.
  • -

Category: Resources/res_stasis_recording

ASTERISK-29750: stasis: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [6988386234] Alexander Traud -- stasis: Fix for Doxygen.
  • -

Category: Resources/res_stasis_snoop

ASTERISK-29750: stasis: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [6988386234] Alexander Traud -- stasis: Fix for Doxygen.
  • -

Category: Resources/res_stir_shaken

ASTERISK-29776: stir/shaken: Requires GNU designator
Reported by: Alexander Traud
    -
  • [b290bb1251] Alexander Traud -- stir/shaken: Avoid a compiler extension of GCC.
  • -

Category: Resources/res_stun_monitor

ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request
Reported by: Dennis Haney
    -
  • [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN request timeout
  • -

Category: Resources/res_xmpp

ASTERISK-29749: res_xmpp: Fix for Doxygen
Reported by: Alexander Traud
    -
  • [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen.
  • -

Category: Tests/General

ASTERISK-29741: tests: Fix for Doxygen
Reported by: Alexander Traud

Category: Utilities/aelparse

ASTERISK-29711: aelparse: GCC 11.2 found two maybe uninitialized
Reported by: Alexander Traud
    -
  • [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues.
  • -

Improvement

Category: Addons/General

ASTERISK-29714: Spelling errors
Reported by: Josh Soref

Category: Applications/app_playback

ASTERISK-29662: Add mix option to Playback application for say and filename
Reported by: Shloime Rosenblum
    -
  • [63c8d12e95] Shloime Rosenblum -- apps/app_playback.c: Add 'mix' option to app_playback
  • -

Category: Applications/app_voicemail

ASTERISK-29715: app_voicemail: Refactor email generation functions
Reported by: N A
    -
  • [70cdb0f9a8] Naveen Albert -- app_voicemail: Refactor email generation functions
  • -

Category: Channels/chan_iax2

ASTERISK-29707: chan_iax2: Allow both key and secret to be specified at dial time
Reported by: N A
    -
  • [bea08a563b] Naveen Albert -- chan_iax2: Allow both secret and outkey at dial time
  • -

Category: Core/RTP

ASTERISK-29727: Add type for JSON stasis message RTCP Report Received/Sent
Reported by: Boris P. Korzun
    -
  • [70b14f3eda] Boris P. Korzun -- rtp_engine: Add type field for JSON RTCP Report stasis messages
  • -

Category: Documentation

ASTERISK-29777: documentation: Standardize example syntax
Reported by: N A
    -
  • [bcb7aee723] Naveen Albert -- documentation: Standardize examples
  • -


Commits Not Associated with an Issue

[Back to Top]

This is a list of all changes that went into this release that did not reference a JIRA issue.

- - - - - - - - - - - - -
RevisionAuthorSummary
82637aaa18Asterisk Development TeamUpdate for 18.9.0-rc1
868d2d5e53Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.9.0
89237be105Jaco Kroonlogger: use __FUNCTION__ instead of __PRETTY_FUNCTION__
b4eebfa191Alexander Traudari-stubs: Avoid 'is' as comparism with an literal.
53610679bfAlexander TraudBuildSystem: Consistently allow 'ye' even for Jansson.
301647788eGeorge JosephCI: Rename 'master' node to 'built-in'
08cb67251fGeorge Josephast_coredumper: Refactor to better find things
ae97aaedb0Kevin Harwellstrings/json: Add string delimter match, and object create with vars methods
2e55c0fdedBen FordSTIR/SHAKEN: Option split and response codes.
859f579504Kevin Harwellres_speech: Add a type conversion, and new engine unregister methods
482281deffSean Brightconfigure: Remove unused OpenSSL SRTP check.

Diffstat Results

[Back to Top]

This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.

asterisk-18.8.0-summary.html                                                    |   78
-asterisk-18.8.0-summary.txt                                                     |  245 -
-b/.version                                                                      |    2
-b/CHANGES                                                                       |  110
-b/CREDITS                                                                       |    2
-b/ChangeLog                                                                     | 1456 +++++++++
-b/Makefile                                                                      |    4
-b/UPGRADE.txt                                                                   |   20
-b/addons/chan_mobile.c                                                          |   28
-b/addons/chan_ooh323.c                                                          |    6
-b/addons/ooh323c/README                                                         |    2
-b/addons/ooh323c/src/decode.c                                                   |    2
-b/addons/ooh323c/src/encode.c                                                   |    4
-b/addons/ooh323c/src/eventHandler.h                                             |    6
-b/addons/ooh323c/src/h323/H323-MESSAGES.h                                       |    2
-b/addons/ooh323c/src/h323/H323-MESSAGESDec.c                                    |    8
-b/addons/ooh323c/src/h323/H323-MESSAGESEnc.c                                    |    4
-b/addons/ooh323c/src/memheap.c                                                  |   20
-b/addons/ooh323c/src/ooCalls.c                                                  |    2
-b/addons/ooh323c/src/ooCapability.h                                             |   12
-b/addons/ooh323c/src/ooCmdChannel.c                                             |    4
-b/addons/ooh323c/src/ooGkClient.c                                               |    4
-b/addons/ooh323c/src/ooGkClient.h                                               |    2
-b/addons/ooh323c/src/ooLogChan.c                                                |    2
-b/addons/ooh323c/src/ooSocket.h                                                 |    2
-b/addons/ooh323c/src/ooUtils.c                                                  |    2
-b/addons/ooh323c/src/ooUtils.h                                                  |    2
-b/addons/ooh323c/src/ooasn1.h                                                   |    2
-b/addons/ooh323c/src/oochannels.c                                               |    2
-b/addons/ooh323c/src/ooh245.c                                                   |    2
-b/addons/ooh323c/src/ooh245.h                                                   |    4
-b/addons/ooh323c/src/ooh323.c                                                   |   29
-b/addons/ooh323c/src/ooh323ep.c                                                 |    2
-b/addons/ooh323c/src/ooq931.c                                                   |    6
-b/addons/ooh323c/src/ooq931.h                                                   |    2
-b/agi/eagi-test.c                                                               |    2
-b/agi/jukebox.agi                                                               |    2
-b/apps/app_agent_pool.c                                                         |   30
-b/apps/app_alarmreceiver.c                                                      |    3
-b/apps/app_bridgewait.c                                                         |   22
-b/apps/app_chanspy.c                                                            |   10
-b/apps/app_confbridge.c                                                         |   33
-b/apps/app_dial.c                                                               |    6
-b/apps/app_dtmfstore.c                                                          |   16
-b/apps/app_forkcdr.c                                                            |    2
-b/apps/app_jack.c                                                               |    2
-b/apps/app_macro.c                                                              |    2
-b/apps/app_meetme.c                                                             |   12
-b/apps/app_minivm.c                                                             |  169 -
-b/apps/app_mixmonitor.c                                                         |    1
-b/apps/app_morsecode.c                                                          |    5
-b/apps/app_mp3.c                                                                |    6
-b/apps/app_page.c                                                               |    6
-b/apps/app_playback.c                                                           |   18
-b/apps/app_queue.c                                                              |  109
-b/apps/app_read.c                                                               |    2
-b/apps/app_stack.c                                                              |    2
-b/apps/app_stasis.c                                                             |    2
-b/apps/app_statsd.c                                                             |    4
-b/apps/app_test.c                                                               |    2
-b/apps/app_voicemail.c                                                          |  214 -
-b/apps/app_waitforsilence.c                                                     |   17
-b/apps/confbridge/conf_config_parser.c                                          |    6
-b/apps/confbridge/conf_state.c                                                  |    2
-b/apps/confbridge/include/confbridge.h                                          |   10
-b/asterisk-18.9.0-rc1-summary.html                                              |  737 ++++
-b/asterisk-18.9.0-rc1-summary.txt                                               | 1222 ++++++++
-b/bridges/bridge_holding.c                                                      |    4
-b/bridges/bridge_softmix.c                                                      |   22
-b/bridges/bridge_softmix/bridge_softmix_binaural.c                              |    4
-b/bridges/bridge_softmix/include/bridge_softmix_internal.h                      |   10
-b/build_tools/download_externals                                                |    9
-b/cdr/cdr_odbc.c                                                                |    5
-b/cdr/cdr_pgsql.c                                                               |    4
-b/cdr/cdr_syslog.c                                                              |    3
-b/cdr/cdr_tds.c                                                                 |    5
-b/cel/cel_beanstalkd.c                                                          |    3
-b/cel/cel_custom.c                                                              |    3
-b/cel/cel_pgsql.c                                                               |    4
-b/cel/cel_radius.c                                                              |    2
-b/cel/cel_sqlite3_custom.c                                                      |    5
-b/cel/cel_tds.c                                                                 |    5
-b/channels/chan_console.c                                                       |    2
-b/channels/chan_dahdi.c                                                         |   86
-b/channels/chan_iax2.c                                                          |   64
-b/channels/chan_mgcp.c                                                          |    8
-b/channels/chan_misdn.c                                                         |   86
-b/channels/chan_motif.c                                                         |    6
-b/channels/chan_pjsip.c                                                         |    2
-b/channels/chan_rtp.c                                                           |    2
-b/channels/chan_sip.c                                                           |  135
-b/channels/chan_skinny.c                                                        |   10
-b/channels/chan_unistim.c                                                       |    8
-b/channels/console_gui.c                                                        |   12
-b/channels/console_video.c                                                      |   10
-b/channels/dahdi/bridge_native_dahdi.c                                          |   10
-b/channels/iax2/codec_pref.c                                                    |    2
-b/channels/iax2/include/astobj.h                                                |    2
-b/channels/iax2/include/firmware.h                                              |    8
-b/channels/iax2/include/iax2.h                                                  |    4
-b/channels/iax2/parser.c                                                        |    6
-b/channels/misdn/isdn_lib.c                                                     |    4
-b/channels/misdn/isdn_lib_intern.h                                              |    2
-b/channels/misdn/isdn_msg_parser.c                                              |   10
-b/channels/sig_analog.c                                                         |    8
-b/channels/sig_pri.c                                                            |  159 -
-b/channels/sig_pri.h                                                            |    8
-b/channels/sig_ss7.c                                                            |   64
-b/channels/sig_ss7.h                                                            |    2
-b/channels/sip/config_parser.c                                                  |   61
-b/channels/sip/include/config_parser.h                                          |    2
-b/channels/sip/include/reqresp_parser.h                                         |   12
-b/channels/sip/include/route.h                                                  |    9
-b/channels/sip/include/sip.h                                                    |   32
-b/channels/sip/reqresp_parser.c                                                 |    8
-b/channels/vcodecs.c                                                            |    2
-b/codecs/codec_g726.c                                                           |    2
-b/codecs/gsm/src/rpe.c                                                          |    2
-b/codecs/ilbc/LPCencode.c                                                       |    8
-b/codecs/ilbc/StateSearchW.c                                                    |    4
-b/codecs/ilbc/StateSearchW.h                                                    |    2
-b/codecs/ilbc/constants.c                                                       |    2
-b/codecs/ilbc/createCB.c                                                        |    2
-b/codecs/ilbc/createCB.h                                                        |    2
-b/codecs/ilbc/enhancer.h                                                        |    4
-b/codecs/ilbc/iLBC_decode.c                                                     |    2
-b/codecs/ilbc/rfc3951.txt                                                       |   26
-b/codecs/lpc10/lpc10.h                                                          |    2
-b/codecs/lpc10/pitsyn.c                                                         |    2
-b/codecs/lpc10/placea.c                                                         |    2
-b/codecs/speex/resample.c                                                       |    2
-b/configs/basic-pbx/extensions.conf                                             |    2
-b/configs/samples/app_mysql.conf.sample                                         |    2
-b/configs/samples/ast_debug_tools.conf.sample                                   |   47
-b/configs/samples/cdr.conf.sample                                               |    2
-b/configs/samples/chan_dahdi.conf.sample                                        |    2
-b/configs/samples/cli_permissions.conf.sample                                   |    2
-b/configs/samples/dundi.conf.sample                                             |    2
-b/configs/samples/extensions.ael.sample                                         |    2
-b/configs/samples/extensions.conf.sample                                        |    4
-b/configs/samples/extensions.lua.sample                                         |    4
-b/configs/samples/extensions_minivm.conf.sample                                 |    2
-b/configs/samples/hep.conf.sample                                               |    2
-b/configs/samples/iax.conf.sample                                               |    2
-b/configs/samples/logger.conf.sample                                            |    2
-b/configs/samples/minivm.conf.sample                                            |    2
-b/configs/samples/motif.conf.sample                                             |    2
-b/configs/samples/ooh323.conf.sample                                            |    2
-b/configs/samples/queues.conf.sample                                            |    4
-b/configs/samples/rtp.conf.sample                                               |    2
-b/configure                                                                     | 1508 ++++++----
-b/configure.ac                                                                  |  102
-b/contrib/ast-db-manage/README.md                                               |    2
-b/contrib/ast-db-manage/config/versions/1ae0609b6646_increse_reg_server_size.py |    2
-b/contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py           |    2
-b/contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py         |    2
-b/contrib/init.d/rc.debian.asterisk                                             |    2
-b/contrib/scripts/ast_coredumper                                                |  949 +++---
-b/contrib/scripts/ast_loggrabber                                                |    4
-b/contrib/scripts/asterisk.ldap-schema                                          |    2
-b/contrib/scripts/asterisk.ldif                                                 |    2
-b/contrib/scripts/loadtest.tcl                                                  |    2
-b/contrib/scripts/retrieve_extensions_from_sql.pl                               |    2
-b/contrib/scripts/safe_asterisk.8                                               |    2
-b/contrib/scripts/valgrind_compare                                              |    2
-b/contrib/scripts/voicemailpwcheck.py                                           |    2
-b/contrib/utils/zones2indications.c                                             |    4
-b/doc/asterisk-ng-doxygen.in                                                    |    4
-b/formats/format_ogg_speex.c                                                    |    2
-b/formats/format_ogg_vorbis.c                                                   |    2
-b/funcs/func_devstate.c                                                         |    6
-b/funcs/func_odbc.c                                                             |    4
-b/funcs/func_pitchshift.c                                                       |    8
-b/funcs/func_sprintf.c                                                          |    2
-b/funcs/func_strings.c                                                          |    4
-b/funcs/func_talkdetect.c                                                       |   26
-b/include/asterisk/abstract_jb.h                                                |    2
-b/include/asterisk/adsi.h                                                       |    4
-b/include/asterisk/aoc.h                                                        |    2
-b/include/asterisk/app.h                                                        |   71
-b/include/asterisk/ari.h                                                        |   22
-b/include/asterisk/astdb.h                                                      |    2
-b/include/asterisk/astmm.h                                                      |    6
-b/include/asterisk/astobj2.h                                                    |   12
-b/include/asterisk/audiohook.h                                                  |   79
-b/include/asterisk/autoconfig.h.in                                              |    5
-b/include/asterisk/bridge.h                                                     |    2
-b/include/asterisk/bridge_channel.h                                             |   27
-b/include/asterisk/bridge_channel_internal.h                                    |   11
-b/include/asterisk/bridge_features.h                                            |    2
-b/include/asterisk/bridge_roles.h                                               |    4
-b/include/asterisk/calendar.h                                                   |    8
-b/include/asterisk/callerid.h                                                   |    2
-b/include/asterisk/causes.h                                                     |    6
-b/include/asterisk/cdr.h                                                        |    4
-b/include/asterisk/channel.h                                                    |  203 -
-b/include/asterisk/cli.h                                                        |    2
-b/include/asterisk/config.h                                                     |    4
-b/include/asterisk/config_options.h                                             |    2
-b/include/asterisk/crypto.h                                                     |    2
-b/include/asterisk/datastore.h                                                  |    4
-b/include/asterisk/devicestate.h                                                |    4
-b/include/asterisk/dlinkedlists.h                                               |    7
-b/include/asterisk/dns_core.h                                                   |    2
-b/include/asterisk/doxygen/architecture.h                                       |    2
-b/include/asterisk/doxyref.h                                                    |   13
-b/include/asterisk/endpoints.h                                                  |    2
-b/include/asterisk/enum.h                                                       |    8
-b/include/asterisk/event_defs.h                                                 |    2
-b/include/asterisk/file.h                                                       |   15
-b/include/asterisk/frame.h                                                      |   10
-b/include/asterisk/framehook.h                                                  |   41
-b/include/asterisk/hashtab.h                                                    |    4
-b/include/asterisk/http.h                                                       |    4
-b/include/asterisk/http_websocket.h                                             |    5
-b/include/asterisk/io.h                                                         |    2
-b/include/asterisk/iostream.h                                                   |    2
-b/include/asterisk/json.h                                                       |   17
-b/include/asterisk/linkedlists.h                                                |    3
-b/include/asterisk/logger.h                                                     |   70
-b/include/asterisk/manager.h                                                    |   23
-b/include/asterisk/mod_format.h                                                 |    2
-b/include/asterisk/module.h                                                     |    4
-b/include/asterisk/mwi.h                                                        |    4
-b/include/asterisk/netsock2.h                                                   |    6
-b/include/asterisk/parking.h                                                    |   19
-b/include/asterisk/pbx.h                                                        |   14
-b/include/asterisk/plc.h                                                        |    4
-b/include/asterisk/privacy.h                                                    |    2
-b/include/asterisk/res_mwi_external.h                                           |    2
-b/include/asterisk/res_odbc.h                                                   |   25
-b/include/asterisk/res_pjsip.h                                                  |  110
-b/include/asterisk/res_pjsip_cli.h                                              |    6
-b/include/asterisk/res_pjsip_presence_xml.h                                     |    2
-b/include/asterisk/res_pjsip_pubsub.h                                           |    7
-b/include/asterisk/res_pjsip_session.h                                          |    8
-b/include/asterisk/res_pjsip_session_caps.h                                     |    2
-b/include/asterisk/res_prometheus.h                                             |    4
-b/include/asterisk/res_stir_shaken.h                                            |   25
-b/include/asterisk/rtp_engine.h                                                 |    6
-b/include/asterisk/say.h                                                        |    2
-b/include/asterisk/sdp_srtp.h                                                   |    3
-b/include/asterisk/sem.h                                                        |    2
-b/include/asterisk/smoother.h                                                   |    8
-b/include/asterisk/sorcery.h                                                    |    4
-b/include/asterisk/speech.h                                                     |    6
-b/include/asterisk/srv.h                                                        |    3
-b/include/asterisk/stasis.h                                                     |  128
-b/include/asterisk/stasis_app.h                                                 |   28
-b/include/asterisk/stasis_app_device_state.h                                    |    2
-b/include/asterisk/stasis_app_impl.h                                            |    5
-b/include/asterisk/stasis_app_mailbox.h                                         |   12
-b/include/asterisk/stasis_app_playback.h                                        |   14
-b/include/asterisk/stasis_app_recording.h                                       |   32
-b/include/asterisk/stasis_app_snoop.h                                           |    5
-b/include/asterisk/stasis_bridges.h                                             |   53
-b/include/asterisk/stasis_channels.h                                            |   98
-b/include/asterisk/stasis_endpoints.h                                           |    2
-b/include/asterisk/stasis_internal.h                                            |    1
-b/include/asterisk/stasis_message_router.h                                      |   16
-b/include/asterisk/stasis_system.h                                              |    4
-b/include/asterisk/stasis_test.h                                                |    1
-b/include/asterisk/stringfields.h                                               |    2
-b/include/asterisk/strings.h                                                    |   32
-b/include/asterisk/stun.h                                                       |    3
-b/include/asterisk/syslog.h                                                     |    3
-b/include/asterisk/taskprocessor.h                                              |    5
-b/include/asterisk/tcptls.h                                                     |    5
-b/include/asterisk/term.h                                                       |   16
-b/include/asterisk/test.h                                                       |   30
-b/include/asterisk/threadpool.h                                                 |    6
-b/include/asterisk/threadstorage.h                                              |    6
-b/include/asterisk/time.h                                                       |    4
-b/include/asterisk/timing.h                                                     |    2
-b/include/asterisk/transcap.h                                                   |    8
-b/include/asterisk/translate.h                                                  |    2
-b/include/asterisk/utils.h                                                      |   20
-b/include/asterisk/vector.h                                                     |    2
-b/include/asterisk/xmldoc.h                                                     |    2
-b/include/jitterbuf.h                                                           |    8
-b/main/abstract_jb.c                                                            |    2
-b/main/aoc.c                                                                    |    2
-b/main/app.c                                                                    |   43
-b/main/asterisk.c                                                               |    2
-b/main/astfd.c                                                                  |    2
-b/main/astmm.c                                                                  |   38
-b/main/astobj2.c                                                                |    5
-b/main/astobj2_container.c                                                      |    4
-b/main/astobj2_container_private.h                                              |    2
-b/main/astobj2_rbtree.c                                                         |    2
-b/main/audiohook.c                                                              |  115
-b/main/bridge.c                                                                 |    4
-b/main/bridge_basic.c                                                           |   18
-b/main/bridge_channel.c                                                         |   87
-b/main/bucket.c                                                                 |    2
-b/main/callerid.c                                                               |    2
-b/main/ccss.c                                                                   |    6
-b/main/channel.c                                                                |   31
-b/main/channel_internal_api.c                                                   |    2
-b/main/config.c                                                                 |   11
-b/main/dns.c                                                                    |    4
-b/main/dns_recurring.c                                                          |    2
-b/main/dns_test.c                                                               |   38
-b/main/dnsmgr.c                                                                 |    2
-b/main/dsp.c                                                                    |    2
-b/main/enum.c                                                                   |    6
-b/main/features_config.c                                                        |    4
-b/main/file.c                                                                   |   17
-b/main/fskmodem_float.c                                                         |    2
-b/main/fskmodem_int.c                                                           |    2
-b/main/io.c                                                                     |    2
-b/main/json.c                                                                   |   19
-b/main/logger.c                                                                 |    2
-b/main/manager.c                                                                |    6
-b/main/mwi.c                                                                    |   16
-b/main/optional_api.c                                                           |   12
-b/main/pbx.c                                                                    |   25
-b/main/pbx_functions.c                                                          |    6
-b/main/rtp_engine.c                                                             |    3
-b/main/say.c                                                                    |   40
-b/main/smoother.c                                                               |    2
-b/main/stasis.c                                                                 |   13
-b/main/stasis_bridges.c                                                         |    2
-b/main/stasis_cache.c                                                           |   10
-b/main/stasis_message_router.c                                                  |    2
-b/main/stasis_state.c                                                           |    7
-b/main/stdtime/localtime.c                                                      |    2
-b/main/strings.c                                                                |   25
-b/main/stun.c                                                                   |   17
-b/main/test.c                                                                   |   11
-b/main/threadpool.c                                                             |    2
-b/main/time.c                                                                   |    2
-b/main/translate.c                                                              |    2
-b/main/udptl.c                                                                  |    2
-b/main/utils.c                                                                  |  150
-b/main/xmldoc.c                                                                 |   94
-b/makeopts.in                                                                   |    1
-b/menuselect/Makefile                                                           |    4
-b/menuselect/README                                                             |    2
-b/menuselect/configure                                                          |   14
-b/menuselect/contrib/menuselect-dummy                                           |   20
-b/menuselect/menuselect.c                                                       |    2
-b/menuselect/menuselect_curses.c                                                |    2
-b/menuselect/menuselect_gtk.c                                                   |    2
-b/menuselect/menuselect_newt.c                                                  |    2
-b/menuselect/menuselect_stub.c                                                  |    2
-b/pbx/ael/ael-test/ael-test2/apptest.ael2                                       |    2
-b/pbx/ael/ael-test/ael-test3/extensions.ael                                     |    2
-b/pbx/ael/ael-test/ael-test3/telemarket_torture.ael2                            |   10
-b/pbx/ael/ael-test/ael-test4/apptest.ael2                                       |    2
-b/pbx/ael/ael-test/ael-vtest13/extensions.ael                                   |    2
-b/pbx/ael/ael-test/ael-vtest13/telemarket_torture.ael2                          |   10
-b/pbx/pbx_config.c                                                              |    4
-b/pbx/pbx_dundi.c                                                               |    6
-b/pbx/pbx_lua.c                                                                 |   17
-b/res/ael/ael.y                                                                 |    2
-b/res/ael/pval.c                                                                |   12
-b/res/ari/ari_model_validators.h                                                |  464 +--
-b/res/ari/resource_bridges.c                                                    |   12
-b/res/ari/resource_channels.c                                                   |    6
-b/res/ari/resource_events.c                                                     |    4
-b/res/ari/resource_events.h                                                     |    3
-b/res/parking/parking_applications.c                                            |    2
-b/res/parking/parking_bridge.c                                                  |   10
-b/res/parking/parking_bridge_features.c                                         |    6
-b/res/parking/res_parking.h                                                     |   30
-b/res/prometheus/pjsip_outbound_registrations.c                                 |    2
-b/res/prometheus/prometheus_internal.h                                          |    4
-b/res/res_agi.c                                                                 |   28
-b/res/res_ari.c                                                                 |    8
-b/res/res_ari_applications.c                                                    |   10
-b/res/res_ari_asterisk.c                                                        |   32
-b/res/res_ari_bridges.c                                                         |   28
-b/res/res_ari_channels.c                                                        |   62
-b/res/res_ari_device_states.c                                                   |    8
-b/res/res_ari_endpoints.c                                                       |   10
-b/res/res_ari_events.c                                                          |    2
-b/res/res_ari_mailboxes.c                                                       |    8
-b/res/res_ari_playbacks.c                                                       |    6
-b/res/res_ari_recordings.c                                                      |   24
-b/res/res_ari_sounds.c                                                          |    4
-b/res/res_calendar.c                                                            |    2
-b/res/res_calendar_caldav.c                                                     |    4
-b/res/res_calendar_icalendar.c                                                  |    4
-b/res/res_config_curl.c                                                         |    2
-b/res/res_config_ldap.c                                                         |    4
-b/res/res_config_odbc.c                                                         |   37
-b/res/res_config_pgsql.c                                                        |    2
-b/res/res_corosync.c                                                            |    2
-b/res/res_fax_spandsp.c                                                         |    2
-b/res/res_http_post.c                                                           |    2
-b/res/res_musiconhold.c                                                         |    4
-b/res/res_odbc.c                                                                |   13
-b/res/res_parking.c                                                             |    5
-b/res/res_phoneprov.c                                                           |    2
-b/res/res_pjsip.c                                                               |    4
-b/res/res_pjsip/config_global.c                                                 |    4
-b/res/res_pjsip/config_transport.c                                              |    8
-b/res/res_pjsip/include/res_pjsip_private.h                                     |    6
-b/res/res_pjsip/pjsip_configuration.c                                           |   42
-b/res/res_pjsip/pjsip_distributor.c                                             |    2
-b/res/res_pjsip/pjsip_scheduler.c                                               |    2
-b/res/res_pjsip/pjsip_session.c                                                 |    2
-b/res/res_pjsip/pjsip_transport_events.c                                        |    2
-b/res/res_pjsip_authenticator_digest.c                                          |    3
-b/res/res_pjsip_caller_id.c                                                     |   48
-b/res/res_pjsip_config_wizard.c                                                 |    2
-b/res/res_pjsip_header_funcs.c                                                  |    6
-b/res/res_pjsip_history.c                                                       |   14
-b/res/res_pjsip_messaging.c                                                     |   97
-b/res/res_pjsip_nat.c                                                           |    2
-b/res/res_pjsip_outbound_authenticator_digest.c                                 |    4
-b/res/res_pjsip_outbound_registration.c                                         |    6
-b/res/res_pjsip_path.c                                                          |    4
-b/res/res_pjsip_publish_asterisk.c                                              |    6
-b/res/res_pjsip_pubsub.c                                                        |   10
-b/res/res_pjsip_registrar.c                                                     |    5
-b/res/res_pjsip_rfc3326.c                                                       |    2
-b/res/res_pjsip_sdp_rtp.c                                                       |    2
-b/res/res_pjsip_session.c                                                       |   20
-b/res/res_pjsip_stir_shaken.c                                                   |  180 +
-b/res/res_pktccops.c                                                            |    2
-b/res/res_rtp_asterisk.c                                                        |    8
-b/res/res_smdi.c                                                                |    2
-b/res/res_sorcery_config.c                                                      |    2
-b/res/res_speech.c                                                              |   27
-b/res/res_srtp.c                                                                |    3
-b/res/res_stasis.c                                                              |    2
-b/res/res_stasis_playback.c                                                     |    6
-b/res/res_stasis_snoop.c                                                        |    2
-b/res/res_stir_shaken.c                                                         |  175 -
-b/res/res_stir_shaken/curl.c                                                    |    2
-b/res/res_stir_shaken/curl.h                                                    |    2
-b/res/res_tonedetect.c                                                          |  365 ++
-b/res/res_xmpp.c                                                                |   70
-b/res/snmp/agent.c                                                              |    2
-b/res/stasis/app.c                                                              |    5
-b/res/stasis/app.h                                                              |   71
-b/res/stasis/control.h                                                          |   14
-b/res/stasis/messaging.h                                                        |    5
-b/res/stasis/stasis_bridge.c                                                    |    2
-b/res/stasis/stasis_bridge.h                                                    |    2
-b/res/stasis_recording/stored.c                                                 |    4
-b/rest-api-templates/ari_model_validators.h.mustache                            |   50
-b/rest-api-templates/ari_resource.h.mustache                                    |    3
-b/rest-api-templates/asterisk_processor.py                                      |    4
-b/rest-api-templates/res_ari_resource.c.mustache                                |    2
-b/rest-api-templates/transform.py                                               |    2
-b/tests/CI/gates.jenkinsfile                                                    |    4
-b/tests/CI/periodics-daily.jenkinsfile                                          |    2
-b/tests/CI/ref_debug.jenkinsfile                                                |    2
-b/tests/CI/unittests.jenkinsfile                                                |    2
-b/tests/CI/universal-asterisk-nongerrit.jenkinsfile                             |    4
-b/tests/test_abstract_jb.c                                                      |    2
-b/tests/test_aoc.c                                                              |    2
-b/tests/test_astobj2.c                                                          |    2
-b/tests/test_astobj2_thrash.c                                                   |   10
-b/tests/test_config.c                                                           |    2
-b/tests/test_devicestate.c                                                      |    2
-b/tests/test_dns_naptr.c                                                        |    2
-b/tests/test_hashtab_thrash.c                                                   |   10
-b/tests/test_json.c                                                             |   60
-b/tests/test_linkedlists.c                                                      |    1
-b/tests/test_media_cache.c                                                      |    2
-b/tests/test_message.c                                                          |    2
-b/tests/test_optional_api.c                                                     |    2
-b/tests/test_sorcery.c                                                          |    2
-b/tests/test_sorcery_memory_cache_thrash.c                                      |    4
-b/tests/test_stasis.c                                                           |    6
-b/tests/test_strings.c                                                          |  118
-b/tests/test_taskprocessor.c                                                    |   10
-b/tests/test_voicemail_api.c                                                    |   24
-b/third-party/pjproject/Makefile                                                |    6
-b/third-party/pjproject/configure.m4                                            |    1
-b/utils/astman.1                                                                |    2
-b/utils/db1-ast/hash/README                                                     |    2
-476 files changed, 8685 insertions(+), 4884 deletions(-)

\ No newline at end of file diff --git a/asterisk-18.9.0-summary.txt b/asterisk-18.9.0-summary.txt deleted file mode 100644 index ab2db6aacd..0000000000 --- a/asterisk-18.9.0-summary.txt +++ /dev/null @@ -1,1219 +0,0 @@ - Release Summary - - asterisk-18.9.0 - - Date: 2021-12-09 - - - - ---------------------------------------------------------------------- - - Table of Contents - - 1. Summary - 2. Contributors - 3. Closed Issues - 4. Other Changes - 5. Diffstat - - ---------------------------------------------------------------------- - - Summary - - [Back to Top] - - This release is a point release of an existing major version. The changes - included were made to address problems that have been identified in this - release series, or are minor, backwards compatible new features or - improvements. Users should be able to safely upgrade to this version if - this release series is already in use. Users considering upgrading from a - previous version are strongly encouraged to review the UPGRADE.txt - document as well as the CHANGES document for information about upgrading - to this release series. - - The data in this summary reflects changes that have been made since the - previous release, asterisk-18.8.0. - - ---------------------------------------------------------------------- - - Contributors - - [Back to Top] - - This table lists the people who have submitted code, those that have - tested patches, as well as those that reported issues on the issue tracker - that were resolved in this release. For coders, the number is how many of - their patches (of any size) were committed into this release. For testers, - the number is the number of times their name was listed as assisting with - testing a patch. Finally, for reporters, the number is the number of - issues that they reported that were affected by commits that went into - this release. - - Coders Testers Reporters - 30 Alexander Traud 29 Alexander Traud - 24 Josh Soref 24 Josh Soref - 9 Naveen Albert 9 N A - 5 Sean Bright 2 George Joseph - 3 George Joseph 1 Mario Ban - 3 Mike Bradeen 1 Shloime Rosenblum - 2 Kevin Harwell 1 Moritz Fain - 2 Asterisk Development Team 1 Daniel Zanutti - 1 Rodrigo Ramírez Norambuena 1 Alexei Gradinari - 1 Shloime Rosenblum 1 George Joseph - 1 Joshua C. Colp 1 Boris P. Korzun - 1 Jaco Kroon 1 Jamuel Starkey - 1 Ben Ford 1 Dennis Haney - 1 Sebastien Duthil 1 Joshua C. Colp - 1 Boris P. Korzun 1 Corey Farrell - - ---------------------------------------------------------------------- - - Closed Issues - - [Back to Top] - - This is a list of all issues from the issue tracker that were closed by - changes that went into this release. - - New Feature - - Category: Applications/app_queue - - ASTERISK-18069: [patch] app_queue Add Login Time and Last Paused Times to - Queue Members - Reported by: Jamuel Starkey - * [a203769c9d] Rodrigo Ramírez Norambuena -- app_queue: Add LoginTime - field for member in a queue. - - Category: Resources/NewFeature - - ASTERISK-29720: res_tonedetect: Add call progress tone detection - Reported by: N A - * [ca2e13e18f] Naveen Albert -- res_tonedetect: Add call progress tone - detection - - Bug - - Category: . I did not set the category correctly. - - ASTERISK-29755: frame: Fix for Doxygen - Reported by: Alexander Traud - * [b5962fe528] Alexander Traud -- frame: Fix for Doxygen. - - Category: Addons/chan_mobile - - ASTERISK-29742: addons: Fix for Doxygen. - Reported by: Alexander Traud - * [026c6d51b1] Alexander Traud -- addons: Fix for Doxygen. - - Category: Applications/General - - ASTERISK-29752: app: Fix for Doxygen - Reported by: Alexander Traud - * [e7d5db1471] Alexander Traud -- app: Fix for Doxygen. - - Category: Applications/app_agent_pool - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_alarmreceiver - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_bridgewait - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_chanspy - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_confbridge - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_dial - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_jack - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_meetme - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_minivm - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_mixmonitor - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_morsecode - - ASTERISK-29744: app_morsecode: Fix deadlock - Reported by: N A - * [721026ff37] Naveen Albert -- app_morsecode: Fix deadlock - - Category: Applications/app_page - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_queue - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - - Category: Applications/app_read - - ASTERISK-29705: app_read: Fix custom terminator functionality regression - Reported by: N A - * [3c4b7cef64] Naveen Albert -- app_read: Fix custom terminator - functionality regression - - Category: Applications/app_voicemail - - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - ASTERISK-29391: VoiceMail does not cancel recording on rerecord hangup - Reported by: N A - * [92857e70b6] Naveen Albert -- app_voicemail: Fix phantom voicemail bug - on rerecord - - Category: Bridges/bridge_holding - - ASTERISK-29743: bridges: Fix for Doxygen - Reported by: Alexander Traud - * [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen. - - Category: Bridges/bridge_softmix - - ASTERISK-29743: bridges: Fix for Doxygen - Reported by: Alexander Traud - * [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen. - - Category: Channels/chan_dahdi - - ASTERISK-29762: channels: Fix for Doxygen - Reported by: Alexander Traud - * [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen. - ASTERISK-29702: sig_analog: Fix truncated buffer copy - Reported by: N A - * [36c5f5e5fa] Naveen Albert -- sig_analog: Fix truncated buffer copy - - Category: Channels/chan_iax2 - - ASTERISK-29737: chan_iax2: Fix for Doxygen - Reported by: Alexander Traud - * [cb043633d4] Alexander Traud -- chan_iax2: Fix for Doxygen. - - Category: Channels/chan_misdn - - ASTERISK-29764: chan_misdn: Fix for Doxygen - Reported by: Alexander Traud - * [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen. - - Category: Channels/chan_sip/General - - ASTERISK-29762: channels: Fix for Doxygen - Reported by: Alexander Traud - * [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen. - - Category: Core/Bridging - - ASTERISK-29748: bridging: Infinite loop when both Local channel halves in - same bridge - Reported by: Joshua C. Colp - * [7d4e37a180] Joshua C. Colp -- bridge: Deny full Local channel pair in - bridge. - ASTERISK-29736: bridge_channel: Fix for Doxygen - Reported by: Alexander Traud - * [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen. - - Category: Core/BuildSystem - - ASTERISK-29724: BuildSystem: In POSIX sh, == in place of = is undefined. - Reported by: Alexander Traud - * [608e52c939] Alexander Traud -- BuildSystem: In POSIX sh, == in place - of = is undefined. - ASTERISK-29682: Squash compiler issues generated by gcc 11 - Reported by: George Joseph - * [0b2646aee6] Mike Bradeen -- various: Fix GCC 11 compilation issues. - ASTERISK-29693: Using --with-crypto and --with-ssl fails on a recompile - Reported by: George Joseph - * [c07e3c2f4d] George Joseph -- BuildSystem: Check for alternate openssl - packages - ASTERISK-26497: make install downloads x86_32 variants of external modules - on non Intel architectures - Reported by: Corey Farrell - * [bac66e9743] Mike Bradeen -- build: prevent binary downloads for non - x86 architectures - - Category: Core/Channels - - ASTERISK-29751: channel: Fix for Doxygen - Reported by: Alexander Traud - * [e27b91d542] Alexander Traud -- channel: Fix for Doxygen. - ASTERISK-29713: GCC 11.2: two stringop-overread - Reported by: Alexander Traud - * [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues. - - Category: Core/Configuration - - ASTERISK-29771: Crash occurs when 2 realtime sippeers mysql connections - are configured and we have a schema warning - Reported by: Mario Ban - * [04ac4fe509] Sean Bright -- config.c: Prevent UB in - ast_realtime_require_field. - - Category: Core/General - - ASTERISK-29730: Segfault in __ao2_ref if refdebug = yes - Reported by: Alexei Gradinari - * [ea941032ff] Mike Bradeen -- astobj2.c: Fix core when ref_log enabled - ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request - Reported by: Dennis Haney - * [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN - request timeout - - Category: Core/Logging - - ASTERISK-29713: GCC 11.2: two stringop-overread - Reported by: Alexander Traud - * [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues. - - Category: Core/PBX - - ASTERISK-28040: pbx: "dialplan reload" is removing minus symbol from - dynamic hints - Reported by: Daniel Zanutti - * [e63461b008] Sean Bright -- pbx.c: Don't remove dashes from hints on - reload. - - Category: Core/Stasis - - ASTERISK-29750: stasis: Fix for Doxygen - Reported by: Alexander Traud - * [6988386234] Alexander Traud -- stasis: Fix for Doxygen. - ASTERISK-29710: stasis: Clang 13 warns about the unused but set variable - dispatched. - Reported by: Alexander Traud - * [8b76a3cd3b] Alexander Traud -- stasis: Avoid 'dispatched' as unused - variable in normal mode. - - Category: Documentation - - ASTERISK-29779: progdocs: Hidden code sections with syntax errors. - Reported by: Alexander Traud - * [f946b92553] Alexander Traud -- progdocs: Fix for Doxygen, the hidden - parts. - ASTERISK-29732: progdocs: Fix grouping for latest Doxygen - Reported by: Alexander Traud - * [751bbf4b97] Alexander Traud -- progdocs: Fix grouping for latest - Doxygen. - ASTERISK-29764: chan_misdn: Fix for Doxygen - Reported by: Alexander Traud - * [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen. - ASTERISK-29773: progdocs: doxyref.h outdated - Reported by: Alexander Traud - * [422f5389f6] Alexander Traud -- progdocs: Remove outdated references - in doxyref.h. - ASTERISK-29765: xmldoc: Fix for Doxygen - Reported by: Alexander Traud - * [31e385bebb] Alexander Traud -- xmldoc: Fix for Doxygen. - ASTERISK-29762: channels: Fix for Doxygen - Reported by: Alexander Traud - * [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen. - ASTERISK-29754: odbc: Fix for Doxygen - Reported by: Alexander Traud - * [783b775946] Alexander Traud -- odbc: Fix for Doxygen. - ASTERISK-29753: parking: Fix for Doxygen - Reported by: Alexander Traud - * [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen. - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - ASTERISK-29751: channel: Fix for Doxygen - Reported by: Alexander Traud - * [e27b91d542] Alexander Traud -- channel: Fix for Doxygen. - ASTERISK-29752: app: Fix for Doxygen - Reported by: Alexander Traud - * [e7d5db1471] Alexander Traud -- app: Fix for Doxygen. - ASTERISK-29749: res_xmpp: Fix for Doxygen - Reported by: Alexander Traud - * [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen. - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - ASTERISK-29741: tests: Fix for Doxygen - Reported by: Alexander Traud - * [1a9df88d98] Alexander Traud -- tests: Fix for Doxygen. - ASTERISK-29740: apps: Fix for Doxygen - Reported by: Alexander Traud - * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. - ASTERISK-29733: progdocs: Avoid name with Doxygen \file - Reported by: Alexander Traud - * [44a9c16e9c] Alexander Traud -- progdocs: Avoid 'name' with Doxygen - \file. - ASTERISK-29736: bridge_channel: Fix for Doxygen - Reported by: Alexander Traud - * [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen. - ASTERISK-29735: progdocs: Avoid multiple use of section labels - Reported by: Alexander Traud - * [57b4956a8a] Alexander Traud -- progdocs: Avoid multiple use of - section labels. - ASTERISK-29734: progdocs: Use Doxygen \example correctly - Reported by: Alexander Traud - * [23b16c5372] Alexander Traud -- progdocs: Use Doxygen \example - correctly. - - Category: Functions/func_odbc - - ASTERISK-29754: odbc: Fix for Doxygen - Reported by: Alexander Traud - * [783b775946] Alexander Traud -- odbc: Fix for Doxygen. - - Category: Functions/func_talkdetect - - ASTERISK-27816: func_talkdetect's logic is completely broken - Reported by: Moritz Fain - * [8c2720e540] Sean Bright -- func_talkdetect.c: Fix logical errors in - silence detection. - - Category: Resources/res_ari - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_applications - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_bridges - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_channels - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_device_states - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_endpoints - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_events - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_mailboxes - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_playbacks - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_recordings - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_ari_sounds - - ASTERISK-29756: res_ari: Fix for Doxygen - Reported by: Alexander Traud - * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. - - Category: Resources/res_odbc - - ASTERISK-29754: odbc: Fix for Doxygen - Reported by: Alexander Traud - * [783b775946] Alexander Traud -- odbc: Fix for Doxygen. - - Category: Resources/res_parking - - ASTERISK-29753: parking: Fix for Doxygen - Reported by: Alexander Traud - * [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen. - - Category: Resources/res_pjsip - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_authenticator_digest - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_caller_id - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - ASTERISK-29703: res_pjsip_callerid: Fix OLI parsing - Reported by: N A - * [1cd2584b27] Naveen Albert -- res_pjsip_callerid: Fix OLI parsing - - Category: Resources/res_pjsip_config_wizard - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_messaging - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_outbound_authenticator_digest - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_outbound_registration - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_path - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_publish_asterisk - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_pubsub - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_registrar - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_sdp_rtp - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_pjsip_session - - ASTERISK-29747: res_pjsip: Fix for Doxygen - Reported by: Alexander Traud - * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. - - Category: Resources/res_snmp - - ASTERISK-29709: res_snmp: Not build on recent Debian distributions. - Reported by: Alexander Traud - * [95da40cd50] Alexander Traud -- res_snmp: As build tool, prefer - pkg-config over net-snmp-config. - - Category: Resources/res_stasis_recording - - ASTERISK-29750: stasis: Fix for Doxygen - Reported by: Alexander Traud - * [6988386234] Alexander Traud -- stasis: Fix for Doxygen. - - Category: Resources/res_stasis_snoop - - ASTERISK-29750: stasis: Fix for Doxygen - Reported by: Alexander Traud - * [6988386234] Alexander Traud -- stasis: Fix for Doxygen. - - Category: Resources/res_stir_shaken - - ASTERISK-29776: stir/shaken: Requires GNU designator - Reported by: Alexander Traud - * [b290bb1251] Alexander Traud -- stir/shaken: Avoid a compiler - extension of GCC. - - Category: Resources/res_stun_monitor - - ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request - Reported by: Dennis Haney - * [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN - request timeout - - Category: Resources/res_xmpp - - ASTERISK-29749: res_xmpp: Fix for Doxygen - Reported by: Alexander Traud - * [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen. - - Category: Tests/General - - ASTERISK-29741: tests: Fix for Doxygen - Reported by: Alexander Traud - * [1a9df88d98] Alexander Traud -- tests: Fix for Doxygen. - - Category: Utilities/aelparse - - ASTERISK-29711: aelparse: GCC 11.2 found two maybe uninitialized - Reported by: Alexander Traud - * [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues. - - Improvement - - Category: Addons/General - - ASTERISK-29714: Spelling errors - Reported by: Josh Soref - * [4bc3dc6543] Josh Soref -- bridges: Spelling fixes - * [59715a073b] Josh Soref -- utils: Spelling fixes - * [3685e55673] Josh Soref -- pbx: Spelling fixes - * [4cf87f6175] Josh Soref -- rest-api-templates: Spelling fixes - * [c1b21bee6d] Josh Soref -- channels: Spelling fixes - * [4fc59ccc92] Josh Soref -- tests: Spelling fixes - * [c3978efef6] Josh Soref -- Makefile: Spelling fixes - * [2a8b651b7e] Josh Soref -- contrib: Spelling fixes - * [3ac7afe09c] Josh Soref -- formats: Spelling fixes - * [49ef881eb4] Josh Soref -- addons: Spelling fixes - * [70af726dcd] Josh Soref -- agi: Spelling fixes - * [c0fafa1863] Josh Soref -- funcs: Spelling fixes - * [8fb9588e8c] Josh Soref -- build_tools: Spelling fixes - * [7a59a9365a] Josh Soref -- menuselect: Spelling fixes - * [b13acf3ae6] Josh Soref -- include: Spelling fixes - * [135d51e55e] Josh Soref -- doc: Spelling fixes - * [ae83d927d8] Josh Soref -- configs: Spelling fixes - * [dcf492e7b6] Josh Soref -- res: Spelling fixes - * [ccfebc3cfc] Josh Soref -- codecs: Spelling fixes - * [4019a93edf] Josh Soref -- main: Spelling fixes - * [998ad0e179] Josh Soref -- CREDITS: Spelling fixes - * [e7b1dcf769] Josh Soref -- apps: Spelling fixes - * [0150c3b698] Josh Soref -- UPGRADE.txt: Spelling fixes - * [42d1c134f7] Josh Soref -- CHANGES: Spelling fixes - - Category: Applications/app_playback - - ASTERISK-29662: Add mix option to Playback application for say and - filename - Reported by: Shloime Rosenblum - * [63c8d12e95] Shloime Rosenblum -- apps/app_playback.c: Add 'mix' - option to app_playback - - Category: Applications/app_voicemail - - ASTERISK-29715: app_voicemail: Refactor email generation functions - Reported by: N A - * [70cdb0f9a8] Naveen Albert -- app_voicemail: Refactor email generation - functions - - Category: Channels/chan_iax2 - - ASTERISK-29707: chan_iax2: Allow both key and secret to be specified at - dial time - Reported by: N A - * [bea08a563b] Naveen Albert -- chan_iax2: Allow both secret and outkey - at dial time - - Category: Core/RTP - - ASTERISK-29727: Add type for JSON stasis message RTCP Report Received/Sent - Reported by: Boris P. Korzun - * [70b14f3eda] Boris P. Korzun -- rtp_engine: Add type field for JSON - RTCP Report stasis messages - - Category: Documentation - - ASTERISK-29777: documentation: Standardize example syntax - Reported by: N A - * [bcb7aee723] Naveen Albert -- documentation: Standardize examples - - ---------------------------------------------------------------------- - - Commits Not Associated with an Issue - - [Back to Top] - - This is a list of all changes that went into this release that did not - reference a JIRA issue. - - +------------------------------------------------------------------------+ - | Revision | Author | Summary | - |------------+----------------------+------------------------------------| - | 82637aaa18 | Asterisk Development | Update for 18.9.0-rc1 | - | | Team | | - |------------+----------------------+------------------------------------| - | 868d2d5e53 | Asterisk Development | Update CHANGES and UPGRADE.txt for | - | | Team | 18.9.0 | - |------------+----------------------+------------------------------------| - | 89237be105 | Jaco Kroon | logger: use __FUNCTION__ instead | - | | | of __PRETTY_FUNCTION__ | - |------------+----------------------+------------------------------------| - | b4eebfa191 | Alexander Traud | ari-stubs: Avoid 'is' as comparism | - | | | with an literal. | - |------------+----------------------+------------------------------------| - | 53610679bf | Alexander Traud | BuildSystem: Consistently allow | - | | | 'ye' even for Jansson. | - |------------+----------------------+------------------------------------| - | 301647788e | George Joseph | CI: Rename 'master' node to | - | | | 'built-in' | - |------------+----------------------+------------------------------------| - | 08cb67251f | George Joseph | ast_coredumper: Refactor to better | - | | | find things | - |------------+----------------------+------------------------------------| - | | | strings/json: Add string delimter | - | ae97aaedb0 | Kevin Harwell | match, and object create with vars | - | | | methods | - |------------+----------------------+------------------------------------| - | 2e55c0fded | Ben Ford | STIR/SHAKEN: Option split and | - | | | response codes. | - |------------+----------------------+------------------------------------| - | 859f579504 | Kevin Harwell | res_speech: Add a type conversion, | - | | | and new engine unregister methods | - |------------+----------------------+------------------------------------| - | 482281deff | Sean Bright | configure: Remove unused OpenSSL | - | | | SRTP check. | - +------------------------------------------------------------------------+ - - ---------------------------------------------------------------------- - - Diffstat Results - - [Back to Top] - - This is a summary of the changes to the source code that went into this - release that was generated using the diffstat utility. - - asterisk-18.8.0-summary.html | 78 - asterisk-18.8.0-summary.txt | 245 - - b/.version | 2 - b/CHANGES | 110 - b/CREDITS | 2 - b/ChangeLog | 1456 +++++++++ - b/Makefile | 4 - b/UPGRADE.txt | 20 - b/addons/chan_mobile.c | 28 - b/addons/chan_ooh323.c | 6 - b/addons/ooh323c/README | 2 - b/addons/ooh323c/src/decode.c | 2 - b/addons/ooh323c/src/encode.c | 4 - b/addons/ooh323c/src/eventHandler.h | 6 - b/addons/ooh323c/src/h323/H323-MESSAGES.h | 2 - b/addons/ooh323c/src/h323/H323-MESSAGESDec.c | 8 - b/addons/ooh323c/src/h323/H323-MESSAGESEnc.c | 4 - b/addons/ooh323c/src/memheap.c | 20 - b/addons/ooh323c/src/ooCalls.c | 2 - b/addons/ooh323c/src/ooCapability.h | 12 - b/addons/ooh323c/src/ooCmdChannel.c | 4 - b/addons/ooh323c/src/ooGkClient.c | 4 - b/addons/ooh323c/src/ooGkClient.h | 2 - b/addons/ooh323c/src/ooLogChan.c | 2 - b/addons/ooh323c/src/ooSocket.h | 2 - b/addons/ooh323c/src/ooUtils.c | 2 - b/addons/ooh323c/src/ooUtils.h | 2 - b/addons/ooh323c/src/ooasn1.h | 2 - b/addons/ooh323c/src/oochannels.c | 2 - b/addons/ooh323c/src/ooh245.c | 2 - b/addons/ooh323c/src/ooh245.h | 4 - b/addons/ooh323c/src/ooh323.c | 29 - b/addons/ooh323c/src/ooh323ep.c | 2 - b/addons/ooh323c/src/ooq931.c | 6 - b/addons/ooh323c/src/ooq931.h | 2 - b/agi/eagi-test.c | 2 - b/agi/jukebox.agi | 2 - b/apps/app_agent_pool.c | 30 - b/apps/app_alarmreceiver.c | 3 - b/apps/app_bridgewait.c | 22 - b/apps/app_chanspy.c | 10 - b/apps/app_confbridge.c | 33 - b/apps/app_dial.c | 6 - b/apps/app_dtmfstore.c | 16 - b/apps/app_forkcdr.c | 2 - b/apps/app_jack.c | 2 - b/apps/app_macro.c | 2 - b/apps/app_meetme.c | 12 - b/apps/app_minivm.c | 169 - - b/apps/app_mixmonitor.c | 1 - b/apps/app_morsecode.c | 5 - b/apps/app_mp3.c | 6 - b/apps/app_page.c | 6 - b/apps/app_playback.c | 18 - b/apps/app_queue.c | 109 - b/apps/app_read.c | 2 - b/apps/app_stack.c | 2 - b/apps/app_stasis.c | 2 - b/apps/app_statsd.c | 4 - b/apps/app_test.c | 2 - b/apps/app_voicemail.c | 214 - - b/apps/app_waitforsilence.c | 17 - b/apps/confbridge/conf_config_parser.c | 6 - b/apps/confbridge/conf_state.c | 2 - b/apps/confbridge/include/confbridge.h | 10 - b/asterisk-18.9.0-rc1-summary.html | 737 ++++ - b/asterisk-18.9.0-rc1-summary.txt | 1222 ++++++++ - b/bridges/bridge_holding.c | 4 - b/bridges/bridge_softmix.c | 22 - b/bridges/bridge_softmix/bridge_softmix_binaural.c | 4 - b/bridges/bridge_softmix/include/bridge_softmix_internal.h | 10 - b/build_tools/download_externals | 9 - b/cdr/cdr_odbc.c | 5 - b/cdr/cdr_pgsql.c | 4 - b/cdr/cdr_syslog.c | 3 - b/cdr/cdr_tds.c | 5 - b/cel/cel_beanstalkd.c | 3 - b/cel/cel_custom.c | 3 - b/cel/cel_pgsql.c | 4 - b/cel/cel_radius.c | 2 - b/cel/cel_sqlite3_custom.c | 5 - b/cel/cel_tds.c | 5 - b/channels/chan_console.c | 2 - b/channels/chan_dahdi.c | 86 - b/channels/chan_iax2.c | 64 - b/channels/chan_mgcp.c | 8 - b/channels/chan_misdn.c | 86 - b/channels/chan_motif.c | 6 - b/channels/chan_pjsip.c | 2 - b/channels/chan_rtp.c | 2 - b/channels/chan_sip.c | 135 - b/channels/chan_skinny.c | 10 - b/channels/chan_unistim.c | 8 - b/channels/console_gui.c | 12 - b/channels/console_video.c | 10 - b/channels/dahdi/bridge_native_dahdi.c | 10 - b/channels/iax2/codec_pref.c | 2 - b/channels/iax2/include/astobj.h | 2 - b/channels/iax2/include/firmware.h | 8 - b/channels/iax2/include/iax2.h | 4 - b/channels/iax2/parser.c | 6 - b/channels/misdn/isdn_lib.c | 4 - b/channels/misdn/isdn_lib_intern.h | 2 - b/channels/misdn/isdn_msg_parser.c | 10 - b/channels/sig_analog.c | 8 - b/channels/sig_pri.c | 159 - - b/channels/sig_pri.h | 8 - b/channels/sig_ss7.c | 64 - b/channels/sig_ss7.h | 2 - b/channels/sip/config_parser.c | 61 - b/channels/sip/include/config_parser.h | 2 - b/channels/sip/include/reqresp_parser.h | 12 - b/channels/sip/include/route.h | 9 - b/channels/sip/include/sip.h | 32 - b/channels/sip/reqresp_parser.c | 8 - b/channels/vcodecs.c | 2 - b/codecs/codec_g726.c | 2 - b/codecs/gsm/src/rpe.c | 2 - b/codecs/ilbc/LPCencode.c | 8 - b/codecs/ilbc/StateSearchW.c | 4 - b/codecs/ilbc/StateSearchW.h | 2 - b/codecs/ilbc/constants.c | 2 - b/codecs/ilbc/createCB.c | 2 - b/codecs/ilbc/createCB.h | 2 - b/codecs/ilbc/enhancer.h | 4 - b/codecs/ilbc/iLBC_decode.c | 2 - b/codecs/ilbc/rfc3951.txt | 26 - b/codecs/lpc10/lpc10.h | 2 - b/codecs/lpc10/pitsyn.c | 2 - b/codecs/lpc10/placea.c | 2 - b/codecs/speex/resample.c | 2 - b/configs/basic-pbx/extensions.conf | 2 - b/configs/samples/app_mysql.conf.sample | 2 - b/configs/samples/ast_debug_tools.conf.sample | 47 - b/configs/samples/cdr.conf.sample | 2 - b/configs/samples/chan_dahdi.conf.sample | 2 - b/configs/samples/cli_permissions.conf.sample | 2 - b/configs/samples/dundi.conf.sample | 2 - b/configs/samples/extensions.ael.sample | 2 - b/configs/samples/extensions.conf.sample | 4 - b/configs/samples/extensions.lua.sample | 4 - b/configs/samples/extensions_minivm.conf.sample | 2 - b/configs/samples/hep.conf.sample | 2 - b/configs/samples/iax.conf.sample | 2 - b/configs/samples/logger.conf.sample | 2 - b/configs/samples/minivm.conf.sample | 2 - b/configs/samples/motif.conf.sample | 2 - b/configs/samples/ooh323.conf.sample | 2 - b/configs/samples/queues.conf.sample | 4 - b/configs/samples/rtp.conf.sample | 2 - b/configure | 1508 ++++++---- - b/configure.ac | 102 - b/contrib/ast-db-manage/README.md | 2 - b/contrib/ast-db-manage/config/versions/1ae0609b6646_increse_reg_server_size.py | 2 - b/contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py | 2 - b/contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py | 2 - b/contrib/init.d/rc.debian.asterisk | 2 - b/contrib/scripts/ast_coredumper | 949 +++--- - b/contrib/scripts/ast_loggrabber | 4 - b/contrib/scripts/asterisk.ldap-schema | 2 - b/contrib/scripts/asterisk.ldif | 2 - b/contrib/scripts/loadtest.tcl | 2 - b/contrib/scripts/retrieve_extensions_from_sql.pl | 2 - b/contrib/scripts/safe_asterisk.8 | 2 - b/contrib/scripts/valgrind_compare | 2 - b/contrib/scripts/voicemailpwcheck.py | 2 - b/contrib/utils/zones2indications.c | 4 - b/doc/asterisk-ng-doxygen.in | 4 - b/formats/format_ogg_speex.c | 2 - b/formats/format_ogg_vorbis.c | 2 - b/funcs/func_devstate.c | 6 - b/funcs/func_odbc.c | 4 - b/funcs/func_pitchshift.c | 8 - b/funcs/func_sprintf.c | 2 - b/funcs/func_strings.c | 4 - b/funcs/func_talkdetect.c | 26 - b/include/asterisk/abstract_jb.h | 2 - b/include/asterisk/adsi.h | 4 - b/include/asterisk/aoc.h | 2 - b/include/asterisk/app.h | 71 - b/include/asterisk/ari.h | 22 - b/include/asterisk/astdb.h | 2 - b/include/asterisk/astmm.h | 6 - b/include/asterisk/astobj2.h | 12 - b/include/asterisk/audiohook.h | 79 - b/include/asterisk/autoconfig.h.in | 5 - b/include/asterisk/bridge.h | 2 - b/include/asterisk/bridge_channel.h | 27 - b/include/asterisk/bridge_channel_internal.h | 11 - b/include/asterisk/bridge_features.h | 2 - b/include/asterisk/bridge_roles.h | 4 - b/include/asterisk/calendar.h | 8 - b/include/asterisk/callerid.h | 2 - b/include/asterisk/causes.h | 6 - b/include/asterisk/cdr.h | 4 - b/include/asterisk/channel.h | 203 - - b/include/asterisk/cli.h | 2 - b/include/asterisk/config.h | 4 - b/include/asterisk/config_options.h | 2 - b/include/asterisk/crypto.h | 2 - b/include/asterisk/datastore.h | 4 - b/include/asterisk/devicestate.h | 4 - b/include/asterisk/dlinkedlists.h | 7 - b/include/asterisk/dns_core.h | 2 - b/include/asterisk/doxygen/architecture.h | 2 - b/include/asterisk/doxyref.h | 13 - b/include/asterisk/endpoints.h | 2 - b/include/asterisk/enum.h | 8 - b/include/asterisk/event_defs.h | 2 - b/include/asterisk/file.h | 15 - b/include/asterisk/frame.h | 10 - b/include/asterisk/framehook.h | 41 - b/include/asterisk/hashtab.h | 4 - b/include/asterisk/http.h | 4 - b/include/asterisk/http_websocket.h | 5 - b/include/asterisk/io.h | 2 - b/include/asterisk/iostream.h | 2 - b/include/asterisk/json.h | 17 - b/include/asterisk/linkedlists.h | 3 - b/include/asterisk/logger.h | 70 - b/include/asterisk/manager.h | 23 - b/include/asterisk/mod_format.h | 2 - b/include/asterisk/module.h | 4 - b/include/asterisk/mwi.h | 4 - b/include/asterisk/netsock2.h | 6 - b/include/asterisk/parking.h | 19 - b/include/asterisk/pbx.h | 14 - b/include/asterisk/plc.h | 4 - b/include/asterisk/privacy.h | 2 - b/include/asterisk/res_mwi_external.h | 2 - b/include/asterisk/res_odbc.h | 25 - b/include/asterisk/res_pjsip.h | 110 - b/include/asterisk/res_pjsip_cli.h | 6 - b/include/asterisk/res_pjsip_presence_xml.h | 2 - b/include/asterisk/res_pjsip_pubsub.h | 7 - b/include/asterisk/res_pjsip_session.h | 8 - b/include/asterisk/res_pjsip_session_caps.h | 2 - b/include/asterisk/res_prometheus.h | 4 - b/include/asterisk/res_stir_shaken.h | 25 - b/include/asterisk/rtp_engine.h | 6 - b/include/asterisk/say.h | 2 - b/include/asterisk/sdp_srtp.h | 3 - b/include/asterisk/sem.h | 2 - b/include/asterisk/smoother.h | 8 - b/include/asterisk/sorcery.h | 4 - b/include/asterisk/speech.h | 6 - b/include/asterisk/srv.h | 3 - b/include/asterisk/stasis.h | 128 - b/include/asterisk/stasis_app.h | 28 - b/include/asterisk/stasis_app_device_state.h | 2 - b/include/asterisk/stasis_app_impl.h | 5 - b/include/asterisk/stasis_app_mailbox.h | 12 - b/include/asterisk/stasis_app_playback.h | 14 - b/include/asterisk/stasis_app_recording.h | 32 - b/include/asterisk/stasis_app_snoop.h | 5 - b/include/asterisk/stasis_bridges.h | 53 - b/include/asterisk/stasis_channels.h | 98 - b/include/asterisk/stasis_endpoints.h | 2 - b/include/asterisk/stasis_internal.h | 1 - b/include/asterisk/stasis_message_router.h | 16 - b/include/asterisk/stasis_system.h | 4 - b/include/asterisk/stasis_test.h | 1 - b/include/asterisk/stringfields.h | 2 - b/include/asterisk/strings.h | 32 - b/include/asterisk/stun.h | 3 - b/include/asterisk/syslog.h | 3 - b/include/asterisk/taskprocessor.h | 5 - b/include/asterisk/tcptls.h | 5 - b/include/asterisk/term.h | 16 - b/include/asterisk/test.h | 30 - b/include/asterisk/threadpool.h | 6 - b/include/asterisk/threadstorage.h | 6 - b/include/asterisk/time.h | 4 - b/include/asterisk/timing.h | 2 - b/include/asterisk/transcap.h | 8 - b/include/asterisk/translate.h | 2 - b/include/asterisk/utils.h | 20 - b/include/asterisk/vector.h | 2 - b/include/asterisk/xmldoc.h | 2 - b/include/jitterbuf.h | 8 - b/main/abstract_jb.c | 2 - b/main/aoc.c | 2 - b/main/app.c | 43 - b/main/asterisk.c | 2 - b/main/astfd.c | 2 - b/main/astmm.c | 38 - b/main/astobj2.c | 5 - b/main/astobj2_container.c | 4 - b/main/astobj2_container_private.h | 2 - b/main/astobj2_rbtree.c | 2 - b/main/audiohook.c | 115 - b/main/bridge.c | 4 - b/main/bridge_basic.c | 18 - b/main/bridge_channel.c | 87 - b/main/bucket.c | 2 - b/main/callerid.c | 2 - b/main/ccss.c | 6 - b/main/channel.c | 31 - b/main/channel_internal_api.c | 2 - b/main/config.c | 11 - b/main/dns.c | 4 - b/main/dns_recurring.c | 2 - b/main/dns_test.c | 38 - b/main/dnsmgr.c | 2 - b/main/dsp.c | 2 - b/main/enum.c | 6 - b/main/features_config.c | 4 - b/main/file.c | 17 - b/main/fskmodem_float.c | 2 - b/main/fskmodem_int.c | 2 - b/main/io.c | 2 - b/main/json.c | 19 - b/main/logger.c | 2 - b/main/manager.c | 6 - b/main/mwi.c | 16 - b/main/optional_api.c | 12 - b/main/pbx.c | 25 - b/main/pbx_functions.c | 6 - b/main/rtp_engine.c | 3 - b/main/say.c | 40 - b/main/smoother.c | 2 - b/main/stasis.c | 13 - b/main/stasis_bridges.c | 2 - b/main/stasis_cache.c | 10 - b/main/stasis_message_router.c | 2 - b/main/stasis_state.c | 7 - b/main/stdtime/localtime.c | 2 - b/main/strings.c | 25 - b/main/stun.c | 17 - b/main/test.c | 11 - b/main/threadpool.c | 2 - b/main/time.c | 2 - b/main/translate.c | 2 - b/main/udptl.c | 2 - b/main/utils.c | 150 - b/main/xmldoc.c | 94 - b/makeopts.in | 1 - b/menuselect/Makefile | 4 - b/menuselect/README | 2 - b/menuselect/configure | 14 - b/menuselect/contrib/menuselect-dummy | 20 - b/menuselect/menuselect.c | 2 - b/menuselect/menuselect_curses.c | 2 - b/menuselect/menuselect_gtk.c | 2 - b/menuselect/menuselect_newt.c | 2 - b/menuselect/menuselect_stub.c | 2 - b/pbx/ael/ael-test/ael-test2/apptest.ael2 | 2 - b/pbx/ael/ael-test/ael-test3/extensions.ael | 2 - b/pbx/ael/ael-test/ael-test3/telemarket_torture.ael2 | 10 - b/pbx/ael/ael-test/ael-test4/apptest.ael2 | 2 - b/pbx/ael/ael-test/ael-vtest13/extensions.ael | 2 - b/pbx/ael/ael-test/ael-vtest13/telemarket_torture.ael2 | 10 - b/pbx/pbx_config.c | 4 - b/pbx/pbx_dundi.c | 6 - b/pbx/pbx_lua.c | 17 - b/res/ael/ael.y | 2 - b/res/ael/pval.c | 12 - b/res/ari/ari_model_validators.h | 464 +-- - b/res/ari/resource_bridges.c | 12 - b/res/ari/resource_channels.c | 6 - b/res/ari/resource_events.c | 4 - b/res/ari/resource_events.h | 3 - b/res/parking/parking_applications.c | 2 - b/res/parking/parking_bridge.c | 10 - b/res/parking/parking_bridge_features.c | 6 - b/res/parking/res_parking.h | 30 - b/res/prometheus/pjsip_outbound_registrations.c | 2 - b/res/prometheus/prometheus_internal.h | 4 - b/res/res_agi.c | 28 - b/res/res_ari.c | 8 - b/res/res_ari_applications.c | 10 - b/res/res_ari_asterisk.c | 32 - b/res/res_ari_bridges.c | 28 - b/res/res_ari_channels.c | 62 - b/res/res_ari_device_states.c | 8 - b/res/res_ari_endpoints.c | 10 - b/res/res_ari_events.c | 2 - b/res/res_ari_mailboxes.c | 8 - b/res/res_ari_playbacks.c | 6 - b/res/res_ari_recordings.c | 24 - b/res/res_ari_sounds.c | 4 - b/res/res_calendar.c | 2 - b/res/res_calendar_caldav.c | 4 - b/res/res_calendar_icalendar.c | 4 - b/res/res_config_curl.c | 2 - b/res/res_config_ldap.c | 4 - b/res/res_config_odbc.c | 37 - b/res/res_config_pgsql.c | 2 - b/res/res_corosync.c | 2 - b/res/res_fax_spandsp.c | 2 - b/res/res_http_post.c | 2 - b/res/res_musiconhold.c | 4 - b/res/res_odbc.c | 13 - b/res/res_parking.c | 5 - b/res/res_phoneprov.c | 2 - b/res/res_pjsip.c | 4 - b/res/res_pjsip/config_global.c | 4 - b/res/res_pjsip/config_transport.c | 8 - b/res/res_pjsip/include/res_pjsip_private.h | 6 - b/res/res_pjsip/pjsip_configuration.c | 42 - b/res/res_pjsip/pjsip_distributor.c | 2 - b/res/res_pjsip/pjsip_scheduler.c | 2 - b/res/res_pjsip/pjsip_session.c | 2 - b/res/res_pjsip/pjsip_transport_events.c | 2 - b/res/res_pjsip_authenticator_digest.c | 3 - b/res/res_pjsip_caller_id.c | 48 - b/res/res_pjsip_config_wizard.c | 2 - b/res/res_pjsip_header_funcs.c | 6 - b/res/res_pjsip_history.c | 14 - b/res/res_pjsip_messaging.c | 97 - b/res/res_pjsip_nat.c | 2 - b/res/res_pjsip_outbound_authenticator_digest.c | 4 - b/res/res_pjsip_outbound_registration.c | 6 - b/res/res_pjsip_path.c | 4 - b/res/res_pjsip_publish_asterisk.c | 6 - b/res/res_pjsip_pubsub.c | 10 - b/res/res_pjsip_registrar.c | 5 - b/res/res_pjsip_rfc3326.c | 2 - b/res/res_pjsip_sdp_rtp.c | 2 - b/res/res_pjsip_session.c | 20 - b/res/res_pjsip_stir_shaken.c | 180 + - b/res/res_pktccops.c | 2 - b/res/res_rtp_asterisk.c | 8 - b/res/res_smdi.c | 2 - b/res/res_sorcery_config.c | 2 - b/res/res_speech.c | 27 - b/res/res_srtp.c | 3 - b/res/res_stasis.c | 2 - b/res/res_stasis_playback.c | 6 - b/res/res_stasis_snoop.c | 2 - b/res/res_stir_shaken.c | 175 - - b/res/res_stir_shaken/curl.c | 2 - b/res/res_stir_shaken/curl.h | 2 - b/res/res_tonedetect.c | 365 ++ - b/res/res_xmpp.c | 70 - b/res/snmp/agent.c | 2 - b/res/stasis/app.c | 5 - b/res/stasis/app.h | 71 - b/res/stasis/control.h | 14 - b/res/stasis/messaging.h | 5 - b/res/stasis/stasis_bridge.c | 2 - b/res/stasis/stasis_bridge.h | 2 - b/res/stasis_recording/stored.c | 4 - b/rest-api-templates/ari_model_validators.h.mustache | 50 - b/rest-api-templates/ari_resource.h.mustache | 3 - b/rest-api-templates/asterisk_processor.py | 4 - b/rest-api-templates/res_ari_resource.c.mustache | 2 - b/rest-api-templates/transform.py | 2 - b/tests/CI/gates.jenkinsfile | 4 - b/tests/CI/periodics-daily.jenkinsfile | 2 - b/tests/CI/ref_debug.jenkinsfile | 2 - b/tests/CI/unittests.jenkinsfile | 2 - b/tests/CI/universal-asterisk-nongerrit.jenkinsfile | 4 - b/tests/test_abstract_jb.c | 2 - b/tests/test_aoc.c | 2 - b/tests/test_astobj2.c | 2 - b/tests/test_astobj2_thrash.c | 10 - b/tests/test_config.c | 2 - b/tests/test_devicestate.c | 2 - b/tests/test_dns_naptr.c | 2 - b/tests/test_hashtab_thrash.c | 10 - b/tests/test_json.c | 60 - b/tests/test_linkedlists.c | 1 - b/tests/test_media_cache.c | 2 - b/tests/test_message.c | 2 - b/tests/test_optional_api.c | 2 - b/tests/test_sorcery.c | 2 - b/tests/test_sorcery_memory_cache_thrash.c | 4 - b/tests/test_stasis.c | 6 - b/tests/test_strings.c | 118 - b/tests/test_taskprocessor.c | 10 - b/tests/test_voicemail_api.c | 24 - b/third-party/pjproject/Makefile | 6 - b/third-party/pjproject/configure.m4 | 1 - b/utils/astman.1 | 2 - b/utils/db1-ast/hash/README | 2 - 476 files changed, 8685 insertions(+), 4884 deletions(-) diff --git a/asterisk-certified-18.9-cert1-rc1-summary.html b/asterisk-certified-18.9-cert1-rc1-summary.html new file mode 100644 index 0000000000..caf6e4c93d --- /dev/null +++ b/asterisk-certified-18.9-cert1-rc1-summary.html @@ -0,0 +1,3185 @@ +Release Summary - asterisk-certified/18.9-cert1-rc1

Release Summary

asterisk-certified/18.9-cert1-rc1

Date: 2022-01-21

<asteriskteam@digium.com>


Table of Contents

    +
  1. Summary
  2. +
  3. Contributors
  4. +
  5. Closed Issues
  6. +
  7. Open Issues
  8. +
  9. Other Changes
  10. +
  11. Diffstat
  12. +

Summary

[Back to Top]

This release is a point release of an existing major version. The changes included were made to address problems that have been identified in this release series, or are minor, backwards compatible new features or improvements. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous version are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.

The data in this summary reflects changes that have been made since the previous release, asterisk-certified/16.8-cert12.


Contributors

[Back to Top]

This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were affected by commits that went into this release.

+ + +
CodersTestersReporters
188 Sean Bright
160 George Joseph
89 Joshua C. Colp
88 Alexander Traud
72 Corey Farrell
71 Kevin Harwell
53 Joshua Colp
51 Richard Mudgett
50 Naveen Albert
40 Ben Ford
32 Jaco Kroon
30 Alexei Gradinari
24 Josh Soref
21 sungtae kim
19 Torrey Searle
15 Asterisk Development Team
15 Walter Doekes
11 Sungtae Kim
11 Chris-Savinovich
9 Rodrigo Ramírez Norambuena
9 Alexander Traud
9 Guido Falsi
8 Jean Aunis
8 Pirmin Walthert
8 laszlovl
7 Matt Jordan
7 Frederic LE FOLL
6 Boris P. Korzun
5 Salah Ahmed
5 Pascal Cadotte Michaud
5 Tzafrir Cohen
5 Ivan Poddubnyi
5 Dan Cropp
5 Igor Goncharovsky
5 Sebastien Duthil
4 Emmanuel BUU
4 Nick French
4 Florian Floimair
4 Mike Bradeen
4 Abhay Gupta
3 Matthew Fredrickson
3 Holger Hans Peter Freyther
3 Nickolay Shmyrev
3 Joseph Nadiv
3 Andre Barbosa
3 Mark Murawski
3 Jeremy Lainé
2 Sebastian Kemper
2 cirillor
2 Robert Cripps
2 Nathan Bruning
2 Bernd Zobl
2 cmaj
2 Andrew Siplas
2 Shloime Rosenblum
2 Giuseppe Sucameli
2 Jasper Hafkenscheid
2 Mark Petersen
2 Michael Neuhauser
2 Kirsty Tyerman
1 Sarah Autumn
1 Ivan Poddubny
1 Nasir Iqbal
1 Matthew Kern
1 Jared Smith
1 Jonathan Rose
1 under
1 Bernard Merindol
1 Bryan Boatright
1 Kfir Itzhak
1 Michael Cargile
1 Nicholas John Koch
1 Christoph Moench-Tegeder
1 Patrick Verzele
1 Dömsödi Gergely
1 Michal Hajek
1 eyalhasson
1 Jason Hord (license 6978)
1 Peter Katzmann
1 Michael Walton (license 6502)
1 Jan Hoffmann (license 6986)
1 Rijnhard Hessel
1 Stanislav
1 Peter Turczak
1 David M. Lee
1 Daniel Heckl
1 Francesco Castellano
1 Morten Tryfoss
1 Leonid Fainshtein
1 Carlos Oliva
1 Paulo Vicentini
1 Cao Minh Hiep
1 Evgenios_Greek
1 Alexander Anikin
1 Xiemin Chen
1 Thomas Arimont (license 5525)
1 Jasper van der Neut
1 Martin Tomec
1 Diederik de Groot
1 Kevin Reeves
1 Stas Kobzar
1 Dennis Buteyn
1 Antoni Goldstein
1 Lucas Mendes
1 Sylvain Afchain
1 Dovid Bender
1 Evandro César Arruda
1 Gerald Schnabel
1 Sebastian Damm
1 Università di Bologna - CESIA VoIP
1 Mohit Dhiman
1 Nico Kooijman
1 Michael Goryainov
1 Roger James
1 Valentin Vidic
1 Moises Silva
1 Chris Savinovich
1 Alexander Greiner-Baer
1 Peter Sokolov (License #7070)
1 Moritz Fain
1 Seán C McCord
1 David Hajek
1 snuffy
3 Emmanuel BUU
2 Mark Petersen
1 Cao Minh Hiep
1 tests/test_utils.c.
1 Abhay Gupta
1 Joseph Nadiv
72 Alexander Traud
61 Joshua C. Colp
49 N A
31 sungtae kim
30 George Joseph
24 Josh Soref
20 Kevin Harwell
18 Torrey Searle
18 Ross Beer
14 Alexei Gradinari
10 Sean Bright
10 Walter Doekes
10 Jean Aunis - Prescom
9 nappsoft
8 Guido Falsi
8 laszlovl
7 Corey Farrell
7 Boris P. Korzun
7 Jaco Kroon
7 Frederic LE FOLL
7 Ross Beer
6 Dan Cropp
6 Salah Ahmed
6 Sébastien Duthil
6 Matt Jordan
6 Dan Cropp
5 Michael Maier
5 Sebastian Damm
5 Gregory Massel
5 Pascal Cadotte Michaud
5 cmaj
4 Sergej Kasumovic
4 Benjamin Keith Ford
4 Emmanuel BUU
4 Jonathan Harris
4 Jeremy Lainé
4 Abhay Gupta
4 Michael
4 Joshua Elson
3 Andre Barbosa
3 Ivan Poddubny
3 Nickolay V. Shmyrev
3 Robert Sutton
3 Matthias Hensler
3 Alexander Traud
3 Emmanuel BUU
3 Nick French
2 Joseph Ades
2 under
2 Niksa Baldun
2 pasandev
2 Stas Kobzar
2 Timothy Vanderaerden
2 Giuseppe Sucameli
2 Igor Goncharovsky
2 Cirillo Ferreira
2 Marin Odrljin
2 Mark Petersen
2 Andrew Siplas
2 David Kuehling
2 Mark Murawski
2 Bernhard Schmidt
2 Sébastien Duthil
2 Luke Escude
2 Michael Neuhauser
2 Rusty Newton
2 Peter Sokolov
2 Shloime Rosenblum
2 abelbeck
2 Stefan Ruf
2 Robert Cripps
2 Mark Petersen
2 Ruddy G
2 Bernhard Schmidt
2 Dennis
2 Joeran Vinzens
2 Olivier Krief
2 Eyal Hasson
2 Etienne Lessard
2 Andrew Yager
2 George Joseph
2 Florian Floimair
2 Hajek Michal
2 Sebastian Kemper
2 Jared Smith
2 Brian J. Murrell
2 Michael Neuhauser
1 Ramarajan
1 Juan Carlos Castro y Castro
1 Adam Secombe
1 Lucas Tardioli Silveira
1 Jean-Denis Girard
1 Adam Secombe
1 Mark
1 Samuel Galarneau
1 Thomas Johnson
1 Seán C. McCord
1 Speed Dial Dave
1 David Kuehling
1 Alex
1 Paul Brooks
1 Janu
1 Nathan Bruning
1 César Benjamín García Martínez
1 Peter Turczak
1 Jeremiah Gadd
1 Péter Juhász
1 Kevin Flyn
1 Kirill Katsnelson
1 Tomas Maldonado
1 Chris
1 Luit van Drongelen
1 Valentin Safonov
1 Dmitry Wagin
1 bbawkon
1 Mitch Claborn
1 Bob Atkins
1 Lei Fu
1 Paul Brooks
1 Gil Richard
1 Dmitry Svyatogorov
1 Vieri
1 Christoph Moench-Tegeder
1 Alex Hermann
1 Cedric BASSAGET
1 Schneur Rosenberg
1 David M. Lee
1 Richard Kenner
1 Dan Jenkins
1 Dalius Mockevicius
1 Krzysztof Trempala
1 Università di Bologna - CESIA VoIP
1 David Wilcox
1 Martin Zeh
1 Mauri de Souza Meneguzzo (3CPlus)
1 Jean-Denis Girard
1 Dmitry Shubin
1 Roger James
1 Eric Smith
1 Michael Maier
1 Andrew Nagy
1 Mohit Dhiman
1 Nikolay shakin
1 Joshua Roys
1 Brian J. Murrell
1 Jonathan Harris
1 Ronald Raikes
1 Matt Addison
1 Nicholas John Koch
1 Lucas Mendes
1 Niksa Baldun
1 Kfir Itzhak
1 Bill Kervaski
1 Oleksandr Natalenko
1 tootai
1 Jacek Konieczny
1 Julien
1 Vyrva Igor
1 Scott Griepentrog
1 Sta Retji
1 Joshua C. Colp
1 dovid
1 Yoooooo Ha
1 kevin@phoneburner.com
1 Gil Richard
1 Alex Hermann
1 Bernard Merindol
1 Alexey Vasilyev
1 Ivan Poddubny
1 Kirill Katsnelson
1 Joseph Nadiv
1 Jared Hull
1 Andrea Sannucci
1 Asterisk to be misaligned.
1 Matthew Kern
1 Mikhail Ivanov
1 boatright
1 Frank Matano
1 Cédric Bassaget
1 Luke-Jr
1 Patrick Wakano
1 Joeran Vinzens
1 test011
1 Mark
1 Jim Van Meggelen
1 David Cunningham
1 Jim Van Meggelen
1 Daniel
1 Jared Hull
1 Ronald Raikes
1 Cao Minh Hiep
1 Robert Sutton
1 Jonathan Hunter
1 David Lee
1 David Hajek
1 Carlos Oliva
1 Alexander Gonchiy
1 the CC variable, instead of unconditionally
1 Francesco Castellano
1 EDV O-TON
1 Ted G
1 Stanislav Abramenkov
1 Alexander Akimov
1 Anton Satskiy
1 Niklas Larsson
1 Francois Blackburn
1 Michael Newton
1 Alexander Greiner-Baer
1 Gant Liu
1 Ian Gilmour
1 Sotiris Ganouris
1 Philip Young
1 Università di Bologna - CESIA VoIP
1 Morten Tryfoss
1 Eliel Sardañons
1 AvayaXAsterisk
1 Dirk Wendland
1 Luke-Jr
1 Moritz Fain
1 Valentin Vidić
1 xrobau
1 Valentin Safonov
1 Peter Sokolov
1 Kirsty Tyerman
1 Michael Welk
1 Martin Tomec
1 N A
1 Stefan Repke
1 Marco Paland
1 Sylvain Afchain
1 Daniel Heckl
1 Oleksandr Natalenko
1 N GM
1 Abhay Gupta
1 AvayaXAsterisk
1 Steven Wheeler
1 Luit van Drongelen
1 Dirk Wendland
1 Bryan Nelson
1 Paul Sandys
1 Gerald Schnabel
1 Thomas Frederiksen
1 Vitezslav Novy
1 Misha Vodsedalek
1 Eric Dantie
1 Nicholas John Koch
1 Caesar
1 Sam Banks
1 Majdi Bsoul
1 Byron Clark
1 Christoph Moench-Tegeder
1 Evandro César Arruda
1 Michal Hajek
1 Yury Kirsanov
1 Jason Hord
1 Kevin Flyn
1 Vitold
1 Samuel Owens
1 Shlomi Gutman
1 seanchann.zhou
1 Dan Jenkins
1 Gianluca Merlo
1 Kilburn
1 Aheliotech
1 Sarah Autumn
1 Anton Satskiy
1 Michael Munger
1 Kirsty Tyerman
1 Michael Walton
1 Janu
1 Miguel Sanz
1 Isaac McDonald
1 Ove Aursand
1 Daniel Zanutti
1 Antoni Goldstein
1 Joshua Roys
1 Maciej Michno
1 Francisco Correia
1 Rodrigo Ramirez Norambuena
1 Walter Doekes
1 Stas Kobzar
1 Francisco Seratti
1 Xiemin Chen
1 Frank Matano
1 Yury Kirsanov
1 David Hajek
1 Andrey V. T.
1 Juan Martin
1 Mario Ban
1 Dmitry Shubin
1 Dmitriy Serov
1 Hendrik Wedhorn
1 Flole Systems
1 Ted G
1 Martin Zeh
1 Boolah
1 Ernani José Camargo Azevedo
1 Steven Wheeler
1 Diederik de Groot
1 Paul Sandys
1 Vyrva Igor
1 IAMJames_
1 Nasir Iqbal
1 Chris Savinovich
1 Patrick Wakano
1 Jasper van der Neut
1 Eliel Sardañons
1 Jasper Hafkenscheid
1 dennis
1 Guido Weckwerth
1 Jan Hoffmann
1 candrews
1 Olivier Krief
1 Lucas Tardioli Silveira
1 Igor Liferenko
1 Michael Goryainov
1 Moises Silva
1 xiemchen
1 Richard Kenner
1 EDV O-TON
1 siggi
1 sstream
1 Peter Katzmann
1 Michael Cargile
1 Jan Hoffmann
1 Alex Odrov
1 Edvin Vidmar
1 rleasure
1 Will
1 Jonas Swiatek
1 Ray
1 Roman Pertsev
1 Cao Minh Hiep
1 Dennis Haney
1 Bernd Zobl
1 Francisco Seratti
1 Robin Leffmann
1 Vitold
1 Rijnhard Hessel
1 Alexander Zharov
1 Andrej
1 klaus3000
1 Dmitriy Serov
1 Kevin Reeves
1 Niklas Larsson
1 Siruja Maharjan
1 Samuel Galarneau
1 Maciej Michno
1 Benjamin M.
1 Francisco Correia
1 Philip Mott
1 周家建
1 Sotiris Ganouris
1 vijay kumar
1 Charlie Smurthwaite
1 Andrew Nagy
1 Ian Jones
1 Jamuel Starkey
1 Cameron
1 Paulo Vicentini
1 Marian Piater
1 Jacek Konieczny
1 David Wilcox
1 Leandro Dardini
1 alex
1 Sandro Gauci
1 Dovid Bender
1 Sean Bright
1 César Benjamín García Martínez
1 Brian Paboojian
1 Cyril Ramière
1 Jørgen H

Closed Issues

[Back to Top]

This is a list of all issues from the issue tracker that were closed by changes that went into this release.

Deprecation

Category: Addons/app_mysql

ASTERISK-29555: app_mysql: Deprecated in 1.8, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Addons/cdr_mysql

ASTERISK-29554: cdr_mysql: Deprecated in 1.8, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_dahdiras

ASTERISK-29563: app_dahdiras: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_fax

ASTERISK-29559: app_fax: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_ices

ASTERISK-29557: app_ices: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_image

ASTERISK-29561: app_image: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_macro

ASTERISK-29558: app_macro: Deprecated in 16, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_meetme

ASTERISK-29548: app_meetme: Deprecated in 19, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_nbscat

ASTERISK-29562: app_nbscat: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_osplookup

ASTERISK-29549: app_osploop: Deprecated in 19, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Applications/app_url

ASTERISK-29560: app_url: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: CDR/cdr_syslog

ASTERISK-29564: cdr_syslog: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_alsa

ASTERISK-29550: chan_alsa: Deprecated in 19, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_mgcp

ASTERISK-29551: chan_mgcp: Deprecated in 19, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_misdn

ASTERISK-29569: chan_misdn: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_nbs

ASTERISK-29568: chan_nbs: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_oss

ASTERISK-29565: chan_oss: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_phone

ASTERISK-29566: chan_phone: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_sip/General

ASTERISK-29567: chan_sip: Deprecated in 17, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_skinny

ASTERISK-29552: chan_skinny: Deprecated in 19, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Channels/chan_vpb

ASTERISK-29570: chan_vpb: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Contrib/General

ASTERISK-29574: muted: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: PBX/General

ASTERISK-29573: conf2ael: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Resources/General

ASTERISK-29553: res_pktccops: Deprecated in 19, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Resources/res_config_sqlite

ASTERISK-29571: res_config_sqlite: Deprecated in 16, to be removed in 19
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Category: Resources/res_monitor

ASTERISK-29572: res_monitor: Deprecated in 16, to be removed in 21
Reported by: Joshua C. Colp
    +
  • [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal versions to modules.
  • +

Security

Category: Channels/chan_pjsip

ASTERISK-29415: Crash in PJSIP TLS transport
Reported by: Andrew Yager
    +
  • [3025ef4f6e] Kevin Harwell -- AST-2021-009 - pjproject-bundled: Avoid crash during handshake for TLS
  • +
ASTERISK-28260: Asterisk segfault when rtp negotiation is wrong or fails
Reported by: Sotiris Ganouris
    +
  • [8f9ffe5905] George Joseph -- res_pjsip_sdp_rtp: Fix return code from apply_negotiated_sdp_stream
  • +

Category: Channels/chan_sip/General

ASTERISK-28589: chan_sip: Depending on configuration an INVITE can alter Addr of a peer
Reported by: Andrey V. T.
    +
  • [4a1cadeadb] Ben Ford -- chan_sip.c: Prevent address change on unauthenticated SIP request.
  • +

Category: Channels/chan_sip/Interoperability

ASTERISK-28465: Broken SDP can cause a segfault in a T.38 reINVITE
Reported by: Francesco Castellano
    +
  • [8438d19b81] Francesco Castellano -- chan_sip: Handle invalid SDP answer to T.38 re-invite
  • +

Category: Core/DNS

ASTERISK-28127: Buffer overflow for DNS SRV/NAPTR records
Reported by: Jan Hoffmann
    +
  • [eb5b83b8ea] Jan Hoffmann -- AST-2018-010: Fix length of buffer needed for SRV and NAPTR results
  • +

Category: Core/ManagerInterface

ASTERISK-28580: Bypass SYSTEM write permission in manager action allows system commands execution
Reported by: Eliel Sardañons
    +
  • [7e3a6e158f] George Joseph -- manager.c: Prevent the Originate action from running the Originate app
  • +

Category: Resources/res_http_websocket

ASTERISK-28013: res_http_websocket: Crash when reading HTTP Upgrade requests
Reported by: Sean Bright
    +
  • [a801543f79] Sean Bright -- AST-2018-009: Fix crash processing websocket HTTP Upgrade requests
  • +

Category: Resources/res_pjsip_diversion

ASTERISK-29219: res_pjsip_diversion: Crash if Tel URI contains History-Info
Reported by: Torrey Searle
    +
  • [a7aea71e60] Torrey Searle -- res/res_pjsip_diversion: prevent crash on tel: uri in History-Info
  • +

Category: Resources/res_pjsip_messaging

ASTERISK-28447: res_pjsip_messaging: In-dialog MESSAGE with no body causes crash
Reported by: Gil Richard
    +
  • [3c520147e1] George Joseph -- res_pjsip_messaging: Check for body in in-dialog message
  • +

Category: Resources/res_pjsip_session

ASTERISK-29381: chan_pjsip: Remote denial of service by an authenticated user
Reported by: Ivan Poddubny
    +
  • [523a795289] Joshua C. Colp -- AST-2021-007 - res_pjsip_session: Don't offer if no channel exists.
  • +

Category: Resources/res_pjsip_t38

ASTERISK-29305: ASTERISK-29203 / AST-2021-002 -- Another scenario is causing a crash
Reported by: Gregory Massel
    +
  • [77328142b4] Ben Ford -- AST-2021-006 - res_pjsip_t38.c: Check for session_media on reinvite.
  • +
ASTERISK-28495: res_pjsip_t38: 200 OK with SDP answer with declined stream causes crash
Reported by: Alexei Gradinari
    +
  • [18f5f5fc99] Alexei Gradinari -- AST-2019-004 - res_pjsip_t38.c: Add NULL checks before using session media
  • +

Category: Resources/res_srtp

ASTERISK-29260: sRTP Replay Protection ignored; even tears down long calls
Reported by: Alexander Traud
    +
  • [703158b903] Alexander Traud -- rtp: Enable srtp replay protection
  • +

Category: pjproject/pjsip

ASTERISK-29227: res_pjsip_diversion: sending multiple 181 responses causes memory corruption and crash
Reported by: Ivan Poddubny
    +
  • [2770cc5872] Ivan Poddubnyi -- res_pjsip_diversion: Fix adding more than one histinfo to Supported
  • +
ASTERISK-29057: pjsip: Crash on call rejection during high load
Reported by: Sandro Gauci
    +
  • [6baa4b53be] Kevin Harwell -- AST-2020-001 - res_pjsip: Return dialog locked and referenced
  • +

New Feature

Category: Applications/NewFeature

ASTERISK-29496: Add SendMF application
Reported by: N A
    +
  • [60daa8f761] Naveen Albert -- app_mf: Add channel agnostic MF sender
  • +
ASTERISK-29454: New application to reload modules
Reported by: N A
    +
  • [a41d192e99] Naveen Albert -- app_reload: New Reload application
  • +
ASTERISK-29444: Add application to wait for condition
Reported by: N A
    +
  • [1b21b1abf7] Naveen Albert -- app_waitforcond: New application
  • +

Category: Applications/app_confbridge

ASTERISK-29446: app_confbridge: New ConfKick application
Reported by: N A
    +
  • [a40e58a4da] Naveen Albert -- app_confbridge: New ConfKick() application
  • +
ASTERISK-29440: app_confbridge: Allow ConfBridge answer to be suppressed
Reported by: N A
    +
  • [a861522467] Naveen Albert -- app_confbridge: New option to prevent answer supervision
  • +

Category: Applications/app_dial

ASTERISK-29442: app_dial: Expand A option to allow announcement playback to caller
Reported by: N A
    +
  • [c4236dcff2] Naveen Albert -- app_dial: Expanded A option to add caller announcement
  • +

Category: Applications/app_queue

ASTERISK-18069: [patch] app_queue Add Login Time and Last Paused Times to Queue Members
Reported by: Jamuel Starkey
    +
  • [a203769c9d] Rodrigo Ramírez Norambuena -- app_queue: Add LoginTime field for member in a queue.
  • +

Category: Applications/app_read

ASTERISK-18454: Option for Read to be able to accept #
Reported by: Sta Retji
    +
  • [dd980e00b4] Naveen Albert -- app_read: Allow reading # as a digit
  • +

Category: Applications/app_senddtmf

ASTERISK-28614: app_senddtmf: Allow "receiving" DTMF with PlayDTMF instead of only "sending"
Reported by: laszlovl
    +
  • [772b59034f] laszlovl -- app_senddtmf: Add receive mode to AMI Action PlayDTMF
  • +

Category: Channels/chan_pjsip

ASTERISK-27477: Chan_pjsip does not support unauthenticated OPTIONS ping
Reported by: Ross Beer
    +
  • [d2dcd15bd8] Sean Bright -- res_pjsip.c: OPTIONS processing can now optionally skip authentication
  • +

Category: Core/General

ASTERISK-11: AGI channel_status failure
Reported by: bbawkon
    +
  • [feb1e06ac5] under -- codec_builtin.c: G729 audio gets corrupted by Asterisk due to smoother
  • +
ASTERISK-6863: [patch] allow Asterisk to set high ToS bits as non-root on Linux
Reported by: Matt Addison
    +
  • [a107e85b2e] Alexander Traud -- install_prereq: Add libcap for high bits in DiffServ/ToS.
  • +

Category: Core/Jitterbuffer

ASTERISK-28533: func_jitterbuffer: Add support for video synchronization
Reported by: Joshua C. Colp
    +
  • [7298a785ad] Joshua Colp -- func_jitterbuffer: Add audio/video sync support.
  • +

Category: Functions/NewFeature

ASTERISK-29531: Add SAYFILES function
Reported by: N A
    +
  • [b6b7b1490b] Naveen Albert -- func_sayfiles: Retrieve say file names
  • +
ASTERISK-29542: Add audio scrambler
Reported by: N A
    +
  • [3eec5b8c5c] Naveen Albert -- func_scramble: Audio scrambler function
  • +
ASTERISK-29478: Function to drop frames in the TX or RX directions
Reported by: N A
    +
  • [118d848238] Naveen Albert -- func_frame_drop: New function
  • +
ASTERISK-29477: Function to asynchronously store digits dialed
Reported by: N A
    +
  • [016f6a0e14] Naveen Albert -- app_dtmfstore: New application to store digits
  • +
ASTERISK-29431: Minimum and maximum dialplan functions
Reported by: N A
    +
  • [9106c9d1f1] Naveen Albert -- func_math: Three new dialplan functions
  • +

Category: Functions/func_channel

ASTERISK-29656: Add CHANNEL_EXISTS function
Reported by: N A
    +
  • [cf0d656ae6] Naveen Albert -- func_channel: Add CHANNEL_EXISTS function.
  • +

Category: Functions/func_curl

ASTERISK-17491: CURLOPT() needs a "followlocation" parameter / "maxredirs" doesn't do anything
Reported by: candrews
    +
  • [0c2bf1664c] Sean Bright -- func_curl: Add 'followlocation' option to CURLOPT()
  • +
ASTERISK-28613: func_curl: CURLOPT cannot set Content-Type header
Reported by: Martin Tomec
    +
  • [d257a0898e] Martin Tomec -- func_curl.c: Support custom http headers
  • +

Category: Functions/func_env

ASTERISK-29628: Add file and directory functions
Reported by: N A
    +
  • [19de228e8b] Naveen Albert -- func_env: Add DIRNAME and BASENAME functions
  • +

Category: Functions/func_strings

ASTERISK-29627: Add STRBETWEEN function
Reported by: N A
    +
  • [6198c1d28c] Naveen Albert -- func_strings: Add STRBETWEEN function
  • +

Category: Functions/func_volume

ASTERISK-29439: func_volume: Volume function can't be read
Reported by: N A
    +
  • [033c2a2283] Naveen Albert -- func_volume: Add read capability to function.
  • +

Category: Resources/General

ASTERISK-28403: Add native Prometheus support to Asterisk
Reported by: Matt Jordan
    +
  • [0bb38796b7] Matt Jordan -- res_prometheus: Add metrics for PJSIP outbound registrations
  • +
  • [a2648b22eb] Matt Jordan -- res_prometheus: Add CLI commands
  • +
  • [066280f0cc] Matt Jordan -- res_prometheus: Add Asterisk bridge metrics
  • +
  • [ed6cd13b5b] Matt Jordan -- res_prometheus: Add Asterisk endpoint metrics
  • +
  • [0760af71ad] Matt Jordan -- res_prometheus: Add Asterisk channel metrics
  • +
  • [c50f29dfad] Matt Jordan -- Add core Prometheus support to Asterisk
  • +

Category: Resources/NewFeature

ASTERISK-29720: res_tonedetect: Add call progress tone detection
Reported by: N A
    +
  • [ca2e13e18f] Naveen Albert -- res_tonedetect: Add call progress tone detection
  • +
ASTERISK-29546: Add tone detection module
Reported by: N A
    +
  • [a6eb1b6f95] Naveen Albert -- res_tonedetect: Tone detection module
  • +

Category: Resources/res_ari

ASTERISK-28267: res_stasis: Add ability to switch applications
Reported by: Benjamin Keith Ford
    +
  • [6626df586e] Ben Ford -- res_stasis: Add ability to switch applications.
  • +

Category: Resources/res_ari_channels

ASTERISK-28320: Added ARI resource /ari/channels/{channelid}/rtp_statistics
Reported by: sungtae kim
    +
  • [71c0c7f631] sungtae kim -- res/res_ari: Added ARI resource /ari/channels/{channelId}/rtp_statistics
  • +

Category: Resources/res_musiconhold

ASTERISK-17808: [patch] Unregister a realtime moh class
Reported by: Byron Clark
    +
  • [cf364cd007] sungtae kim -- res_musiconhold: Added unregister realtime moh class
  • +

Category: Resources/res_pjsip

ASTERISK-28375: res_pjsip: New configuration setting to allow disabling norefersub
Reported by: Dan Cropp
    +
  • [cffa2a74cb] Dan Cropp -- res_pjsip: Added a norefersub configuration setting
  • +

Category: Resources/res_pjsip_diversion

ASTERISK-29027: Implement support for History-Info
Reported by: Torrey Searle
    +
  • [83140c9fed] Torrey Searle -- res_pjsip_diversion: implement support for History-Info
  • +

Category: Resources/res_pjsip_endpoint_identifier_ip

ASTERISK-28639: res_pjsip_endpoint_identifier_ip: Add ability to match on source port
Reported by: Sean Bright
    +
  • [312abaa1fe] Sean Bright -- res_pjsip_endpoint_identifier_ip.c: Add port matching support
  • +

Category: Resources/res_pjsip_header_funcs

ASTERISK-29389: Add PJSIP_HEADERS() and ability to read header by pattern
Reported by: Igor Goncharovsky
    +
  • [1e4ed61a2b] Igor Goncharovsky -- res_pjsip_header_funcs: Add PJSIP_HEADERS() ability to read header by pattern
  • +

Category: Resources/res_pjsip_outbound_registration

ASTERISK-27971: res_pjsip: Implement additional SIP RFCs for Google Voice trunk compatability
Reported by: Nick French
    +
  • [37b2e68628] Nick French -- res_pjsip: Implement additional SIP RFCs for Google Voice trunk compatability
  • +

Category: Resources/res_pjsip_refer

ASTERISK-28375: res_pjsip: New configuration setting to allow disabling norefersub
Reported by: Dan Cropp
    +
  • [cffa2a74cb] Dan Cropp -- res_pjsip: Added a norefersub configuration setting
  • +

Category: Resources/res_pjsip_session

ASTERISK-28087: add flag to allow CALLERID(num) to be placed in Contact header in chan_pjsip
Reported by: Torrey Searle
    +
  • [0c9e217c81] Joshua Colp -- res_pjsip: Add XML documentation for "use_callerid_contact"
  • +
  • [c7528f16e6] Richard Mudgett -- alembic: Fix use_callerid_contact option add script.
  • +
  • [cac4ccef25] Torrey Searle -- res_pjsip_session: add new flag use_callerid_contact
  • +

Category: pjproject/pjsip

ASTERISK-28489: Channel variable SIPFROMDOMAIN for chan_pjsip to setup From header URI domain
Reported by: Stas Kobzar
    +
  • [c7270dca81] Stas Kobzar -- res_pjsip: Channel variable SIPFROMDOMAIN
  • +
ASTERISK-27971: res_pjsip: Implement additional SIP RFCs for Google Voice trunk compatability
Reported by: Nick French
    +
  • [37b2e68628] Nick French -- res_pjsip: Implement additional SIP RFCs for Google Voice trunk compatability
  • +

Bug

Category: . I did not set the category correctly.

ASTERISK-29755: frame: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29146: GCC Warnings: ‘%s’ directive argument is null.
Reported by: Alexander Traud
    +
  • [f86af1fbd0] Alexander Traud -- Compiler fixes for GCC when printf %s is NULL
  • +
ASTERISK-28221: Bug in ast_coredumper
Reported by: Andrew Nagy
    +
  • [809e836265] George Joseph -- ast_coredumper: Refactor the pid determination process
  • +

Category: .Release/Targets

ASTERISK-28488: pjsip mwi: n+1 sip notify's sent on re-register
Reported by: Chris Savinovich
    +
  • [172e183b9d] Kevin Harwell -- res_pjsip_mwi: add better handling of solicited vs unsolicited subscriptions
  • +

Category: Addons/chan_mobile

ASTERISK-29742: addons: Fix for Doxygen.
Reported by: Alexander Traud
    +
  • [026c6d51b1] Alexander Traud -- addons: Fix for Doxygen.
  • +

Category: Addons/chan_ooh323

ASTERISK-28348: Failed to initialize OOH323 endpoint-OOH323 Disabled
Reported by: Dmitry Shubin
    +
  • [a8f1e26d34] Alexander Anikin -- chan_ooh323: fix h323 log file path
  • +

Category: Applications/General

ASTERISK-29816: SAY_DTMF_INTERRUPT channel variable is not honored
Reported by: Sean Bright
    +
  • [5274bfdc07] Sean Bright -- say.c: Honor requests for DTMF interruption.
  • +
ASTERISK-29752: app: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29287: app.h: C++ compatibility broken
Reported by: Jean Aunis - Prescom
    +
  • [916d5d5e45] Jaco Kroon -- app.h: Restore C++ compatibility for macro AST_DECLARE_APP_ARGS
  • +
ASTERISK-28954: StreamEcho() only returns 1 active stream
Reported by: Bill Kervaski
    +
  • [00a52b4752] Joshua C. Colp -- app_stream_echo: Fix state of added streams.
  • +
ASTERISK-16676: DAHDIRAS fails to properly initiate pppd unless asterisk is running as root
Reported by: Jaco Kroon
    +
  • [4f92dcd66b] Jaco Kroon -- dahdiras: Only set plugin dahdi.so to pppd if we're running as root.
  • +

Category: Applications/app_agent_pool

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29614: app_agent_pool: XML Doc: unterminated entity reference
Reported by: Alexander Traud
    +
  • [5c836c8e36] Sean Bright -- config_options: Handle ACO arrays correctly in generated XML docs.
  • +

Category: Applications/app_alarmreceiver

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_amd

ASTERISK-28608: app_amd: Use time calculation to calculate timeout
Reported by: Michael Cargile
    +
  • [5bda460300] Michael Cargile -- app_amd: Fixed timeout issue
  • +
ASTERISK-28419: app_amd: Does not work with silence suppression
Reported by: Nasir Iqbal
    +
  • [29bc7cf6b3] Nasir Iqbal -- app_amd: issue with silence suppression fixed
  • +
ASTERISK-28143: app_amd: Infinite loop on silent calls
Reported by: Abhay Gupta
    +
  • [7ce6d960d4] Abhay Gupta -- app_amd: Fix infinite loop on silent calls
  • +

Category: Applications/app_bridgewait

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_chanisavail

ASTERISK-28636: app_chanisavail+cdr: ChanIsAvail sometimes fails to deactivate CDR.
Reported by: Frederic LE FOLL
    +
  • [a83625b366] Frederic LE FOLL -- app_chanisavail/cdr: ChanIsAvail sometimes fails to deactivate CDR.
  • +
ASTERISK-28527: ChanIsAvail() creates a CDR if unanswered=yes is set in cdr.conf
Reported by: Frederic LE FOLL
    +
  • [2d0eee5418] Frederic LE FOLL -- ChanIsAvail() generates a CDR when unanswered=yes in cdr.conf.
  • +

Category: Applications/app_chanspy

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-28883: Spyee information ist missing in ChanSpyStop AMI Event
Reported by: Hendrik Wedhorn
    +
  • [13682210e2] Sean Bright -- app_chanspy: Spyee information missing in ChanSpyStop AMI Event
  • +

Category: Applications/app_confbridge

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29618: ConfBridge errors on creation conference room
Reported by: Alexander Zharov
    +
  • [de19836c24] George Joseph -- bridge_softmix: Suppress error on topology change failure
  • +
ASTERISK-29071: app_confbridge: Memory rises when jitterbuffer enabled and muting over AMI occurs
Reported by: Stefan Ruf
    +
  • [f7bda066bb] Joshua C. Colp -- channel: Fix crash in suppress API.
  • +
  • [b43b81d953] Joshua C. Colp -- channel: Fix memory leak in suppress API.
  • +
ASTERISK-28841: app_confbridge: Add support for disabling text messaging for a user
Reported by: Joshua C. Colp
    +
  • [6cfc6ff53c] Joshua C. Colp -- confbridge: Add support for disabling text messaging.
  • +
ASTERISK-28790: Crash during conference call using confbridge and video
Reported by: Pascal Cadotte Michaud
    +
  • [96e8d411e1] Joshua C. Colp -- res_rtp_asterisk: Ensure sufficient space for worst case NACK.
  • +
ASTERISK-28201: [patch] confbridge: no announce to the marked users when they join an empty conference
Reported by: Alexei Gradinari
    +
  • [cb1a08bdcb] Alexei Gradinari -- confbridge: announce to the marked users when they join an empty conference
  • +
ASTERISK-28107: app_confbridge: Participant info labels aren't being added to the SDPs
Reported by: George Joseph
    +
  • [8d1c6bb6e6] George Joseph -- bridge_softmix: Add SDP "label" attribute to streams
  • +

Category: Applications/app_dial

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29329: app_dial: DTMF to 'D' option gets duplicated if there are multiple progress events
Reported by: N A
    +
  • [94debe5085] Sean Bright -- app_dial.c: Only send DTMF on first progress event.
  • +
ASTERISK-27980: Caller ID cannot be changed on Attended Transfer before dialing out
Reported by: Alexei Gradinari
    +
  • [4a567cee3a] Alexei Gradinari -- app_dial/queue/followme: 'I' options to block initial updates in both directions
  • +

Category: Applications/app_directory

ASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make
Reported by: Alexander Traud
    +
  • [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og
  • +

Category: Applications/app_fax

ASTERISK-28848: app_fax: Compile.
Reported by: Alexander Traud
    +
  • [26b8c99963] Alexander Traud -- app_fax: SpanDSP headers do not use ast_malloc; ignore that.
  • +

Category: Applications/app_followme

ASTERISK-27980: Caller ID cannot be changed on Attended Transfer before dialing out
Reported by: Alexei Gradinari
    +
  • [4a567cee3a] Alexei Gradinari -- app_dial/queue/followme: 'I' options to block initial updates in both directions
  • +

Category: Applications/app_jack

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_meetme

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-28604: app_meetme, chan_ooh323 and cdr_mysql don't build on 17.0.0
Reported by: George Joseph
    +
  • [ed394ce5b1] Joshua C. Colp -- configure: Add check for MySQL client bool and my_bool type usage.
  • +
  • [a47cb71bb1] George Joseph -- Build: Fix compile issues with seldom used modules
  • +
ASTERISK-28328: MeetMe global non-admin mute is muting admins that subsequently join
Reported by: Philip Mott
    +
  • [57850c7861] Sean Bright -- app_meetme: Don't mute joining admins if conference is muted
  • +

Category: Applications/app_milliwatt

ASTERISK-29575: app_milliwatt: Milliwatt application doesn't use the proper timings
Reported by: N A

Category: Applications/app_minivm

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander Traud

Category: Applications/app_mixmonitor

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-28947: Segmentation fault in mixmonitor_ds_destroy
Reported by: Robert Sutton
    +
  • [0e1ba9a778] Kevin Harwell -- app_mixmonitor: cleanup datastore when monitor thread fails to launch
  • +
ASTERISK-28780: app_mixmonitor: Memory leak due to race condition between AMI MixMonitor and hangup
Reported by: Joshua C. Colp
    +
  • [98d10d0a16] Joshua C. Colp -- audiohook: Don't allow audiohooks to attach to hung up channels.
  • +

Category: Applications/app_morsecode

ASTERISK-29744: app_morsecode: Fix deadlock
Reported by: N A
    +
  • [721026ff37] Naveen Albert -- app_morsecode: Fix deadlock
  • +

Category: Applications/app_mp3

ASTERISK-29635: MP3Player don' t work with actual mpg123 versions
Reported by: Carlos Oliva
    +
  • [e8f7b53023] Carlos Oliva -- app_mp3: Force output to 16 bits in mpg123
  • +

Category: Applications/app_osplookup

ASTERISK-28804: [patch] app_osplookup.c: Avoid a format truncation.
Reported by: Alexander Traud
    +
  • [527e4f6542] Alexander Traud -- app_osplookup: Avoid a format truncation.
  • +

Category: Applications/app_page

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-16799: Callee declined when 'beep' audio file does not exist
Reported by: IAMJames_
    +
  • [6673c1b177] Sean Bright -- app_page.c: Don't fail to Page if beep sound file is missing
  • +

Category: Applications/app_playback

ASTERISK-27871: Remote URL in playback must end with file extension
Reported by: Caesar
    +
  • [76c09b1cfd] Sean Bright -- res_http_media_cache.c: Parse media URLs to find extensions.
  • +

Category: Applications/app_queue

ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29578: app_queue: Custom device state using included hints do not update
Reported by: N A
    +
  • [cfd0246d11] Naveen Albert -- app_queue: Fix hint updates for included contexts
  • +
ASTERISK-28701: app_queue: Core reload resets queue stats, even when keepstats=yes
Reported by: Luke Escude
    +
  • [c7af46995e] Naveen Albert -- app_queue: Don't reset queue stats on reload
  • +
ASTERISK-28356: app_queue: CLI set ringinuse for realtime member not working
Reported by: Michael
    +
  • [35302efe73] Sean Bright -- app_queue: Add alembic migration to add ringinuse to queue_members.
  • +
ASTERISK-24631: Incorrect description of option "context" in queues.conf.sample
Reported by: Etienne Lessard
    +
  • [31364fa4c8] Sean Bright -- queues.conf.sample: Correct 'context' documentation.
  • +
ASTERISK-26614: app_queue: updatecdr option in queues.conf does effectively nothing
Reported by: Alexander Gonchiy
    +
  • [e27fa9eceb] Sean Bright -- app_queue.c: Remove dead 'updatecdr' code.
  • +
ASTERISK-27542: app_queue: When "queue show" CLI command is executed a crash occurs
Reported by: Miguel Sanz
    +
  • [4393207751] Sean Bright -- app_queue.c: Don't crash when realtime queue name is empty.
  • +
ASTERISK-29355: app_queue: Queue member status message sent even if status doesn't change
Reported by: Roman Pertsev
    +
  • [55c467eab1] Joshua C. Colp -- app_queue: Only send QueueMemberStatus if status changes.
  • +
ASTERISK-28369: app_queue: Member device state "invalid" when second call is ringing and hint is used
Reported by: Boolah
    +
  • [985d3e4940] Ivan Poddubnyi -- app_queue: Fix conversion of complex extension states into device states
  • +
ASTERISK-29155: app_queue: Deadlock between queues container and individual queues
Reported by: George Joseph
    +
  • [2413598705] George Joseph -- app_queue: Fix deadlock between update and show queues
  • +
ASTERISK-25665: Duplicate logging in queue log for EXITEMPTY events
Reported by: Ove Aursand
    +
  • [c83e4821e5] Kfir Itzhak -- app_queue: Fix leave-empty not recording a call as abandoned
  • +
ASTERISK-29043: app_queue: Leave empty sometimes not recorded as abandoned
Reported by: Kfir Itzhak
    +
  • [c83e4821e5] Kfir Itzhak -- app_queue: Fix leave-empty not recording a call as abandoned
  • +
ASTERISK-29034: Lastpause of realtime members is reseting
Reported by: Evandro César Arruda
    +
  • [36dd15c659] Evandro César Arruda -- app_queue: Member lastpause time reseting
  • +
ASTERISK-28951: Inconsistent behaviour queues.conf when there is (not) a [general] section
Reported by: Walter Doekes
    +
  • [312c23b0e1] Walter Doekes -- app_queue: (Breaking change) shared_lastcall and autofill default to no
  • +
ASTERISK-28950: Stale code in app_queue to check untouched channel
Reported by: Walter Doekes
    +
  • [db012e8cc6] Walter Doekes -- app_queue: Remove stale code in try_calling
  • +
ASTERISK-28644: Stale comment in app_queue about ring_entry exception
Reported by: Walter Doekes
    +
  • [db012e8cc6] Walter Doekes -- app_queue: Remove stale code in try_calling
  • +
  • [0e750cdd10] Walter Doekes -- app_queue: Fix old confusing comment about when the members are called
  • +
ASTERISK-28952: Queue wrapuptime sometimes not respected (based on stale lastcall time)
Reported by: Walter Doekes
    +
  • [0fb6738314] Walter Doekes -- app_queue: Read latest wrapuptime instead of (possibly stale) copy
  • +
ASTERISK-28829: app_queue: leaking stasis subscription when Redirecting call
Reported by: laszlovl
    +
  • [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in app_queue to avoid leaked stasis subscriptions
  • +
ASTERISK-25844: app_queue: Ghost channels in "core show channels" output
Reported by: Etienne Lessard
    +
  • [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in app_queue to avoid leaked stasis subscriptions
  • +
ASTERISK-28349: Pause reason not reported in QueueMember AMI event
Reported by: Niksa Baldun
    +
  • [9522390a69] Sean Bright -- app_queue: Deprecate the QueueMemberPause.Reason field
  • +
ASTERISK-27541: app_queue: Queue paused reason was (big number) secs ago when reason is set
Reported by: César Benjamín García Martínez
    +
  • [e8cf3693f6] Sean Bright -- app_queue: Fix a few member pause bugs
  • +
ASTERISK-20986: QUEUE_MEMBER 's description is inaccurate
Reported by: Olivier Krief
    +
  • [834d022da5] Sean Bright -- app_queue: Fix documentation for QUEUE_MEMBER function.
  • +
ASTERISK-27964: app_queue: ring_entry accesses nativeformats without channel lock or reference
Reported by: Francisco Seratti
    +
  • [48e407e506] Dömsödi Gergely -- app_queue: fix ring_entry to access nativeformats with a channel lock
  • +
ASTERISK-28168: app_queue: Adding a blank entry into sql queue_members crashes asterisk.
Reported by: Michael
    +
  • [f6b5b7208c] Sean Bright -- app_queue: Handle empty 'interface' in queue member config
  • +
ASTERISK-28218: app_queue: Asterisk crashes when using Queue with a pre-dial handler (option b)
Reported by: Mark
    +
  • [b7b080a0aa] Joshua Colp -- app_queue: Fix crash when using 'b' option on non-ringall queue.
  • +
ASTERISK-28125: app_queue: Revert broken queue channel reference patch
Reported by: laszlovl
    +
  • [140702ba2d] laszlovl -- app_queue: Revert broken queue channel reference patch
  • +
ASTERISK-27980: Caller ID cannot be changed on Attended Transfer before dialing out
Reported by: Alexei Gradinari
    +
  • [4a567cee3a] Alexei Gradinari -- app_dial/queue/followme: 'I' options to block initial updates in both directions
  • +
ASTERISK-27920: app_queue: Queue member considered inuse after immediately hanging up during dialing.
Reported by: Cao Minh Hiep
    +
  • [f23a12244d] Cao Minh Hiep -- app_queue: Fix Attended transfer hangup with removing pending member.
  • +
ASTERISK-28032: Realtime queuemembers are not updated during retry phase
Reported by: laszlovl
    +
  • [1174759f0c] laszlovl -- app_queue: Update realtime queuemembers after wait_a_bit(), not before
  • +
ASTERISK-27973: app_queue: QUEUESTATUS = CONTINUE instead LEAVEEMPTY
Reported by: Valentin Safonov
    +
  • [2ce061091e] Ivan Poddubny -- app_queue: set QUEUESTATUS to LEAVEEMPTY instead of CONTINUE
  • +

Category: Applications/app_read

ASTERISK-29705: app_read: Fix custom terminator functionality regression
Reported by: N A
    +
  • [3c4b7cef64] Naveen Albert -- app_read: Fix custom terminator functionality regression
  • +
ASTERISK-29673: app_read: Fix null pointer crash regression
Reported by: N A
    +
  • [5a6f140765] Naveen Albert -- app_read: Fix null pointer crash
  • +

Category: Applications/app_record

ASTERISK-28682: app_record: Lack of `beep` audio file causes application to return error and hangup
Reported by: Corey Farrell
    +
  • [2f8b20b949] Corey Farrell -- app_record: Do not hang up if beep audio is missing
  • +

Category: Applications/app_saynumber

ASTERISK-29475: SayNumber triggers WARNING if caller hangs up during application execution
Reported by: N A
    +
  • [2b174a38fe] Naveen Albert -- pbx_builtins: Corrects SayNumber warning
  • +

Category: Applications/app_skel

ASTERISK-29614: app_agent_pool: XML Doc: unterminated entity reference
Reported by: Alexander Traud
    +
  • [5c836c8e36] Sean Bright -- config_options: Handle ACO arrays correctly in generated XML docs.
  • +

Category: Applications/app_system

ASTERISK-28776: Non async-signal-safe syscalls used after fork before exec
Reported by: nappsoft
    +
  • [6b2d945174] Pirmin Walthert -- app.c: make sure that no non-async-signal-safe syscalls are used after
  • +

Category: Applications/app_transfer

ASTERISK-26968: chan_pjsip: Transfer() does not result in TRANSFERSTATUS reflecting SIP response to transfer
Reported by: Dan Cropp
    +
  • [e52fbae00f] Dan Cropp -- chan_pjsip: Transmit REFER waits for the REFER result setting TRANSFERSTATUS
  • +

Category: Applications/app_voicemail

ASTERISK-29859: VoiceMailMain() fails when encountering non-numeric CALLERID(num)
Reported by: Mark Murawski
    +
  • [059eca1546] Sean Bright -- say.c: Prevent erroneous failures with 'say' family of functions.
  • +
ASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29391: VoiceMail does not cancel recording on rerecord hangup
Reported by: N A
    +
  • [92857e70b6] Naveen Albert -- app_voicemail: Fix phantom voicemail bug on rerecord
  • +
ASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make
Reported by: Alexander Traud
    +
  • [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og
  • +
ASTERISK-26424: app_voicemail: Undocumented behavior from VMSayName
Reported by: Eric Smith
    +
  • [abee490639] Sean Bright -- app_voicemail.c: Document VMSayName interruption behavior
  • +
ASTERISK-27273: app_voicemail: When a voicemail is marked as "Urgent", it is not sent by email/processed by the mailcmd command
Reported by: Leandro Dardini
    +
  • [b575868000] Sean Bright -- app_voicemail: Process urgent messages with mailcmd
  • +
ASTERISK-23739: [patch]Segfault forwarding voicemail with ODBC storage enabled and realtime voicemail_data is used
Reported by: Stas Kobzar
    +
  • [ba8ccb9132] Sean Bright -- app_voicemail: Prevent crash when saving message with realtime voicemail
  • +
ASTERISK-27622: empty voicemail.conf required for ARA (realtime) voicemail to leave message
Reported by: Jim Van Meggelen
    +
  • [9be89d9913] Sean Bright -- app_voicemail: Set globals to default values when voicemail.conf missing
  • +
ASTERISK-27935: app_voicemail: emailbody per user can't contain commas
Reported by: Sébastien Duthil
    +
  • [d58d7d4500] Sean Bright -- app_voicemail: Don't split mailbox options on comma
  • +
ASTERISK-28306: res_pjsip_mwi: MWI NOTIFY occasionally takes minutes to be sent
Reported by: Jared Hull
    +
  • [63d90c38eb] George Joseph -- app.c: Remove deletion of pool topic on mwi state delete
  • +
ASTERISK-28166: app_voicemail: Asterisk unresponsive after changing voicemail password with ODBC
Reported by: Michael
    +
  • [719a4643ab] Sean Bright -- res_config_odbc: Avoid deadlock when max_connections = 1
  • +
ASTERISK-28225: app_voicemail: Channel variable VM_MESSAGEFILE not updated correctly if message marked "urgent"
Reported by: boatright
    +
  • [2c48b5d9bf] Bryan Boatright -- app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail
  • +
ASTERISK-28222: Regression: MWI polling no longer works
Reported by: abelbeck
    +
  • [4c084c6b1b] George Joseph -- Revert "stasis_cache: Stop caching stasis subscription change messages"
  • +
ASTERISK-28215: app_voicemail: Leaving voicemail sometimes doesn't trigger NOTIFYs
Reported by: George Joseph
    +
  • [c23c8d92d5] George Joseph -- app_voicemail: Don't delete mailbox state unless mailbox is deleted
  • +
ASTERISK-28151: app_voicemail: MWI fails with mailboxes=##@device instead of mailboxes=##@default
Reported by: Ronald Raikes
    +
  • [4f0bf0270e] George Joseph -- Revert "app_voicemail: Remove need to subscribe to stasis"
  • +

Category: Applications/app_voicemail/IMAP

ASTERISK-28505: app_voicemail/IMAP: segfault in leave_voicemail because not checking mailstream
Reported by: Alexei Gradinari
    +
  • [15624d9a7a] Alexei Gradinari -- app_voicemail/IMAP: check mailstream not NULL in leave_voicemail
  • +

Category: Applications/app_voicemail/ODBC

ASTERISK-23739: [patch]Segfault forwarding voicemail with ODBC storage enabled and realtime voicemail_data is used
Reported by: Stas Kobzar
    +
  • [ba8ccb9132] Sean Bright -- app_voicemail: Prevent crash when saving message with realtime voicemail
  • +

Category: Bridges/bridge_builtin_features

ASTERISK-28920: bridge show all causes crash
Reported by: sungtae kim
    +
  • [25ae412f75] sungtae kim -- bridge.c: Fixed null pointer exception
  • +

Category: Bridges/bridge_holding

ASTERISK-29743: bridges: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen.
  • +

Category: Bridges/bridge_native_rtp

ASTERISK-28637: chan_sip+native_bridge_rtp: directmedia compatibility check failure when negociated ptime is not default ptime.
Reported by: Frederic LE FOLL
    +
  • [7624cbb155] Frederic LE FOLL -- chan_sip+native_bridge_rtp: no directmedia for ptime other than default ptime.
  • +

Category: Bridges/bridge_simple

ASTERISK-29379: Segfault - ast_channel_is_multistream (chan=0x0) at channel_internal_api.c:1590
Reported by: Ross Beer
    +
  • [88aec107df] George Joseph -- bridge_channel_write_frame: Check for NULL channel
  • +
ASTERISK-29161: Incorrect setup of recall channels
Reported by: Boris P. Korzun
    +
  • [33e3542132] Boris P. Korzun -- bridge_basic: Fixed setup of recall channels
  • +

Category: Bridges/bridge_softmix

ASTERISK-29743: bridges: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen.
  • +
ASTERISK-28944: bridge_softmix: Transitioning a stream from inactive -> sendrecv/sendonly doesn't re-negotiation
Reported by: Joshua C. Colp
    +
  • [8ad06394c4] Joshua C. Colp -- bridge_softmix: Add additional old states for adding new source.
  • +
ASTERISK-28898: bridge_softmix: Conference bridge not passing silent rtp packets
Reported by: Jonathan Hunter
    +
  • [e8c8d69d47] Joshua C. Colp -- bridge_softmix: Always remove audio from mixed frame.
  • +
ASTERISK-28819: [patch] bridge_softmix_binaural: Show state in menuselect.
Reported by: Alexander Traud
    +
  • [7febd22304] Alexander Traud -- bridge_softmix_binaural: Show state in menuselect.
  • +
ASTERISK-28618: bridge_softmix: hold not cleared when joining a softmix bridge
Reported by: Kevin Harwell
    +
  • [e77cb32583] Kevin Harwell -- bridge_softmix: clear hold when joining a softmix bridge
  • +

Category: CDR/General

ASTERISK-29168: Asterisk crashes during call transfer
Reported by: Dalius Mockevicius
    +
  • [d9aef0e6e5] Kevin Harwell -- pbx_realtime: wrong type stored on publish of ast_channel_snapshot_type
  • +
ASTERISK-28677: CDR billsec is always 0 for transferred calls
Reported by: Maciej Michno
    +
  • [6818c3d1d2] George Joseph -- cdr.c: Set event time on party b when leaving a parking bridge
  • +
ASTERISK-28636: app_chanisavail+cdr: ChanIsAvail sometimes fails to deactivate CDR.
Reported by: Frederic LE FOLL
    +
  • [a83625b366] Frederic LE FOLL -- app_chanisavail/cdr: ChanIsAvail sometimes fails to deactivate CDR.
  • +
ASTERISK-28566: CDR backend unload problem during active call(s)
Reported by: Marian Piater
    +
  • [51850a79ef] Sean Bright -- cdr_mysql: Don't clean up on unload unless we can unregister from CDRs
  • +

Category: CDR/cdr_adaptive_odbc

ASTERISK-29494: cdr_adaptive_odbc: Prevent throwing warnings if CDR filtering is used
Reported by: N A
    +
  • [adf707f2ae] Naveen Albert -- cdr_adaptive_odbc: Prevent filter warnings
  • +

Category: CDR/cdr_pgsql

ASTERISK-28571: cdr_pgsql: accesses obsolete (and finally removed) column
Reported by: Christoph Moench-Tegeder
    +
  • [52ade18420] Christoph Moench-Tegeder -- cdr_pgsql cel_pgsql res_config_pgsql: compatibility with PostgreSQL 12
  • +
ASTERISK-28435: cdr_pgsql: Unix socket doesn't work
Reported by: Dmitry Svyatogorov
    +
  • [e61f2af89d] Chris-Savinovich -- cdr_pgsql: fix error in connection string
  • +

Category: CEL/General

ASTERISK-28081: chan_sip: Asterisk 12+ chan_sip doesn't report AST_CEL_PICKUP in handle_invite_replaces
Reported by: Luit van Drongelen
    +
  • [2cf5079205] Jasper Hafkenscheid -- chan_sip: Attempt ast_do_pickup in handle_invite_replaces
  • +

Category: Channels/General

ASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make
Reported by: Alexander Traud
    +
  • [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og
  • +

Category: Channels/chan_dahdi

ASTERISK-29762: channels: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen.
  • +
ASTERISK-29702: sig_analog: Fix truncated buffer copy
Reported by: N A
    +
  • [36c5f5e5fa] Naveen Albert -- sig_analog: Fix truncated buffer copy
  • +
ASTERISK-29518: sig_analog: FCG_CAMA fails to signal ANI spill when using MF signaling
Reported by: Sarah Autumn
    +
  • [241686f860] Sarah Autumn -- sig_analog: Changes to improve electromechanical signalling compatibility
  • +
ASTERISK-28702: chan_dahdi: holding a channel via flash to dialtone times out after 0:16:40
Reported by: Andrew Siplas
    +
  • [5bd7281442] Andrew Siplas -- chan_dahdi: Change 999999 to INT_MAX to better reflect "no timeout"
  • +
ASTERISK-28615: chan_dahdi: PRI span status may stay "Down, Active" after a short alarm
Reported by: Frederic LE FOLL
    +
  • [a68299f508] Frederic LE FOLL -- chan_dahdi: PRI span status may stay "Down, Active" after a short alarm
  • +
ASTERISK-28536: Asterisk release candidates fail to build on FreeBSD
Reported by: Guido Falsi
    +
  • [4072e219f7] Guido Falsi -- chan_dahdi: Fix build with clang/llvm
  • +
ASTERISK-28525: chan_dahdi: set CHANNEL(hangupsource) when a PRI channel hangs up
Reported by: Frederic LE FOLL
    +
  • [41b67f150e] Frederic LE FOLL -- chan_dahdi: set CHANNEL(hangupsource) when a PRI channel hangs up
  • +
ASTERISK-28457: [patch] Fix crash in chan_dahdi on 32-bit systems caused by ASTERISK-28317
Reported by: abelbeck
    +
  • [0e669712e2] Chris-Savinovich -- chan_dahdi.c: crash in chan_dahdi
  • +
ASTERISK-28427: new mwi.h include missing from some dahdi source files, causes build failure
Reported by: Guido Falsi
    +
  • [db535439f2] Guido Falsi -- chan_dahdi: add missing include.
  • +

Category: Channels/chan_iax2

ASTERISK-29737: chan_iax2: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [cb043633d4] Alexander Traud -- chan_iax2: Fix for Doxygen.
  • +
ASTERISK-20219: [patch] - IAX2 Call Encryption Fails with RSA authentication
Reported by: Michael Munger
    +
  • [437b2bfbd6] Naveen Albert -- chan_iax2: Add encryption for RSA authentication
  • +
ASTERISK-29392: chan_iax2: Asterisk crashes when queueing video with format
Reported by: Michael Welk
    +
  • [2a141a58b6] Kevin Harwell -- AST-2021-008 - chan_iax2: remote crash on unsupported media format
  • +

Category: Channels/chan_local

ASTERISK-29407: chan_local: Filtering audio formats should not occur on removed streams
Reported by: Joshua C. Colp
    +
  • [8faed04b01] Joshua C. Colp -- chan_local: Skip filtering audio formats on removed streams.
  • +
ASTERISK-29035: chan_local: Multistream support breaks T.38 faxing
Reported by: Matthias Hensler
    +
  • [ed2f637b47] Joshua C. Colp -- core_unreal: Fix deadlock with T.38 control frames.
  • +
  • [62e2dd484d] Ben Ford -- core_unreal: Fix T.38 faxing when using local channels.
  • +
ASTERISK-28938: core_unreal / core_local: Add support for multistream and re-negotiation
Reported by: Joshua C. Colp
    +
  • [de2813cf23] Joshua C. Colp -- core_unreal / core_local: Add multistream and re-negotiation.
  • +
ASTERISK-25844: app_queue: Ghost channels in "core show channels" output
Reported by: Etienne Lessard
    +
  • [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in app_queue to avoid leaked stasis subscriptions
  • +
ASTERISK-28399: channel.c: Exceptionally long queue length queuing
Reported by: Abhay Gupta
    +
  • [85242a9bb9] Abhay Gupta -- stasis: Hangup channel for Local channel No such extension error
  • +

Category: Channels/chan_mgcp

ASTERISK-20339: chan_mgcp, resp_pktccops ast_debug support
Reported by: Tomas Maldonado
    +
  • [121860e3f6] Sean Bright -- mgcp: Remove dead debug code
  • +

Category: Channels/chan_misdn

ASTERISK-29764: chan_misdn: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen.
  • +

Category: Channels/chan_pjsip

ASTERISK-28393: Multidomain support issue
Reported by: Andrea Sannucci
    +
  • [b21d4d1b87] Joseph Nadiv -- res_pjsip.c: Support endpoints with domain info in username
  • +
ASTERISK-29358: chan_pjsip: Trace message for progress is output even if frame is not queued
Reported by: Michael Maier
    +
  • [78d7862463] Sean Bright -- chan_pjsip: Correct misleading trace message
  • +
ASTERISK-29240: chan_pjsip: Incoming PJSIP calls set global SIPDOMAIN instead of a channel variable
Reported by: Ivan Poddubny
    +
  • [c3fad2fd01] Ivan Poddubnyi -- chan_pjsip: Assign SIPDOMAIN after creating a channel
  • +
ASTERISK-27902: chan_pjsip isn't updating hangupcause on 4XX responses
Reported by: George Joseph
    +
  • [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control frames twice on outgoing channels
  • +
ASTERISK-28016: PJSIP sends duplicate 183 Progress responses
Reported by: Alex Hermann
    +
  • [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control frames twice on outgoing channels
  • +
ASTERISK-28185: chan_pjsip: Subsequent same responses are not stopped
Reported by: Julien
    +
  • [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control frames twice on outgoing channels
  • +
ASTERISK-29230: pjsip: Asterisk goes crazy and massively spams logfile if registration can't be send
Reported by: Michael Maier
    +
  • [b3927ff8bc] George Joseph -- Revert "res_pjsip_outbound_registration.c: Use our own scheduler and other stuff"
  • +
ASTERISK-29201: Crash occurs when Transfer and execute Hangup before the Transfer result
Reported by: Dan Cropp
    +
  • [fb23f98521] Dan Cropp -- chan_pjsip: Incorporate channel reference count into transfer_refer().
  • +
ASTERISK-29210: res_pjsip: Crash when examining transport
Reported by: N GM
    +
  • [3c8598ffef] Nick French -- res_pjsip: Prevent segfault in UDP registration with flow transports
  • +
ASTERISK-29022: Crash when manipulating PJSIP invite dlg ref counts
Reported by: Sean Bright
    +
  • [5b4e71fa0a] Joshua C. Colp -- pjsip: Match lifetime of INVITE session to our session.
  • +
ASTERISK-28878: chan_pjsip: PJSIP_MEDIA_OFFER Broken asterisk 16
Reported by: Joseph Ades
    +
  • [31fbfc5e95] Kevin Harwell -- chan_pjsip: disallow PJSIP_SEND_SESSION_REFRESH pre-answer execution
  • +
  • [4eba6b9eb2] Kevin Harwell -- PJSIP_MEDIA_OFFER: override configuration on refresh
  • +
ASTERISK-28886: chan_pjsip: PJSIP_SC_NULL does not exist in pjproject 2.7.2
Reported by: Jared Smith
    +
  • [8b925fbda3] Kevin Harwell -- chan_pjsip: don't use PJSIP_SC_NULL as it only exists pjproject 2.8+
  • +
ASTERISK-28923: T.38 Segfaults in chan_pjsip_queryoption
Reported by: Yury Kirsanov
    +
  • [41f3a7da4d] George Joseph -- res_fax: Don't start a gateway if either channel is hung up
  • +
ASTERISK-28835: IPv6 addresses in SDP incorrectly formatted
Reported by: Daniel Heckl
    +
  • [9f117ac9ef] Daniel Heckl -- res_pjsip: Fixed format of IPv6 addresses for external media addresses
  • +
ASTERISK-28817: chan_pjsip: constant DTMF tone if RTP is not setup yet
Reported by: Kevin Harwell
    +
  • [fa3c8f94e0] Kevin Harwell -- chan_pjsip: digit_begin - constant DTMF tone if RTP is not setup yet
  • +
ASTERISK-28774: chan_pjsip's rtptimeout is erroneously triggered during direct-media (native_rtp) bridge
Reported by: Michael Neuhauser
    +
  • [5562fb2ea0] Michael Neuhauser -- chan_psip, res_pjsip_sdp_rtp: ignore rtptimeout if direct-media is active
  • +
ASTERISK-28759: A non negotiated rtp frame causes call disconnection when there is a SSRC change
Reported by: Paulo Vicentini
    +
  • [ed2a7e3eaf] Paulo Vicentini -- chan_pjsip: Check audio frame when remote SSRC changes.
  • +
ASTERISK-28766: PJSIP blind transfer not completed after using Proceeding()
Reported by: laszlovl
    +
  • [d1a2ff0aaf] laszlovl -- res_pjsip_refer: ensure refer progress is still sent after Proceeding()
  • +
ASTERISK-28755: SIP/Stasis: SIP headers not transmitted in the "variables" field
Reported by: Jean Aunis - Prescom
    +
  • [a715cf5aaa] Kevin Harwell -- message & stasis/messaging: make text message variables work in ARI
  • +
ASTERISK-28492: pjsip reload not reloading wizard endpoint/pickup_group endpoint/call_group
Reported by: Jean-Denis Girard
    +
  • [b40dd11afe] Sean Bright -- res_pjsip_config_wizard: Fix change detection for wizard settings
  • +
ASTERISK-28502: chan_pjsip incorrectly re-writes REGISTER 200 Response Contact
Reported by: Ross Beer
    +
  • [cbc1136704] George Joseph -- res_pjsip_nat: Restore original contact for REGISTER responses
  • +
ASTERISK-28578: race condition on pjsip channelstats command
Reported by: Salah Ahmed
    +
  • [ddb0091da5] Salah Ahmed -- Crash during "pjsip show channelstats" execution
  • +
ASTERISK-28561: Asterisk Deadlocks
Reported by: Aheliotech
    +
  • [bf6f27388d] Joshua Colp -- pbx: deadlock when outgoing dialed channel hangs up too quickly
  • +
ASTERISK-28086: chan_pjsip: Crash when initiating PlayDTMF over AMI
Reported by: Jeremiah Gadd
    +
  • [c03f50c1c8] laszlovl -- chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel
  • +
ASTERISK-28538: chan_pjsip: Deadlock on fax detection
Reported by: Joshua C. Colp
    +
  • [c358da472e] Joshua Colp -- chan_pjsip: Relock correct channel during "fax" redirect.
  • +
ASTERISK-28444: chan_pjsip: Peer IP for SSL handshake errors not logged
Reported by: Bernhard Schmidt
    +
  • [8b3ee7fe61] George Joseph -- pjproject_bundled: Add peer information to most SSL/TLS errors
  • +
ASTERISK-26968: chan_pjsip: Transfer() does not result in TRANSFERSTATUS reflecting SIP response to transfer
Reported by: Dan Cropp
    +
  • [e52fbae00f] Dan Cropp -- chan_pjsip: Transmit REFER waits for the REFER result setting TRANSFERSTATUS
  • +
ASTERISK-25371: Crash in hangup at chan_pjsip.c:1749 when Asterisk attempts to generate hangup event
Reported by: Abhay Gupta
    +
  • [d2f7b22640] Abhay Gupta -- chan_pjsip.c: Check for channel and session to not be NULL in hangup
  • +
ASTERISK-27994: PJSIP: Early media ringback not indicated after Progress()
Reported by: Gregory Massel
    +
  • [466a17964f] Alexei Gradinari -- pjsip: replace 180 by 183 if SDP negotiation has completed
  • +
ASTERISK-28379: pjsip: show channelstats incorrect information output
Reported by: Vyrva Igor
    +
  • [7a6fd83aca] Joshua Colp -- res_rtp_asterisk: Fix sequence number cycling and packet loss count.
  • +
ASTERISK-28371: chan_pjsip: DTMF Mode auto_info fallback lead to both inband and info
Reported by: Salah Ahmed
    +
  • [5009d6d97a] Salah Ahmed -- chan_pjsip: DTMF Mode auto_info fallback lead to both inband and info
  • +
ASTERISK-28322: chan_pjsip: Add option to allow ignoring of 183 without SDP
Reported by: Torrey Searle
    +
  • [4661c08549] Torrey Searle -- chan_pjsip: add a flag to ignore 183 responses if no SDP present
  • +
ASTERISK-28213: res_pjsip: Threads pile up needlessly when AOR is blocked
Reported by: Ross Beer
    +
  • [930a7fe910] Kevin Harwell -- res_pjsip_registrar: blocked threads on reliable transport shutdown take 3
  • +
  • [61a8f79a29] Kevin Harwell -- res_pjsip_registrar: lock transport monitor when setting 'removing' flag
  • +
  • [b82d2856b4] Kevin Harwell -- res_pjsip_registrar: mitigate blocked threads on reliable transport shutdown
  • +
ASTERISK-28238: PJSIP realtime. getcontext not working with DUNDI
Reported by: Ray
    +
  • [f668db9ba0] Kevin Harwell -- pjsip/config_global: regcontext context not created
  • +
ASTERISK-27095: chan_pjsip: When connected_line_method is set to invite, we're not trying UPDATE
Reported by: George Joseph
    +
  • [ecb9ed0958] Pirmin Walthert -- pjproject_bundled: check whether UPDATE is supported on outgoing calls
  • +
ASTERISK-27999: Wrong SRTP use status report
Reported by: Salah Ahmed
    +
  • [a90177cd63] Salah Ahmed -- dialplan_functions: wrong srtp use status report of a dialplan function
  • +

Category: Channels/chan_sip/CodecHandling

ASTERISK-29280: chan_sip: Allow peers without audio (text+video).
Reported by: Alexander Traud
    +
  • [45e48e387c] Alexander Traud -- chan_sip: Allow [peer] without audio (text+video).
  • +
ASTERISK-29265: chan_sip: Allow text+video media streams, again.
Reported by: Alexander Traud
    +
  • [87ad1138ff] Alexander Traud -- chan_sip: Set up calls without audio (text+video), again.
  • +
ASTERISK-29258: chan_sip: Audio stream rejected, Other stream present: Invalid SDP.
Reported by: Alexander Traud
    +
  • [4c154f3431] Alexander Traud -- chan_sip: SDP: Reject audio streams correctly.
  • +
ASTERISK-29238: chan_sip: SDP: Offers without any enabled stream are accepted.
Reported by: Alexander Traud
    +
  • [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing when its media is disabled.
  • +
ASTERISK-29237: chan_sip: SDP: m=video is parsed even when disabled.
Reported by: Alexander Traud
    +
  • [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing when its media is disabled.
  • +

Category: Channels/chan_sip/General

ASTERISK-29762: channels: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen.
  • +
ASTERISK-29370: chan_sip does not recognize application/hook-flash
Reported by: N A
    +
  • [7b82587dd6] Naveen Albert -- chan_sip: Expand hook flash recognition.
  • +
ASTERISK-29030: res_rtp_asterisk: Additional RTP-frame (with wrong SSRC) gets inserted when switching from progress to established
Reported by: Matthias Hensler
    +
  • [95414fc918] Sean Bright -- res_rtp_asterisk: More robust timestamp checking
  • +
ASTERISK-29011: chan_sip: ToHost property not cleared on reload
Reported by: Dennis
    +
  • [9058d9e591] Dennis Buteyn -- chan_sip: Clear ToHost property on peer when changing to dynamic host
  • +
ASTERISK-28957: chan_sip: chan_sip does not process 400 response to an INVITE.
Reported by: Frederic LE FOLL
    +
  • [a423f935c9] Frederic LE FOLL -- chan_sip: chan_sip does not process 400 response to an INVITE.
  • +
ASTERISK-28898: bridge_softmix: Conference bridge not passing silent rtp packets
Reported by: Jonathan Hunter
    +
  • [e8c8d69d47] Joshua C. Colp -- bridge_softmix: Always remove audio from mixed frame.
  • +
ASTERISK-28651: chan_sip logs errors on tx to non-existent TCP connections
Reported by: Jaco Kroon
    +
  • [365d007eb6] Jaco Kroon -- chan_sip: in case of tcp/tls, be less annoying about tx errors.
  • +
ASTERISK-28647: chan_sip: RTP frames not transmitted after emitting a COLP
Reported by: Jean Aunis - Prescom
    +
  • [9c9296c635] Jean Aunis -- chan_sip: voice frames are no longer transmitted after emitting a COLP
  • +
ASTERISK-28637: chan_sip+native_bridge_rtp: directmedia compatibility check failure when negociated ptime is not default ptime.
Reported by: Frederic LE FOLL
    +
  • [7624cbb155] Frederic LE FOLL -- chan_sip+native_bridge_rtp: no directmedia for ptime other than default ptime.
  • +
ASTERISK-28282: AST_SCHED_REPLACE_UNREF causes wait-on-self deadlocks (in chan_sip)
Reported by: Walter Doekes
    +
  • [3c6f11992b] Walter Doekes -- sched: Don't allow ast_sched_del to deadlock ast_sched_runq from same thread
  • +
ASTERISK-28362: strtok_r() makes gcc compile warning
Reported by: sungtae kim
    +
  • [dd1cc7791c] Ben Ford -- build: Fix compiler warnings/errors.
  • +
ASTERISK-25792: chan_sip: qualifygap bounds checking
Reported by: Paul Sandys
    +
  • [1499640da9] Sean Bright -- chan_sip: Ensure 'qualifygap' isn't negative
  • +
ASTERISK-28194: chan_sip: Leak using contact ACL
Reported by: Giuseppe Sucameli
    +
  • [0bde3751a0] Giuseppe Sucameli -- chan_sip: Fix leak using contact ACL
  • +
ASTERISK-28081: chan_sip: Asterisk 12+ chan_sip doesn't report AST_CEL_PICKUP in handle_invite_replaces
Reported by: Luit van Drongelen
    +
  • [2cf5079205] Jasper Hafkenscheid -- chan_sip: Attempt ast_do_pickup in handle_invite_replaces
  • +

Category: Channels/chan_sip/Interoperability

ASTERISK-28718: chan_sip: Returns 403 if RTP ports are depleted, should return 503
Reported by: Walter Doekes
    +
  • [43620cbf6c] Walter Doekes -- chan_sip: Return 503 if we're out of RTP ports
  • +
ASTERISK-28686: chan_sip strictrtp=yes fails when media source is changed: no audio
Reported by: Walter Doekes
    +
  • [711a3fed56] Walter Doekes -- chan_sip: Always process updated SDP on media source change
  • +

Category: Channels/chan_sip/Messaging

ASTERISK-28693: chan_sip: SIP MESSAGE beginning with a whitespace appears empty in the dialplan
Reported by: Frank Matano
    +
  • [f309b86e36] Sean Bright -- chan_sip.c: Stop handling continuation lines after reading headers
  • +
ASTERISK-28057: chan_sip: SipNotify via AMI behaves differently to CLI
Reported by: Peter Katzmann
    +
  • [6627c56b3d] Peter Katzmann -- chan_sip: SipNotify on Chan_Sip vi AMI behave different to CLI
  • +

Category: Channels/chan_sip/SRTP

ASTERISK-29222: chan_sip: Hold/Resume an sRTP call on a video enabled user-agent.
Reported by: Alexander Traud
    +
  • [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing when its media is disabled.
  • +

Category: Channels/chan_sip/Subscriptions

ASTERISK-28173: Deadlock in chan_sip handling subscribe request during res_parking reload
Reported by: Giuseppe Sucameli
    +
  • [e2bbab17b3] Giuseppe Sucameli -- Fix deadlock handling subscribe req during res_parking reload
  • +

Category: Channels/chan_sip/TCP-TLS

ASTERISK-28798: [patch] chan_sip: TCP/TLS client without server.
Reported by: Alexander Traud
    +
  • [e884d935f6] Alexander Traud -- chan_sip: Remove unused sip_socket->port.
  • +
  • [da9554d925] Alexander Traud -- chan_sip: TCP/TLS client without server.
  • +
ASTERISK-28372: Asterisk REPLY Wrong Contact header port (TCP)
Reported by: Anton Satskiy
    +
  • [52f07176b6] Alexander Traud -- chan_sip: externhost/externaddr with non-default TCP/TLS ports.
  • +
ASTERISK-24428: Document that Asterisk will use the default SIP ports (5060 for TCP, 5061 for TLS) if the extern option variants aren't used
Reported by: sstream
    +
  • [52f07176b6] Alexander Traud -- chan_sip: externhost/externaddr with non-default TCP/TLS ports.
  • +
ASTERISK-27195: chan_sip: only sets ToS bits on UDP socket, ignoring TCP and TLS sockets
Reported by: Joshua Roys
    +
  • [4d0ab620be] Alexander Traud -- chan_sip: DiffServ/ToS not only on UDP but also on TCP and TLS sockets.
  • +
ASTERISK-26006: Show offending IP for TLS setup failures in logs
Reported by: Oleksandr Natalenko
    +
  • [c2ffb004aa] George Joseph -- tcptls.c: Add peer hostname and port to some error messages
  • +
ASTERISK-28057: chan_sip: SipNotify via AMI behaves differently to CLI
Reported by: Peter Katzmann
    +
  • [6627c56b3d] Peter Katzmann -- chan_sip: SipNotify on Chan_Sip vi AMI behave different to CLI
  • +
ASTERISK-28034: chan_sip unstable with TLS after asterisk start or reloads
Reported by: David Hajek
    +
  • [406be41f21] David Hajek -- chan_sip.c: chan_sip unstable with TLS after asterisk start or reloads
  • +
ASTERISK-27881: PBX calls via chan_sip TCP trunk now get authentification error
Reported by: Ian Gilmour
    +
  • [9680790531] Jaco Kroon -- chan_sip: improved ip:port finding of peers for non-UDP transports.
  • +

Category: Channels/chan_sip/Transfers

ASTERISK-28677: CDR billsec is always 0 for transferred calls
Reported by: Maciej Michno
    +
  • [6818c3d1d2] George Joseph -- cdr.c: Set event time on party b when leaving a parking bridge
  • +

Category: Channels/chan_sip/Video

ASTERISK-29238: chan_sip: SDP: Offers without any enabled stream are accepted.
Reported by: Alexander Traud
    +
  • [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing when its media is disabled.
  • +
ASTERISK-29237: chan_sip: SDP: m=video is parsed even when disabled.
Reported by: Alexander Traud
    +
  • [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing when its media is disabled.
  • +

Category: Channels/chan_unistim

ASTERISK-28803: [patch] chan_unistim: Avoid tautological warnings with clang.
Reported by: Alexander Traud
    +
  • [b38f664250] Alexander Traud -- chan_unistim: Avoid tautological warnings with clang.
  • +
ASTERISK-25592: chan_unistim: Clang Warning: variable sized type not at end of a struct
Reported by: Alexander Traud
    +
  • [3863ab9af9] Igor Goncharovsky -- chan_unistim: Fix clang warning: variable sized type not at end of a struct
  • +

Category: Codecs/codec_opus

ASTERISK-28263: codec_opus: errors setting max_playback_rate and bitrate to "sdp"
Reported by: Gianluca Merlo
    +
  • [0bcaadc037] Kevin Harwell -- codecs.conf.sample: update codec opus docs
  • +

Category: Codecs/codec_resample

ASTERISK-28511: codec_resample: Bad sound quality when up sampling from SLIN16 to SLIN32
Reported by: Ruddy G
    +
  • [e4289b9e56] Sean Bright -- codec_resample: Ensure OUTSIDE_SPEEX is defined when necessary
  • +
  • [b096389660] Sean Bright -- codec_resample: Upgrade speex_resample to fix up-sampling bug
  • +

Category: Codecs/codec_silk

ASTERISK-28706: silk 24hHz doesn't show up in 'core show translation' output
Reported by: Sean Bright
    +
  • [dfad69ce7c] Sean Bright -- translate.c: Fix silk 24kHz truncation in 'core show translation'
  • +

Category: Configs/Basic-PBX

ASTERISK-28667: Asterisk ignores parsing of config files if a Byte order mark is present
Reported by: Robin Leffmann
    +
  • [40b5cf8f52] Sean Bright -- config.c: Skip UTF-8 BOMs if present when reading config files
  • +
ASTERISK-28272: The basic-pbx config samples don't produce a running asterisk
Reported by: George Joseph
    +
  • [2980622d2b] Joshua Colp -- basic-pbx: Update configuration to work with current modules.
  • +

Category: Configs/Samples

ASTERISK-29123: logger.conf.sample missing comment mark on line 115
Reported by: Andrew Siplas
    +
  • [ff33f7f44f] Andrew Siplas -- logger.conf.sample: add missing comment mark
  • +

Category: Contrib/General

ASTERISK-29142: sip_to_pjsip.py: doesn't read globbed includes
Reported by: Michael Newton
    +
  • [fe540d0326] Sean Bright -- sip_to_pjsip.py: Handle #include globs and other fixes
  • +
ASTERISK-27243: contrib: valgrind.supp doesn't suppress what it's supposed to due to invalid syntax
Reported by: Richard Kenner
    +
  • [095c204fe0] snuffy -- contrib/valgrind: Fix use of frame-level suppression
  • +
ASTERISK-28664: "trustrpid" is misspelled in sip_to_pjsip.py
Reported by: Pascal Cadotte Michaud
    +
  • [e494d5fd76] Pascal Cadotte Michaud -- sip_to_pjsip.py: Fix trustrpid typo
  • +
ASTERISK-28323: pjsip: sip.conf to pjsip.conf conversion script fails
Reported by: Guido Weckwerth
    +
  • [f098d4a325] Sean Bright -- sip_to_pjsip: Make multiline comment parsing consistent with Asterisk
  • +
ASTERISK-27968: systemd: asterisk.service
Reported by: seanchann.zhou
    +
  • [d7db9f2152] Corey Farrell -- contrib: Update systemd README.txt.
  • +

Category: Core/ACL

ASTERISK-28978: acl: named_acl rule misconfiguration results in segfault on reading rule from realtime
Reported by: Andrew Yager
    +
  • [7a43bedd72] Sean Bright -- acl.c: Coerce a NULL pointer into the empty string
  • +

Category: Core/Bridging

ASTERISK-29821: Deadlock in bridge_channel_internal_join() on local channels.
Reported by: Krzysztof Trempala
    +
  • [c1129fdd8c] Joshua C. Colp -- bridge: Unlock channel during Local peer check.
  • +
ASTERISK-29748: bridging: Infinite loop when both Local channel halves in same bridge
Reported by: Joshua C. Colp
    +
  • [7d4e37a180] Joshua C. Colp -- bridge: Deny full Local channel pair in bridge.
  • +
ASTERISK-29736: bridge_channel: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen.
  • +
ASTERISK-29071: app_confbridge: Memory rises when jitterbuffer enabled and muting over AMI occurs
Reported by: Stefan Ruf
    +
  • [f7bda066bb] Joshua C. Colp -- channel: Fix crash in suppress API.
  • +
  • [b43b81d953] Joshua C. Colp -- channel: Fix memory leak in suppress API.
  • +
ASTERISK-28841: app_confbridge: Add support for disabling text messaging for a user
Reported by: Joshua C. Colp
    +
  • [6cfc6ff53c] Joshua C. Colp -- confbridge: Add support for disabling text messaging.
  • +
ASTERISK-28076: bridging: Asterisk crashes when receiving an empty realtime text frame
Reported by: Emmanuel BUU
    +
  • [24cece660b] Emmanuel BUU -- core/frame: Fix ast_frdup() and ast_frisolate() for empty text frames
  • +

Category: Core/BuildSystem

ASTERISK-29724: BuildSystem: In POSIX sh, == in place of = is undefined.
Reported by: Alexander Traud
    +
  • [608e52c939] Alexander Traud -- BuildSystem: In POSIX sh, == in place of = is undefined.
  • +
ASTERISK-29682: Squash compiler issues generated by gcc 11
Reported by: George Joseph
    +
  • [0b2646aee6] Mike Bradeen -- various: Fix GCC 11 compilation issues.
  • +
ASTERISK-29693: Using --with-crypto and --with-ssl fails on a recompile
Reported by: George Joseph
    +
  • [c07e3c2f4d] George Joseph -- BuildSystem: Check for alternate openssl packages
  • +
ASTERISK-26497: make install downloads x86_32 variants of external modules on non Intel architectures
Reported by: Corey Farrell
    +
  • [bac66e9743] Mike Bradeen -- build: prevent binary downloads for non x86 architectures
  • +
ASTERISK-29348: menuselect doesn't return errors in many cases
Reported by: George Joseph
    +
  • [f47c5cbdf9] Jaco Kroon -- menuselect: exit non-zero in case of failure on --enable|disable options.
  • +
ASTERISK-28929: pjproject_bundled: Honor --without-pjproject.
Reported by: Alexander Traud
    +
  • [0a4dffe6f8] Alexander Traud -- pjproject_bundled: Honor --without-pjproject.
  • +
ASTERISK-28837: pjproject_bundled: Honor --without-pjproject.
Reported by: Alexander Traud
    +
  • [966acc6251] Alexander Traud -- pjproject_bundled: Honor --without-pjproject.
  • +
ASTERISK-28824: BuildSystem: Search for Python/C API when possibly needed only.
Reported by: Alexander Traud
    +
  • [610e058189] Alexander Traud -- BuildSystem: Search for Python/C API when possibly needed only.
  • +
ASTERISK-27717: [patch] BuildSystem: In NetBSD, the Python Programming Language is python-2.7.
Reported by: Alexander Traud
    +
  • [610e058189] Alexander Traud -- BuildSystem: Search for Python/C API when possibly needed only.
  • +
ASTERISK-28816: [patch] BuildSystem: Remove doc/tex and doc/pdf leftovers.
Reported by: Alexander Traud
    +
  • [7cdb493a1e] Alexander Traud -- BuildSystem: Remove doc/tex and doc/pdf leftovers.
  • +
ASTERISK-28818: [patch] BuildSystem: Allow space in path.
Reported by: Alexander Traud
    +
  • [7a04947abd] Alexander Traud -- BuildSystem: Allow space in path.
  • +
ASTERISK-28487: compile menuselect on gentoo
Reported by: Kilburn
    +
  • [e40f248fac] Sean Bright -- menuselect: Fix curses build on Gentoo Linux
  • +
ASTERISK-28392: The no-partial-inlining flag isn't passed to the bundled pjproject or jansson builds
Reported by: George Joseph
    +
  • [089581f20a] George Joseph -- build: Pass --fno-partial-inlining to third-party when appropriate
  • +
ASTERISK-28374: latest asterisk unconditionally launch gcc --version, even if the compiler is different
Reported by: Guido Falsi
    +
  • [8b7324ed3f] Guido Falsi -- core/buildsystem: check the actual compiler being version
  • +
ASTERISK-28271: Opensuse Leap 15 --with-jannson-bundled will not compile
Reported by: David Wilcox
    +
  • [ac2d302c2c] George Joseph -- bundled-jansson: On OpenSuse Leap libjansson.a was placed in lib64
  • +
ASTERISK-28250: build: Cross-compilation fails for target arm-linux-gnueabihf
Reported by: Jean Aunis - Prescom
    +
  • [d9fae4a824] Jean Aunis -- build : Fix cross-compilation errors
  • +
ASTERISK-27991: BuildSystem: Enable Jansson in Solaris 11.
Reported by: Alexander Traud
    +
  • [0a4d58735f] Alexander Traud -- BuildSystem: Enable Jansson in Solaris 11.
  • +

Category: Core/Channels

ASTERISK-29751: channel: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [e27b91d542] Alexander Traud -- channel: Fix for Doxygen.
  • +
ASTERISK-29713: GCC 11.2: two stringop-overread
Reported by: Alexander Traud
    +
  • [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues.
  • +
ASTERISK-29259: channel: Allow text+video media streams, again.
Reported by: Alexander Traud
    +
  • [f64ddf3db3] Alexander Traud -- channel: Set up calls without audio (text+video), again.
  • +
ASTERISK-29091: Crash when ast_translator_build_path fails
Reported by: Jasper van der Neut
    +
  • [08ccfd4588] Jasper van der Neut -- channels: Don't dereference NULL pointer
  • +
ASTERISK-25844: app_queue: Ghost channels in "core show channels" output
Reported by: Etienne Lessard
    +
  • [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in app_queue to avoid leaked stasis subscriptions
  • +
ASTERISK-28795: channel: write to a stream on multi-frame writes
Reported by: Kevin Harwell
    +
  • [3c345ec56d] Kevin Harwell -- channel: write to a stream on multi-frame writes
  • +
ASTERISK-28499: translate: Crash when frame does not have a "src" field set
Reported by: Gregory Massel
    +
  • [1e9714a050] Joshua Colp -- AST-2019-005 - translate: Don't assume all frames will have a src.
  • +
ASTERISK-28197: stasis: ast_endpoint struct holds the channel_ids of channels past destruction in certain cases
Reported by: Mohit Dhiman
    +
  • [d60ee2eeae] Mohit Dhiman -- stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure.
  • +
ASTERISK-28089: function ast_sendtext() create RTP realtime packets with a trailing null byte in the payload
Reported by: Emmanuel BUU
    +
  • [17f4e6ad4d] Emmanuel BUU -- core/frame: generate correct T.140 payload in ast_sendtext_data()
  • +

Category: Core/CodecInterface

ASTERISK-29526: G729 audio gets corrupted by Asterisk due to smoother
Reported by: under
    +
  • [feb1e06ac5] under -- codec_builtin.c: G729 audio gets corrupted by Asterisk due to smoother
  • +
ASTERISK-29328: translate.c: possible buffer overflow when upsampling
Reported by: Jean Aunis - Prescom
    +
  • [dec44306cf] Jean Aunis -- translate.c: Take sampling rate into account when checking codec's buffer size
  • +

Category: Core/Configuration

ASTERISK-29771: Crash occurs when 2 realtime sippeers mysql connections are configured and we have a schema warning
Reported by: Mario Ban
    +
  • [04ac4fe509] Sean Bright -- config.c: Prevent UB in ast_realtime_require_field.
  • +
ASTERISK-28955: "setvar" doesn't work properly in dahdi-channels.conf
Reported by: Marin Odrljin
    +
  • [d88e230037] Guido Falsi -- chan_dadhi: Fix setvar in dahdi channels
  • +
ASTERISK-23756: setvar directive when used in template and a child of said template, results in duplicate variable names
Reported by: Michael Goryainov
    +
  • [32ce6e9a06] Michael Goryainov -- channels: Allow updating variable value
  • +
ASTERISK-28158: Some conditions prevent running of el_end, break the terminal.
Reported by: Corey Farrell
    +
  • [c3d7b19cdd] Corey Farrell -- core: Fix handling of restart from remote console.
  • +
  • [194e40122a] Corey Farrell -- core: Ensure that el_end is always run when needed.
  • +

Category: Core/DNS

ASTERISK-28004: dns: Core ast_dns_get_nameservers does not support configured IPv6 servers
Reported by: Isaac McDonald
    +
  • [689c703b2c] Sean Bright -- dns.c: Load IPv6 DNS resolvers if configured.
  • +

Category: Core/General

ASTERISK-29730: Segfault in __ao2_ref if refdebug = yes
Reported by: Alexei Gradinari
    +
  • [ea941032ff] Mike Bradeen -- astobj2.c: Fix core when ref_log enabled
  • +
ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request
Reported by: Dennis Haney
    +
  • [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN request timeout
  • +
ASTERISK-12: app_voicemail2 became a bit silent, lately
Reported by: siggi
    +
  • [feb1e06ac5] under -- codec_builtin.c: G729 audio gets corrupted by Asterisk due to smoother
  • +
ASTERISK-29372: file.c switch does not account for flash events
Reported by: N A
    +
  • [283fa3a93b] Naveen Albert -- main/file.c: Don't throw error on flash event.
  • +
ASTERISK-29306: strings: Incorrect use of __attribute__((pure)) in ast_str_to_lower definition
Reported by: Vitezslav Novy
    +
  • [e4cd7a7d0b] Sean Bright -- strings.h: ast_str_to_upper() and _to_lower() are not pure.
  • +
ASTERISK-28430: res_rtp_asterisk.c: FRACK!, Failed assertion errno != EBADF
Reported by: under
    +
  • [a6faa53af0] Sean Bright -- tcptls.c: Don't close TCP client file descriptors more than once
  • +
ASTERISK-28311: dsp: ast_dsp_silence_noise_with_energy wrong judgment of frame format
Reported by: 周家建
    +
  • [9b08eddf90] Sean Bright -- dsp.c: Update calls to ast_format_cmp to check result properly
  • +
ASTERISK-28797: [patch] tcptls: Fix notice when TLS is enabled but not configured.
Reported by: Alexander Traud
    +
  • [f9ea75d117] Alexander Traud -- tcptls: Fix notice when TLS is enabled but not supported.
  • +
ASTERISK-28839: Sporadic crashes with Segmentation fault
Reported by: Joeran Vinzens
    +
  • [e56f4de7e6] Joshua C. Colp -- fax: Fix crashes in PJSIP re-negotiation scenarios.
  • +
ASTERISK-28780: app_mixmonitor: Memory leak due to race condition between AMI MixMonitor and hangup
Reported by: Joshua C. Colp
    +
  • [98d10d0a16] Joshua C. Colp -- audiohook: Don't allow audiohooks to attach to hung up channels.
  • +
ASTERISK-28498: cel / cdr: Event times may be incorrect
Reported by: Joshua C. Colp
    +
  • [261646c1c4] Joshua Colp -- cdr / cel: Use event time at event creation instead of processing.
  • +
ASTERISK-28232: core: RAII using clang use-after-scope issue
Reported by: Diederik de Groot
    +
  • [7bd30905fd] Diederik de Groot -- RAII: Change order or variables in clang version
  • +
ASTERISK-28158: Some conditions prevent running of el_end, break the terminal.
Reported by: Corey Farrell
    +
  • [c3d7b19cdd] Corey Farrell -- core: Fix handling of restart from remote console.
  • +
  • [194e40122a] Corey Farrell -- core: Ensure that el_end is always run when needed.
  • +
ASTERISK-28005: channel.c: ARI ring only once
Reported by: Hajek Michal
    +
  • [f97d92bd0a] Joshua Colp -- core: Don't stop generators when writing RTCP frames.
  • +
ASTERISK-12382: menuselect compilation failure on Solaris 10 / gcc 3.4.3
Reported by: rleasure
    +
  • [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for menuselect in Solaris 11.
  • +
ASTERISK-9107: menuselect compilation failure on Solaris 10/gcc-4.1.1
Reported by: Bob Atkins
    +
  • [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for menuselect in Solaris 11.
  • +

Category: Core/Internationalization

ASTERISK-29297: say: Y2021 problem – Asterisk cannot say year 2021 in Dutch
Reported by: Jacek Konieczny
    +
  • [7b052ec965] Nico Kooijman -- main: With Dutch language year after 2020 is not spoken in say.c
  • +

Category: Core/Jitterbuffer

ASTERISK-27176: test_abstract_jb: frames leak
Reported by: Corey Farrell
    +
  • [ee62a07914] Sean Bright -- test_abstract_jb.c: Fix put and put_out_of_order memory leaks.
  • +
ASTERISK-29480: fixedjitterbuffer contains an un-wrappered assert that triggers on a negative time slew
Reported by: Dan Cropp
    +
  • [88da59efe7] George Joseph -- jitterbuffer: Correct signed/unsigned mismatch causing assert
  • +

Category: Core/Logging

ASTERISK-29713: GCC 11.2: two stringop-overread
Reported by: Alexander Traud
    +
  • [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues.
  • +
ASTERISK-29209: Debug messages printed by scope trace might be missing newlines
Reported by: Alexander Traud
    +
  • [ccb4951bf8] George Joseph -- logger.c: Automatically add a newline to formats that don't have one
  • +
ASTERISK-26006: Show offending IP for TLS setup failures in logs
Reported by: Oleksandr Natalenko
    +
  • [c2ffb004aa] George Joseph -- tcptls.c: Add peer hostname and port to some error messages
  • +

Category: Core/ManagerInterface

ASTERISK-28350: manager: Stasis backed up due to locking
Reported by: Joshua C. Colp
    +
  • [d480f5eab2] Joshua Colp -- manager: Use separate lock for session event notification.
  • +
ASTERISK-28084: app_queue: QueueMemberStatus Event flooding AMI
Reported by: Andrej
    +
  • [b68b3012ea] Richard Mudgett -- app_queue.c: Fix json ref leak
  • +
ASTERISK-28033: AMI event "NewExten" is set to the wrong class
Reported by: laszlovl
    +
  • [012272a114] laszlovl -- manager: Set AMI event "Newexten" to the EVENT_FLAG_DIALPLAN class
  • +

Category: Core/PBX

ASTERISK-28040: pbx: "dialplan reload" is removing minus symbol from dynamic hints
Reported by: Daniel Zanutti
    +
  • [e63461b008] Sean Bright -- pbx.c: Don't remove dashes from hints on reload.
  • +
ASTERISK-29485: core: Inband generation of tones for Busy() and Congestion() may not occur
Reported by: Joshua C. Colp
    +
  • [5e1cb3253c] Joshua C. Colp -- core: Don't play silence for Busy() and Congestion() applications.
  • +
ASTERISK-29441: Core reload making TCP endpoints go offline
Reported by: Luke Escude
    +
  • [16e4a9d8cf] Joshua C. Colp -- res_pjsip: On partial transport reload also move factories.
  • +
ASTERISK-28300: AST_PBX_MAX_STACK is too low for some applications
Reported by: George Joseph
    +
  • [bc8dead610] George Joseph -- Core: Increase AST_PBX_MAX_STACK to 512 if not LOW_MEMORY
  • +
ASTERISK-28140: repeated segmentation faults
Reported by: Eyal Hasson
    +
  • [ece5f8015f] George Joseph -- backtrace: Refactor ast_bt_get_symbols so it doesn't crash
  • +

Category: Core/Portability

ASTERISK-15331: make menuselect fails due to undefined symbols (initscr32, w32addch) in menuselect_curses.o
Reported by: Majdi Bsoul
    +
  • [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for menuselect in Solaris 11.
  • +
ASTERISK-14935: [regression] menuselect compilation failure on Solaris 10
Reported by: Samuel Owens
    +
  • [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for menuselect in Solaris 11.
  • +

Category: Core/RTP

ASTERISK-28416: Unable to get rtp codec payload code for slin
Reported by: Brian J. Murrell
    +
  • [4964302984] Sean Bright -- format_cap: Perform codec lookups by pointer instead of name
  • +
ASTERISK-28480: json integer overflow in ssrc and timestamp
Reported by: Salah Ahmed
    +
  • [3656c42cb0] Kevin Harwell -- various modules: json integer overflow
  • +
ASTERISK-27854: rtp: Crash in off-nominal case where RTP instance can't be set up
Reported by: Lei Fu
    +
  • [bdc8159799] Corey Farrell -- res_rtp_asterisk: Fix crash on ast_rtp_new failure.
  • +

Category: Core/Stasis

ASTERISK-29750: stasis: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [6988386234] Alexander Traud -- stasis: Fix for Doxygen.
  • +
ASTERISK-29710: stasis: Clang 13 warns about the unused but set variable dispatched.
Reported by: Alexander Traud
    +
  • [8b76a3cd3b] Alexander Traud -- stasis: Avoid 'dispatched' as unused variable in normal mode.
  • +
ASTERISK-28237: "FRACK!, Failed assertion bad magic number" happens when unsubscribe an application from an event source
Reported by: Lucas Tardioli Silveira
    +
  • [59d15c4c2a] Evgenios_Greek -- stasis: Fix "FRACK!, Failed assertion bad magic number" when unsubscribing
  • +
ASTERISK-29355: app_queue: Queue member status message sent even if status doesn't change
Reported by: Roman Pertsev
    +
  • [55c467eab1] Joshua C. Colp -- app_queue: Only send QueueMemberStatus if status changes.
  • +
ASTERISK-28755: SIP/Stasis: SIP headers not transmitted in the "variables" field
Reported by: Jean Aunis - Prescom
    +
  • [a715cf5aaa] Kevin Harwell -- message & stasis/messaging: make text message variables work in ARI
  • +
ASTERISK-28553: stasis.c: Crash during unload
Reported by: Kevin Harwell
    +
  • [729b286d59] Joshua Colp -- stasis: Pass bumped topic_all reference to proxy_dtor.
  • +
ASTERISK-28353: stasis: Crash at shutdown when statistics enabled
Reported by: Joshua C. ColpASTERISK-28335: stasis: Make topic and maybe subscription names unique and more useful
Reported by: Joshua C. Colp
    +
  • [0231dd6ae7] Joshua Colp -- stasis: Improve topic/subscription names and statistics.
  • +
ASTERISK-28252: HangupHandler manager events are never thrown
Reported by: Gerald Schnabel
    +
  • [f9ca0afb39] Gerald Schnabel -- manager_channels: Fix throwing of HangupHandler manager events
  • +
ASTERISK-28244: stasis: Filter messages at publishing to AMI/ARI
Reported by: Joshua C. Colp
    +
  • [1323730f6c] Joshua C. Colp -- stasis / manager / ari: Better filter messages.
  • +
ASTERISK-28197: stasis: ast_endpoint struct holds the channel_ids of channels past destruction in certain cases
Reported by: Mohit Dhiman
    +
  • [d60ee2eeae] Mohit Dhiman -- stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure.
  • +
ASTERISK-28212: stasis: Statistics broke ABI under developer mode
Reported by: Joshua C. Colp
    +
  • [110934706f] Corey Farrell -- stasis: Fix ABI between DEVMODE and non-DEVMODE.
  • +
ASTERISK-28117: stasis: Add statistics for usage when in developer mode
Reported by: Joshua C. Colp
    +
  • [fe07093660] Joshua C. Colp -- stasis: Add statistics gathering in developer mode.
  • +
ASTERISK-28186: stasis: Filter messages at publishing based on to_* presence
Reported by: Joshua C. Colp
    +
  • [3f3dd992a2] George Joseph -- stasis: Allow filtering by formatter
  • +
ASTERISK-28119: stasis: Segment channel snapshot to reduce creation cost
Reported by: Joshua C. Colp
    +
  • [50ac85cb40] Joshua Colp -- stasis: Segment channel snapshot to reduce creation cost.
  • +
ASTERISK-28102: stasis: Use implementation specific cache for channel snapshots
Reported by: Joshua C. Colp
    +
  • [d0ccbb3377] Joshua Colp -- stasis: Use an implementation specific channel snapshot cache.
  • +
ASTERISK-28103: stasis: Filter messages at publishing to reduce work done
Reported by: Joshua C. Colp
    +
  • [3077ad0c24] Joshua Colp -- stasis: Add internal filtering of messages.
  • +
ASTERISK-28084: app_queue: QueueMemberStatus Event flooding AMI
Reported by: Andrej
    +
  • [b68b3012ea] Richard Mudgett -- app_queue.c: Fix json ref leak
  • +
ASTERISK-27591: Frack errors in stasis.c and memory leakage
Reported by: Siruja Maharjan
    +
  • [66f581313f] Joshua Colp -- devicestate: Don't create topic when change isn't cached.
  • +

Category: Core/Streams

ASTERISK-28870: streams: One memory leak and one issue cloning streams
Reported by: George Joseph
    +
  • [7fbfbe7da0] George Joseph -- streams: Fix one memory leak and one formats ref issue
  • +
ASTERISK-28846: stream: Enforce formats immutability
Reported by: Joshua C. Colp
    +
  • [1c5e68580a] Joshua C. Colp -- stream: Enforce formats immutability and ensure formats exist.
  • +
ASTERISK-28625: Playback of local files impacted by large media cache
Reported by: Kevin Reeves
    +
  • [c626ccec12] Kevin Reeves -- main/file.c: Limit media cache usage to remote files.
  • +

Category: Core/UDPTL

ASTERISK-28483: packet lost on UDPTL wrap around
Reported by: Torrey Searle
    +
  • [084901d548] Torrey Searle -- main/udptl.c: correctly handle udptl sequence wrap around
  • +

Category: Documentation

ASTERISK-29779: progdocs: Hidden code sections with syntax errors.
Reported by: Alexander Traud
    +
  • [f946b92553] Alexander Traud -- progdocs: Fix for Doxygen, the hidden parts.
  • +
ASTERISK-29732: progdocs: Fix grouping for latest Doxygen
Reported by: Alexander Traud
    +
  • [751bbf4b97] Alexander Traud -- progdocs: Fix grouping for latest Doxygen.
  • +
ASTERISK-29764: chan_misdn: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen.
  • +
ASTERISK-29773: progdocs: doxyref.h outdated
Reported by: Alexander Traud
    +
  • [422f5389f6] Alexander Traud -- progdocs: Remove outdated references in doxyref.h.
  • +
ASTERISK-29765: xmldoc: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [31e385bebb] Alexander Traud -- xmldoc: Fix for Doxygen.
  • +
ASTERISK-29762: channels: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen.
  • +
ASTERISK-29754: odbc: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29753: parking: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen.
  • +
ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +
ASTERISK-29751: channel: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [e27b91d542] Alexander Traud -- channel: Fix for Doxygen.
  • +
ASTERISK-29752: app: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29749: res_xmpp: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen.
  • +
ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29741: tests: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29740: apps: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29733: progdocs: Avoid name with Doxygen \file
Reported by: Alexander Traud
    +
  • [44a9c16e9c] Alexander Traud -- progdocs: Avoid 'name' with Doxygen \file.
  • +
ASTERISK-29736: bridge_channel: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen.
  • +
ASTERISK-29735: progdocs: Avoid multiple use of section labels
Reported by: Alexander Traud
    +
  • [57b4956a8a] Alexander Traud -- progdocs: Avoid multiple use of section labels.
  • +
ASTERISK-29734: progdocs: Use Doxygen \example correctly
Reported by: Alexander Traud
    +
  • [23b16c5372] Alexander Traud -- progdocs: Use Doxygen \example correctly.
  • +
ASTERISK-29614: app_agent_pool: XML Doc: unterminated entity reference
Reported by: Alexander Traud
    +
  • [5c836c8e36] Sean Bright -- config_options: Handle ACO arrays correctly in generated XML docs.
  • +
ASTERISK-24434: Fix differing usage of assignment operators in modules.conf
Reported by: Rusty Newton
    +
  • [be3153346b] Sean Bright -- modules.conf: Fix more differing usages of assignment operators.
  • +
  • [3084084648] Sean Bright -- modules.conf: Fix differing usage of assignment operators.
  • +
ASTERISK-24631: Incorrect description of option "context" in queues.conf.sample
Reported by: Etienne Lessard
    +
  • [31364fa4c8] Sean Bright -- queues.conf.sample: Correct 'context' documentation.
  • +
ASTERISK-25358: dateformat not read from logger.conf by remote console
Reported by: Igor Liferenko
    +
  • [a0009c807e] Mark Murawski -- logger: Console sessions will now respect logger.conf dateformat= option
  • +
ASTERISK-29136: config: Sample features.conf incorrectly includes " around sound files
Reported by: Benjamin M.
    +
  • [6f321b561a] Sean Bright -- features.conf.sample: Sample sound files incorrectly quoted
  • +
ASTERISK-26424: app_voicemail: Undocumented behavior from VMSayName
Reported by: Eric Smith
    +
  • [abee490639] Sean Bright -- app_voicemail.c: Document VMSayName interruption behavior
  • +
ASTERISK-28816: [patch] BuildSystem: Remove doc/tex and doc/pdf leftovers.
Reported by: Alexander Traud
    +
  • [7cdb493a1e] Alexander Traud -- BuildSystem: Remove doc/tex and doc/pdf leftovers.
  • +
ASTERISK-24484: Update documentation for statsd module - usage requirements unclear
Reported by: Dan Jenkins
    +
  • [c376e9f8a8] Sean Bright -- res_statsd: Document that res_statsd does nothing on its own
  • +
ASTERISK-25429: res_pjsip_endpoint_identifier_ip: Document support for hostnames
Reported by: Joshua C. Colp
    +
  • [29d867ed67] Sean Bright -- res_pjsip_endpoint_identifier_ip: Document support for hostnames
  • +
ASTERISK-28507: Wiki docs missing for MessageWaiting
Reported by: David M. Lee
    +
  • [d5f3ec92d0] George Joseph -- CI: Update buildAsterisk.sh to do a "make full"
  • +
ASTERISK-20986: QUEUE_MEMBER 's description is inaccurate
Reported by: Olivier Krief
    +
  • [834d022da5] Sean Bright -- app_queue: Fix documentation for QUEUE_MEMBER function.
  • +
ASTERISK-24173: File menuselect/menuselect_gtk.c has no license header
Reported by: Jeremy Lainé
    +
  • [8dc5f86095] Sean Bright -- menuselect: Add license header to menuselect_gtk.c
  • +
ASTERISK-28150: Formatting error in documentation
Reported by: Scott Griepentrog
    +
  • [fdca9cb64f] Kevin Harwell -- res_pjsip: formatting error in documentation
  • +

Category: Formats/General

ASTERISK-29539: Segmentation fault at ast_writestream() when write handler not defined (happens with OGG/Speex)
Reported by: Ernani José Camargo Azevedo
    +
  • [628830921e] Kevin Harwell -- format_ogg_speex: Implement a "not supported" write handler
  • +

Category: Functions/General

ASTERISK-28626: Missing arguments in PJSIP_CONTACT function documentation
Reported by: Pascal Cadotte Michaud
    +
  • [bf4dd3d837] Pascal Cadotte Michaud -- PJSIP_CONTACT: add missing argument documentation
  • +
  • [7e3015d779] Pascal Cadotte Michaud -- PJSIP_CONTACT: add missing argument documentation
  • +
ASTERISK-26481: FILE function grabs garbage along with read data when target line has no newline
Reported by: Jonathan Harris
    +
  • [bf7c808604] Sean Bright -- func_env: Prevent FILE() from reading garbage at end-of-file
  • +

Category: Functions/func_aes

ASTERISK-28788: func_aes: incorrectly printing error 'declined to load'
Reported by: Alexander Traud
    +
  • [cd8cbf7384] Alexander Traud -- func_aes: Avoid incorrect error message on load.
  • +

Category: Functions/func_channel

ASTERISK-28796: func_channel: cannot read fields exten, context, userfield, channame from dialplan
Reported by: Sébastien Duthil
    +
  • [d40e343710] Sebastien Duthil -- func_channel: allow reading 4 fields from dialplan
  • +

Category: Functions/func_curl

ASTERISK-28825: Any curl response checks out as valid even if 404 is returned.
Reported by: dovid
    +
  • [c635c78265] Dovid Bender -- func_curl.c: Allow user to set what return codes constitute a failure.
  • +
ASTERISK-29085: func_curl: Segmentation fault when using CURL after setting httpheader CURLOPT
Reported by: Péter Juhász
    +
  • [28c88e8fe2] Sean Bright -- func_curl.c: Prevent crash when using CURLOPT(httpheader)
  • +

Category: Functions/func_enum

ASTERISK-26711: func_enum: ENUM code wrong case
Reported by: Vitold
    +
  • [517224ce85] Sean Bright -- enum.c: Add support for regular expression flag in NAPTR record
  • +
ASTERISK-19460: [patch] Function TXTCIDNAME never actually makes DNS calls and always returns an empty string
Reported by: George Joseph
    +
  • [ab63f0cd0f] Sean Bright -- enum.c: Make ast_get_txt() actually do something.
  • +

Category: Functions/func_lock

ASTERISK-29217: LOCK() can grant the same lock to multiple channels spuriously
Reported by: Jaco Kroon
    +
  • [3a230cc6a9] Jaco Kroon -- func_lock: fix multiple-channel-grant problems.
  • +

Category: Functions/func_odbc

ASTERISK-29754: odbc: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make
Reported by: Alexander Traud
    +
  • [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og
  • +
ASTERISK-20325: Comments in configs/func_odbc.conf.sample are not consistent with examples. Missing examples.
Reported by: Olivier Krief
    +
  • [c4e0983742] Sean Bright -- func_odbc.conf.sample: Clarify sample documentation
  • +
ASTERISK-28497: func_odbc: truncating Unicode string on readsql
Reported by: Boris P. Korzun
    +
  • [8979921da9] Boris P. Korzun -- func_odbc: acf_odbc_read() and cli_odbc_read() unicode support
  • +

Category: Functions/func_strings

ASTERISK-28159: SIGABRT caused by stack corruption in hashkeys_read when no matching keys present
Reported by: Michael Walton
    +
  • [4b5d11ec17] Michael Walton -- func_strings: HASHKEY - negative array index can cause corruption
  • +

Category: Functions/func_talkdetect

ASTERISK-27816: func_talkdetect's logic is completely broken
Reported by: Moritz Fain
    +
  • [8c2720e540] Sean Bright -- func_talkdetect.c: Fix logical errors in silence detection.
  • +

Category: Functions/func_version

ASTERISK-29021: [patch] Fix VERSION(ASTERISK_VERSION_NUM) on certified versions
Reported by: cmaj
    +
  • [543f936147] cmaj -- Makefile: Fix certified version numbers
  • +

Category: General

ASTERISK-29630: Asterisk is unable to read extended number format terminfo files
Reported by: Sean Bright
    +
  • [858cb386fd] Sean Bright -- term.c: Add support for extended number format terminfo files.
  • +
ASTERISK-29148: AST_MODULE_INFO no, MODULEINFO depend
Reported by: Alexander Traud
    +
  • [bf9f0f13c4] Alexander Traud -- loader: Sync load- and build-time deps.
  • +
ASTERISK-28930: ./configure --without-ssl build failure
Reported by: Jaco Kroon
    +
  • [9b5042433b] Joshua C. Colp -- menuselect: Resolve infinite loop in dependency scenario.
  • +
ASTERISK-28838: AST_MODULE_INFO requires, MODULEINFO does not mention
Reported by: Alexander Traud
    +
  • [abf4d74384] Alexander Traud -- cdr_odbc: Sync load- and build-time deps.
  • +
  • [191f136260] Alexander Traud -- res_pjsip_refer: Add build-time dependency.
  • +
  • [5c2b8fdeca] Alexander Traud -- app_getcpeid: Add build-time dependency.
  • +
  • [008f46bf1e] Alexander Traud -- res_pjsip: Sync load- and build-time deps.
  • +
  • [e2affa3b0a] Alexander Traud -- curl: Add build-time dependency.
  • +
  • [f1135b453b] Alexander Traud -- res_pjsip: Add build-time dependency.
  • +
ASTERISK-28609: Memory Leak in res_rtp_asterisk.c
Reported by: Ted G
    +
  • [39c920ac78] George Joseph -- res_rtp_asterisk: Add frame list cleanups to ast_rtp_read
  • +
ASTERISK-28590: utils.c throws repeated warnings; "pthread_attr_setstacksize: Invalid argument"
Reported by: Speed Dial Dave
    +
  • [a4222614c4] Sean Bright -- utils.h: Set lower bound for thread stack size to PTHREAD_STACK_MIN
  • +
ASTERISK-28523: Asterisk 16.5.0 Memory leak
Reported by: Cyril Ramière
    +
  • [a4caaef64c] Kevin Harwell -- res_sorcery_memory_cache: stale item update leak
  • +
ASTERISK-28472: Asterisk occasionally passes a NULL as srtp->session to srtp_protect/unprotect causing SEGV
Reported by: Jonas Swiatek
    +
  • [b805e1237d] Kevin Harwell -- srtp: Fix possible race condition, and add NULL checks
  • +
ASTERISK-28412: GCC 9 catches more string formatting issues
Reported by: George JosephASTERISK-28319: musl: Crash on startup when loading modules
Reported by: Sebastian Kemper
    +
  • [ccac55b894] Sebastian Kemper -- loader: support for permanent dlopen()
  • +
ASTERISK-28332: Variable ALTCONF ignored when service is used in Debian
Reported by: Cirillo Ferreira
    +
  • [7d5409912f] cirillor -- Variable ALTCONF ignored when service is used in Debian
  • +

Category: PBX/General

ASTERISK-29046: pbx: Deadlock when doing a reload, while simultaneously doing an ExtensionState on a pattern match hint that ends up adding an extension
Reported by: Ramarajan
    +
  • [6d50d152d8] Joshua C. Colp -- pbx: Fix hints deadlock between reload and ExtensionState.
  • +
ASTERISK-28695: core: minmemfree watermark uses free RAM, not available RAM
Reported by: Kevin Flyn
    +
  • [50d02d6194] Sean Bright -- pbx.c: Include filesystem cache in free memory calculation
  • +
ASTERISK-28605: chan_dahdi: Deadlock in Hangup Scenarios with concurrent command pri show span X
Reported by: Dirk Wendland
    +
  • [ee7d72eb72] George Joseph -- sig_pri: Fix deadlock caused by sig_pri_queue_hangup
  • +
ASTERISK-20182: Parsing a label beginning with a numeric character in all Goto/GotoIf/GotoIfTime application causes unexpected behavior
Reported by: Janu
    +
  • [2cf4e8bff9] Sean Bright -- pbx.c: Properly parse labels with leading digits
  • +

Category: PBX/pbx_ael

ASTERISK-29609: Subsequent 'ael reload' will cause a lock up
Reported by: Mark Murawski
    +
  • [042ae05be7] Mark Murawski -- pbx_ael: Fix crash and lockup issue regarding 'ael reload'
  • +
ASTERISK-17799: AEL reload causes loss of control in a macro
Reported by: Kirill Katsnelson
    +
  • [f827193424] Sean Bright -- res_ael: Create consistent label names across reloads
  • +
ASTERISK-18593: AEL for loops use Macro app and pipe delimiter
Reported by: Luke-Jr
    +
  • [f7f1a2cbb7] Sean Bright -- res_ael: Use Gosub in for loop expressions
  • +
ASTERISK-14939: AEL parsers does not find existing label
Reported by: klaus3000
    +
  • [395c7ed5b7] Sean Bright -- res_ael: Fix pattern matching against literal '+'
  • +

Category: PBX/pbx_config

ASTERISK-28534: Segmentation fault when there is no priority for an extension
Reported by: Timothy Vanderaerden
    +
  • [702019fc80] Sean Bright -- pbx: Prevent Realtime switch crash on invalid priority
  • +
ASTERISK-28146: pbx_config: Only the first [globals] section is processed.
Reported by: Corey Farrell
    +
  • [8e34cb302e] Corey Farrell -- pbx_config: Only the first [globals] section is seen.
  • +

Category: PBX/pbx_dundi

ASTERISK-21205: [patch] dundi_read_result crash due to negative number
Reported by: Jaco Kroon

Category: Resources/General

ASTERISK-29130: prometheus: Crash when scraping bridge
Reported by: Francisco Correia
    +
  • [19eef2a6dc] George Joseph -- res_prometheus: Clone containers before iterating
  • +
ASTERISK-28301: Allow voicemail boxes to be subscribed to with a presence event package
Reported by: George Joseph
    +
  • [9ee76cf070] George Joseph -- res_mwi_devstate.c: New module to allow presence subs to VM boxes
  • +
ASTERISK-28045: configure script does not enforce libunbound2 version
Reported by: Samuel Galarneau
    +
  • [1ba51b00cc] George Joseph -- configure.ac: Check for unbound version >= 1.5
  • +

Category: Resources/res_ari

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +
ASTERISK-28948: ARI channel create doesn't referencing the channel_id parameter
Reported by: sungtae kim
    +
  • [bbe0f2230d] sungtae kim -- res_ari: Fix create channel request channelId parameter parsing
  • +
ASTERISK-28679: stasis application is destroyed after its creation
Reported by: Francois Blackburn
    +
  • [4206830a52] Kevin Harwell -- res_stasis: trigger cleanup after update
  • +
ASTERISK-28585: ari/resource_events: Crash in event session cleanup
Reported by: Kevin Harwell
    +
  • [360936ead5] Joshua Colp -- res_ari_events: Add module reference when a WebSocket is open.
  • +
ASTERISK-26718: ARI: Bridge destroying doesn't work as expected
Reported by: Marin Odrljin
    +
  • [3087c82eb6] Holger Hans Peter Freyther -- stasis: Call callbacks when imparting fails
  • +
ASTERISK-28106: Astricon Feedback: Unable to filter ARI events when GETting causes overload of events
Reported by: George JosephASTERISK-28104: AstriCon Feedback: Automatically create a 1 line dialplan context for stasis apps
Reported by: George Joseph
    +
  • [3f9c5fba95] Ben Ford -- res_stasis: Auto-create context and extens on Stasis app launch.
  • +

Category: Resources/res_ari_applications

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +
ASTERISK-28302: ARI: "Error destroying mutex" when listing all ARI applications
Reported by: Stefan Repke
    +
  • [e687cf214d] Joshua C. Colp -- res_ari_applications: Fix incorrect call to ao2_lock.
  • +

Category: Resources/res_ari_bridges

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +
ASTERISK-29668: ari: Listing bridges fails when dialing bridge exists
Reported by: Joshua C. Colp
    +
  • [ea36473c45] Joshua C. Colp -- ari: Ignore invisible bridges when listing bridges.
  • +
ASTERISK-28898: bridge_softmix: Conference bridge not passing silent rtp packets
Reported by: Jonathan Hunter
    +
  • [e8c8d69d47] Joshua C. Colp -- bridge_softmix: Always remove audio from mixed frame.
  • +

Category: Resources/res_ari_channels

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +
ASTERISK-29629: ARI external media channel creation doesn't set option data
Reported by: sungtae kim
    +
  • [d9747104ff] Sungtae Kim -- resource_channels.c: Fix external media data option
  • +
ASTERISK-29622: ARI: external media create doesn't use body parameter
Reported by: sungtae kim
    +
  • [479cc17f45] sungtae kim -- resource_channels.c: Fix wrong external media parameter parse
  • +
ASTERISK-29514: ari: Audiosocket segfault when no data specified
Reported by: Igor Goncharovsky
    +
  • [b9bb96ffed] Igor Goncharovsky -- res_ari: Fix audiosocket segfault
  • +
ASTERISK-29188: null media causing the Asterisk crash
Reported by: sungtae kim
    +
  • [4b450b4334] Sungtae Kim -- res_ari: Fix wrong media uri handle for channel play
  • +
ASTERISK-28940: /channels/create doesn't get any parameters from the body
Reported by: sungtae kim
    +
  • [fa7c69f40f] sungtae kim -- res_ari: Fix create request body parameter parsing.
  • +
ASTERISK-28847: ARI channels cuts the endpoint string over 80 characters
Reported by: sungtae kim
    +
  • [9ad3d2829c] sungtae kim -- res_ari_channels: Fixed endpoint 80 characters limit
  • +
ASTERISK-28181: ari: Originating overwrites channel start time
Reported by: sungtae kim
    +
  • [5a2a7d65b5] Sungtae Kim -- main/cdr: Fixed cdr start overwriting
  • +
ASTERISK-28169: ARI /channels/create handler causes core dump
Reported by: sungtae kim
    +
  • [1dea497454] Sungtae Kim -- res/res_ari: Fix null endpoint handle
  • +

Category: Resources/res_ari_device_states

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +

Category: Resources/res_ari_endpoints

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +
ASTERISK-29108: resource_endpoints.c : Memory leak if endpoint not found
Reported by: Jean Aunis - Prescom
    +
  • [7ced144867] Jean Aunis -- resource_endpoints.c: memory leak when providing a 404 response
  • +

Category: Resources/res_ari_events

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +

Category: Resources/res_ari_mailboxes

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +

Category: Resources/res_ari_playbacks

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +

Category: Resources/res_ari_recordings

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +

Category: Resources/res_ari_sounds

ASTERISK-29756: res_ari: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen.
  • +

Category: Resources/res_calendar_exchange

ASTERISK-28572: Memory leaks in res_calendar_exchange and res_calendar_icalendar
Reported by: Yoooooo Ha
    +
  • [16e668c7dd] Sean Bright -- res_calendar: Resolve memory leak on calendar destruction
  • +

Category: Resources/res_calendar_icalendar

ASTERISK-28572: Memory leaks in res_calendar_exchange and res_calendar_icalendar
Reported by: Yoooooo Ha
    +
  • [16e668c7dd] Sean Bright -- res_calendar: Resolve memory leak on calendar destruction
  • +

Category: Resources/res_config_odbc

ASTERISK-28341: res_config_odbc eliminates empty custom (“@” prefix) variables
Reported by: Alexei Gradinari
    +
  • [e5d990d01d] Alexei Gradinari -- res_config_odbc: set empty extended field as a single whitespace
  • +
ASTERISK-28166: app_voicemail: Asterisk unresponsive after changing voicemail password with ODBC
Reported by: Michael
    +
  • [719a4643ab] Sean Bright -- res_config_odbc: Avoid deadlock when max_connections = 1
  • +

Category: Resources/res_config_pgsql

ASTERISK-29293: res_config_pgsql: Limit realtime_pgsql() to return one (no more) record
Reported by: Boris P. Korzun
    +
  • [beb579bc99] Boris P. Korzun -- res_config_pgsql: Limit realtime_pgsql() to return one (no more) record.
  • +

Category: Resources/res_config_sqlite3

ASTERISK-28477: Crash when not specifying "dbfile" in res_config_sqlite3.conf
Reported by: Dennis
    +
  • [2424ecaf66] Sean Bright -- res_config_sqlite3: Only join threads that we started
  • +
ASTERISK-28478: Crash performing "core reload" with modified res_config_sqlite3.conf
Reported by: Dennis
    +
  • [2424ecaf66] Sean Bright -- res_config_sqlite3: Only join threads that we started
  • +

Category: Resources/res_convert

ASTERISK-29539: Segmentation fault at ast_writestream() when write handler not defined (happens with OGG/Speex)
Reported by: Ernani José Camargo Azevedo
    +
  • [628830921e] Kevin Harwell -- format_ogg_speex: Implement a "not supported" write handler
  • +

Category: Resources/res_corosync

ASTERISK-28888: res_corosync: causes asterisk crash in huge distributed environment.
Reported by: Università di Bologna - CESIA VoIP
    +
  • [0c1c386634] Università di Bologna - CESIA VoIP -- res_corosync: Fix crash in huge distributed environment.
  • +

Category: Resources/res_fax

ASTERISK-29312: res_fax: asterisk fails to publish the Stasis and ReceiveFax status messages if the remote Station ID contains invalid UTF-8 characters
Reported by: Alexei Gradinari
    +
  • [d5e73d2121] Alexei Gradinari -- res_fax: validate the remote/local Station ID for UTF-8 format
  • +
ASTERISK-28900: res_fax: Double frame free when gateway in use with off-nominal format usage
Reported by: Gregory Massel
    +
  • [d2500c6273] Joshua C. Colp -- res_fax: Don't consume frames given to fax gateway on write.
  • +
ASTERISK-28660: res_fax: wrap Asterisk initiated negotiation with config option
Reported by: Kevin Harwell
    +
  • [b6f5607359] Kevin Harwell -- res_fax: wrap v21 detected Asterisk initiated negotiation with config option
  • +
ASTERISK-27981: res_fax: Fax session leak with fax gatewaying
Reported by: pasandev
    +
  • [1b62781be0] Alexei Gradinari -- res_fax: fix segfault on inactive "reserved" fax session
  • +
  • [40def05949] Joshua Colp -- res_fax: Handle fax gateway being started more than once.
  • +

Category: Resources/res_format_attr_h264

ASTERISK-27959: [patch] Asterisk 15.4.1 h264 fmtp negotiation problem
Reported by: David Kuehling
    +
  • [5b12dfa6dd] Sean Bright -- res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set
  • +

Category: Resources/res_http_media_cache

ASTERISK-27871: Remote URL in playback must end with file extension
Reported by: Caesar
    +
  • [76c09b1cfd] Sean Bright -- res_http_media_cache.c: Parse media URLs to find extensions.
  • +
ASTERISK-29173: Media cache URL requests allow infinite redirects
Reported by: Sean Bright
    +
  • [f39d5ea7cd] Sean Bright -- res_http_media_cache.c: Set reasonable number of redirects
  • +

Category: Resources/res_http_websocket

ASTERISK-28975: res_http_websocket: Text payload data doesn't necessary include trailing zero
Reported by: Nickolay V. Shmyrev
    +
  • [e4d24f5137] Nickolay Shmyrev -- res_http_websocket: Avoid reading past end of string
  • +
ASTERISK-28562: SIP WSS message not processed until next frame arrives
Reported by: Robert Sutton
    +
  • [87110c1bdf] Sean Bright -- websocket: Consider pending SSL data when waiting for socket input
  • +
ASTERISK-28257: res_http_websocket: PING / PONG opcodes break data reception
Reported by: Jeremy Lainé
    +
  • [69e9fd63e1] Jeremy Lainé -- res_http_websocket: ensure control frames do not interfere with data
  • +
ASTERISK-28231: res_http_websocket: Not responding to Connection Close Frame (opcode 8)
Reported by: Jeremy Lainé
    +
  • [0b8867f7d6] Jeremy Lainé -- res_http_websocket: respond to CLOSE opcode
  • +

Category: Resources/res_indications

ASTERISK-28391: res_indications: Crash requesting autocomplete on indications cli command
Reported by: Lucas Mendes
    +
  • [4f69ea928a] Lucas Mendes -- res_indications: Fix indications remove command autocomplete
  • +

Category: Resources/res_monitor

ASTERISK-28249: res_monitor: Segfault with Monitor(wav,file,i)
Reported by: Valentin Vidić
    +
  • [17f76d27cc] Valentin Vidic -- channel.c: Fix segfault with Monitor(wav,file,i)
  • +

Category: Resources/res_musiconhold

ASTERISK-29211: res_musiconhold: Segfault on realtime music on hold without entries
Reported by: Nathan Bruning
    +
  • [0774d9f9aa] Nathan Bruning -- res_musiconhold: Don't crash when real-time doesn't return any entries
  • +
ASTERISK-29099: res_musiconhold: Realtime MOH only loads a single entry
Reported by: laszlovl
    +
  • [b3b6b5e9f7] laszlovl -- res_musiconhold: Load all realtime entries, not just the first
  • +
ASTERISK-24329: Music On Hold announcement cuts intro of music the first time it is played
Reported by: Thomas Frederiksen
    +
  • [d0644faa5a] Sean Bright -- res_musiconhold: Start playlist after initial announcement
  • +
ASTERISK-28927: Asterisk crash in music on hold
Reported by: David Cunningham
    +
  • [57554c2834] Sean Bright -- res_musiconhold.c: Prevent crash with realtime MoH
  • +
ASTERISK-28892: res_musiconhold: Module res_musiconhold throws false warning
Reported by: Nicholas John Koch
    +
  • [fef97a9a72] Nicholas John Koch -- res_musiconhold: Added check for dot character in path of playlist entries to avoid warnings
  • +
ASTERISK-28735: Realtime MoH Unknown format '' -- defaulting to SLIN
Reported by: Ross Beer
    +
  • [aeff1f2c53] Sean Bright -- res_musiconhold: Avoid spurious warning when 'format' is the empty string
  • +
ASTERISK-28029: [patch] res_musiconhold : music on hold will not start if previous hold just reached end of file
Reported by: Frederic LE FOLL
    +
  • [35e02d6f17] Frederic LE FOLL -- res_musiconhold.c: Restart MOH if previous hold just reached end-of-file
  • +

Category: Resources/res_odbc

ASTERISK-29754: odbc: Fix for Doxygen
Reported by: Alexander TraudASTERISK-29311: res_odbc_transaction sets forcecommit default value based on isolation level instead of forcecommit
Reported by: Jaco Kroon
    +
  • [7ab53fce7a] Jaco Kroon -- res_odbc_transaction: correctly initialise forcecommit value from DSN.
  • +
ASTERISK-28166: app_voicemail: Asterisk unresponsive after changing voicemail password with ODBC
Reported by: Michael
    +
  • [719a4643ab] Sean Bright -- res_config_odbc: Avoid deadlock when max_connections = 1
  • +
ASTERISK-28277: database: Add some basic logging
Reported by: Joshua C. Colp
    +
  • [54a912b26d] Joshua Colp -- res_odbc: Add basic query logging.
  • +
ASTERISK-28065: res_odbc: missing SQL error diagnostic
Reported by: Alexei Gradinari
    +
  • [e6a69ea2cf] Alexei Gradinari -- res_odbc: fix missing SQL error diagnostic
  • +

Category: Resources/res_parking

ASTERISK-29753: parking: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen.
  • +
ASTERISK-29042: res_parking: Parker UUID is no longer copied
Reported by: Misha Vodsedalek
    +
  • [4f0766dcda] Joshua C. Colp -- parking: Copy parker UUID as well.
  • +
ASTERISK-28631: res_parking: Doesn't park when parkee and parker are the same
Reported by: Ross Beer
    +
  • [811ae88da4] Joshua Colp -- parking: Fall back to parker channel name even if it matches parkee.
  • +
ASTERISK-28616: parking: Deadlock when multi call parking
Reported by: Joshua C. Colp
    +
  • [807a70b7ae] Joshua Colp -- parking: Fix case where we can't get the parker.
  • +
  • [e924c5107c] Joshua Colp -- parking: Use channel snapshot instead of channel.
  • +
ASTERISK-28173: Deadlock in chan_sip handling subscribe request during res_parking reload
Reported by: Giuseppe Sucameli
    +
  • [e2bbab17b3] Giuseppe Sucameli -- Fix deadlock handling subscribe req during res_parking reload
  • +

Category: Resources/res_pjproject

ASTERISK-29582: res_pjproject: Can't map pjproject log messages to Asterisk TRACE
Reported by: George Joseph
    +
  • [b72425b1f0] George Joseph -- res_pjproject: Allow mapping to Asterisk TRACE level
  • +

Category: Resources/res_pjsip

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29618: ConfBridge errors on creation conference room
Reported by: Alexander Zharov
    +
  • [de19836c24] George Joseph -- bridge_softmix: Suppress error on topology change failure
  • +
ASTERISK-29354: res_pjsip: Allow partial reloading of transports
Reported by: Joshua C. Colp
    +
  • [f213833514] Joshua C. Colp -- res_pjsip: Add support for partial transport reload.
  • +
ASTERISK-29196: res_pjsip: Segmentation fault
Reported by: Mauri de Souza Meneguzzo (3CPlus)
    +
  • [acb7ce4fe7] Joshua C. Colp -- pjsip: Make modify_local_offer2 tolerate previous failed SDP.
  • +
ASTERISK-29261: res_pjsip: user=phone validation fail for isup numbers containing *#
Reported by: Mark Petersen
    +
  • [176274caa4] Mark Petersen -- res/res_pjsip.c: allow user=phone when number contain *#
  • +
ASTERISK-29165: res_pjsip: malformed header Accept-Encoding in OPTIONS response
Reported by: Alexander Greiner-Baer
    +
  • [c79bd583d9] Alexander Greiner-Baer -- res_pjsip: set Accept-Encoding to identity in OPTIONS response
  • +
ASTERISK-28933: res_pjsip.so fails to load when bundled pjproject is compiled without libssl
Reported by: Walter Doekes
    +
  • [5a6037778b] Alexander Traud -- res_pjsip/config_transport: Load and run without OpenSSL.
  • +
ASTERISK-29013: res_pjsip: Asterisk doesn't stop sending invites (with auth) on 407 replies
Reported by: Sebastian Damm
    +
  • [82325ba58b] Ben Ford -- AST-2020-002 - res_pjsip: Stop sending INVITEs after challenge limit.
  • +
ASTERISK-29124: res_pjsip: flow transport broken for outbound requests
Reported by: Nick French
    +
  • [f041763e3b] Nick French -- res_pjsip_session: Restore calls to ast_sip_message_apply_transport()
  • +
ASTERISK-28995: res_pjsip_registrar: Expires on statically configured contacts is not correct
Reported by: tootai
    +
  • [99eafe5771] Joshua C. Colp -- res_pjsip_registrar: Don't specify an expiration for static contacts.
  • +
ASTERISK-28965: res_pjsip: Apply outbound proxy to static contacts on AOR
Reported by: Joshua C. Colp
    +
  • [4f86118bd8] Joshua C. Colp -- res_pjsip: Apply AOR outbound proxy to static contacts.
  • +
ASTERISK-28936: res_pjsip: crash when dialing non-sip uri
Reported by: Walter Doekes
    +
  • [e74dde5100] Walter Doekes -- pjsip: Prevent invalid memory access when attempting to contact a non-sip URI
  • +
ASTERISK-28794: res_pjsip: Crash when escaping during URI printing
Reported by: nappsoft
    +
  • [9c2871edf4] Joshua C. Colp -- res_pjsip: Use correct pool for storing the contact_user value.
  • +
ASTERISK-26780: res_pjsip: PJSIP Registration Fails when transport=transport-udp6
Reported by: Peter Sokolov
    +
  • [c8dec423d2] Peter Sokolov -- pjsip_resolver.c: Ensure AAAA dns requests are made.
  • +
ASTERISK-28854: SIGSEGV when pjsip show history encounters IPV6 address
Reported by: Roger James
    +
  • [4a072c4890] Roger James -- res_pjsip_history.c: Fix to stop SIGSEGV when IPv6 addresses are encountered.
  • +
ASTERISK-28056: res_pjsip: Incorrect endpoint status after endpoint synchronization for a specific AOR
Reported by: Jason Hord
    +
  • [d845464c76] Jason Hord -- res_pjsip: Don't set endpoint to unavailable in all cases.
  • +
ASTERISK-28790: Crash during conference call using confbridge and video
Reported by: Pascal Cadotte Michaud
    +
  • [96e8d411e1] Joshua C. Colp -- res_rtp_asterisk: Ensure sufficient space for worst case NACK.
  • +
ASTERISK-28743: Asterisk is crashing if the 200 OK with SDP
Reported by: sungtae kim
    +
  • [8147f43756] Sungtae Kim -- res_pjsip_session: Fixed wrong session termination
  • +
ASTERISK-23407: Fix the FSF address in the headers of lots of pjproject files
Reported by: Jared Smith
    +
  • [0a7fe3097f] Jared Smith -- indications.conf.sample: Add indication tones for Indonesia
  • +
ASTERISK-28139: RTP Stream Incorrect Payload Type Causes Asterisk To Drop Calls
Reported by: Paul Brooks
    +
  • [313189aae2] Sean Bright -- chan_pjsip: Ignore RTP that we haven't negotiated
  • +
ASTERISK-28641: res_pjsip Segfaults when realtime configuration to an AOR points to a not existent AOR
Reported by: Ross Beer
    +
  • [b1be06df8d] Sean Bright -- res_pjsip_registrar.c: Prevent potential double free if AOR is not found
  • +
ASTERISK-28544: Wrong contact representation in ipv6 mode
Reported by: Jørgen H
    +
  • [377d7bdab6] Sean Bright -- res_pjsip_transport_websocket: Don't put brackets around local_name if IPv6
  • +
ASTERISK-28521: pjsip: Memory Leak
Reported by: Mark
    +
  • [cc83e76aa5] George Joseph -- pjproject_bundled: Revert pjproject 2.9 commits causing leaks
  • +
ASTERISK-28228: res_pjsip: pjsip show contacts prints double entries
Reported by: Ian Jones
    +
  • [86452c9fa4] Joshua Colp -- res_pjsip: Fix multiple of the same contact in "pjsip show contacts".
  • +
ASTERISK-28161: Removal of Previous Patch Causes PJSIP Timer Issues
Reported by: Ross Beer
    +
  • [3853fab3f5] Joshua Colp -- pjproject-bundled: Add upstream timer fixes
  • +
  • [7043ed6ac9] Sean Bright -- pjproject: Add timer patch from pjproject r5934
  • +
ASTERISK-28309: res_pjsip: Wrong Contact and Via fields with multiple UDP interfaces
Reported by: Nikolay shakin
    +
  • [101272d0dc] Sean Bright -- Revert "pjsip_message_filter: Only do interface lookup for wildcard addresses."
  • +
ASTERISK-28077: res_pjsip: improve realtime performance on CLI 'pjsip show contacts'
Reported by: Alexei Gradinari
    +
  • [8bb031abc7] Alexei Gradinari -- res_pjsip: improve realtime performance on CLI 'pjsip show contacts'
  • +
ASTERISK-27988: alembic: PJSIP "mwi_subscribe_replaces_unsolicited" field is integer not boolean
Reported by: Joshua C. Colp
    +
  • [d60411a2b4] Richard Mudgett -- res_pjsip: Fix mwi_subscribe_replaces_unsolicited type mismatch
  • +
ASTERISK-28022: res_pjsip realtime: uri column in ps_contacts table can be too short
Reported by: Florian Floimair
    +
  • [3bdbbb7637] Florian Floimair -- alembic: increase uri column size
  • +
ASTERISK-27978: res_pjsip: Change default transport keepalive to preserve behavior
Reported by: Joshua C. Colp
    +
  • [2c9757bc90] Joshua Colp -- res_pjsip: Update default keepalive interval to 90 seconds.
  • +

Category: Resources/res_pjsip/Bundling

ASTERISK-29654: pjproject includes trailing whitespace in sdp format attributes
Reported by: George Joseph
    +
  • [0947c30224] George Joseph -- pjproject: Add patch to fix trailing whitespace issue in rtpmap
  • +
ASTERISK-28059: PJSIP: Update bundled PJPROJECT to version 2.8
Reported by: Joshua C. Colp
    +
  • [58035702cb] Richard Mudgett -- pjproject: Update initial 2.8 patches to apply cleanly.
  • +
  • [ce9a980be6] Joshua Colp -- pjproject: Upgrade to 2.8.
  • +

Category: Resources/res_pjsip_acl

ASTERISK-28697: res_pjsip: Named ACL does not update on reload if changed
Reported by: Timothy Vanderaerden
    +
  • [d6712790cd] Joshua C. Colp -- pjsip: Update ACLs on named ACL changes.
  • +

Category: Resources/res_pjsip_authenticator_digest

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29013: res_pjsip: Asterisk doesn't stop sending invites (with auth) on 407 replies
Reported by: Sebastian Damm
    +
  • [82325ba58b] Ben Ford -- AST-2020-002 - res_pjsip: Stop sending INVITEs after challenge limit.
  • +

Category: Resources/res_pjsip_caller_id

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29703: res_pjsip_callerid: Fix OLI parsing
Reported by: N A
    +
  • [1cd2584b27] Naveen Albert -- res_pjsip_callerid: Fix OLI parsing
  • +

Category: Resources/res_pjsip_config_wizard

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29503: Updated identify/match syntax not supported by config wizard
Reported by: Sean Bright
    +
  • [146b59df3f] Sean Bright -- res_pjsip_config_wizard.c: Add port matching support.
  • +
ASTERISK-29097: res_pjsip_config_wizard: Crash when freeing string when failing to add extension
Reported by: Vieri
    +
  • [5a0b19a4f3] Sean Bright -- pbx.c: On error, ast_add_extension2_lockopt should always free 'data'
  • +
ASTERISK-27992: PJSIP: Adding `sends_registrations = yes` to pjsip_wizard.conf causes crash
Reported by: Jonathan Harris
    +
  • [82a43394ed] Sean Bright -- res_pjsip_config_wizard: Don't crash if misconfigured
  • +

Category: Resources/res_pjsip_diversion

ASTERISK-29191: tel: URI in Diversion header causes crash
Reported by: Mikhail Ivanov
    +
  • [a7aea71e60] Torrey Searle -- res/res_pjsip_diversion: prevent crash on tel: uri in History-Info
  • +
ASTERISK-29001: chan_pjsip does not process or forward 181 responses
Reported by: Torrey Searle
    +
  • [addd295cda] Torrey Searle -- res_pjsip_diversion: handle 181
  • +
ASTERISK-28312: res_pjsip_diversion: Corrupted SIP Diversion field after handling a 302 redirect
Reported by: Alex Odrov
    +
  • [106a8ff05c] Sean Bright -- res_pjsip_diversion: Use static pj_str_t for Diversion header names
  • +

Category: Resources/res_pjsip_endpoint_identifier_ip

ASTERISK-29503: Updated identify/match syntax not supported by config wizard
Reported by: Sean Bright
    +
  • [146b59df3f] Sean Bright -- res_pjsip_config_wizard.c: Add port matching support.
  • +
ASTERISK-25429: res_pjsip_endpoint_identifier_ip: Document support for hostnames
Reported by: Joshua C. Colp
    +
  • [29d867ed67] Sean Bright -- res_pjsip_endpoint_identifier_ip: Document support for hostnames
  • +
ASTERISK-27548: res_pjsip_endpoint_identifier_ip only matches against "generic string" headers
Reported by: George Joseph
    +
  • [e5ae04b48b] Richard Mudgett -- res_pjsip_endpoint_identifier_ip.c: Added regex support to match_header
  • +

Category: Resources/res_pjsip_logger

ASTERISK-28932: res_pjsip_logger writing too big packets
Reported by: nappsoft
    +
  • [e8c6e9ae5d] Pirmin Walthert -- res_pjsip_logger: use the correct pointer when logging tx_messages to pcap
  • +
ASTERISK-28921: Wrong return value check for fwrite when writing to pcap file
Reported by: nappsoft
    +
  • [c16937cdbe] Pirmin Walthert -- res_pjsip_logger.c: correct the return value checks when writing to pcap
  • +

Category: Resources/res_pjsip_messaging

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29663: messaging: AMI MessageSend does not support same parameters as dialplan application
Reported by: Brian J. Murrell
    +
  • [e98839b73c] Sean Bright -- message.c: Support 'To' header override with AMI's MessageSend.
  • +
ASTERISK-29404: Consolidate res_pjsip_messaging fixes for domain name
Reported by: George Joseph
    +
  • [8e2672d2a4] George Joseph -- res_pjsip_messaging: Refactor outgoing URI processing
  • +
ASTERISK-26082: res_pjsip_messaging: MessageSend Content-Type can't be changed
Reported by: Alex
    +
  • [03d24ca4c1] Sean Bright -- res_pjsip_messaging: Allow Content-Type to be overridden
  • +
ASTERISK-25421: PJSIP. MESSAGE_SEND_STATUS set to SUCCESS in spite of the error when sending
Reported by: Dmitriy Serov
    +
  • [b1ca2c5d71] Sean Bright -- res_pjsip_messaging: Ensure MESSAGE_SEND_STATUS is set properly
  • +

Category: Resources/res_pjsip_mwi

ASTERISK-28575: MWI Send Notify Crash on 16.6
Reported by: Joshua Elson
    +
  • [5dae803eea] Kevin Harwell -- res_pjsip_mwi: potential double unref, and potential unwanted double link
  • +
ASTERISK-28552: res_pjsip_mwi: Frack during unload on unsolicited_mwi container
Reported by: Kevin Harwell
    +
  • [12dbeb69b0] Kevin Harwell -- res_pjsip_mwi: use an ao2_global object for mwi containers
  • +
ASTERISK-27121: res_pjsip_mwi: Memory leak on reload
Reported by: Sergej Kasumovic
    +
  • [c93c579190] Kevin Harwell -- app_voicemail: Remove dependency on the stasis cache
  • +
  • [cdece3b637] George Joseph -- app_voicemail: Remove need to subscribe to stasis
  • +
  • [5ec6d2c33e] George Joseph -- stasis_cache: Stop caching stasis subscription change messages
  • +
  • [0dd8ab3532] George Joseph -- stasis_cache: Prune stasis_subscription_change messages
  • +
ASTERISK-28306: res_pjsip_mwi: MWI NOTIFY occasionally takes minutes to be sent
Reported by: Jared Hull
    +
  • [63d90c38eb] George Joseph -- app.c: Remove deletion of pool topic on mwi state delete
  • +

Category: Resources/res_pjsip_nat

ASTERISK-29235: res_pjsip_nat: Contact is rewritten on REGISTER responses with external_signaling_address
Reported by: Brian Paboojian
    +
  • [976b1a1d7a] Joshua C. Colp -- res_pjsip_nat: Don't rewrite Contact on REGISTER responses.
  • +
ASTERISK-28884: x-ast-orig-host not filtered out from request URI and To header
Reported by: nappsoft
    +
  • [1399f8b4fe] Pirmin Walthert -- res_pjsip_nat.c: remove x-ast-orig-host from request URI and To header
  • +
ASTERISK-28129: Incorrect Behavior for rewrite_contact when Re-Invite omits routset
Reported by: Torrey Searle
    +
  • [d0554783e2] Torrey Searle -- res/res_pjsip_nat: Fix logic for REINVITES
  • +

Category: Resources/res_pjsip_notify

ASTERISK-27775: res_pjsip_notify: Multiple Event headers can be present instead of just one
Reported by: AvayaXAsterisk
    +
  • [90af050fa4] Sean Bright -- res_pjsip_notify: Only allow a single Event header to be added to a NOTIFY
  • +
ASTERISK-28137: res_pjsip_notify: improve realtime performance on CLI completion on the endpoint
Reported by: Alexei Gradinari
    +
  • [e407b8af21] Alexei Gradinari -- res_pjsip_notify: improve realtime performance on CLI completion on the endpoint
  • +

Category: Resources/res_pjsip_outbound_authenticator_digest

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29397: pjsip: Asterisk isn't tolerant of RFC8760 UASs
Reported by: George Joseph
    +
  • [655ee680cd] George Joseph -- res_pjsip_outbound_authenticator_digest: Be tolerant of RFC8760 UASs
  • +

Category: Resources/res_pjsip_outbound_registration

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29315: res_pjsip: re-registration gets stuck if setting initial auth credentials fails
Reported by: Nick French
    +
  • [dedfb334bd] Nick French -- res_pjsip: dont return early from registration if init auth fails
  • +
ASTERISK-29231: pjsip: SIGSEGV in CLI if no trunk is registered
Reported by: Michael Maier
    +
  • [b3927ff8bc] George Joseph -- Revert "res_pjsip_outbound_registration.c: Use our own scheduler and other stuff"
  • +
ASTERISK-28746: res_pjsip_outbound_registration keeps retrying the first entry in a SRV record set
Reported by: George Joseph
    +
  • [78b01f41ae] George Joseph -- res_pjsip_outbound_registration: Fix SRV failover on timeout
  • +
ASTERISK-28624: res_pjsip_outbound_registration: add SRV failover
Reported by: Kevin Harwell
    +
  • [d5d41409e2] Kevin Harwell -- res_pjsip_outbound_registration: add support for SRV failover
  • +
ASTERISK-28521: pjsip: Memory Leak
Reported by: Mark
    +
  • [cc83e76aa5] George Joseph -- pjproject_bundled: Revert pjproject 2.9 commits causing leaks
  • +

Category: Resources/res_pjsip_path

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-28463: res_pjsip_path: Crash when invalid contact is configured
Reported by: Juan Martin
    +
  • [982a5025b3] Sean Bright -- res_pjsip_registrar: Validate Contact URI before adding to responses
  • +

Category: Resources/res_pjsip_publish_asterisk

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +

Category: Resources/res_pjsip_pubsub

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-28714: REGRESSION: Feature subscription_persistence_recreate (ASTERISK-27759) Causes Segfaults
Reported by: Ross Beer
    +
  • [a1f0c833ab] Joshua C. Colp -- res_pjsip_pubsub: Increment persistence data ref when recreating.
  • +
ASTERISK-27759: res_pjsip_pubsub: Subscription persistence does not preserve XML version number
Reported by: Bryan Nelson
    +
  • [4e7adbd8f4] Joshua C. Colp -- res_pjsip_pubsub: Add ability to persist generator state information.
  • +

Category: Resources/res_pjsip_refer

ASTERISK-29313: res_pjsip_refer: Segfault in progress notify
Reported by: George Joseph
    +
  • [15afabdf8e] George Joseph -- res_pjsip_refer: Refactor progress locking and serialization
  • +

Category: Resources/res_pjsip_registrar

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29235: res_pjsip_nat: Contact is rewritten on REGISTER responses with external_signaling_address
Reported by: Brian Paboojian
    +
  • [976b1a1d7a] Joshua C. Colp -- res_pjsip_nat: Don't rewrite Contact on REGISTER responses.
  • +
ASTERISK-28995: res_pjsip_registrar: Expires on statically configured contacts is not correct
Reported by: tootai
    +
  • [99eafe5771] Joshua C. Colp -- res_pjsip_registrar: Don't specify an expiration for static contacts.
  • +
ASTERISK-28402: res_pjsip_registrar: SEGV in registrar_find_contact
Reported by: Ross Beer
    +
  • [ef92c69fa8] George Joseph -- res_pjsip: Check return from pjsip_parse_uri calls
  • +
ASTERISK-28001: res_pjsip_registrar: Improve performance of inbound handling
Reported by: Joshua C. Colp
    +
  • [cbf082ed53] Joshua Colp -- res_pjsip_registrar: Improve performance on inbound handling.
  • +

Category: Resources/res_pjsip_sdp_rtp

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29479: [patch] Channels are not put on hold for Session Progress with inactive audio
Reported by: Bernd Zobl
    +
  • [6b041d1092] Bernd Zobl -- res_pjsip_sdp_rtp: Evaluate remotely held for Session Progress
  • +
ASTERISK-29105: chan_pjsip: 180 Ringing with SDP not changed into progress
Reported by: Sebastian Damm
    +
  • [3286c04856] Holger Hans Peter Freyther -- pjsip: Generate progress (once) when receiving a 180 with a SDP
  • +
ASTERISK-28452: pjsip: of SDP is not incremented though SDP may be changed on reinvite without SDP offer
Reported by: Michael Maier
    +
  • [1af2a84c8b] Joshua C. Colp -- res_pjsip_session: Always produce offer on re-INVITE without SDP.
  • +
ASTERISK-29051: res_pjsip_sdp_rtp: Does not set correct values on RTP instance when "auto" DTMF is used
Reported by: Sebastian Damm
    +
  • [4499fbc819] Holger Hans Peter Freyther -- res_pjsip_sdp_rtp: Fix accidentally native bridging calls
  • +
ASTERISK-28784: res_pjsip_sdp_rtp: Only do hold/unhold on first audio stream
Reported by: Joshua C. Colp
    +
  • [34750d2068] Joshua C. Colp -- res_pjsip_sdp_rtp: Only do hold/unhold on default audio stream.
  • +
ASTERISK-28774: chan_pjsip's rtptimeout is erroneously triggered during direct-media (native_rtp) bridge
Reported by: Michael Neuhauser
    +
  • [5562fb2ea0] Michael Neuhauser -- chan_psip, res_pjsip_sdp_rtp: ignore rtptimeout if direct-media is active
  • +
ASTERISK-28754: ASTERISK-28738 Causes Audio Issue After Hold
Reported by: Ross Beer
    +
  • [77c9ba8e63] Torrey Searle -- res/res_pjsip_sdp_rtp: Fix MOH transitions
  • +
ASTERISK-28738: Incorrect state machine used when MOH_PASSTHRU is used
Reported by: Torrey Searle
    +
  • [bf4340f0ec] Torrey Searle -- res_pjsip_sdp_rtp: implement hold state handling on moh_passthrough
  • +
ASTERISK-28659: res_pjsip_sdp_rtp: Bundle includes non-existent media stream if codecs create additional streams and offer does not have them
Reported by: nappsoft
    +
  • [a603d7d324] Joshua C. Colp -- res_pjsip_session: Set stream state on created streams for incoming SDP.
  • +
ASTERISK-28458: res_pjsip_sdp_rtp: Remove unused variable
Reported by: Michael Maier
    +
  • [93936e367d] Kevin Harwell -- res_pjsip_sdp_rtp: Remove unused variable
  • +
ASTERISK-28110: rtp: Incorrect Packetization
Reported by: Robert Cripps
    +
  • [da562eb82d] Robert Cripps -- bridge_native_rtp.c: Fail native bridge if no framing match.
  • +
ASTERISK-28007: rtcp-mux is put in SDP answer regardless of offer
Reported by: Torrey Searle
    +
  • [926d647def] Torrey Searle -- res/res_pjsip_sdp_rtp: put rtcp-mux in answer only if offered
  • +
ASTERISK-27398: No joint capabilities with video and audio-only streams
Reported by: Benjamin Keith Ford
    +
  • [c31a01bd75] Ben Ford -- res_pjsip/rtp: No joint capabilities between streams.
  • +

Category: Resources/res_pjsip_session

ASTERISK-29747: res_pjsip: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen.
  • +
ASTERISK-29215: res_pjsip_session: NULL active_media_state topology caused asterisk crash
Reported by: sungtae kim
    +
  • [c78d0ce429] George Joseph -- res_pjsip_session: Make reschedule_reinvite check for NULL topologies
  • +
  • [d8b7a6f599] Sungtae Kim -- res_pjsip_session: Fixed NULL active media topology handle
  • +
ASTERISK-29303: pjsip: Re-invite occurs when it shouldn't
Reported by: Benjamin Keith Ford
    +
  • [83b0f5963f] Ben Ford -- res_pjsip_session.c: Check topology on re-invite.
  • +
ASTERISK-29203: res_pjsip_t38: Crash when changing state
Reported by: Gregory Massel
    +
  • [fad0cf12e6] Kevin Harwell -- AST-2021-002: Remote crash possible when negotiating T.38
  • +
ASTERISK-29220: After T38 reinvite response of 488 a subsequent G711 reinvite is not processed correctly. Instead the previous T38 session media is used
Reported by: Robert Cripps
    +
  • [017e09b40a] Robert Cripps -- res/res_pjsip_session.c: Check that media type matches in
  • +
ASTERISK-29248: res_pjsip_session: res sometimes uninitialized reported by compiler Clang.
Reported by: Alexander Traud
    +
  • [3f119192bb] Alexander Traud -- res_pjsip_session: Avoid sometimes-uninitialized warning with Clang.
  • +
ASTERISK-29240: chan_pjsip: Incoming PJSIP calls set global SIPDOMAIN instead of a channel variable
Reported by: Ivan Poddubny
    +
  • [c3fad2fd01] Ivan Poddubnyi -- chan_pjsip: Assign SIPDOMAIN after creating a channel
  • +
ASTERISK-29109: res_pjsip_session: Asterisk 18 does not progress calls due to codec negotiation after upgrading from Asterisk 16
Reported by: Ross Beer
    +
  • [412b385de5] Joshua C. Colp -- res_pjsip: Adjust outgoing offer call pref.
  • +
ASTERISK-29014: res_pjsip_session: Re-INVITE collisions aren't handled correctly
Reported by: George Joseph
    +
  • [cc71be0078] George Joseph -- res_pjsip_session: Fix issue with COLP and 491
  • +
  • [d4f3b17dd3] George Joseph -- res_pjsip_session: Handle multi-stream re-invites better
  • +
ASTERISK-29033: res_pjsip_session: Aggressively terminates session on failed re-INVITE
Reported by: Joshua C. Colp
    +
  • [3c074038fe] Joshua C. Colp -- res_pjsip_session: Don't aggressively terminate on failed re-INVITE.
  • +
ASTERISK-28953: res_pjsip_session: Preserve stream label
Reported by: Joshua C. Colp
    +
  • [ee8ea9275f] Joshua C. Colp -- res_pjsip_session: Preserve label on incoming re-INVITE.
  • +
ASTERISK-28871: res_pjsip_session: Unnecessary re-Invite on call answer
Reported by: Alexei Gradinari
    +
  • [afa2c9a868] Joshua C. Colp -- bridge: Don't try to match audio formats.
  • +
ASTERISK-28783: res_pjsip_session: Allow default non-audio streams to have reflected state
Reported by: Joshua C. Colp
    +
  • [9620ecbf80] Joshua C. Colp -- res_pjsip_session: Don't restrict non-audio default streams to sendrecv.
  • +
ASTERISK-28730: res_pjsip_session: Fix out of order session refreshes
Reported by: Joshua C. Colp
    +
  • [ac155decae] Joshua C. Colp -- res_pjsip_session: Fix off-nominal session refreshes.
  • +
ASTERISK-28659: res_pjsip_sdp_rtp: Bundle includes non-existent media stream if codecs create additional streams and offer does not have them
Reported by: nappsoft
    +
  • [a603d7d324] Joshua C. Colp -- res_pjsip_session: Set stream state on created streams for incoming SDP.
  • +
ASTERISK-28445: res_pjsip_session: ast_json_vpack: Invalid UTF-8 string on hangup when TEST_FRAMEWORK enabled
Reported by: Bernhard Schmidt
    +
  • [6ee1f1f507] Sean Bright -- res_pjsip_session.c: Prevent use-after-free with TEST_FRAMEWORK enabled
  • +
ASTERISK-28086: chan_pjsip: Crash when initiating PlayDTMF over AMI
Reported by: Jeremiah Gadd
    +
  • [c03f50c1c8] laszlovl -- chan_pjsip: Prevent segfault when running PlayDTMF on hungup channel
  • +
ASTERISK-28157: Asterisk crashes when the res_pjsip_* modules unload
Reported by: sungtae kim
    +
  • [8644511cbf] Sungtae Kim -- res_pjsip: Patch for res_pjsip_* module load/reload crash
  • +
ASTERISK-28047: chan_pjsip: Declined video stream is added when no video codecs configured and session refresh with removed video stream occurs
Reported by: Will
    +
  • [32a7b9f4b3] Joshua Colp -- res_pjsip_session: Don't add declined stream if one does not exist.
  • +

Category: Resources/res_pjsip_t38

ASTERISK-29402: res_pjsip_t38: Socket is bound to IPv4/IPv6 but platform does not support it
Reported by: Matthew Kern
    +
  • [15e432220c] Matthew Kern -- res_pjsip_t38: bind UDPTL sessions like RTP
  • +
ASTERISK-29203: res_pjsip_t38: Crash when changing state
Reported by: Gregory Massel
    +
  • [fad0cf12e6] Kevin Harwell -- AST-2021-002: Remote crash possible when negotiating T.38
  • +
ASTERISK-28621: Enforce T.38 error correction mode at 200 ok received
Reported by: Salah Ahmed
    +
  • [330ffa2bce] Salah Ahmed -- res_pjsip_t38: T.38 error correction mode selection at 200 ok received
  • +
ASTERISK-27944: res_pjsip_t38: Crash receiving 1xx responses other than 100 before 200 for T.38 reINVITE
Reported by: Joshua Elson
    +
  • [40f1604e2f] Richard Mudgett -- res_pjsip_t38.c: Fix crash if already saw a final T.38 reINVITE response.
  • +

Category: Resources/res_pjsip_transport_websocket

ASTERISK-28020: res_pjsip_transport_websocket: Properly set 'received' for IPv6
Reported by: Sean Bright
    +
  • [39459b1ee4] Sean Bright -- res_pjsip_transport_websocket: Properly set src_name for IPv6
  • +

Category: Resources/res_realtime

ASTERISK-21794: CLI command 'realtime update2' syntax failure when using according to usage help
Reported by: Cedric BASSAGET
    +
  • [094e87b0dc] Sean Bright -- res_realtime: Fix 'realtime update2' argument handling
  • +

Category: Resources/res_rtp_asterisk

ASTERISK-29671: res_rtp_asterisk: memory leak
Reported by: Jean Aunis - Prescom
    +
  • [0ab4e7491d] Jean Aunis -- res_rtp_asterisk: fix memory leak
  • +
ASTERISK-29660: Build failure when disabling PJSIP support
Reported by: Guido Falsi
    +
  • [03377c35fc] Guido Falsi -- res_rtp_asterisk.c: Fix build failure when not building with pjproject.
  • +
ASTERISK-29616: res_rtp_asterisk: sqrt(.) requires the header math.h.
Reported by: Alexander Traud
    +
  • [82d6bd7ec9] Alexander Traud -- res_rtp_asterisk: sqrt(.) requires the header math.h.
  • +
ASTERISK-29507: STUN timeout is silently delaying calls
Reported by: Sébastien Duthil
    +
  • [4bd975f415] Sebastien Duthil -- stun: Emit warning message when STUN request times out
  • +
ASTERISK-29433: res_rtp_asterisk: Server reflexive candidates use incorrect raddr for RTCP
Reported by: Chris
    +
  • [3aed363716] Joshua C. Colp -- res_rtp_asterisk: Set correct raddr port on RTCP srflx candidates.
  • +
ASTERISK-29030: res_rtp_asterisk: Additional RTP-frame (with wrong SSRC) gets inserted when switching from progress to established
Reported by: Matthias Hensler
    +
  • [95414fc918] Sean Bright -- res_rtp_asterisk: More robust timestamp checking
  • +
ASTERISK-29364: res_rtp_asterisk: standard deviation miscalculation
Reported by: Kevin Harwell
    +
  • [17c86dcfaa] Kevin Harwell -- res_rtp_asterisk: Fix standard deviation calculation
  • +
ASTERISK-29373: res_rtp_asterisk: Flash events are duplicated
Reported by: N A
    +
  • [b0d828f14a] Joshua C. Colp -- res_rtp_asterisk: Only raise flash control frame on end.
  • +
ASTERISK-29352: res_rtp_asterisk: Fix frame delivery time when SSRC changes
Reported by: Joshua C. Colp
    +
  • [2e7fc84398] Joshua C. Colp -- res_rtp_asterisk: Force resync on SSRC change.
  • +
ASTERISK-29300: res_rtp_asterisk: When native local bridging the remote SSRC becomes permanent
Reported by: Sebastian Damm
    +
  • [90ef6a14a7] Torrey Searle -- res/res_rtp_asterisk: generate new SSRC on native bridge end
  • +
ASTERISK-29266: ICE Role conflict with an unauthorized session
Reported by: Salah Ahmed
    +
  • [df8d335ad1] Salah Ahmed -- res_rtp_asterisk: Check remote ICE reset and reset local ice attrb
  • +
ASTERISK-29205: res_rtp_asterisk: Asterisk crashes when making hold/unhold from webrtc client
Reported by: Edvin Vidmar
    +
  • [5a6f2f913b] Sean Bright -- res_rtp_asterisk.c: Fix signed mismatch that leads to overflow
  • +
ASTERISK-29089: RTP Ports not cleared after hangup
Reported by: Ross Beer
    +
  • [957aff751d] Joshua C. Colp -- res_pjsip_session: Fix session reference leak.
  • +
ASTERISK-28974: res_rtp_asterisk: T.140 messages have appended RTP string to each message block.
Reported by: Thomas Johnson
    +
  • [5ec7099312] Sean Bright -- bridge_channel: Ensure text messages are zero terminated
  • +
ASTERISK-28939: res_rtp_asterisk: Don't have send/receive buffers on non-WebRTC
Reported by: Joshua C. Colp
    +
  • [c84d962eae] Joshua C. Colp -- res_rtp_asterisk: Don't assume setting retrans props means to enable.
  • +
ASTERISK-28904: RTP ICE leaks the memory
Reported by: sungtae kim
    +
  • [c8c94b6cf1] sungtae kim -- res_rtp_asterisk.c: Fixed memory leak
  • +
ASTERISK-28852: Unprotected access to nochecksums variable, causes build failures
Reported by: Guido Falsi
    +
  • [e4366308e1] Guido Falsi -- res_rtp_asterisk: Protect access to nochecksums with #ifdef
  • +
ASTERISK-28827: res_rtp_asterisk: Loop when receive buffer is flushed by a received packet that is also in receive buffer with NACK
Reported by: nappsoft
    +
  • [d50fd0acc0] Pirmin Walthert -- res_rtp_asterisk: Resolve loop when receive buffer is flushed
  • +
ASTERISK-28826: res_rtp_asterisk: Duplicate seqnos being added to send buffer with NACK
Reported by: nappsoft
    +
  • [ca032d1e2e] Pirmin Walthert -- res_rtp_asterisk: Free payload when error on insertion to data buffer
  • +
ASTERISK-28812: First DTMF is not get
Reported by: Bernard Merindol
    +
  • [7db03e12a7] Bernard Merindol -- res_rtp_asterisk.c: Check for first DTMF having timestamp set to 0
  • +
ASTERISK-28809: [patch] res_rtp_asterisk: Avoid absolute value on unsigned subtraction.
Reported by: Alexander Traud
    +
  • [1ef1b1b0c2] Alexander Traud -- res_rtp_asterisk: Avoid absolute value on unsigned subtraction.
  • +
ASTERISK-28773: Incorrect Sender SSRC in RTCP when p2p rtp bridge is active
Reported by: Torrey Searle
    +
  • [a1dba820cf] Torrey Searle -- res_rtp_asterisk: Send correct sender SSRC when p2p bridge in use
  • +
ASTERISK-28769: DTLS Handshake Fails to Occur if ice_support is enabled but not used
Reported by: Torrey Searle
    +
  • [14ba1806f3] Torrey Searle -- res_pjsip_sdp_rtp: Don't wait for ICE if not negotiated
  • +
ASTERISK-28759: A non negotiated rtp frame causes call disconnection when there is a SSRC change
Reported by: Paulo Vicentini
    +
  • [ed2a7e3eaf] Paulo Vicentini -- chan_pjsip: Check audio frame when remote SSRC changes.
  • +
ASTERISK-28764: res_rtp_asterisk: Improve NACK support and seqno handling
Reported by: Joshua C. Colp
    +
  • [87fda066ea] Joshua C. Colp -- res_rtp_asterisk: Improve video performance in certain networks.
  • +
ASTERISK-28716: ICE: pjnath shouldn't wait for ICE to complete before allowing sending
Reported by: Benjamin Keith Ford
    +
  • [168637cc0c] Ben Ford -- RTP/ICE: Send on first valid pair.
  • +
ASTERISK-28742: res_rtp_asterisk: static for audio due to incomplete dtls/srtp setup
Reported by: Kevin Harwell
    +
  • [3865b3fd6a] Kevin Harwell -- res_rtp_asterisk: bad audio (static) due to incomplete dtls/srtp setup
  • +
ASTERISK-28576: res_rtp_asterisk: ICE Completion Crash when sent packet length doesn't match
Reported by: Joshua Elson
    +
  • [02129ad4d0] Joshua Colp -- res_rtp_asterisk: Always return provided DTLS packet length.
  • +
ASTERISK-28018: IP Fragmentation happening instead of DTLS fragmentation on handshake server hello certificate
Reported by: vijay kumar
    +
  • [a8e5cf557d] Joshua Colp -- res_rtp_asterisk: Add support for DTLS packet fragmentation.
  • +
ASTERISK-28421: Wrong type used for timestamp in res_rtp_asterisk
Reported by: Morten Tryfoss
    +
  • [3224ac07c9] Morten Tryfoss -- res_rtp_asterisk: timestamp should be unsigned instead of signed int
  • +
ASTERISK-28255: res_rtp_asterisk: REMB RTCP packet sending may be incorrect
Reported by: Joshua C. Colp
    +
  • [d1d0692858] Kevin Harwell -- bridge_softmix: use a float type to store the internal REMB bitrate
  • +
ASTERISK-28321: res_rtp_asterisk: Fixing possible divide by zero for rtcp stat calculation
Reported by: sungtae kim
    +
  • [8641fd9700] sungtae kim -- res/res_rtp_asterisk.c: Fixing possible divide by zero
  • +
ASTERISK-28303: res_rtp_asterisk: Interaction between smoother and DTMF can cause out of order timestamps
Reported by: Torrey Searle
    +
  • [360f543677] Torrey Searle -- res/res_rtp_asterisk: smoother can cause wrong timestamps if dtmf happen
  • +
ASTERISK-28284: switching between native_bridge and simple_bridge can cause one way audio
Reported by: Torrey Searle
    +
  • [8ea9608efb] Torrey Searle -- res/res_rtp_asterisk: clear smoother when local bridging
  • +
ASTERISK-28230: res_rtp_asterisk: abs-send-time extension added with Asterisk 15.5.0 breaks GXV3140 video telephony
Reported by: David Kuehling
    +
  • [18e206381a] Joshua Colp -- res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled.
  • +
ASTERISK-28162: [patch] need to reset DTMF last sequence number and timestamp on RTP renegotiation
Reported by: Alexei Gradinari
    +
  • [f662a26ea0] Alexei Gradinari -- RTP: reset DTMF last seqno/timestamp on RTP renegotiation
  • +
  • [3f53041267] Alexei Gradinari -- RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit
  • +
ASTERISK-28110: rtp: Incorrect Packetization
Reported by: Robert Cripps
    +
  • [da562eb82d] Robert Cripps -- bridge_native_rtp.c: Fail native bridge if no framing match.
  • +
ASTERISK-28002: When T.140 realtime text is negociated, a lot of debug traces are generated
Reported by: Emmanuel BUU
    +
  • [289016239d] Emmanuel BUU -- res/res_rtp_asterisk: remove debug traces generated by an empty frame
  • +
ASTERISK-27990: res_rtp_asterisk: Requires OpenSSL in Developer Mode.
Reported by: Alexander Traud
    +
  • [870fe7f60c] Alexander Traud -- res_rtp_asterisk: In Developer Mode, do not require OpenSSL.
  • +

Category: Resources/res_snmp

ASTERISK-29709: res_snmp: Not build on recent Debian distributions.
Reported by: Alexander Traud
    +
  • [95da40cd50] Alexander Traud -- res_snmp: As build tool, prefer pkg-config over net-snmp-config.
  • +
ASTERISK-29634: res_snmp: gcc 11 needs -fPIC to compile correctly
Reported by: George Joseph
    +
  • [2806a45034] George Joseph -- res_snmp: Add -fPIC to _ASTCFLAGS
  • +

Category: Resources/res_sorcery_memory_cache

ASTERISK-28942: res_sorcery_memory_cache: Individual object expiration behaves unexpectedly with full backend caching
Reported by: Joshua C. Colp
    +
  • [a143c3a7b7] Joshua C. Colp -- res_sorcery_memory_cache: Disallow per-object expire with full backend.
  • +

Category: Resources/res_speech

ASTERISK-29040: res_speech: Assertion on format
Reported by: Nickolay V. Shmyrev
    +
  • [0319e0b07f] Nickolay Shmyrev -- res_speech: Bump reference on format object
  • +

Category: Resources/res_srtp

ASTERISK-28903: res_srtp: Answered Crypto Suite might be wrong in SDP/SDES.
Reported by: Alexander Traud
    +
  • [4de0e50c32] Alexander Traud -- res_srtp: Set all possible flags while selecting the Crypto Suite.
  • +
ASTERISK-22920: Crash while Forwarding from TLS extension with CHANNEL args secure_bridge_media and secure_bridge_signaling
Reported by: Shlomi Gutman
    +
  • [29070b61f7] Alexander Traud -- core_local: Local calls are always secure.
  • +

Category: Resources/res_stasis

ASTERISK-29229: Stasis/messaging: text messages not dispatched to all subscribers when using generic subscription
Reported by: Jean Aunis - Prescom
    +
  • [c10557c401] Jean Aunis -- Stasis/messaging: tech subscriptions conflict with endpoint subscriptions.
  • +
ASTERISK-29081: res_stasis: Add compare function for bridges moh container
Reported by: Hajek Michal
    +
  • [2bce21da88] Michal Hajek -- res_stasis.c: Add compare function for bridges moh container
  • +
ASTERISK-28987: BridgeCreated ARI event shows wrong video_mode info
Reported by: sungtae kim
    +
  • [2e32b56bdb] sungtae kim -- stasis_bridge.c: Fixed wrong video_mode shown
  • +
ASTERISK-28423: ARI causes STASIS Deadlock
Reported by: Ross Beer
    +
  • [cce2b0da95] Kevin Harwell -- stasis/app: don't lock an app before a call to send
  • +
  • [990a91b44a] George Joseph -- stasis: Don't hold app_registry and session locks unnecessarily
  • +
ASTERISK-28633: stasis bridge topic leak
Reported by: Joeran Vinzens
    +
  • [1c9ddad4db] George Joseph -- stasis.c: Use correct topic name in stasis_topic_pool_delete_topic
  • +
ASTERISK-27756: bridge: Failure to impart a channel results in bad data causing crash
Reported by: Abhay Gupta
    +
  • [71040078a3] Abhay Gupta -- stasis: Only place stasis created and dialed channels into dial bridge.
  • +
ASTERISK-26718: ARI: Bridge destroying doesn't work as expected
Reported by: Marin Odrljin
    +
  • [3087c82eb6] Holger Hans Peter Freyther -- stasis: Call callbacks when imparting fails
  • +
ASTERISK-28333: StasisEnd event makes wrong timestamp value
Reported by: sungtae kim
    +
  • [629962d1f7] sungtae kim -- res/res_stasis: Fixed wrong StasisEnd timestamp
  • +
ASTERISK-26094: stasis: Playing MOH to bridge with ARI does not work
Reported by: Cameron
    +
  • [f3422312ea] Moritz Fain -- res_stasis: Fix stale data in ARI bridges
  • +

Category: Resources/res_stasis_playback

ASTERISK-28713: res_stasis_playback: Error building JSON
Reported by: Sébastien Duthil
    +
  • [31dc904380] Sean Bright -- res_stasis_playback: Prevent media_index from going out of bounds
  • +

Category: Resources/res_stasis_recording

ASTERISK-29750: stasis: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [6988386234] Alexander Traud -- stasis: Fix for Doxygen.
  • +

Category: Resources/res_stasis_snoop

ASTERISK-29750: stasis: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [6988386234] Alexander Traud -- stasis: Fix for Doxygen.
  • +

Category: Resources/res_statsd

ASTERISK-29513: statsd: Remove non-standard metric type Meter
Reported by: Rijnhard Hessel
    +
  • [71dd1d91ad] Rijnhard Hessel -- res_statsd: handle non-standard meter type safely
  • +
ASTERISK-24484: Update documentation for statsd module - usage requirements unclear
Reported by: Dan Jenkins
    +
  • [c376e9f8a8] Sean Bright -- res_statsd: Document that res_statsd does nothing on its own
  • +

Category: Resources/res_stir_shaken

ASTERISK-29776: stir/shaken: Requires GNU designator
Reported by: Alexander Traud
    +
  • [b290bb1251] Alexander Traud -- stir/shaken: Avoid a compiler extension of GCC.
  • +
ASTERISK-29175: res_pjsip_stir_shaken: Fix module description
Reported by: Stanislav Abramenkov
    +
  • [6a85dc860f] Stanislav -- res_pjsip_stir_shaken: Fix module description
  • +

Category: Resources/res_stun_monitor

ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request
Reported by: Dennis Haney
    +
  • [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN request timeout
  • +

Category: Resources/res_xmpp

ASTERISK-29749: res_xmpp: Fix for Doxygen
Reported by: Alexander Traud
    +
  • [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen.
  • +

Category: Tests/General

ASTERISK-29741: tests: Fix for Doxygen
Reported by: Alexander TraudASTERISK-27176: test_abstract_jb: frames leak
Reported by: Corey Farrell
    +
  • [ee62a07914] Sean Bright -- test_abstract_jb.c: Fix put and put_out_of_order memory leaks.
  • +
ASTERISK-28808: [patch] test_stasis: Avoid always true warning with clang.
Reported by: Alexander Traud
    +
  • [bb28ed0d1b] Alexander Traud -- test_stasis: Avoid always true warning with clang.
  • +
ASTERISK-28251: CI: Fix CI so it reverifies commit message changes
Reported by: George Joseph
    +
  • [c2ea9c90a2] Joshua Colp -- ci: Rerun unit tests when non-code changes occur.
  • +
ASTERISK-28070: testsuite: Sniffer assumes pjmedia will use ports below 10000
Reported by: Joshua C. Colp
    +
  • [8bb264841a] Joshua Colp -- res_rtp_asterisk: Raise event when RTP port is allocated
  • +

Category: Tests/NewFeature

ASTERISK-17695: 1.8.3.2 extenpatternmatchnew=yes cannot find extensions with '-' in them
Reported by: test011
    +
  • [7e5709d726] Sean Bright -- pbx.c: Ignore dashes in extensions when using extenpatternmatchnew
  • +

Category: Tests/testsuite

ASTERISK-27717: [patch] BuildSystem: In NetBSD, the Python Programming Language is python-2.7.
Reported by: Alexander Traud
    +
  • [610e058189] Alexander Traud -- BuildSystem: Search for Python/C API when possibly needed only.
  • +
ASTERISK-28789: test_utils: incorrectly printing error 'declined to load'
Reported by: Alexander Traud
    +
  • [fc07eeaba1] Alexander Traud -- test_utils: Avoid incorrect error message on load.
  • +

Category: Third-Party/pjproject

ASTERISK-28182: chan_pjsip: When connected_line_method is set to invite, asterisk is not trying UPDATE
Reported by: nappsoft
    +
  • [ecb9ed0958] Pirmin Walthert -- pjproject_bundled: check whether UPDATE is supported on outgoing calls
  • +
ASTERISK-27966: pjsip: Race condition in 183 re transmission can result in a deadlock
Reported by: Torrey Searle
    +
  • [3424795f3a] Torrey Searle -- thirdparty/pjproject: fix deadlock in response retransmissions
  • +

Category: Utilities/General

ASTERISK-28685: check_expr2: linking (when hardening) and cross-compiling troubles
Reported by: Sebastian Kemper
    +
  • [b7fbb9c41f] Sebastian Kemper -- check_expr2: fix cross-compile/hardening issues
  • +

Category: Utilities/aelparse

ASTERISK-29711: aelparse: GCC 11.2 found two maybe uninitialized
Reported by: Alexander Traud
    +
  • [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues.
  • +
ASTERISK-29540: aelparse: include of context with timings fails
Reported by: Alexander Traud
    +
  • [0b1a629ecd] Alexander Traud -- aelparse: Accept an included context with timings.
  • +
ASTERISK-18593: AEL for loops use Macro app and pipe delimiter
Reported by: Luke-Jr
    +
  • [f7f1a2cbb7] Sean Bright -- res_ael: Use Gosub in for loop expressions
  • +

Category: Utilities/conf2ael

ASTERISK-18593: AEL for loops use Macro app and pipe delimiter
Reported by: Luke-Jr
    +
  • [f7f1a2cbb7] Sean Bright -- res_ael: Use Gosub in for loop expressions
  • +

Category: Utilities/muted

ASTERISK-29145: GCC Warnings with OPTIMIZE=-Os make
Reported by: Alexander Traud
    +
  • [2dacadd9df] Alexander Traud -- Compiler fixes for GCC with -Os
  • +

Category: pjproject/pjsip

ASTERISK-24601: [patch]Missing RFC4235 tags and attributes in PJSIP NOTIFY event: dialog XML body
Reported by: Marco Paland
    +
  • [83c2a16b2e] Joseph Nadiv -- res_pjsip_dialog_info_body_generator: Add LOCAL/REMOTE tags in dialog-info+xml
  • +
ASTERISK-29377: cpool_release_pool "double free or corruption (out)"
Reported by: Robert Sutton
    +
  • [6d5cac1d10] Joshua C. Colp -- pjsip: Add patch for resolving STUN packet lifetime issues.
  • +
ASTERISK-28452: pjsip: of SDP is not incremented though SDP may be changed on reinvite without SDP offer
Reported by: Michael Maier
    +
  • [1af2a84c8b] Joshua C. Colp -- res_pjsip_session: Always produce offer on re-INVITE without SDP.
  • +
ASTERISK-29191: tel: URI in Diversion header causes crash
Reported by: Mikhail Ivanov
    +
  • [a7aea71e60] Torrey Searle -- res/res_pjsip_diversion: prevent crash on tel: uri in History-Info
  • +
ASTERISK-29024: pjsip: Route Header in Cancel request incorrectly set
Reported by: Flole Systems
    +
  • [7a6cfde4db] Pirmin Walthert -- res_pjsip_nat.c: Create deep copies of strings when appropriate
  • +
ASTERISK-28973: Malformed IP address in SDP of 2nd SIP timer triggered INVITE when NAT is active (UDP transport with external_media_address)
Reported by: Michael Neuhauser
    +
  • [6482ab5bea] Michael Neuhauser -- pjproject: clone sdp to protect against (nat) modifications
  • +
ASTERISK-28929: pjproject_bundled: Honor --without-pjproject.
Reported by: Alexander Traud
    +
  • [0a4dffe6f8] Alexander Traud -- pjproject_bundled: Honor --without-pjproject.
  • +
ASTERISK-28794: res_pjsip: Crash when escaping during URI printing
Reported by: nappsoft
    +
  • [9c2871edf4] Joshua C. Colp -- res_pjsip: Use correct pool for storing the contact_user value.
  • +
ASTERISK-28859: pjsip: Increase maximum candidate count
Reported by: Joshua C. Colp
    +
  • [3078a00a6d] Joshua C. Colp -- pjsip: Increase maximum ICE candidate count.
  • +
ASTERISK-28811: Crash occurs when fax session switches from T.38 to audio
Reported by: Alexey Vasilyev
    +
  • [e56f4de7e6] Joshua C. Colp -- fax: Fix crashes in PJSIP re-negotiation scenarios.
  • +
ASTERISK-28837: pjproject_bundled: Honor --without-pjproject.
Reported by: Alexander Traud
    +
  • [966acc6251] Alexander Traud -- pjproject_bundled: Honor --without-pjproject.
  • +
ASTERISK-28758: pjsip startup errors when using "with-ssl" configure option
Reported by: Patrick Wakano
    +
  • [3431949a52] Alexander Traud -- pjproject_bundled: Repair ./configure --with-ssl without ARG.
  • +
ASTERISK-26955: pjsip: SIP Packets with Via "received=" Containing IPv6 Address Delimited by "[]" Rejected
Reported by: Peter Sokolov
    +
  • [9d9bde76a9] Sean Bright -- pjproject_bundled: Allow brackets in via parameters
  • +
ASTERISK-28574: pjproject fails to build on 16.6.0, works on 16.5
Reported by: Niklas Larsson
    +
  • [5d9f9f4871] George Joseph -- pjproject_bundled: Replace earlier reverts with official fixes.
  • +
ASTERISK-28509: PJSIP cnonce generated on Linux contains 36 characters, NEC only supports up to 32 characters
Reported by: Dan Cropp
    +
  • [0844d6b127] Dan Cropp -- pjproject: Configurable setting for cnonce to include hyphens or not
  • +
ASTERISK-28049: res_pjproject build failure
Reported by: Jaco Kroon
    +
  • [65e0eb8fc6] Sean Bright -- res_pjproject: Fix sockaddr conversion routines for non-bundled PJSIP
  • +
ASTERISK-27997: pjproject_bundled: Fix for Solaris builds. Do not undef s_addr.
Reported by: Alexander Traud
    +
  • [603d1e8d4b] Alexander Traud -- pjproject_bundled: Fix for Solaris builds. Do not undef s_addr.
  • +

Improvement

Category: Addons/General

ASTERISK-29714: Spelling errors
Reported by: Josh Soref

Category: Addons/chan_mobile

ASTERISK-28832: chan_mobile creates PCMA streams that make some VoIP clients crash or not render received audio
Reported by: Peter Turczak
    +
  • [3303defd3f] Peter Turczak -- chan_mobile: Add smoother to make SIP/RTP endpoints happy.
  • +

Category: Applications/General

ASTERISK-29637: Add support for future dates in Say.c
Reported by: Shloime Rosenblum
    +
  • [29c44caecb] Shloime Rosenblum -- main/say.c: Support future dates with Q and q format params
  • +

Category: Applications/NewFeature

ASTERISK-28484: Add AudioSocket support
Reported by: Seán C. McCord
    +
  • [163efbd724] Seán C McCord -- feat: AudioSocket channel, application, and ARI support.
  • +

Category: Applications/app_confbridge

ASTERISK-28658: app_confbridge: Add support for setting maximum sample rate
Reported by: Joshua C. Colp
    +
  • [89b7144fbd] Joshua C. Colp -- confbridge: Add support for specifying maximum sample rate.
  • +
ASTERISK-28401: app_confbridge: Add *_all remb behavior variants
Reported by: Joshua C. Colp
    +
  • [80dba268ea] Joshua Colp -- app_confbridge: Add "all" variants of REMB behavior.
  • +

Category: Applications/app_dial

ASTERISK-28363: Millisecond-resolution call stats including PDD in channel variables
Reported by: Antoni Goldstein
    +
  • [8e21c25ce5] Antoni Goldstein -- app_dial.c: RINGTIME, PROGRESSTIME and ms resolution dial timings
  • +

Category: Applications/app_mixmonitor

ASTERISK-29244: Add MixMonitorStart / Stop / Mute AMI events
Reported by: Sébastien Duthil
    +
  • [092628c982] Sebastien Duthil -- app_mixmonitor: Add AMI events MixMonitorStart, -Stop and -Mute.
  • +
ASTERISK-24798: Documentation - Clarify That Format Is Set By File Name Extension In MixMonitor
Reported by: xrobau
    +
  • [ddfb60ac2c] Sean Bright -- app_mixmonitor: Set MIXMONITOR_FILENAME to correct value when wav49 is used
  • +

Category: Applications/app_morsecode

ASTERISK-29541: app_morsecode: Add American Morse code
Reported by: N A
    +
  • [9cac1c16da] Naveen Albert -- app_morsecode: Add American Morse code
  • +

Category: Applications/app_originate

ASTERISK-29543: app_originate: Allow specifying codec(s) to use
Reported by: N A
    +
  • [cb1dfecc11] Naveen Albert -- app_originate: Add ability to set codecs
  • +
ASTERISK-29450: Allow setting channel variables using Originate application
Reported by: N A
    +
  • [a611a0cd42] Naveen Albert -- app_originate: Allow setting Caller ID and variables
  • +

Category: Applications/app_page

ASTERISK-27946: dial (API): Storage of dialed target uses AST_MAX_EXTENSION when it shouldn't
Reported by: Joshua Elson
    +
  • [dbddb6725d] sungtae kim -- dial.c: Removed dial string 80 character limitation
  • +

Category: Applications/app_playback

ASTERISK-29662: Add mix option to Playback application for say and filename
Reported by: Shloime Rosenblum
    +
  • [63c8d12e95] Shloime Rosenblum -- apps/app_playback.c: Add 'mix' option to app_playback
  • +

Category: Applications/app_queue

ASTERISK-29528: Add support for multiple files for agent announcements
Reported by: N A
    +
  • [940f6c4a03] Naveen Albert -- app_queue: Allow streaming multiple announcement files
  • +
ASTERISK-27483: Allow wrapuptime to be set for each queue member
Reported by: Rodrigo Ramirez Norambuena
    +
  • [ce0523a57e] Rodrigo Ramírez Norambuena -- app_queue: Enable set the wrapuptime from AddQueueMember application
  • +
ASTERISK-28055: app_queue: Per-member wrapup time missing from AddQueueMember application
Reported by: Niksa Baldun
    +
  • [ce0523a57e] Rodrigo Ramírez Norambuena -- app_queue: Enable set the wrapuptime from AddQueueMember application
  • +

Category: Applications/app_stack

ASTERISK-29626: app_stack: Include calling location if attempting to branch to nonexistent location
Reported by: N A
    +
  • [c736cef310] Naveen Albert -- app_stack: Include current location if branch fails
  • +

Category: Applications/app_transfer

ASTERISK-29252: TRANSFERSTATUSPROTOCOL variable to report Transfer (REFER) failure SIP code
Reported by: Dan Cropp
    +
  • [088816284a] Dan Cropp -- chan_pjsip, app_transfer: Add TRANSFERSTATUSPROTOCOL variable
  • +

Category: Applications/app_voicemail

ASTERISK-29715: app_voicemail: Refactor email generation functions
Reported by: N A
    +
  • [70cdb0f9a8] Naveen Albert -- app_voicemail: Refactor email generation functions
  • +
ASTERISK-29632: Add option to Application_VoiceMail to suppress instructions only when a custom greeting is present
Reported by: Charlie Smurthwaite
    +
  • [347e9a7e4d] Sean Bright -- app_voicemail.c: Ability to silence instructions if greeting is present.
  • +
ASTERISK-29349: Silent voicemail option is not completely silent
Reported by: N A
    +
  • [bfc25e5de2] Naveen Albert -- app_voicemail: Configurable voicemail beep
  • +
ASTERISK-28567: Problem with ASTERISK-20207: Asterisk should clear out any .lock files in the voice mail directory on startup.
Reported by: Michael
    +
  • [7362647e2f] Sean Bright -- Revert "app_voicemail: Cleanup stale lock files on module load"
  • +
ASTERISK-28443: app_voicemail: remove dependency on stasis cache
Reported by: Kevin Harwell
    +
  • [c93c579190] Kevin Harwell -- app_voicemail: Remove dependency on the stasis cache
  • +
ASTERISK-20207: Asterisk should clear out any .lock files in the voice mail directory on startup.
Reported by: Steven Wheeler
    +
  • [63f86cac09] Sean Bright -- app_voicemail: Cleanup stale lock files on module load
  • +

Category: Applications/app_voicemail/NewFeature

ASTERISK-29118: VoiceMail() should have an option to play greetings as Early Media
Reported by: Juan Carlos Castro y Castro
    +
  • [fd57fae048] Joshua C. Colp -- voicemail: add option 'e' to play greetings as early media
  • +

Category: Applications/app_voicemail/ODBC

ASTERISK-22192: [patch] Allow voicemail forwards with ODBC backend when format differs from attachfmt column
Reported by: cmaj
    +
  • [2d67dbfef5] cmaj -- app_voicemail.c: Support multiple file formats for forwarded messages.
  • +

Category: Bridges/bridge_builtin_features

ASTERISK-28279: Added creation timestamp for bridge
Reported by: sungtae kim
    +
  • [3638c433ac] sungtae kim -- bridging: Add creation timestamps
  • +

Category: Bridges/bridge_native_rtp

ASTERISK-28733: stream: Add support for adding/removing streams during SFU/calls
Reported by: Joshua C. Colp
    +
  • [5a5be92b79] Joshua C. Colp -- bridging: Add better support for adding/removing streams.
  • +

Category: Bridges/bridge_simple

ASTERISK-28733: stream: Add support for adding/removing streams during SFU/calls
Reported by: Joshua C. Colp
    +
  • [5a5be92b79] Joshua C. Colp -- bridging: Add better support for adding/removing streams.
  • +

Category: Bridges/bridge_softmix

ASTERISK-28733: stream: Add support for adding/removing streams during SFU/calls
Reported by: Joshua C. Colp
    +
  • [5a5be92b79] Joshua C. Colp -- bridging: Add better support for adding/removing streams.
  • +
ASTERISK-28658: app_confbridge: Add support for setting maximum sample rate
Reported by: Joshua C. Colp
    +
  • [89b7144fbd] Joshua C. Colp -- confbridge: Add support for specifying maximum sample rate.
  • +
ASTERISK-28401: app_confbridge: Add *_all remb behavior variants
Reported by: Joshua C. Colp
    +
  • [80dba268ea] Joshua Colp -- app_confbridge: Add "all" variants of REMB behavior.
  • +
ASTERISK-28196: bridge_softmix: Does not support WebRTC source with multi video tracks.
Reported by: Xiemin Chen
    +
  • [a526676836] Xiemin Chen -- bridge_softmix: Use MSID:LABEL metadata as the cloned stream's appendix
  • +

Category: Channels/General

ASTERISK-29380: Add Flash AMI event to handle flash events
Reported by: N A
    +
  • [0ad3504ce0] Naveen Albert -- AMI: Add AMI event to expose hook flash events
  • +

Category: Channels/NewFeature

ASTERISK-29380: Add Flash AMI event to handle flash events
Reported by: N A
    +
  • [0ad3504ce0] Naveen Albert -- AMI: Add AMI event to expose hook flash events
  • +
ASTERISK-28484: Add AudioSocket support
Reported by: Seán C. McCord
    +
  • [163efbd724] Seán C McCord -- feat: AudioSocket channel, application, and ARI support.
  • +

Category: Channels/chan_dahdi

ASTERISK-28317: Add logical group at DAHDIChannel event and create "dahdi_group" at CHANNEL function
Reported by: Cirillo Ferreira
    +
  • [0d6d51b175] cirillor -- chan_dahdi: Add logical group at DAHDIChannel event and CHANNEL function
  • +

Category: Channels/chan_iax2

ASTERISK-29707: chan_iax2: Allow both key and secret to be specified at dial time
Reported by: N A
    +
  • [bea08a563b] Naveen Albert -- chan_iax2: Allow both secret and outkey at dial time
  • +
ASTERISK-29605: chan_iax2: Add ANI2
Reported by: N A
    +
  • [5a685249ce] Naveen Albert -- chan_iax2: Add ANI2/OLI information element
  • +

Category: Channels/chan_pjsip

ASTERISK-29472: res_pjsip: OLI/ANI2 support missing
Reported by: N A
    +
  • [1a23c9c047] Naveen Albert -- res_pjsip_caller_id: Add ANI2/OLI parsing
  • +
ASTERISK-29459: Missing configuration from PJSIP to SIP conversion script
Reported by: N A
    +
  • [6873c5f3e4] Naveen Albert -- sip_to_pjsip: Fix missing cases
  • +
ASTERISK-29252: TRANSFERSTATUSPROTOCOL variable to report Transfer (REFER) failure SIP code
Reported by: Dan Cropp
    +
  • [088816284a] Dan Cropp -- chan_pjsip, app_transfer: Add TRANSFERSTATUSPROTOCOL variable
  • +
ASTERISK-28549: Two repeated 183
Reported by: Gant Liu
    +
  • [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control frames twice on outgoing channels
  • +
ASTERISK-28638: Simplify dialplan for Dial, Page, and ChanIsAvail
Reported by: cmaj
    +
  • [fe3cce816c] Richard Mudgett -- app_chanisavail.c: Simplify dialplan using ChanIsAvail.
  • +
  • [abcb4ab321] Richard Mudgett -- app_dial.c: Simplify dialplan using Dial.
  • +
  • [d86a6ac5ce] Richard Mudgett -- app_page.c: Simplify dialplan using Page.
  • +
ASTERISK-28292: Changed to show all channel stats including wrong media
Reported by: sungtae kim
    +
  • [fb651756c7] sungtae kim -- chan_pjsip: Changed to continued after invalid media for pjsip show channelstats
  • +
ASTERISK-28144: [patch] New function PJSIP_PARSE_URI to parse an URI and return a specified part of the URI
Reported by: Alexei Gradinari
    +
  • [fa048183aa] Alexei Gradinari -- pjsip: New function PJSIP_PARSE_URI to parse URI and return part of URI
  • +

Category: Contrib/General

ASTERISK-29216: contrib: systemd asterisk service for centos8 or other newer linux versions
Reported by: Mark Petersen
    +
  • [cba8426b4c] Mark Petersen -- contrib/systemd: Added note on common issues with systemd and asterisk
  • +
ASTERISK-28726: install_prereq script uses the interactive mode when installing aptitude
Reported by: Sylvain Afchain
    +
  • [0c02d0a450] Sylvain Afchain -- install_prereq: Install aptitude non-interactively
  • +
ASTERISK-28136: Allow the sip_to_pjsip script to be used in a pipe
Reported by: Pascal Cadotte Michaud
    +
  • [ebff81e3a0] Pascal Cadotte Michaud -- contrib/sip_to_pjsip: add a --quiet option to avoid prints
  • +

Category: Core/Bridging

ASTERISK-29612: bridge_basic: Don't throw warning if attended transfer is cancelled
Reported by: N A
    +
  • [e660a2c03b] Naveen Albert -- bridge_basic: Change warning to verbose if transfer cancelled
  • +

Category: Core/BuildSystem

ASTERISK-28111: build: CHANGES/UPGRADE are irritating to work with.
Reported by: Corey Farrell
    +
  • [a4ab7f5f80] Ben Ford -- build: Revise CHANGES and UPGRADE.txt handling.
  • +

Category: Core/CodecInterface

ASTERISK-28512: Add pass-through support for H.265 (HEVC) codec
Reported by: Florian Floimair
    +
  • [c18983207d] Florian Floimair -- core: Add H.265/HEVC passthrough support
  • +

Category: Core/DNS

ASTERISK-28853: Missing include on FreeBSD
Reported by: Guido Falsi
    +
  • [97494d8984] Guido Falsi -- core/dns: Add system include required on FreeBSD
  • +

Category: Core/Dial

ASTERISK-27946: dial (API): Storage of dialed target uses AST_MAX_EXTENSION when it shouldn't
Reported by: Joshua Elson
    +
  • [dbddb6725d] sungtae kim -- dial.c: Removed dial string 80 character limitation
  • +

Category: Core/General

ASTERISK-29544: Media Cache - Delayed remote sound file retrieve delays all playbacks
Reported by: Andre Barbosa
    +
  • [eb486db3af] Andre Barbosa -- media_cache: Don't lock when curl the remote file
  • +
ASTERISK-29339: loader: Let's output warnings for deprecated modules!
Reported by: Joshua C. Colp
    +
  • [a9a9864478] Joshua C. Colp -- loader: Output warnings for deprecated modules.
  • +
ASTERISK-29337: menuselect: Add ability to set deprecated in and removed in versions for modules
Reported by: Joshua C. Colp
    +
  • [6aac148d59] Joshua C. Colp -- menuselect: Add ability to set deprecated and removed versions.
  • +
  • [60fb559ccc] Joshua C. Colp -- xml: Allow deprecated_in and removed_in for MODULEINFO.
  • +
ASTERISK-29335: xml: Embed module information into core XML documentation.
Reported by: Joshua C. Colp
    +
  • [60800b038a] Joshua C. Colp -- xml: Embed module information into core XML documentation.
  • +
ASTERISK-29326: asterisk: Update copyright/company
Reported by: Joshua C. Colp
    +
  • [682f7d9437] Joshua C. Colp -- asterisk: Update copyright.
  • +

Category: Core/HTTP

ASTERISK-28750: TLS/SSL Key too small error
Reported by: Martin Zeh
    +
  • [7f2d56fc8c] Sean Bright -- tcptls.c: Log more informative OpenSSL errors
  • +
ASTERISK-28710: Should be able to disable the /httpstatus URI in the built-in HTTP server
Reported by: Sean Bright
    +
  • [0dce6f746b] Sean Bright -- http: Add ability to disable /httpstatus URI
  • +

Category: Core/Logging

ASTERISK-29529: Add custom logging level
Reported by: N A
    +
  • [a65bb134f5] Naveen Albert -- logger: Add custom logging capabilities
  • +
ASTERISK-29054: Logger: Add debug logging categories
Reported by: Kevin Harwell
    +
  • [6255e7976c] Kevin Harwell -- Logging: Add debug logging categories
  • +

Category: Core/ManagerInterface

ASTERISK-28945: AMI SendText - add Content-Type parameter
Reported by: Kevin Harwell
    +
  • [cfed0ea033] Kevin Harwell -- manager - Add Content-Type parameter to the SendText action
  • +

Category: Core/RTP

ASTERISK-29727: Add type for JSON stasis message RTCP Report Received/Sent
Reported by: Boris P. Korzun
    +
  • [70b14f3eda] Boris P. Korzun -- rtp_engine: Add type field for JSON RTCP Report stasis messages
  • +

Category: Core/Sorcery

ASTERISK-29321: sorcery: Add support for more intelligent reloading.
Reported by: Joshua C. Colp
    +
  • [a9acbd19f3] Joshua C. Colp -- sorcery: Add support for more intelligent reloading.
  • +

Category: Core/Stasis

ASTERISK-28442: stasis_state: Create a stasis module to cache last known state
Reported by: Kevin Harwell
    +
  • [9637e1dfdc] Kevin Harwell -- MWI: Update modules that subscribe to MWI to use new API calls
  • +
  • [b31ac83900] Kevin Harwell -- mwi: Update the MWI core to use stasis_state API
  • +
  • [83c6ebbae8] Kevin Harwell -- stasis_state: Make unsubscribes NULL tolerant
  • +
  • [363bafc29e] Kevin Harwell -- stasis_state: Add new stasis_state module
  • +

Category: Core/Streams

ASTERISK-28733: stream: Add support for adding/removing streams during SFU/calls
Reported by: Joshua C. Colp
    +
  • [5a5be92b79] Joshua C. Colp -- bridging: Add better support for adding/removing streams.
  • +

Category: Documentation

ASTERISK-29777: documentation: Standardize example syntax
Reported by: N A
    +
  • [bcb7aee723] Naveen Albert -- documentation: Standardize examples
  • +
ASTERISK-29336: documentation: Fix inconsistent support levels
Reported by: Joshua C. Colp
    +
  • [be3e469f98] Joshua C. Colp -- documentation: Fix non-matching module support levels.
  • +
ASTERISK-29335: xml: Embed module information into core XML documentation.
Reported by: Joshua C. Colp
    +
  • [60800b038a] Joshua C. Colp -- xml: Embed module information into core XML documentation.
  • +
ASTERISK-24798: Documentation - Clarify That Format Is Set By File Name Extension In MixMonitor
Reported by: xrobau
    +
  • [ddfb60ac2c] Sean Bright -- app_mixmonitor: Set MIXMONITOR_FILENAME to correct value when wav49 is used
  • +
ASTERISK-28673: GET FULL VARIABLE documentation clarification
Reported by: Jonathan Harris
    +
  • [7d94bdde9d] Sean Bright -- res_agi: Improve GET FULL VARIABLE documentation
  • +
ASTERISK-28586: Typo in README-SERIOUSLY.bestpractices.md
Reported by: Sam Banks
    +
  • [0dc7e29dd8] Sean Bright -- README-SERIOUSLY.bestpractices.md: Speling correetions.
  • +
ASTERISK-27993: pjsip_wizard example gives wrong info about unsupported SRV records
Reported by: Jonathan Harris
    +
  • [68a3d39a99] Richard Mudgett -- pjsip_wizard.conf.sample: Update remote_hosts description.
  • +

Category: Formats/format_g726

ASTERISK-28246: Support skipping on the g726 format
Reported by: Eyal Hasson
    +
  • [aede739778] eyalhasson -- format_g726: add support for seeking
  • +

Category: Formats/format_wav

ASTERISK-29275: Support of MIME-type for wav16
Reported by: Boris P. Korzun
    +
  • [b2c834e349] Sean Bright -- res_http_media_cache.c: Compare unaltered MIME types.
  • +
  • [57d130d3aa] Boris P. Korzun -- format_wav: Support of MIME-type for wav16
  • +

Category: Functions/func_math

ASTERISK-29495: Return integer instead of float if response is a whole number
Reported by: N A
    +
  • [c52ef4ac79] Naveen Albert -- func_math: Return integer instead of float if possible
  • +

Category: Functions/func_vmcount

ASTERISK-29661: func_vmcount: Add support for multiple mailboxes
Reported by: N A
    +
  • [484da42d6c] Naveen Albert -- func_vmcount: Add support for multiple mailboxes
  • +

Category: Functions/func_volume

ASTERISK-28813: func_volume: Allow decimal numbers as parameter to improve granularity
Reported by: Jean Aunis - Prescom
    +
  • [de66713fd5] Jean Aunis -- func_volume: Accept decimal number as argument
  • +

Category: General

ASTERISK-28046: Remove stale nonoptreq references
Reported by: Walter Doekes
    +
  • [bc8cdcefa8] Walter Doekes -- optional_api: Remove unused nonoptreq fields
  • +

Category: PBX/General

ASTERISK-28264: Added topic_all container
Reported by: sungtae kim
    +
  • [30d568ddec] sungtae kim -- stasis.c: Added topic_all container
  • +

Category: PBX/pbx_dundi

ASTERISK-28234: pbx_dundi: Add IPv4/IPv6 dual bind support for DUNDi
Reported by: Kirsty Tyerman
    +
  • [bcaa01b024] Kirsty Tyerman -- pbx_dundi: added IPv4/IPv6 dual bind support to DUNDi
  • +
ASTERISK-27164: [patch] Add IPv6 Support for DUNDi
Reported by: Adam Secombe
    +
  • [328f772d3b] Kirsty Tyerman -- pbx_dundi: Added IPv6 support for dundi
  • +

Category: Resources/General

ASTERISK-29056: Increase reg_server column size for ps_contacts table realtime
Reported by: sungtae kim
    +
  • [1fd12b88c7] Sungtae Kim -- realtime: Increased reg_server character size
  • +

Category: Resources/NewFeature

ASTERISK-28484: Add AudioSocket support
Reported by: Seán C. McCord
    +
  • [163efbd724] Seán C McCord -- feat: AudioSocket channel, application, and ARI support.
  • +

Category: Resources/res_ari

ASTERISK-28326: ari: Added timestamp for some ari events.
Reported by: sungtae kim
    +
  • [e2eb19b363] sungtae kim -- res/res_ari: Added timestamp as a requirement for all ARI events
  • +
ASTERISK-28198: res_ari: Add new hangup causes for ARI Channel DELETE command
Reported by: Sebastian Damm
    +
  • [a24bb1c4b6] Sebastian Damm -- res/res_ari: Add additional hangup reasons
  • +

Category: Resources/res_ari_bridges

ASTERISK-28629: [patch] Add an "inhibitCOLP" flag to the bridges REST API
Reported by: Jean Aunis - Prescom
    +
  • [034ac357ad] Jean Aunis -- ARI: Ability to inhibit COLP frames when adding channels to a bridge
  • +

Category: Resources/res_ari_channels

ASTERISK-28896: ari: Add support for specifying variables on channel create
Reported by: Joshua C. Colp
    +
  • [15cbff9d54] Joshua C. Colp -- ari: Allow variables to be set on channel create.
  • +
ASTERISK-28385: res_ari_channels: Added detail hangup code settings
Reported by: sungtae kim
    +
  • [613a335de5] sungtae kim -- res/ari/resource_channels.c: Added hangup reason code for channels
  • +
ASTERISK-28343: Added app_name, app_data to channel type
Reported by: sungtae kim
    +
  • [76768ad6ce] sungtae kim -- main/json.c: Added app_name, app_data to channel type
  • +
ASTERISK-28198: res_ari: Add new hangup causes for ARI Channel DELETE command
Reported by: Sebastian Damm
    +
  • [a24bb1c4b6] Sebastian Damm -- res/res_ari: Add additional hangup reasons
  • +

Category: Resources/res_ari_playbacks

ASTERISK-29501: ARI - Stasis Playback doesn't hangup call when processing a list of invalid files
Reported by: Andre Barbosa
    +
  • [2c3defc6c6] Andre Barbosa -- res_stasis_playback: Check for chan hangup on play_on_channels
  • +

Category: Resources/res_http_media_cache

ASTERISK-29143: res_http_media_cache: HTTP media cache stored hardcoded in /tmp
Reported by: laszlovl
    +
  • [92fcd4edba] laszlovl -- Introduce astcachedir, to be used for temporary bucket files
  • +

Category: Resources/res_http_websocket

ASTERISK-28958: Continue reading string when ping received by websocket
Reported by: Nickolay V. Shmyrev
    +
  • [7163efd934] Nickolay Shmyrev -- res_http_websocket.c: Continue reading after ping/pong
  • +
ASTERISK-28949: res_http_websocket: Add masking to websocket client
Reported by: Moises Silva
    +
  • [9445dac43b] Moises Silva -- res_http_websocket: Add payload masking to the websocket client
  • +

Category: Resources/res_musiconhold

ASTERISK-29262: Support of various URL-schemes by MoH
Reported by: Boris P. Korzun
    +
  • [f1c88a497b] Boris P. Korzun -- res_musiconhold: Add support of various URL-schemes by MoH.
  • +

Category: Resources/res_pjsip

ASTERISK-28959: res_pjsip: Added option for disable rport parameter set
Reported by: sungtae kim
    +
  • [81b5e4a73f] sungtae kim -- res_pjsip.c: Added disable_rport option for pjsip.conf
  • +
ASTERISK-28777: Codec Negotiation: add outgoing_call_offer_prefs option
Reported by: Kevin Harwell
    +
  • [2ee455958e] George Joseph -- codec_negotiation: Implement outgoing_call_offer_pref
  • +
ASTERISK-28756: Codec Negotiation: add incoming_call_offer_pref option
Reported by: Kevin Harwell
    +
  • [06dada3f01] Kevin Harwell -- codec negotiation: add incoming_call_offer_prefs option
  • +
ASTERISK-28542: [patch] add the ability for asterisk to generate on-hold re-invites
Reported by: Torrey Searle
    +
  • [b43cdc7f1e] Torrey Searle -- channel/chan_pjsip: add dialplan function for music on hold
  • +

Category: Resources/res_pjsip_caller_id

ASTERISK-29472: res_pjsip: OLI/ANI2 support missing
Reported by: N A
    +
  • [1a23c9c047] Naveen Albert -- res_pjsip_caller_id: Add ANI2/OLI parsing
  • +
ASTERISK-28006: PJSIP: Missing "party=calling"/"party=called" in Remote-Party-ID
Reported by: Eric Dantie
    +
  • [fca3d4fe5f] Joshua Colp -- res_pjsip_caller_id: Add "party" parameter to RPID header.
  • +

Category: Resources/res_pjsip_dtmf_info

ASTERISK-29460: Recognize application/hook-flash in PJSIP
Reported by: N A
    +
  • [99573f9540] Naveen Albert -- res_pjsip_dtmf_info: Hook flash
  • +

Category: Resources/res_pjsip_logger

ASTERISK-28895: res_pjsip_logger: Add tons'o'functionality
Reported by: Joshua C. Colp
    +
  • [a7aaee70c6] Joshua C. Colp -- res_pjsip_logger: Expand functionality to improve logging.
  • +

Category: Resources/res_pjsip_outbound_registration

ASTERISK-28602: res_pjsip_outbound_registration: Maximum retries reached
Reported by: Daniel
    +
  • [e73eba85c1] Joshua Colp -- res_pjsip_outbound_registration: Extend documentation for "max_retries".
  • +

Category: Resources/res_pjsip_registrar

ASTERISK-29325: res_pjsip_registrar: Include source IP address and port in log messages
Reported by: Joshua C. Colp
    +
  • [5f1c21e4ca] Joshua C. Colp -- res_pjsip_registrar: Include source IP and port in log messages.
  • +

Category: Resources/res_pjsip_sdp_rtp

ASTERISK-28777: Codec Negotiation: add outgoing_call_offer_prefs option
Reported by: Kevin Harwell
    +
  • [2ee455958e] George Joseph -- codec_negotiation: Implement outgoing_call_offer_pref
  • +
ASTERISK-28756: Codec Negotiation: add incoming_call_offer_pref option
Reported by: Kevin Harwell
    +
  • [06dada3f01] Kevin Harwell -- codec negotiation: add incoming_call_offer_prefs option
  • +
ASTERISK-28733: stream: Add support for adding/removing streams during SFU/calls
Reported by: Joshua C. Colp
    +
  • [5a5be92b79] Joshua C. Colp -- bridging: Add better support for adding/removing streams.
  • +
ASTERISK-28400: res_rtp_asterisk / res_pjsip_sdp_rtp: Add support for transport-cc
Reported by: Joshua C. Colp
    +
  • [6bb70c93f1] Joshua Colp -- rtp: Add support for transport-cc in receiver direction.
  • +

Category: Resources/res_pjsip_session

ASTERISK-28549: Two repeated 183
Reported by: Gant Liu
    +
  • [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control frames twice on outgoing channels
  • +
ASTERISK-28777: Codec Negotiation: add outgoing_call_offer_prefs option
Reported by: Kevin Harwell
    +
  • [2ee455958e] George Joseph -- codec_negotiation: Implement outgoing_call_offer_pref
  • +
ASTERISK-28782: Add support for Content-Disposition header in multi-part INVITES
Reported by: Torrey Searle
    +
  • [e12244153a] Torrey Searle -- res_pjsip_session: implement processing of Content-Disposition
  • +
ASTERISK-28787: res_pjsip_session: Decide more intelligently when to add video
Reported by: Joshua C. Colp
    +
  • [21e9051461] Joshua C. Colp -- res_pjsip_session: Apply intention behind requested formats.
  • +
ASTERISK-28756: Codec Negotiation: add incoming_call_offer_pref option
Reported by: Kevin Harwell
    +
  • [06dada3f01] Kevin Harwell -- codec negotiation: add incoming_call_offer_prefs option
  • +
ASTERISK-28253: res_pjsip_session: Adding rtcp stats result into the session
Reported by: sungtae kim
    +
  • [7e1d881d89] Sungtae Kim -- res_pjsip_session Added rtcp stats result vector into the session
  • +

Category: Resources/res_rtp_asterisk

ASTERISK-29508: STUN server address refresh
Reported by: Sébastien Duthil
    +
  • [ac492f2ff8] Sebastien Duthil -- res_rtp_asterisk: Automatically refresh stunaddr from DNS
  • +
ASTERISK-29434: Asterisk reveals pjproject version in STUN packets
Reported by: Jeremy Lainé
    +
  • [0f8e2174a7] Jeremy Lainé -- res_rtp_asterisk: make it possible to remove SOFTWARE attribute
  • +
ASTERISK-28400: res_rtp_asterisk / res_pjsip_sdp_rtp: Add support for transport-cc
Reported by: Joshua C. Colp
    +
  • [6bb70c93f1] Joshua Colp -- rtp: Add support for transport-cc in receiver direction.
  • +
ASTERISK-27970: res_rtp_asterisk: T.140 packets containing backspace or end of line are merged with regular text and it causes some UA to break
Reported by: Emmanuel BUU
    +
  • [cb276b5085] Emmanuel BUU -- res_rtp_asterisk: Avoid merging command and regular T.140 text packets
  • +

Category: Resources/res_stasis

ASTERISK-29055: Create a Bridge with video_single mode
Reported by: sungtae kim
    +
  • [a0d41a27d4] Sungtae Kim -- res_stasis.c: Added video_single option for bridge creation
  • +
ASTERISK-28378: Added detail subscriber/subscription info for stasis show app cli
Reported by: sungtae kim
    +
  • [1d3272d4ed] sungtae kim -- main/stasis.c: Added detail info for stasis show app cli
  • +

Category: Resources/res_stasis_playback

ASTERISK-29464: ARI - PlaybackFinish skip error events
Reported by: Andre Barbosa
    +
  • [283812e492] Andre Barbosa -- res_stasis_playback: Send PlaybackFinish event only once for errors
  • +

Category: Third-Party/pjproject

ASTERISK-28866: third-party/pjproject/configure.m4 contains bashisms
Reported by: Guido Falsi
    +
  • [c831f03273] Guido Falsi -- pjproject: Remove bashism from configure.m4 script
  • +

Category: pjproject/pjsip

ASTERISK-29525: PJSIP remove_existing unavailable contacts
Reported by: Joseph Nadiv
    +
  • [4368764032] Joseph Nadiv -- res_pjsip_registrar: Remove unavailable contacts if exceeds max_contacts
  • +
ASTERISK-28899: Upgrade Asterisk to bundled pjproject 2.10
Reported by: Kevin Harwell
    +
  • [415b55af5a] Kevin Harwell -- pjproject: Upgrade bundled version to pjproject 2.10
  • +
ASTERISK-28879: pjproject has race conditions in it's build system
Reported by: Guido Falsi
    +
  • [801d570f6e] Guido Falsi -- pjproject: Fix race condition when building with parallel make
  • +
ASTERISK-27995: pjproject_bundled: Find shared libraries in root --with-ssl=PATH.
Reported by: Alexander Traud
    +
  • [1c7c867ce0] Alexander Traud -- pjproject_bundled: Find shared libraries in root --with-ssl=PATH.
  • +


Open Issues

[Back to Top]

This is a list of all open issues from the issue tracker that were referenced by changes that went into this release.

Bug

Category: Applications/app_voicemail/ODBC

ASTERISK-28992: app_voicemail: Deadlock in ODBC when retrieving file
Reported by: Schneur Rosenberg
    +
  • [9ff548f1db] Sean Bright -- app_voicemail: Prevent deadlocks when out of ODBC database connections
  • +

Category: Core/Configuration

ASTERISK-28719: Cannot remove defaultrule from queue using realtime queues
Reported by: EDV O-TON
    +
  • [eb9252ea27] Sean Bright -- res_config_odbc: Preserve empty strings returned by the database
  • +

Category: Resources/res_pjsip_endpoint_identifier_ip

ASTERISK-29624: Contact identifier is not updated when FDQN resolves to a new address
Reported by: Philip Young
    +
  • [28f187d6c5] George Joseph -- chan_iax2.c: Require secret and auth method if encryption is enabled
  • +

Category: Resources/res_pjsip_outbound_registration

ASTERISK-29241: pjsip / register: wrong port used in Contact and Via if multiple transports are defined.
Reported by: Michael Maier
    +
  • [804788037e] Bernd Zobl -- res_pjsip/pjsip_message_filter: set preferred transport in pjsip_message_filter
  • +

Category: Resources/res_srtp

ASTERISK-29625: srtp cryptos accepted if not enabled
Reported by: Jasper Hafkenscheid
    +
  • [c1a575907b] Jasper Hafkenscheid -- res_srtp: Disable parsing of not enabled cryptos
  • +

Improvement

Category: Core/HTTP

ASTERISK-28236: Support separated HTTP request
Reported by: sungtae kim
    +
  • [b4ccaad671] Sungtae Kim -- http.c: Support separated HTTP request
  • +


Commits Not Associated with an Issue

[Back to Top]

This is a list of all changes that went into this release that did not reference a JIRA issue.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RevisionAuthorSummary
fefe1cac3aMike BradeenAsterisk Certified 18.9 Preparation
85601849c6Asterisk Development TeamUpdate for 18.9.0
82637aaa18Asterisk Development TeamUpdate for 18.9.0-rc1
868d2d5e53Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.9.0
89237be105Jaco Kroonlogger: use __FUNCTION__ instead of __PRETTY_FUNCTION__
b4eebfa191Alexander Traudari-stubs: Avoid 'is' as comparism with an literal.
53610679bfAlexander TraudBuildSystem: Consistently allow 'ye' even for Jansson.
301647788eGeorge JosephCI: Rename 'master' node to 'built-in'
08cb67251fGeorge Josephast_coredumper: Refactor to better find things
ae97aaedb0Kevin Harwellstrings/json: Add string delimter match, and object create with vars methods
2e55c0fdedBen FordSTIR/SHAKEN: Option split and response codes.
859f579504Kevin Harwellres_speech: Add a type conversion, and new engine unregister methods
482281deffSean Brightconfigure: Remove unused OpenSSL SRTP check.
9063680148Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.8.0
804b1987fbSean BrightMakefile: Use basename in a POSIX-compliant way.
e091aa2763Mark Murawskipbx_ael: Fix crash and lockup issue regarding 'ael reload'
dce142baa4Sean Brightapp_externalivr.c: Fix mixed leading whitespace in source code.
00cf86dafeAsterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.7.0
847349853aSean Brighttest_http_media_cache.c: Fix copy/paste error during test deregistration.
8410afc7abAlexander Trauddialplan: Add one static and fix two whitespace errors.
a8e8b3aaffAlexander TraudBuildSystem: Remove two dead exceptions for compiler Clang.
288d018fb7Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.6.0
9117f09d28Joshua C. Colpdocs: Remove embedded macro in WaitForCond XML documentation.
993b3ba919Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.5.1
30feaadabfSean Brightres_pjsip_stir_shaken: RFC 8225 compliance and error message cleanup.
fcebc4d24aSean Brightmain/cdr.c: Correct Party A selection.
0747162d4fAsterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.5.0
702e1d33b5George Josephres_pjsip_messaging: Overwrite user in existing contact URI
6b67821098Jaco Kroonfunc_lock: Prevent module unloading in-use module.
6f303335d3Jaco Kroonfunc_lock: Add "dialplan locks show" cli command.
a3df5d7de8Jaco Kroonfunc_lock: Fix memory corruption during unload.
6bd741b77dJaco Kroonfunc_lock: Fix requesters counter in error paths.
26059f8616Sean Brightmenuselect: Fix description of several modules.
26a38c4084Ben FordSTIR/SHAKEN: Add Date header, dest->tn, and URL checking.
60ed1847b8Joshua C. Colpasterisk: We've moved to Libera Chat!
a84d34035aBen FordSTIR/SHAKEN: Switch to base64 URL encoding.
e0cbdfe063Ben FordSTIR/SHAKEN: OPENSSL_free serial hex from openssl.
5e6508b56fBen FordSTIR/SHAKEN: Fix certificate type and storage.
40bdfff73bGeorge JosephUpdates for the MessageSend Dialplan App
78f518622dSean Brighttranslate.c: Avoid refleak when checking for a translation path
1949d828b7Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.4.0
c2f4925ee0Joshua C. Colpsvn: Switch to https scheme.
5f3d96a765George Josephres_pjsip: Update documentation for the auth object
404533c149Sean Brightloader.c: Speed up deprecation metadata lookup
0ad1ff8a72Kevin Harwellres_rtp_asterisk: Don't count 0 as a minimum lost packets
1414b9cc57Kevin Harwellres_rtp_asterisk: Statically declare rtp_drop_packets_data object
b912b31853Kevin Harwellres_rtp_asterisk: Add a DEVMODE RTP drop packets CLI command
65a4a3a4e6Joshua C. Colpres_pjsip: Give error when TLS transport configured but not supported.
15de2f1727Kevin Harwelltime: Add timeval create and unit conversion functions
bbfb8f2b9dBen Fordlogger.conf.sample: Add more debug documentation.
263f906af4Kevin Harwellmanager: Increase the non breaking AMI version number
0afd37e3b5Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.3.0
23e41313a8Jaco Kroonfunc_callerid+res_agi: Fix compile errors related to -Werror=zero-length-bounds
52707fba7fJaco Kroonapp.h: Fix -Werror=zero-length-bounds compile errors in dev mode.
262473c6d9Alexander Traudres_format_attr_*: Parameter Names are Case-Insensitive.
4fc0e16838Alexander Traudchan_iax2: System Header strings is included via asterisk.h/compat.h.
16e4d1f36fSean Brightres_musiconhold.c: Plug ref leak caused by ao2_replace() misuse.
269bb08ea2George Josephres_pjsip_refer: Move the progress dlg release to a serializer
0323293142Alexander Traudres_format_attr_h263: Generate valid SDP fmtp for H.263+.
be0a61bc3dKevin Harwellres_rtp_asterisk: Add packet subtype during RTCP debug when relevant
1adf9368eeAlexander Traudchan_sip: Filter pass-through audio/video formats away, again.
bee35fe04aJaco Kroonfunc_odbc: Introduce minargs config and expose ARGC in addition to ARGn.
dbd8908f8dGeorge Josephres_pjsip_refer: Always serialize calls to refer_progress_notify
24d6adfe99Sean Brightapp_read: Release tone zone reference on early return.
7c0fbaf010Ivan Poddubnyimain/frame: Add missing control frame names to ast_frame_subclass2str
fb42b60326Sean Brightres_pjsip_pubsub: Fix truncation of persisted SUBSCRIBE packet
9c56870929Jaco KroonAC_HEADER_STDC causes a compile failure with autoconf 2.70
a25bcf70edAlexander Traudpjsip_scheduler: Fix pjsip show scheduled_tasks like for compiler Clang.
87a35f8e94Ben Fordchan_pjsip.c: Add parameters to frame in indicate.
89fea9bafeAsterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.2.0
49f625b8dbJaco Kroonpbx_lua: Add LUA_VERSIONS environment variable to ./configure.
68d3d3af6fSean Brightasterisk: Export additional manager functions
3d379845e6Richard Mudgettchan_vpb.cc: Fix compile errors.
027f4e3a21Richard Mudgettres_pjsip_session.c: Fix compiler warnings.
938a240793Joshua C. Colpres_pjsip_pidf_digium_body_supplement: Support Sangoma user agent.
f9438e6457Sean Brightmedia_cache: Fix reference leak with bucket file metadata
994fbdaf48Sean BrightCHANGES: Remove already applied CHANGES update
6e1fb58183Alexander Traudmodules.conf: Align the comments for more conclusiveness.
98d1537c1eAsterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.1.0
860e40dd80George Josephres_pjsip_outbound_registration.c: Use our own scheduler and other stuff
569fc28966George Josephpjsip_scheduler.c: Add type ONESHOT and enhance cli show command
da0f2ea99eAlexei Gradinarisched: AST_SCHED_REPLACE_UNREF can lead to use after free of data
be54c7e9eaAlexander Traudres_stir_shaken: Include OpenSSL headers where used actually.
5b25c75d7bAlexander Traudchan_sip: On authentication, pick MD5 for sure.
fb3b14ab7dWalter Doekesmain/say: Work around gcc 9 format-truncation false positive
439f7bb848Kevin Harwellres_pjsip, res_pjsip_session: initialize local variables
f89531cb98Alexander Traudinstall_prereq: Add GMime 3.0.
2773f93154Alexander TraudBuildSystem: Enable Lua 5.4.
4a049ad510George Josephapp_confbridge/bridge_softmix: Add ability to force estimated bitrate
c470327e6cTorrey Searleres_pjsip_diversion: fix double 181
5929e0ccbdSean Brightres_musiconhold: Clarify that playlist mode only supports HTTP(S) URLs
9eeb40af33Joshua C. Colpres_pjsip_session: Fix stream name memory leak.
99bd7d95deGeorge Josephlogger.h: Fix ast_trace to respect scope_level
c90c182932Sean Brightaudiosocket: Fix module menuselect descriptions
fdc13060dfGeorge Josephbridge_softmix/sfu_topologies_on_join: Ignore topology change failures
6f32c254beSean Brightres_pjsip_session.c: Fix build when TEST_FRAMEWORK is not defined
ad4f2a8c99George Josephdebugging: Add enough to choke a mule
7eaae4e7b6Ben FordBridging: Use a ref to bridge_channel's channel to prevent crash.
f589985840Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.0.0
5a49757e40Patrick Verzeleres_pjsip_session: Deferred re-INVITE without SDP send a=sendrecv instead of a=sendonly
ec03909831Kevin Harwellconversions: Add string to signed integer conversion functions
e32815dddbGeorge Josephast_coredumper: Fix issues with naming
9ed1b1452dAlexander Traudsip_nat_settings: Update script for latest Linux.
217449a1e5Alexander Traudsamples: Fix keep_alive_interval default in pjsip.conf.
5a8cacb93dGeorge Josephlogger.c: Added a new log formatter called "plain"
5dfeeba623Sean Brightres_musiconhold.c: Use ast_file_read_dir to scan MoH directory
c4c72d55a2George Josephscope_trace: Added debug messages and added additional macros
d26ab7f8f9George Josephstream.c: Added 2 more debugging utils and added pos to stream string
6faf76308dGeorge JosephACN: Changes specific to the core
a3d87f78edJoshua C. Colpres_pjsip: Fix codec preference defaults.
da8a617dc9Sean Brightvector.h: Fix implementation of AST_VECTOR_COMPACT() for empty vectors
769a9611e7Ben Fordutils.c: NULL terminate ast_base64decode_string.
802aa97fa0George JosephACN: Configuration renaming for pjsip endpoint
de23cb4002Ben Fordres_stir_shaken: Fix memory allocation error in curl.c
71446b68fcGeorge Josephres_pjsip_session: Ensure reused streams have correct bundle group
d9ae902f52Sean Brightutf8.c: Add UTF-8 validation and utility functions
9022f35f09Sean Brightvector.h: Add AST_VECTOR_SORT()
a678dafac8George JosephCI: Force publishAsteriskDocs to use python2
af70bbb13aJoshua C. Colpwebsocket / pjsip: Increase maximum packet size.
8d15f72721Joshua C. Colppjsip: Include timer patch to prevent cancelling timer 0.
3330764213George JosephUpdate .gitreview defaultbranch to 18
1f5e6805bfAsterisk Development TeamUpdate CHANGES and UPGRADE.txt for 18.0.0
5fbed5af24Ben Fordres_stir_shaken: Add stir_shaken option and general improvements.
e88beedd08George Josephres_pjsip_session: Fix segv in session_on_rx_response
9bd1d686a1George JosephACN: Add tracing to existing code
2d22e34206George JosephACN: res_pjsip endpoint options
d093e44b1eGeorge Josephframe.c: Make debugging easier
955b7b4fdbGeorge JosephScope Trace: Make it easier to trace through synchronous tasks
8d1064eaafGeorge JosephStreams: Add features for Advanced Codec Negotiation
7440fd0397George JosephScope Trace: Add some new tracing macros and an ast_str helper
1274117102Ben Fordres_stir_shaken: Add outbound INVITE support.
f1cfd54976Walter Doekesres_pjsip: Include <pjsip_ua.h> instead of internal "pjsua-lib/pjsua.h"
b9f42a717eGeorge Josephapp_confbridge: Plug ref leak of bridge channel with send_events
3d1bf3c537Kevin HarwellCompiler fixes for gcc 10
559fa0e89cBen Fordcli.c: Fix compiler error.
3927f79cb5Ben Fordres_stir_shaken: Add inbound INVITE support.
1fcb6b1b21Joshua C. Colpbridge_channel: Don't queue unmapped frames.
ca3c22c5f1George JosephScope Tracing: A new facility for tracing scope enter/exit
ec7890d7c6Joshua C. Colpres_sorcery_config: Always reload configuration on errors.
f506cc4896Ben Fordres_stir_shaken: Add unit tests for signing and verification.
e29df34de0Ben Fordres_stir_shaken: Added dialplan function and API call.
44e5dd288bJaco KroonRemove #include <sys/cdefs.h>
1cfd30bd8aJoshua C. Colpres_stir_shaken: Use ast_asprintf for creating file path.
9acf840f7cBen Fordres_stir_shaken: Implemented signature verification.
7baf2c4bf1George Josephapp_voicemail: Add workaround for a gcc 10 issue with -Wrestrict
4ef5ba58f5Alexander TraudBuildSystem: Only if found LibPRI, check its optional parts.
ef580f96e7Alexander TraudBuildSystem: Only if found external PJProject, check its optional parts.
611529fa52Alexander Traudres_stir_shaken: Do not build without OpenSSL.
27de0c9700Alexander Traudres_audiosocket: Avoid Sometimes-uninitialized Warning with Clang.
2b80e5f5daJaco Kroonres_rtp_asterisk: iterate all local addresses looking to populate ICE.
1cf569ba2bJaco Kroonres_pjsip: document legal dtls_verify endpoint options.
52ecbbd014Alexander Traud_pjsua: Build even with Clang.
ee1c7f465bAlexander Traudres_rtp_asterisk: Build without PJProject.
60925c68e8Sean BrightRevert "res_config_odbc: Preserve empty strings returned by the database"
c5f3836bccJaco Kroonmain/backtrace: binutils-2.34 fix.
7ba6d43083George Josephtest_res_pjsip_session_caps: Create unit test
57a457c26cBen Fordres_stir_shaken: Implemented signing of JSON payload.
d32e559e8aJaco Kroonacl: implement a centralized ACL output mechanism for HAs and ACLs.
1b6c58896fJoshua C. Colpchan_sip: Send 403 when ACL fails.
3ed80fc57bJoshua C. ColpCHANGES: Change md file extension to txt.
26713dc88bKevin Harwellast_coredumper: add Asterisk information dump
6f731f153bJaco Kroonnetsock2: compile fixes.
211bb8a79cBen Fordres_stir_shaken: Initial commit and reading private key.
a699e016ddJaco Kroonbuild: enable building with uClibc
f824cd6a13Jaco Kroonbuild: search from newest to oldest for gmime.
82c3939c38Jaco Kroonres_rtp_asterisk: implement ACL mechanism for ICE and STUN addresses.
2ad64e97c0Jaco KroonUpdate main/backtrace.c to deal with changes in binutils 2.34.
49cf84578eSean Brightchan_vpb: Fix 'catching polymorphic type ... by value' error
d68f940f6eSean Brightdns_txt: Add TXT record parsing support
00a7e4b51dGeorge JosephCI: Create generic jenkinsfile
e089779908Rodrigo Ramírez Norambuenares_rtp_asterisk: Add 'rtp show settings' cli command
680e6b9774Walter Doekesapp_queue: Refactor odd placement of if's around say_position
1e1651b4f4Kevin Harwellformat_cap: make function parameters 'const'
0b5c6fddf1Walter Doekessay: Remove unused "plural" option from main/say
5cd7230f3cJaco Kroonaddons/res_config_mysql: silense warnings about printf format errors.
de6919f339Sean Brightast_tls_cert: Allow private key size to be set on command line
8dcdce42a9Sean Brightapp_mixmonitor: Turn on synchronization by default
0f6ee98c3fJoshua C. Colpstasis: Use format specifier for size_t.
1e037ebb97Sean Brightfunc_odbc: Prevent snprintf() truncation warning
a72caa041fGeorge Josephdoc: Fix CHANGES entries to have .txt suffix and update READMEs
1b53d329acJoshua C. Colpres_rtp_asterisk: Don't produce transport-cc if no packets.
b76ab5e5c9George Josephmessage.c: Add option to suppress the Message channel AMI and ARI events
113d05e504Walter Doekeschan_sip: Clarify in sample docs how directmediapermit/-acl should be used
262221f4d9Sean Brightfunc_odbc.conf.sample: Add example lookup
f09cf4da44Sean Brightapp_voicemail: Remove MessageExists and MESSAGE_EXISTS()
5cbf47714aSean Brightapp_voicemail, say: Fix various leading whitespace problems
3bc8b36537Jaco Kroonnetsock2: ast_addressfamily_to_sockaddrsize and ast_sockaddr_from_sockaddr.
00a7432156Kevin Harwellapp_agent_pool: Update XML docs for AgentLogin
19069f7db7Richard Mudgettapp_bridgeaddchan.c: Make BridgeAdd be more like Bridge
0376f2bba9Richard Mudgettfeatures.c: Make Bridge application tolerate unspecified channel.
0d1f3d9bf3Richard Mudgettapp_chanspy.c: Reduce log message level from notice to verbose.
a457947198Richard Mudgettapp_softhangup.c: Reduce unnecessary warning to verbose message.
fc99ac8c9aSean Brightdb: Initialize condition primitive before use
32160cb456Jaco KroonACL: ast_apply_acl_nolog - identical to ast_apply_acl but without logging.
d0b198b330Joshua ColpRevert "PJSIP_CONTACT: add missing argument documentation"
0183e2bc67Sean Brightres_pjsip_registrar.c: Prevent possible buffer overflow with domain aliases
fd823225a6Thomas Arimontchannel.c: Resolve issue with receiving SIP INFO packets for DTMF
366da90f74George JosephCI: Turn off shallow cloning altogether
91c3b5b09dSean Brightmedia_cache.c: Various CLI improvements
48161dfc71Rodrigo Ramírez Norambuenaqueue_log: Add alembic script for generate db table for queue_log
2a6a2800e7George JosephCI: Fix missing script block in jenkinsfiles
4abb54b2e4George JosephCI: Fix missing script block in jenkinsfiles
e8e1314fcbGeorge JosephCI: Increase clone depth and do better cleanup
a5fa0d662eSean Brightres_pjsip_registrar: Fix uninitlized variable warning
f2d5ed54eaAlexei Gradinariserializer: set high/low alert levels on whole pool
bdd785d31cKevin Harwellvarious files - fix some alerts raised by lgtm code analysis
0e3b397812Kevin Harwellres_pjsip_session: initialize pending's topology to endpoint's
8a1f30af04Corey Farrellcore: Improve MALLOC_DEBUG for frames.
d71d0f9489George JosephExternalMedia: Change return object from ExternalMedia to Channel
6e907ae5d4Joshua Colpres_rtp_asterisk: Remove a log message that slipped in.
a60d2e905cJoshua Colptest_res_rtp: Enable FIR and REMB nominal tests.
b27a5183daChris Savinovichtest_taskprocessor.c: Fix test failure on Ubuntu
c0efe19cecKevin Harwellserializer: move/add asterisk serializer pool functionality
2970a13fb8Kevin Harwellres_pjsip/res_pjsip_mwi: use centralized serializer pools
068ed2c626Alexei Gradinarires_pjsip_pubsub: add endpoint to some warning
ba64d68273Jonathan Rosebasic-pbx: Bring forward queue configuration from 13
4c3655ecfdBen Fordtaskprocessor.c: Added "like" support to 'core show taskprocessors'
966488ab52Sean Brightres_musiconhold: Add new 'playlist' mode
f7045cefd9Corey Farrellstasis_state: Create internal stasis_state_proxy object.
67ba62f4e6Kevin Harwellres_pjsip_pubsub: change warning to debug
4de1e6d0e6Ben Fordtaskprocessor.c: Add CLI commands to reset taskprocessor stats.
725e991fafCorey Farrellcore: Add AO2_ALLOC_OPT_NO_REF_DEBUG option.
e82f2f6e82George Josephastmm.c: Display backtrace with memory show allocations
a4142c8437Corey Farrellcore: Fix ABI mismatch of ao2_global_obj.
ca608d2575Corey Farrellstasis: refcounter.py can incorrectly report skewed objects.
3dfbc05c53Corey Farrellstasis: Fix leaks
863fe2225fCorey Farrellapp_voicemail: Fix module unload leak.
723b695ce5Ben Fordres_rtp_asterisk.c: Send RTCP as compound packets.
0e56643d9fBen Fordres_rtp: Add unit tests for RTCP stats.
2ae1a22e0eGeorge JosephARI: External Media
5fb9b23105George Josephchan_sip: Update links referenced in deprecation notice
ed757cc7bbChris-Savinovichtest_utils.c: Skip test adsi_loaded_test if module not loaded.
1d06a1efb3Igor Goncharovskychan_unistim: Fix code, causing all incoming DTMF sent back to asterisk
649003821eIgor Goncharovskychan_unistim: Fix RTP port byte order for big-endian arch
3ef52b0b17Alexei GradinariFix misname 'res_external_mwi' to 'res_mwi_external' in comments.
19045db392George Josephchan_rtp: Accept hostname as well as ip address as destination
9e015713ccGeorge Josephdns_core: Create new API ast_dns_resolve_ipv6_and_ipv4
8da4e28a81George Josephres_ari.c: Prefer exact handler match over wildcard
64906c4c9bSean Brightaudiohook.c: Substitute silence for unavailable audio frames
446bac733dGeorge JosephCI: Escape backslashes in printenv/sort/tr
be6130607dGeorge JosephCI: Add "throttle" label and "skip_gate" capability
c01dd2a41aGeorge JosephCI: Make node labels job-specific
9d07d5a6d6Sean Brightapp_voicemail: Remove extra menuselect build options
1f8ae708a0Sean Brightres_musiconhold: Use a vector instead of custom array allocation
5f66fb5139Sean Brightmanager: Send fewer packets
5e6e1175d5Asterisk Development TeamUpdate CHANGES and UPGRADE.txt for 17.0.0
8d10028b98George JosephUpdate master for Asterisk 18
7ce9ee7f2eSean Brightres_musiconhold: Use ast_pipe_nonblock() wrapper
8e44d823c1George Josephloader.c: Fix possible SEGV when a module fails to register
03813e51f0George JosephCI: Don't enable non-core modules in Certified branches
098797628eLeonid Fainshteinopenr2(6/6): Set hangup cause
f67094503dTzafrir Cohenopenr2(5/6): added cli command -- mfcr2 destroy link <index>
64bf3e3e82Tzafrir Cohenopenr2(4/6): added new cli command -- mfcr2 show links
f61adf2cf5Tzafrir Cohenopenr2(3/6): Convert r2links to standard Asterisk AST_LIST*
97d2549bb1Tzafrir Cohenopenr2(2/6): Stop polling channels when DAHDI returns -ENODEV (e.g: plug-out)
2f0a8e12f9Tzafrir Cohenopenr2(1/6): bugfix in configuration saving
4304c6534aWalter Doekescontrib/scripts: Make spandspflow2pcap.py Python 2.7+/3.3+ compatible
be8d41bd24George JosephCI: Add cleanWs to cleanup steps in jenkinsfiles
8b88994b18George JosephCI: Add install-headers to the install make targets
c781806e26George JosephBuild: Separate header install/uninstall
ba25038fd5Kevin Harwellmanager: Log AMI actions
2feac1d361Joshua Colpres_rtp_asterisk: Move where DTLS MTU variable is defined.
64a908f897Rodrigo Ramírez NorambuenaREADME.md: Update year
6b1f6ea2c4Chris-Savinovichapp_voicemail.c: Build all three variants for app_voicemail at the same time
13e89d372bGeorge Josephsig_pri: Address gcc9 issues
f414ca069cAlexei Gradinarires_fax: gateway sends T.38 request to both endpoints if V.21 detected
0ba52ce3cfGeorge JosephCI: New way to determnine libdir
e3866cb714Alexei Gradinaritranslate.c do not log WARNING on empty audio frame
92d4ec2906George Josephchan_dahdi: Address gcc9 issues
f3e5419d41George Josephapp_confbridge: Attended transfer event fixup
c70d874f7dSean Brightpjproject: Update to 2.9 release
3eaeb3e6c4Alexei Gradinariapp_attended_transfer: new application AttendedTransfer
745cbab501Alexei Gradinariapp_blind_transfer: new application BlindTransfer
bfd93995d9Alexei Gradinarires_fax: add channel name to CLI 'fax show session'
9969c77bc2Ben Fordbuild: Fix file format in CHANGES-staging.
408210bd4cAlexei Gradinariapp_readexten: new option 'p' to stop reading on '#' key
54f7f7dc20Matt Jordanpjproject/Makefile: Updates for Darwin compatible builds
be83591f99George Josephres_rtp_asterisk: Add ability to propose local address in ICE
86836e0442Ben Fordpjsip_options.c: Allow immediate qualifies for new contacts.
def6bbc96bKevin Harwellconversions.c: Add conversions for largest max sized integer
ed615afb7eRodrigo Ramírez Norambuenaapp_queue: Set correct value by default for shared_lastcall
ff0d0ac23aKevin Harwellmwi core: Move core MWI functionality into its own files
d4e25710f7George Josephres_remb_modifier: Propertly initialize bitrate to 0.0
e69fcdfd83Sean Brightres_mwi_devstate: Specify AST_MODFLAG_LOAD_ORDER to enable load priority
8a32b68038George JosephCI: Move test group config files to Jenkins
26cdf042f4George JosephARI: Run 'make ari-stubs'
fe58bc7bdfAlexei Gradinarires_pjsip: Fix transport_states ref leak
391112d89aChris-Savinovichconfig.c: Fix a crash in extconfig parsing
8ae9339f71George JosephCI: Add --no-dev-mode option to buildAsterisk.sh
4edd24841dBen Fordalembic: Fix errors during upgrade head.
f78306470bMatthew Fredricksonres/res_rtp_asterisk: Enable rxjitter calculation for video
d5d8448ce5Ben Fordbuild: Add staging directories for future changes.
f236377ce9Alexei Gradinaripjsip: restrict function PJSIP_PARSE_URI to parse only SIP/SIPS URIs
41a2662e16Matthew Fredricksonmain/taskprocessor: Increase max name length of taskprocessors
7e77815ad1George Josephsorcery.c: Sorcery enhancements for wizard management
0fac5bcbe5Sean Brightvector: Add AST_VECTOR_COMPACT() to reclaim wasted space
45a8892e67Richard Mudgetttaskprocessor.c: Fix printf type mismatch
1d074debfbJoshua Colpstasis: Allow empty application arguments to move.
a40198a4d4Corey FarrellRevert "Test_cel: Fails when DONT_OPTIMIZE is off"
6f158d27fcGeorge JosephMakefile.moddir_rules: Pass PJPROJECT_BUNDLED to download_externals
449dff997cChris-Savinovichpartial-inlining: disable partial-inlining if gcc>=8.2.1
825ea9ddb9Sean Brightres_musiconhold: Remove redundant option parsing
9b7b8cb155Corey Farrelljansson: json_pack with new format to verify required runtime version.
2473b791b9Sean BrightReplace calls to strtok() with strtok_r()
7b02a9617cSean Brightsamples: Fix comment typo in pjsip.conf.sample
f8295e0771Rodrigo Ramírez NorambuenaCHANGES: Document addition of 'wrapuptime' argument to AddQueueMember()
e0fc663295George JosephCI: Update jenkinsfiles with new Gerrit URLs
574128dec6Kevin Harwellrest-api-templates/asterisk_processor - replace http line breaks with line feed
e6b67b2a5dJoshua Colpres_pjsip_sdp_rtp: Allow only single ssrc attribute.
a286f546f1Joshua C. Colpstasis: Store subscriber uniqueids with topic statistics.
c2adeb9dc2George Josephtaskprocessor: Enable subsystems and overload by subsystem
f4c9a351d8Joshua ColpCI: Use tmpfs option to Docker instead of mount.
8f1b3edde8Kevin Harwelljson.c/strings.c - Add a couple of utility functions
f174eb4ac1Sean Brightsounds: Sort 'core show sounds' output
ac90968afdsungtae kimAdded ARI resource /ari/asterisk/ping
7071e9d64cGeorge Josephmedia_index.c: Refactored so it doesn't cache the index
1c8378bbc9Chris-SavinovichTest_cel: Fails when DONT_OPTIMIZE is off
c6980e32aeGeorge Josephapp_voicemail: Add Mailbox Aliases
deffb8a6e0George Josephpjproject_bundled: Add patch for double free issue in timer heap
20f672539eSean Brightpjsip_transport_management: Shutdown transport immediately on disconnect
58b55f2a30Sean Brightsched: Make sched_settime() return void because it cannot fail
2b8602e8cfSean Brightres_pjsip_transport_websocket: Don't assert on 0 length payloads
f0546d1d87Alexei Gradinarires_pjsip: add option to enable ContactStatus event when contact is updated
7c08ff51d7Richard Mudgettstasic.c: Fix printf format type mismatches with arguments.
314782e874Richard Mudgettbacktrace.c: Fix casting pointer to/from integral type.
357219dfb3Sean Brightres_rtp_asterisk: Remove some unused structure fields.
3db1df301eSean Brightbridge_builtin_features.c: Set auto(mix)mon variables on both channels
42ff856216Sean BrightUse non-blocking socket() and pipe() wrappers
bedf16b041Sean Brightutils: Don't set or clear flags that don't need setting or clearing
00b36bb045Sean Brightbuild: Update config.guess and config.sub
d1598dbc7dGeorge JosephRevert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"
6d69fb3cc2Sean Brightutils: Wrap socket() and pipe() to reduce syscalls
b899119a5dDavid M. LeeRemoving registrar_expire from basic-pbx config
19c4e0f592George JosephCI: Various updates to buildAsterisk.sh
cbb7633ad3Kevin Harwellpjsip_add_use_callerid_contact: fixed alembic script
8f5df046f6Sean Brightcore: Add some documentation to the malloc_trim code
58e50e56cbChris-Savinovichcore: Merge malloc_trim patch
6c13b20803Chris-Savinovichtest_websocket_client.c: Disable websocket_client_create_and_connect test.
f4924d40dbGeorge Josephtest_cel: Plug a few ref leaks
3667c5e1d2George Josephbridges: Remove reliance on stasis caching
8e1ab4f11cCorey Farrelljansson: Upgrade to 2.12.
021ce938caCorey Farrellastobj2: Remove legacy ao2_container_alloc routine.
bc7f4f4db3Corey Farrellastobj2: Create function to copy weak proxied objects from container.
bcdfb90362George JosephCI: Get job timeouts from environment
64e21c9ea9Corey Farrellapp_queue: Cleanup queue_ref / queue_unref routines.
56eb18f395Joshua C. Colpstasis: Remove stringfields and lock from change message.
915b80709dGeorge JosephCI: Add tmpfs to all jenkinsfiles
f5e3832dffGeorge JosephCI: Mount a tmpfs on /tmp for testsuite docker containers
be87185f6dGeorge JosephCI: Pass work directory to runTestsuite
8ff3435c8aGeorge JosephCI: Allow runUnittests to use 'expect' to run the tests
9abd5e1004Corey Farrelltaskprocessor: Prevent race creating new taskprocessor.
752fd06d12Corey Farrellpjproject-bundled: Use AST_DEVMODE for conditional compilation.
02c7a061eaCorey Farrellres_pjsip_caller_id: Use static pj_str_t for fromto header names.
4b24731640Corey Farrelltest_res_pjsip_scheduler: Fix possible write after free in scheduler_policy.
944d90a7eaCorey Farrelltaskprocessor: Do not use separate allocation for stats or name.
d9add7e086Corey Farrelljansson-bundled: Patch for off-nominal crash.
a3fc97aa13Chris-Savinovichres_pjsip: Send a 503 response when overload state if reliable transport.
5f3f707793Alexei Gradinarires_pjsip.c: Make taskprocessor scheduling algorithm pick the shortest queue
bf579222c4Joshua Colpstasis: Clarify lifetime of topics.
eee935983bAlexei Gradinaripjsip: new endpoint's options to control Connected Line updates
b0155f7e58Pascal Cadotte Michaudcontrib/sip_to_pjsip: handle setvar in conversion
90a11c4ae7Corey Farrellchan_sip deprecation.
e81d33e78fCorey FarrellUPDATE.txt: Fix formatting to match previous files.
79c2b4fdddSean Brightres_parking: Stop setting the deprecated PARKINGSLOT channel variable.
1b397ebd00Richard Mudgettlogger.c: Fix default console logging when no logger.conf available.
96d5e444f0Richard Mudgettmodules.conf.sample: Update preload usage documentation.
056ca07449Sean Brightfunc_callerid: Remove deprecated CALLERPRES() function.
f940b7b63dSean Brightsay: Remove legacy language deprecation logic
9e8d671658Sean Brightres_xmpp: Remove deprecated JabberStatus application.
687ab7aeeeCorey Farrellastobj2: Eliminate legacy container allocation macros.
4c19b94968Corey Farrelllock: Replace __ast_mutex_logger with private log_mutex_error.
9838a5e57aRichard Mudgettapp_dial/app_queue: Update application option documentation
90bd8371f2Sean Brightsamples: PARKINGSLOT -> PARKING_SPACE in parking sample config
be04a64c49Sean Brightoptions.c: Remove 'internal_timing' notice
467f7c6724Richard MudgettFix 'statement' typo throughout code.
7ab4befc2bRichard Mudgettres_rtp_asterisk.c: Add conditional module dependency to res_pjproject
1fad6b9079Richard Mudgettmodules: Add missing run time module support levels.
5ab94d2a3eCorey Farrelltaskprocessor: Warn on unused result from pushing task.
915861b431Richard Mudgettbundled pjproject: Remove timer cleanup usage patch.
79677ead28Corey Farrellrefdebug: Create refstats.py script.
aae5bdc22eAlexei Gradinarires_pjsip: set callerid_tag to empty string
f06de6900eCorey Farrellthreadpool: Eliminate pointless AO2 usage.
675d8a46b4Corey Farrellmain/astfd: Fix GCC8 format-truncation warning.
682f96cb5cRichard Mudgettres_statsd.c: Fix returned reload status.
c8ee1a183fCorey Farrellloader: Flag module as declined in all cases where it fails to load.
c6c3a63696Richard Mudgettfunc_periodic_hook.c: Cleanup module resources on failure.
9f02861d22Richard Mudgettcodec_speex.c: Cleanup module loading to DECLINE and not FAILURE.
30717bafbfGeorge JosephCI: Fix missing () in gates.jenkinsfile
58622a87f4George JosephCI: Add timestamps and timeouts to jenkinsfiles
b2ed667712Sean Brightast_coredumper: Remove .gdbinit file on exit
e19f27a667Sean BrightCI: Look up configured kernel.core_pattern sysctl
42880fab50Corey Farrelljenkins: Fix cleanup command redirection.
a29cefe5b2George Josephast_coredumper: Don't use "declare -n"
3601329c5aRichard Mudgettres_smdi.c: Fix module ref counting and inverted test.
305d08f112Richard Mudgettres_smdi.c: Made use defaults if the smdi.conf file does not exist.
932d0a40cfCorey Farrellastobj2: Comment on OBJ_NOLOCK in ao2_container_clone.
f608b73a29Sean BrightCI: Use brace expansion instead of calling out to seq
9c9f060b3aSean BrightCI: Use bindport instead of port in test http.conf
286339aa34Sean Brighthttp.c: Reload TLS even if http.conf hasn't changed
a69a50b6ecRichard Mudgettres_statsd.c: Made use defaults if the statsd.conf file does not exist.
cacbe32534Corey Farrellcore: Disable astobj2 locking for some common objects.
639718211aCorey FarrellResolve warning about duplicate 'dialplan' CLI.
b25a261aa5Corey Farrellloader: Fix result of module reload error.
e4cf513f81Corey Farrellloader: Improve error handling.
13df745278Corey Farrellastobj2: Record lock usage to refs log when DEBUG_THREADS is enabled.
52b530503fCorey Farrellapp_page: Add dependency against app_confbridge.
497973c8a2Corey FarrellAppend CHANGES/UPGRADE.txt for module loader changes.
24b92291d5Corey Farrelljansson-bundled: Add patches to improve json_pack error reporting.
205c6be895Corey Farrelllock: Improve performance of DEBUG_THREADS.
f10c7b6eebGeorge Josephapp_confbridge: Use bridge join hook to send join and leave events
62a0db2df1Corey Farrellastobj2: Reduce memory overhead.
ac23e5ad48Sean Brightconfig.c: Cleanup AST_INCLUDE_GLOB
39bf9881e0Corey Farrellastobj2: Fix shutdown order.
b11a6643cfBen Fordres_rtp_asterisk.c: Add "seqno" strictrtp option
950d0b65e5George JosephCI: Add --test-timeout option to runTestsuite.sh
adf539b2f0Corey Farrelljansson: Backport fixes to bundled, use json_vsprintf if available.
93777faf36Corey Farrelljson: Take advantage of new API's.
06c0676da0George Josephapp_voicemail: Cleanup mailbox topic and cache
31fba4e869Kevin Harwellrtp_engine: rtcp_report_to_json can overflow the ssrc integer value
22cf065ec9George Josephapp_voicemail: Fix stack overrun in append_mailbox
4d51a8e05bGeorge Josephchannel.c: Address stack overflow in does_id_conflict()
ad4a6bc27aSean Brightres_rtp_asterisk: Reset all settings on module reload
d277db4a38George Josephstasis: Add function to delete topic from pool
b9874da790Joshua Colpres_remb_modifier: Add module for controlling REMB from CLI.
c99a9b228bRichard Mudgettstasis: No need to keep a stasis type ref in a stasis msg or cache object.
79e3becc5dRichard Mudgettstasis_message.c: Don't create immutable stasis objects with locks.
6a1c313facFlorian Floimairalembic: fix suppress_q850_reason_headers column name
246c39e46cCorey Farrellinstall_prereq: Remove unpackaged version of jansson.
3d9deb35f0Sean Brightautoconf: Check for srtp_get_version_string() before using it
ceafac3d7fGeorge JosephCI: Fix typo in testsuite git checkout
b68617ac2cSean Brightres_srtp.c: Show linked version of libsrtp on module init
07cb13f75fSean Brightres_pjsip: Log IPv6 addresses correctly
8be6998f8dGeorge JosephCI: Use proper credentials for Security testsuite checkout
2ba2ff050dCorey FarrellCI: Use .gitreview to default BRANCH_NAME.
28b32fbd44Corey FarrellBuild System: Resolve conflict between DESTDIR and bundled jansson.
600c5d79fdSean Brightres_pjproject: Add utility functions to convert between socket structures
1a3115d1c5Rodrigo Ramírez Norambuenaapp_dial: set the comment for OPT_ARG_ANNOUNCE to really what is done
b779a93d8dChris-Savinovichpbx_config.c: Fix reloading module if initially declined to load
e387750104Richard Mudgetthttp.c: Give HTTP error response when received lines are too long.
f657793ee4Richard Mudgettiostream.c: Fix ast_iostream_gets() needlessly returning failure.
a2001c00e6Corey FarrellCreate --disable-binary-modules option.
a74f8e51a6Jaco KroonAMI: be less verbose when adding HTTP headers to AMI/HTTP messages.
c8bacd45f1Matthew Fredricksonsample_configs: noload res_hep.so by default
14c6f8be9dSean Brightapp_queue: Silence GCC 8 compiler warning
5ec27d5206Richard MudgettAMI: Remove docs for nonexistent AMI ContactStatus event headers
457ba355aaJoshua Colpres_pjsip: Reduce processing when a Contact is updated.
8cd36ab9b6Richard Mudgettres_sorcery_realtime.c: Fix unqualified fetch warning.
273e2802aaRichard Mudgettpbx_dundi.c: Misc memory management fixes when destroying peers
d4e72ee296Richard Mudgettpbx_dundi.c: Handle thread shutdown better.
916abe7cdcRichard Mudgettpbx_dundi: Fix debug frame decode string.
c035d0afe0Richard Mudgettpbx_dundi: Update sample config documentation.
aee5f7c1b6Richard Mudgettres_rtp_asterisk.c: Fix unused variable warnings
00563ce21aGeorge JosephCI: Fixup for non-13 branches
e5f30eba79George JosephCI: Final version of setting correct gerrit creds
8e1c541acfGeorge JosephCI: Add https credentials to gerrit checkouts
01c90fefb3Rodrigo Ramírez Norambuenamake config: os-release output error.
a83c464d9dCorey Farrellres_resolver_unbound: Fix leak of config nameserver strings.
24302bda21Corey Farrellres_pjsip: Resolve transport management leak at shutdown.
eb34b881a4Corey Farrellres_odbc: Allow unload at shutdown.
52fe5fe2c8Corey Farrellres_pjsip: Fix leak in pjsip_options.
58c3677581Richard Mudgettcontrib/scripts: Make astgenkey executable
63ca367ab9Corey FarrellSample configs: Fix pjsip.conf syntax error.
addfc93815Corey FarrellCI: Add support for coverage processing.
c6ad25dcb7Richard Mudgettres_pjsip.h: Fix doxygen comments.
455ca1095eJoshua Colpstasis: Reduce calculation of stasis message type hash.
acbb9f52b2Richard Mudgettres_pjsip: Make pjlib.h consistently included.
a10a3aff6aCorey FarrellBuild System: Improve ccache matching for different menuselect options.
a354599eccGeorge JosephCI: Add optional uninstall step before installing asterisk
3aa6be6b51Joshua Colpres_pjsip_pubsub: Use ast_true for "prune_on_boot".
4265391859Joshua Colpres_pjsip_pubsub: Treat "prune_on_boot" as a yes / no.
116a599b7eGeorge JosephCI: Fix placement of job summary statments
709f4b81e7Corey Farrellloader: Process dependencies for built-in modules.
e55cad967eGeorge JosephCI: Add docker info to job summary
852e157b19Corey FarrellBuild System: Create 'make install-configs' target.
783bff0637Kevin Harwelljson.c: improve ast_json_to_ast_variables performance
3dcf26cb94George JosephCI: Explicitly pass BRANCH_NAME to buildAsterisk and installAsterisk
797835c5b9George JosephCI: Add options to initialize and cleanup database to runTestsuite.sh
05a4b448afCorey FarrellCI: Do not `mkdir 2`.
2f275f8472Corey FarrellBuild System: Silence build of bundled jansson.
ceb199e19fGeorge JosephCI: RefDebug: Fix reference to testsuite URL
af5984d694Corey FarrellBuild System: Fix bundled jansson install.
cdb725526eCorey FarrellCI: Use bundled jansson if needed.
c5bac9ed90Florian Floimairres_pjsip: Change log message from error to warning for valid use cases
f827f36ff3George JosephCI: Add --privileged flag to docker options
eed429c811George JosephCI: Set correct user:group when publishing docs
0504594a3eRichard Mudgettcore: AST_DEVMODE no longer affects ABI.
0f8657aae9Richard Mudgettasterisk.c: Make displayed copyright always consistent
3b78651c3cCorey FarrellCI: Split --test-command argument.
ba8f2c401cGeorge Josephxmldoc.c: Fix dump of xml document
0ee061326aCorey FarrellCI: Fix mkdir CACHE_DIR.
747b65f675Corey Farrellbuild_tools/make_version: Get MAINLINE_BRANCH from .gitreview.
33f855bb69Joshua Colpsched: Make ABI compatible between dev mode and non-dev mode.
09c4be9433Richard Mudgettasterisk.c: Update displayed copyright year for v16 release.
ee154464d7Corey FarrellEnable bundling of jansson, require 2.11.
fa6d5db229Corey FarrellCI: Fix logger.conf for unit tests.
739cfe128dGeorge JosephCI: Add wiki doc publish to periodics
e6bb2efaabRichard Mudgettres_pjsip: Update endpoint transport option documentation.
8a100ca52bRichard Mudgettpjsip_resolver.c: Use replacement function
e01e636959Joshua ColpUpdate UPDATE.txt for 16 and update ARI stubs.

Diffstat Results

[Back to Top]

This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.

asterisk-certified-16.8-cert12-summary.html                                                     |   22
+asterisk-certified-16.8-cert12-summary.txt                                                      |   92
+b/.gitreview                                                                                    |    2
+b/.version                                                                                      |    2
+b/CHANGES                                                                                       | 1032
+b/CREDITS                                                                                       |    2
+b/ChangeLog                                                                                     |143513 +++-------
+b/Makefile                                                                                      |   27
+b/UPGRADE.txt                                                                                   |  288
+b/addons/app_mysql.c                                                                            |    2
+b/addons/cdr_mysql.c                                                                            |    2
+b/addons/chan_mobile.c                                                                          |   91
+b/addons/chan_ooh323.c                                                                          |   13
+b/addons/ooh323c/README                                                                         |    2
+b/addons/ooh323c/src/decode.c                                                                   |    2
+b/addons/ooh323c/src/encode.c                                                                   |    4
+b/addons/ooh323c/src/eventHandler.h                                                             |    6
+b/addons/ooh323c/src/h323/H323-MESSAGES.h                                                       |    2
+b/addons/ooh323c/src/h323/H323-MESSAGESDec.c                                                    |    8
+b/addons/ooh323c/src/h323/H323-MESSAGESEnc.c                                                    |    4
+b/addons/ooh323c/src/memheap.c                                                                  |   20
+b/addons/ooh323c/src/ooCalls.c                                                                  |    2
+b/addons/ooh323c/src/ooCapability.h                                                             |   12
+b/addons/ooh323c/src/ooCmdChannel.c                                                             |    4
+b/addons/ooh323c/src/ooGkClient.c                                                               |    4
+b/addons/ooh323c/src/ooGkClient.h                                                               |    2
+b/addons/ooh323c/src/ooLogChan.c                                                                |    2
+b/addons/ooh323c/src/ooSocket.h                                                                 |    2
+b/addons/ooh323c/src/ooUtils.c                                                                  |    2
+b/addons/ooh323c/src/ooUtils.h                                                                  |    2
+b/addons/ooh323c/src/ooasn1.h                                                                   |    2
+b/addons/ooh323c/src/oochannels.c                                                               |    2
+b/addons/ooh323c/src/ooh245.c                                                                   |    2
+b/addons/ooh323c/src/ooh245.h                                                                   |    4
+b/addons/ooh323c/src/ooh323.c                                                                   |   29
+b/addons/ooh323c/src/ooh323ep.c                                                                 |    2
+b/addons/ooh323c/src/ooq931.c                                                                   |    8
+b/addons/ooh323c/src/ooq931.h                                                                   |    2
+b/addons/res_config_mysql.c                                                                     |   16
+b/agi/eagi-test.c                                                                               |    4
+b/agi/jukebox.agi                                                                               |    2
+b/apps/Makefile                                                                                 |   36
+b/apps/app_adsiprog.c                                                                           |    2
+b/apps/app_agent_pool.c                                                                         |   44
+b/apps/app_alarmreceiver.c                                                                      |    5
+b/apps/app_amd.c                                                                                |    2
+b/apps/app_attended_transfer.c                                                                  |    4
+b/apps/app_audiosocket.c                                                                        |  241
+b/apps/app_blind_transfer.c                                                                     |    4
+b/apps/app_bridgeaddchan.c                                                                      |   62
+b/apps/app_bridgewait.c                                                                         |   22
+b/apps/app_chanisavail.c                                                                        |    2
+b/apps/app_chanspy.c                                                                            |   16
+b/apps/app_confbridge.c                                                                         |  151
+b/apps/app_dahdiras.c                                                                           |   10
+b/apps/app_dial.c                                                                               |  156
+b/apps/app_dictate.c                                                                            |    2
+b/apps/app_directory.c                                                                          |    2
+b/apps/app_dtmfstore.c                                                                          |  293
+b/apps/app_externalivr.c                                                                        |  290
+b/apps/app_fax.c                                                                                |    6
+b/apps/app_festival.c                                                                           |    2
+b/apps/app_forkcdr.c                                                                            |    2
+b/apps/app_getcpeid.c                                                                           |    3
+b/apps/app_ices.c                                                                               |    4
+b/apps/app_image.c                                                                              |    4
+b/apps/app_jack.c                                                                               |    4
+b/apps/app_macro.c                                                                              |    4
+b/apps/app_meetme.c                                                                             |   16
+b/apps/app_mf.c                                                                                 |  362
+b/apps/app_milliwatt.c                                                                          |   23
+b/apps/app_minivm.c                                                                             |  171
+b/apps/app_mixmonitor.c                                                                         |  153
+b/apps/app_morsecode.c                                                                          |  167
+b/apps/app_mp3.c                                                                                |   32
+b/apps/app_nbscat.c                                                                             |    4
+b/apps/app_originate.c                                                                          |  122
+b/apps/app_osplookup.c                                                                          |   17
+b/apps/app_page.c                                                                               |   19
+b/apps/app_playback.c                                                                           |   18
+b/apps/app_queue.c                                                                              |  677
+b/apps/app_read.c                                                                               |   36
+b/apps/app_reload.c                                                                             |  111
+b/apps/app_sms.c                                                                                |    2
+b/apps/app_speech_utils.c                                                                       |    2
+b/apps/app_stack.c                                                                              |    6
+b/apps/app_stasis.c                                                                             |    2
+b/apps/app_statsd.c                                                                             |    4
+b/apps/app_stream_echo.c                                                                        |    2
+b/apps/app_talkdetect.c                                                                         |    2
+b/apps/app_test.c                                                                               |    4
+b/apps/app_transfer.c                                                                           |   24
+b/apps/app_url.c                                                                                |    4
+b/apps/app_verbose.c                                                                            |    9
+b/apps/app_voicemail.c                                                                          |  819
+b/apps/app_voicemail_imap.c                                                                     |    1
+b/apps/app_voicemail_imap.exports.in                                                            |    1
+b/apps/app_voicemail_odbc.c                                                                     |    1
+b/apps/app_voicemail_odbc.exports.in                                                            |    1
+b/apps/app_waitforcond.c                                                                        |  235
+b/apps/app_waitforring.c                                                                        |    2
+b/apps/app_waitforsilence.c                                                                     |   19
+b/apps/app_zapateller.c                                                                         |    2
+b/apps/confbridge/conf_config_parser.c                                                          |   47
+b/apps/confbridge/conf_state.c                                                                  |    2
+b/apps/confbridge/confbridge_manager.c                                                          |    4
+b/apps/confbridge/include/confbridge.h                                                          |   14
+b/asterisk-18.9.0-summary.html                                                                  |  732
+b/asterisk-18.9.0-summary.txt                                                                   | 1219
+b/bridges/bridge_holding.c                                                                      |    4
+b/bridges/bridge_native_rtp.c                                                                   |    2
+b/bridges/bridge_simple.c                                                                       |    2
+b/bridges/bridge_softmix.c                                                                      |   44
+b/bridges/bridge_softmix/bridge_softmix_binaural.c                                              |    4
+b/bridges/bridge_softmix/include/bridge_softmix_internal.h                                      |   10
+b/build_tools/download_externals                                                                |    9
+b/build_tools/install_subst                                                                     |    1
+b/build_tools/make_defaults_h                                                                   |    1
+b/build_tools/mkpkgconfig                                                                       |    1
+b/cdr/cdr_adaptive_odbc.c                                                                       |    2
+b/cdr/cdr_beanstalkd.c                                                                          |    2
+b/cdr/cdr_csv.c                                                                                 |    2
+b/cdr/cdr_odbc.c                                                                                |    9
+b/cdr/cdr_pgsql.c                                                                               |    6
+b/cdr/cdr_radius.c                                                                              |    2
+b/cdr/cdr_sqlite3_custom.c                                                                      |    2
+b/cdr/cdr_syslog.c                                                                              |    7
+b/cdr/cdr_tds.c                                                                                 |    7
+b/cel/cel_beanstalkd.c                                                                          |    5
+b/cel/cel_custom.c                                                                              |    3
+b/cel/cel_pgsql.c                                                                               |    6
+b/cel/cel_radius.c                                                                              |    4
+b/cel/cel_sqlite3_custom.c                                                                      |    7
+b/cel/cel_tds.c                                                                                 |    7
+b/channels/Makefile                                                                             |    2
+b/channels/chan_alsa.c                                                                          |    4
+b/channels/chan_audiosocket.c                                                                   |  302
+b/channels/chan_console.c                                                                       |    4
+b/channels/chan_dahdi.c                                                                         |  129
+b/channels/chan_dahdi.h                                                                         |   18
+b/channels/chan_iax2.c                                                                          |  148
+b/channels/chan_mgcp.c                                                                          |   70
+b/channels/chan_misdn.c                                                                         |   90
+b/channels/chan_motif.c                                                                         |    6
+b/channels/chan_nbs.c                                                                           |    4
+b/channels/chan_oss.c                                                                           |    4
+b/channels/chan_phone.c                                                                         |    4
+b/channels/chan_pjsip.c                                                                         |  513
+b/channels/chan_rtp.c                                                                           |    2
+b/channels/chan_sip.c                                                                           |  499
+b/channels/chan_skinny.c                                                                        |   30
+b/channels/chan_unistim.c                                                                       |   14
+b/channels/chan_vpb.cc                                                                          |    6
+b/channels/console_board.c                                                                      |    2
+b/channels/console_gui.c                                                                        |   14
+b/channels/console_video.c                                                                      |   12
+b/channels/dahdi/bridge_native_dahdi.c                                                          |   10
+b/channels/iax2/codec_pref.c                                                                    |    2
+b/channels/iax2/include/astobj.h                                                                |    2
+b/channels/iax2/include/firmware.h                                                              |    8
+b/channels/iax2/include/iax2.h                                                                  |    6
+b/channels/iax2/include/parser.h                                                                |    1
+b/channels/iax2/parser.c                                                                        |   34
+b/channels/misdn/ie.c                                                                           |    2
+b/channels/misdn/isdn_lib.c                                                                     |    6
+b/channels/misdn/isdn_lib_intern.h                                                              |    2
+b/channels/misdn/isdn_msg_parser.c                                                              |   12
+b/channels/misdn/portinfo.c                                                                     |    2
+b/channels/misdn_config.c                                                                       |    2
+b/channels/pjsip/cli_commands.c                                                                 |   70
+b/channels/pjsip/dialplan_functions.c                                                           |   19
+b/channels/sig_analog.c                                                                         |   66
+b/channels/sig_analog.h                                                                         |    4
+b/channels/sig_pri.c                                                                            |  172
+b/channels/sig_pri.h                                                                            |   10
+b/channels/sig_ss7.c                                                                            |   64
+b/channels/sig_ss7.h                                                                            |    2
+b/channels/sip/config_parser.c                                                                  |   63
+b/channels/sip/dialplan_functions.c                                                             |    2
+b/channels/sip/include/config_parser.h                                                          |    2
+b/channels/sip/include/reqresp_parser.h                                                         |   12
+b/channels/sip/include/route.h                                                                  |    9
+b/channels/sip/include/sip.h                                                                    |   37
+b/channels/sip/reqresp_parser.c                                                                 |   10
+b/channels/sip/route.c                                                                          |    2
+b/channels/sip/security_events.c                                                                |    4
+b/channels/sip/utils.c                                                                          |    2
+b/channels/vcodecs.c                                                                            |    4
+b/channels/vgrabbers.c                                                                          |    2
+b/codecs/codec_dahdi.c                                                                          |    2
+b/codecs/codec_g726.c                                                                           |    2
+b/codecs/gsm/src/rpe.c                                                                          |    2
+b/codecs/ilbc/LPCencode.c                                                                       |    8
+b/codecs/ilbc/StateSearchW.c                                                                    |    4
+b/codecs/ilbc/StateSearchW.h                                                                    |    2
+b/codecs/ilbc/constants.c                                                                       |    2
+b/codecs/ilbc/createCB.c                                                                        |    2
+b/codecs/ilbc/createCB.h                                                                        |    2
+b/codecs/ilbc/enhancer.h                                                                        |    4
+b/codecs/ilbc/iLBC_decode.c                                                                     |    2
+b/codecs/ilbc/rfc3951.txt                                                                       |   26
+b/codecs/lpc10/lpc10.h                                                                          |    2
+b/codecs/lpc10/pitsyn.c                                                                         |    2
+b/codecs/lpc10/placea.c                                                                         |    2
+b/codecs/speex/resample.c                                                                       |    2
+b/configs/basic-pbx/extensions.conf                                                             |    2
+b/configs/basic-pbx/modules.conf                                                                |    8
+b/configs/samples/app_mysql.conf.sample                                                         |    2
+b/configs/samples/ari.conf.sample                                                               |    2
+b/configs/samples/ast_debug_tools.conf.sample                                                   |   47
+b/configs/samples/asterisk.conf.sample                                                          |    1
+b/configs/samples/cdr.conf.sample                                                               |    2
+b/configs/samples/chan_dahdi.conf.sample                                                        |   20
+b/configs/samples/cli_permissions.conf.sample                                                   |    2
+b/configs/samples/confbridge.conf.sample                                                        |   12
+b/configs/samples/dundi.conf.sample                                                             |    2
+b/configs/samples/extensions.ael.sample                                                         |    2
+b/configs/samples/extensions.conf.sample                                                        |    4
+b/configs/samples/extensions.lua.sample                                                         |    4
+b/configs/samples/extensions_minivm.conf.sample                                                 |    2
+b/configs/samples/features.conf.sample                                                          |    4
+b/configs/samples/func_odbc.conf.sample                                                         |   22
+b/configs/samples/hep.conf.sample                                                               |    2
+b/configs/samples/iax.conf.sample                                                               |   11
+b/configs/samples/indications.conf.sample                                                       |   11
+b/configs/samples/logger.conf.sample                                                            |   25
+b/configs/samples/manager.conf.sample                                                           |    2
+b/configs/samples/minivm.conf.sample                                                            |    2
+b/configs/samples/modules.conf.sample                                                           |   32
+b/configs/samples/motif.conf.sample                                                             |    2
+b/configs/samples/musiconhold.conf.sample                                                       |    4
+b/configs/samples/ooh323.conf.sample                                                            |    2
+b/configs/samples/pjproject.conf.sample                                                         |    5
+b/configs/samples/pjsip.conf.sample                                                             |  178
+b/configs/samples/prometheus.conf.sample                                                        |   58
+b/configs/samples/queues.conf.sample                                                            |   27
+b/configs/samples/res_curl.conf.sample                                                          |    1
+b/configs/samples/rtp.conf.sample                                                               |   40
+b/configs/samples/sip.conf.sample                                                               |    4
+b/configs/samples/stasis.conf.sample                                                            |    3
+b/configs/samples/statsd.conf.sample                                                            |    3
+b/configs/samples/stir_shaken.conf.sample                                                       |   85
+b/configure                                                                                     |  801
+b/configure.ac                                                                                  |  211
+b/contrib/ast-db-manage/README.md                                                               |    2
+b/contrib/ast-db-manage/config/versions/1ae0609b6646_increse_reg_server_size.py                 |   22
+b/contrib/ast-db-manage/config/versions/2bb1a85135ad_pjsip_add_use_callerid_contact.py          |    2
+b/contrib/ast-db-manage/config/versions/465f47f880be_add_pjsip_google_voice_sip_options.py      |  115
+b/contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py                           |    2
+b/contrib/ast-db-manage/config/versions/61797b9fced6_add_stir_shaken.py                         |   31
+b/contrib/ast-db-manage/config/versions/79290b511e4b_pjsip_add_disable_rport.py                 |   39
+b/contrib/ast-db-manage/config/versions/8915fcc5766f_add_ringinuse_to_queue_members.py          |   30
+b/contrib/ast-db-manage/config/versions/a06d8f8462d9_add_t38_bind_udptl_to_media_address.py     |   29
+b/contrib/ast-db-manage/config/versions/b80485ff4dd0_add_pjsip_endpoint_acn_options.py          |   29
+b/contrib/ast-db-manage/config/versions/c20d6e3992f4_add_allow_unauthenticated_options.py       |   29
+b/contrib/ast-db-manage/config/versions/e658c26033ca_create_history_info_flag.py                |   38
+b/contrib/ast-db-manage/config/versions/f56d79a9f337_pjsip_create_remove_unavailable.py         |   30
+b/contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py                         |    2
+b/contrib/init.d/rc.debian.asterisk                                                             |    2
+b/contrib/realtime/mysql/mysql_config.sql                                                       |   82
+b/contrib/realtime/postgresql/postgresql_config.sql                                             |   90
+b/contrib/scripts/ast_coredumper                                                                |  949
+b/contrib/scripts/ast_loggrabber                                                                |    4
+b/contrib/scripts/ast_tls_cert                                                                  |    8
+b/contrib/scripts/asterisk.ldap-schema                                                          |    2
+b/contrib/scripts/asterisk.ldif                                                                 |    2
+b/contrib/scripts/get_mp3_source.sh                                                             |    2
+b/contrib/scripts/install_prereq                                                                |   36
+b/contrib/scripts/loadtest.tcl                                                                  |    2
+b/contrib/scripts/retrieve_extensions_from_sql.pl                                               |    2
+b/contrib/scripts/safe_asterisk.8                                                               |    2
+b/contrib/scripts/sip_nat_settings                                                              |   19
+b/contrib/scripts/sip_to_pjsip/astconfigparser.py                                               |   43
+b/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py                                                  |    8
+b/contrib/scripts/spandspflow2pcap.py                                                           |  284
+b/contrib/scripts/valgrind_compare                                                              |    2
+b/contrib/scripts/voicemailpwcheck.py                                                           |    2
+b/contrib/systemd/asterisk.service                                                              |    7
+b/contrib/utils/zones2indications.c                                                             |    4
+b/doc/appdocsxml.dtd                                                                            |   26
+b/doc/asterisk-ng-doxygen.in                                                                    |    4
+b/formats/format_ogg_speex.c                                                                    |   13
+b/formats/format_ogg_vorbis.c                                                                   |    2
+b/formats/format_vox.c                                                                          |    2
+b/formats/format_wav.c                                                                          |    3
+b/funcs/func_aes.c                                                                              |    4
+b/funcs/func_callerid.c                                                                         |  293
+b/funcs/func_channel.c                                                                          |   46
+b/funcs/func_curl.c                                                                             |   49
+b/funcs/func_devstate.c                                                                         |    6
+b/funcs/func_env.c                                                                              |   87
+b/funcs/func_frame_drop.c                                                                       |  292
+b/funcs/func_frame_trace.c                                                                      |    2
+b/funcs/func_lock.c                                                                             |  228
+b/funcs/func_math.c                                                                             |  185
+b/funcs/func_odbc.c                                                                             |   42
+b/funcs/func_periodic_hook.c                                                                    |    3
+b/funcs/func_pitchshift.c                                                                       |   10
+b/funcs/func_pjsip_aor.c                                                                        |    2
+b/funcs/func_pjsip_contact.c                                                                    |    2
+b/funcs/func_pjsip_endpoint.c                                                                   |    2
+b/funcs/func_sayfiles.c                                                                         |  397
+b/funcs/func_scramble.c                                                                         |  236
+b/funcs/func_sprintf.c                                                                          |    2
+b/funcs/func_strings.c                                                                          |  148
+b/funcs/func_talkdetect.c                                                                       |   26
+b/funcs/func_vmcount.c                                                                          |   23
+b/funcs/func_volume.c                                                                           |   60
+b/include/asterisk.h                                                                            |    1
+b/include/asterisk/abstract_jb.h                                                                |    2
+b/include/asterisk/acl.h                                                                        |   32
+b/include/asterisk/adsi.h                                                                       |    4
+b/include/asterisk/aoc.h                                                                        |    2
+b/include/asterisk/app.h                                                                        |   95
+b/include/asterisk/ari.h                                                                        |   22
+b/include/asterisk/astdb.h                                                                      |    2
+b/include/asterisk/astmm.h                                                                      |    6
+b/include/asterisk/astobj2.h                                                                    |  102
+b/include/asterisk/audiohook.h                                                                  |   79
+b/include/asterisk/autoconfig.h.in                                                              |   13
+b/include/asterisk/bridge.h                                                                     |   69
+b/include/asterisk/bridge_channel.h                                                             |   27
+b/include/asterisk/bridge_channel_internal.h                                                    |   11
+b/include/asterisk/bridge_features.h                                                            |    6
+b/include/asterisk/bridge_roles.h                                                               |    4
+b/include/asterisk/calendar.h                                                                   |    8
+b/include/asterisk/callerid.h                                                                   |    2
+b/include/asterisk/causes.h                                                                     |    6
+b/include/asterisk/cdr.h                                                                        |    4
+b/include/asterisk/channel.h                                                                    |  314
+b/include/asterisk/cli.h                                                                        |    2
+b/include/asterisk/config.h                                                                     |    4
+b/include/asterisk/config_options.h                                                             |    2
+b/include/asterisk/conversions.h                                                                |   54
+b/include/asterisk/core_unreal.h                                                                |   21
+b/include/asterisk/crypto.h                                                                     |    2
+b/include/asterisk/datastore.h                                                                  |    4
+b/include/asterisk/devicestate.h                                                                |    4
+b/include/asterisk/dlinkedlists.h                                                               |    7
+b/include/asterisk/dns_core.h                                                                   |    2
+b/include/asterisk/dns_internal.h                                                               |   26
+b/include/asterisk/dns_txt.h                                                                    |   64
+b/include/asterisk/doxygen/architecture.h                                                       |    2
+b/include/asterisk/doxyref.h                                                                    |   13
+b/include/asterisk/dsp.h                                                                        |    4
+b/include/asterisk/endpoints.h                                                                  |    2
+b/include/asterisk/enum.h                                                                       |    8
+b/include/asterisk/event_defs.h                                                                 |    2
+b/include/asterisk/file.h                                                                       |   15
+b/include/asterisk/format_cache.h                                                               |   13
+b/include/asterisk/format_cap.h                                                                 |    4
+b/include/asterisk/frame.h                                                                      |   37
+b/include/asterisk/framehook.h                                                                  |   41
+b/include/asterisk/hashtab.h                                                                    |    4
+b/include/asterisk/http.h                                                                       |    4
+b/include/asterisk/http_websocket.h                                                             |    5
+b/include/asterisk/io.h                                                                         |    2
+b/include/asterisk/iostream.h                                                                   |    2
+b/include/asterisk/json.h                                                                       |   17
+b/include/asterisk/linkedlists.h                                                                |    3
+b/include/asterisk/logger.h                                                                     |   83
+b/include/asterisk/logger_category.h                                                            |  178
+b/include/asterisk/manager.h                                                                    |   29
+b/include/asterisk/media_index.h                                                                |   24
+b/include/asterisk/message.h                                                                    |   13
+b/include/asterisk/mod_format.h                                                                 |    2
+b/include/asterisk/module.h                                                                     |    4
+b/include/asterisk/mwi.h                                                                        |  344
+b/include/asterisk/netsock2.h                                                                   |   12
+b/include/asterisk/parking.h                                                                    |   19
+b/include/asterisk/paths.h                                                                      |    1
+b/include/asterisk/pbx.h                                                                        |   22
+b/include/asterisk/plc.h                                                                        |    4
+b/include/asterisk/privacy.h                                                                    |    2
+b/include/asterisk/res_audiosocket.h                                                            |   87
+b/include/asterisk/res_mwi_external.h                                                           |    2
+b/include/asterisk/res_odbc.h                                                                   |   25
+b/include/asterisk/res_pjsip.h                                                                  |  411
+b/include/asterisk/res_pjsip_cli.h                                                              |    6
+b/include/asterisk/res_pjsip_presence_xml.h                                                     |    2
+b/include/asterisk/res_pjsip_pubsub.h                                                           |    7
+b/include/asterisk/res_pjsip_session.h                                                          |   27
+b/include/asterisk/res_pjsip_session_caps.h                                                     |   82
+b/include/asterisk/res_prometheus.h                                                             |  515
+b/include/asterisk/res_stir_shaken.h                                                            |  139
+b/include/asterisk/rtp_engine.h                                                                 |   83
+b/include/asterisk/say.h                                                                        |  106
+b/include/asterisk/sched.h                                                                      |    5
+b/include/asterisk/sdp_srtp.h                                                                   |    3
+b/include/asterisk/sem.h                                                                        |    2
+b/include/asterisk/smoother.h                                                                   |    8
+b/include/asterisk/sorcery.h                                                                    |   53
+b/include/asterisk/speech.h                                                                     |    6
+b/include/asterisk/srv.h                                                                        |    3
+b/include/asterisk/stasis.h                                                                     |  138
+b/include/asterisk/stasis_app.h                                                                 |   36
+b/include/asterisk/stasis_app_device_state.h                                                    |    2
+b/include/asterisk/stasis_app_impl.h                                                            |    5
+b/include/asterisk/stasis_app_mailbox.h                                                         |   12
+b/include/asterisk/stasis_app_playback.h                                                        |   16
+b/include/asterisk/stasis_app_recording.h                                                       |   32
+b/include/asterisk/stasis_app_snoop.h                                                           |    5
+b/include/asterisk/stasis_bridges.h                                                             |  148
+b/include/asterisk/stasis_channels.h                                                            |  359
+b/include/asterisk/stasis_endpoints.h                                                           |    2
+b/include/asterisk/stasis_internal.h                                                            |    1
+b/include/asterisk/stasis_message_router.h                                                      |   26
+b/include/asterisk/stasis_state.h                                                               |  549
+b/include/asterisk/stasis_system.h                                                              |    4
+b/include/asterisk/stasis_test.h                                                                |    1
+b/include/asterisk/statsd.h                                                                     |    6
+b/include/asterisk/stream.h                                                                     |  438
+b/include/asterisk/stringfields.h                                                               |    2
+b/include/asterisk/strings.h                                                                    |   36
+b/include/asterisk/stun.h                                                                       |   28
+b/include/asterisk/syslog.h                                                                     |    3
+b/include/asterisk/taskprocessor.h                                                              |    5
+b/include/asterisk/tcptls.h                                                                     |    5
+b/include/asterisk/term.h                                                                       |   16
+b/include/asterisk/test.h                                                                       |   30
+b/include/asterisk/threadpool.h                                                                 |    6
+b/include/asterisk/threadstorage.h                                                              |    6
+b/include/asterisk/time.h                                                                       |   81
+b/include/asterisk/timing.h                                                                     |    2
+b/include/asterisk/transcap.h                                                                   |    8
+b/include/asterisk/translate.h                                                                  |    2
+b/include/asterisk/utf8.h                                                                       |  188
+b/include/asterisk/utils.h                                                                      |  130
+b/include/asterisk/vector.h                                                                     |   52
+b/include/asterisk/xmldoc.h                                                                     |    2
+b/include/jitterbuf.h                                                                           |    8
+b/main/Makefile                                                                                 |    2
+b/main/abstract_jb.c                                                                            |   28
+b/main/acl.c                                                                                    |   31
+b/main/aoc.c                                                                                    |    6
+b/main/app.c                                                                                    |   55
+b/main/ast_expr2.c                                                                              |    1
+b/main/ast_expr2.y                                                                              |    1
+b/main/asterisk.c                                                                               |   41
+b/main/astfd.c                                                                                  |    2
+b/main/astmm.c                                                                                  |   38
+b/main/astobj2.c                                                                                |    5
+b/main/astobj2_container.c                                                                      |    4
+b/main/astobj2_container_private.h                                                              |    2
+b/main/astobj2_rbtree.c                                                                         |    2
+b/main/audiohook.c                                                                              |  124
+b/main/bridge.c                                                                                 |  155
+b/main/bridge_basic.c                                                                           |   27
+b/main/bridge_channel.c                                                                         |  160
+b/main/bucket.c                                                                                 |    5
+b/main/callerid.c                                                                               |    2
+b/main/ccss.c                                                                                   |    6
+b/main/cdr.c                                                                                    |  356
+b/main/cel.c                                                                                    |  151
+b/main/channel.c                                                                                |  202
+b/main/channel_internal_api.c                                                                   |  171
+b/main/cli.c                                                                                    |  128
+b/main/codec_builtin.c                                                                          |    1
+b/main/config.c                                                                                 |   11
+b/main/config_options.c                                                                         |   60
+b/main/conversions.c                                                                            |   51
+b/main/core_local.c                                                                             |  115
+b/main/core_unreal.c                                                                            |  233
+b/main/dial.c                                                                                   |   14
+b/main/dns.c                                                                                    |   21
+b/main/dns_core.c                                                                               |    3
+b/main/dns_recurring.c                                                                          |    9
+b/main/dns_test.c                                                                               |   38
+b/main/dns_txt.c                                                                                |  127
+b/main/dnsmgr.c                                                                                 |    2
+b/main/dsp.c                                                                                    |   47
+b/main/endpoints.c                                                                              |   14
+b/main/enum.c                                                                                   |  108
+b/main/features.c                                                                               |   10
+b/main/features_config.c                                                                        |    4
+b/main/file.c                                                                                   |   20
+b/main/fixedjitterbuf.c                                                                         |    2
+b/main/format_cache.c                                                                           |   21
+b/main/format_cap.c                                                                             |    6
+b/main/frame.c                                                                                  |   82
+b/main/fskmodem_float.c                                                                         |    2
+b/main/fskmodem_int.c                                                                           |    2
+b/main/indications.c                                                                            |    6
+b/main/io.c                                                                                     |    2
+b/main/json.c                                                                                   |   19
+b/main/loader.c                                                                                 |  183
+b/main/logger.c                                                                                 |  218
+b/main/logger_category.c                                                                        |  324
+b/main/manager.c                                                                                |   36
+b/main/manager_bridges.c                                                                        |  128
+b/main/manager_channels.c                                                                       |  178
+b/main/media_cache.c                                                                            |   89
+b/main/media_index.c                                                                            |    5
+b/main/message.c                                                                                |  121
+b/main/mwi.c                                                                                    |  295
+b/main/named_acl.c                                                                              |    9
+b/main/optional_api.c                                                                           |   12
+b/main/options.c                                                                                |   14
+b/main/pbx.c                                                                                    |   48
+b/main/pbx_builtins.c                                                                           |  192
+b/main/pbx_functions.c                                                                          |    6
+b/main/pbx_include.c                                                                            |    2
+b/main/pbx_timing.c                                                                             |    2
+b/main/pbx_variables.c                                                                          |    2
+b/main/rtp_engine.c                                                                             |   71
+b/main/say.c                                                                                    |  732
+b/main/smoother.c                                                                               |    2
+b/main/sorcery.c                                                                                |   63
+b/main/stasis.c                                                                                 |   65
+b/main/stasis_bridges.c                                                                         |  218
+b/main/stasis_cache.c                                                                           |   10
+b/main/stasis_channels.c                                                                        |  655
+b/main/stasis_message_router.c                                                                  |   22
+b/main/stasis_state.c                                                                           |  771
+b/main/stdtime/localtime.c                                                                      |    2
+b/main/strcompat.c                                                                              |   94
+b/main/stream.c                                                                                 |  379
+b/main/strings.c                                                                                |   25
+b/main/stun.c                                                                                   |   92
+b/main/tcptls.c                                                                                 |   45
+b/main/term.c                                                                                   |  105
+b/main/test.c                                                                                   |   11
+b/main/threadpool.c                                                                             |    2
+b/main/time.c                                                                                   |  145
+b/main/translate.c                                                                              |   34
+b/main/udptl.c                                                                                  |    2
+b/main/utf8.c                                                                                   |  380
+b/main/utils.c                                                                                  |  329
+b/main/xmldoc.c                                                                                 |   94
+b/makeopts.in                                                                                   |    7
+b/menuselect/Makefile                                                                           |    4
+b/menuselect/README                                                                             |    2
+b/menuselect/contrib/menuselect-dummy                                                           |   20
+b/menuselect/menuselect.c                                                                       |   52
+b/menuselect/menuselect.h                                                                       |    4
+b/menuselect/menuselect_curses.c                                                                |   12
+b/menuselect/menuselect_gtk.c                                                                   |    2
+b/menuselect/menuselect_newt.c                                                                  |   12
+b/menuselect/menuselect_stub.c                                                                  |    2
+b/pbx/ael/ael-test/ael-test2/apptest.ael2                                                       |    2
+b/pbx/ael/ael-test/ael-test3/extensions.ael                                                     |    2
+b/pbx/ael/ael-test/ael-test3/telemarket_torture.ael2                                            |   10
+b/pbx/ael/ael-test/ael-test4/apptest.ael2                                                       |    2
+b/pbx/ael/ael-test/ael-vtest13/extensions.ael                                                   |    2
+b/pbx/ael/ael-test/ael-vtest13/telemarket_torture.ael2                                          |   10
+b/pbx/dundi-parser.c                                                                            |    2
+b/pbx/pbx_ael.c                                                                                 |    9
+b/pbx/pbx_config.c                                                                              |    4
+b/pbx/pbx_dundi.c                                                                               |   14
+b/pbx/pbx_lua.c                                                                                 |   19
+b/pbx/pbx_realtime.c                                                                            |   39
+b/res/Makefile                                                                                  |    8
+b/res/ael/ael.y                                                                                 |    2
+b/res/ael/pval.c                                                                                |   14
+b/res/ari/ari_model_validators.c                                                                |   59
+b/res/ari/ari_model_validators.h                                                                |  487
+b/res/ari/resource_bridges.c                                                                    |   60
+b/res/ari/resource_bridges.h                                                                    |    6
+b/res/ari/resource_channels.c                                                                   |  263
+b/res/ari/resource_channels.h                                                                   |    8
+b/res/ari/resource_endpoints.c                                                                  |    1
+b/res/ari/resource_events.c                                                                     |    4
+b/res/ari/resource_events.h                                                                     |    3
+b/res/parking/parking_applications.c                                                            |   10
+b/res/parking/parking_bridge.c                                                                  |   16
+b/res/parking/parking_bridge_features.c                                                         |   11
+b/res/parking/res_parking.h                                                                     |   30
+b/res/prometheus/bridges.c                                                                      |  189
+b/res/prometheus/channels.c                                                                     |  247
+b/res/prometheus/cli.c                                                                          |  143
+b/res/prometheus/endpoints.c                                                                    |  204
+b/res/prometheus/pjsip_outbound_registrations.c                                                 |  375
+b/res/prometheus/prometheus_internal.h                                                          |  102
+b/res/res_adsi.c                                                                                |    2
+b/res/res_ael_share.c                                                                           |    2
+b/res/res_agi.c                                                                                 |   42
+b/res/res_ari.c                                                                                 |    8
+b/res/res_ari_applications.c                                                                    |   10
+b/res/res_ari_asterisk.c                                                                        |   32
+b/res/res_ari_bridges.c                                                                         |   35
+b/res/res_ari_channels.c                                                                        |   81
+b/res/res_ari_device_states.c                                                                   |    8
+b/res/res_ari_endpoints.c                                                                       |   10
+b/res/res_ari_events.c                                                                          |    2
+b/res/res_ari_mailboxes.c                                                                       |    8
+b/res/res_ari_playbacks.c                                                                       |    6
+b/res/res_ari_recordings.c                                                                      |   24
+b/res/res_ari_sounds.c                                                                          |    4
+b/res/res_audiosocket.c                                                                         |  345
+b/res/res_audiosocket.exports.in                                                                |    4
+b/res/res_calendar.c                                                                            |   12
+b/res/res_calendar_caldav.c                                                                     |    6
+b/res/res_calendar_ews.c                                                                        |    2
+b/res/res_calendar_exchange.c                                                                   |    2
+b/res/res_calendar_icalendar.c                                                                  |    6
+b/res/res_chan_stats.c                                                                          |   33
+b/res/res_config_curl.c                                                                         |    4
+b/res/res_config_ldap.c                                                                         |    6
+b/res/res_config_odbc.c                                                                         |   37
+b/res/res_config_pgsql.c                                                                        |   36
+b/res/res_config_sqlite.c                                                                       |    4
+b/res/res_corosync.c                                                                            |  564
+b/res/res_fax.c                                                                                 |   25
+b/res/res_fax_spandsp.c                                                                         |    2
+b/res/res_format_attr_celt.c                                                                    |   14
+b/res/res_format_attr_h263.c                                                                    |  141
+b/res/res_format_attr_ilbc.c                                                                    |   15
+b/res/res_format_attr_opus.c                                                                    |   31
+b/res/res_format_attr_silk.c                                                                    |   17
+b/res/res_format_attr_siren14.c                                                                 |   13
+b/res/res_format_attr_siren7.c                                                                  |   13
+b/res/res_format_attr_vp8.c                                                                     |   12
+b/res/res_hep.c                                                                                 |    2
+b/res/res_hep_pjsip.c                                                                           |    4
+b/res/res_hep_rtcp.c                                                                            |    2
+b/res/res_http_media_cache.c                                                                    |  127
+b/res/res_http_post.c                                                                           |    2
+b/res/res_http_websocket.c                                                                      |   56
+b/res/res_monitor.c                                                                             |    4
+b/res/res_musiconhold.c                                                                         |  337
+b/res/res_odbc.c                                                                                |   14
+b/res/res_odbc_transaction.c                                                                    |    5
+b/res/res_parking.c                                                                             |    9
+b/res/res_phoneprov.c                                                                           |    4
+b/res/res_pjproject.c                                                                           |   24
+b/res/res_pjsip.c                                                                               |  684
+b/res/res_pjsip/config_auth.c                                                                   |   26
+b/res/res_pjsip/config_global.c                                                                 |    4
+b/res/res_pjsip/config_system.c                                                                 |    6
+b/res/res_pjsip/config_transport.c                                                              |  283
+b/res/res_pjsip/include/res_pjsip_private.h                                                     |    6
+b/res/res_pjsip/location.c                                                                      |    1
+b/res/res_pjsip/pjsip_configuration.c                                                           |  273
+b/res/res_pjsip/pjsip_distributor.c                                                             |    2
+b/res/res_pjsip/pjsip_message_filter.c                                                          |   11
+b/res/res_pjsip/pjsip_options.c                                                                 |    9
+b/res/res_pjsip/pjsip_resolver.c                                                                |   26
+b/res/res_pjsip/pjsip_scheduler.c                                                               |  182
+b/res/res_pjsip/pjsip_session.c                                                                 |   63
+b/res/res_pjsip/pjsip_transport_events.c                                                        |    2
+b/res/res_pjsip/pjsip_transport_management.c                                                    |    2
+b/res/res_pjsip_acl.c                                                                           |   20
+b/res/res_pjsip_authenticator_digest.c                                                          |   30
+b/res/res_pjsip_caller_id.c                                                                     |   60
+b/res/res_pjsip_config_wizard.c                                                                 |   17
+b/res/res_pjsip_dialog_info_body_generator.c                                                    |  119
+b/res/res_pjsip_diversion.c                                                                     |  352
+b/res/res_pjsip_dlg_options.c                                                                   |    5
+b/res/res_pjsip_dtmf_info.c                                                                     |   11
+b/res/res_pjsip_empty_info.c                                                                    |    1
+b/res/res_pjsip_endpoint_identifier_ip.c                                                        |    3
+b/res/res_pjsip_header_funcs.c                                                                  |  194
+b/res/res_pjsip_history.c                                                                       |   20
+b/res/res_pjsip_logger.c                                                                        |  451
+b/res/res_pjsip_messaging.c                                                                     |  908
+b/res/res_pjsip_mwi.c                                                                           |   35
+b/res/res_pjsip_nat.c                                                                           |   42
+b/res/res_pjsip_one_touch_record_info.c                                                         |    1
+b/res/res_pjsip_outbound_authenticator_digest.c                                                 |  511
+b/res/res_pjsip_outbound_publish.c                                                              |    2
+b/res/res_pjsip_outbound_registration.c                                                         |  315
+b/res/res_pjsip_path.c                                                                          |   17
+b/res/res_pjsip_phoneprov_provider.c                                                            |    2
+b/res/res_pjsip_publish_asterisk.c                                                              |    6
+b/res/res_pjsip_pubsub.c                                                                        |   37
+b/res/res_pjsip_refer.c                                                                         |  173
+b/res/res_pjsip_registrar.c                                                                     |  170
+b/res/res_pjsip_rfc3326.c                                                                       |    3
+b/res/res_pjsip_sdp_rtp.c                                                                       |  365
+b/res/res_pjsip_session.c                                                                       |  572
+b/res/res_pjsip_session.exports.in                                                              |    1
+b/res/res_pjsip_session/pjsip_session_caps.c                                                    |  164
+b/res/res_pjsip_stir_shaken.c                                                                   |  519
+b/res/res_pjsip_t38.c                                                                           |   43
+b/res/res_pjsip_transport_websocket.c                                                           |    2
+b/res/res_pktccops.c                                                                            |   38
+b/res/res_prometheus.c                                                                          | 1009
+b/res/res_prometheus.exports.in                                                                 |    6
+b/res/res_remb_modifier.c                                                                       |    2
+b/res/res_rtp_asterisk.c                                                                        | 1551
+b/res/res_smdi.c                                                                                |    4
+b/res/res_snmp.c                                                                                |    2
+b/res/res_sorcery_config.c                                                                      |   26
+b/res/res_sorcery_memory_cache.c                                                                |   18
+b/res/res_speech.c                                                                              |   34
+b/res/res_srtp.c                                                                                |   43
+b/res/res_stasis.c                                                                              |   51
+b/res/res_stasis_playback.c                                                                     |   43
+b/res/res_stasis_snoop.c                                                                        |   14
+b/res/res_statsd.c                                                                              |   18
+b/res/res_stir_shaken.c                                                                         | 1736
+b/res/res_stir_shaken.exports.in                                                                |    6
+b/res/res_stir_shaken/certificate.c                                                             |  380
+b/res/res_stir_shaken/certificate.h                                                             |  109
+b/res/res_stir_shaken/curl.c                                                                    |  274
+b/res/res_stir_shaken/curl.h                                                                    |   75
+b/res/res_stir_shaken/general.c                                                                 |  286
+b/res/res_stir_shaken/general.h                                                                 |  111
+b/res/res_stir_shaken/stir_shaken.c                                                             |  200
+b/res/res_stir_shaken/stir_shaken.h                                                             |   67
+b/res/res_stir_shaken/store.c                                                                   |  202
+b/res/res_stir_shaken/store.h                                                                   |   37
+b/res/res_timing_kqueue.c                                                                       |    2
+b/res/res_timing_pthread.c                                                                      |    2
+b/res/res_tonedetect.c                                                                          | 1023
+b/res/res_xmpp.c                                                                                |  211
+b/res/snmp/agent.c                                                                              |    4
+b/res/stasis/app.c                                                                              |  137
+b/res/stasis/app.h                                                                              |   71
+b/res/stasis/control.c                                                                          |   29
+b/res/stasis/control.h                                                                          |   14
+b/res/stasis/messaging.c                                                                        |   83
+b/res/stasis/messaging.h                                                                        |    5
+b/res/stasis/stasis_bridge.c                                                                    |   20
+b/res/stasis/stasis_bridge.h                                                                    |    5
+b/res/stasis_recording/stored.c                                                                 |    4
+b/rest-api-templates/ari_model_validators.h.mustache                                            |   50
+b/rest-api-templates/ari_resource.h.mustache                                                    |    3
+b/rest-api-templates/asterisk_processor.py                                                      |    4
+b/rest-api-templates/make_ari_stubs.py                                                          |    2
+b/rest-api-templates/res_ari_resource.c.mustache                                                |    2
+b/rest-api-templates/transform.py                                                               |    2
+b/rest-api/api-docs/bridges.json                                                                |   15
+b/rest-api/api-docs/channels.json                                                               |   33
+b/rest-api/api-docs/endpoints.json                                                              |   20
+b/rest-api/api-docs/playbacks.json                                                              |    3
+b/rest-api/resources.json                                                                       |    2
+b/tests/CI/buildAsterisk.sh                                                                     |    2
+b/tests/CI/gates.jenkinsfile                                                                    |    4
+b/tests/CI/periodics-daily.jenkinsfile                                                          |    2
+b/tests/CI/publishAsteriskDocs.sh                                                               |    4
+b/tests/CI/ref_debug.jenkinsfile                                                                |    2
+b/tests/CI/unittests.jenkinsfile                                                                |    2
+b/tests/CI/universal-asterisk-nongerrit.jenkinsfile                                             |    4
+b/tests/test_abstract_jb.c                                                                      |   39
+b/tests/test_aoc.c                                                                              |    2
+b/tests/test_astobj2.c                                                                          |    2
+b/tests/test_astobj2_thrash.c                                                                   |   10
+b/tests/test_cel.c                                                                              |   13
+b/tests/test_config.c                                                                           |    2
+b/tests/test_conversions.c                                                                      |  153
+b/tests/test_devicestate.c                                                                      |    2
+b/tests/test_dns_naptr.c                                                                        |    2
+b/tests/test_hashtab_thrash.c                                                                   |   10
+b/tests/test_http_media_cache.c                                                                 |   79
+b/tests/test_json.c                                                                             |   60
+b/tests/test_linkedlists.c                                                                      |    1
+b/tests/test_media_cache.c                                                                      |    2
+b/tests/test_message.c                                                                          |    2
+b/tests/test_mwi.c                                                                              |  407
+b/tests/test_optional_api.c                                                                     |    2
+b/tests/test_res_pjsip_session_caps.c                                                           |  176
+b/tests/test_res_prometheus.c                                                                   |  829
+b/tests/test_res_rtp.c                                                                          |   40
+b/tests/test_sorcery.c                                                                          |    2
+b/tests/test_sorcery_memory_cache_thrash.c                                                      |    4
+b/tests/test_stasis.c                                                                           |    8
+b/tests/test_stasis_channels.c                                                                  |    4
+b/tests/test_stasis_endpoints.c                                                                 |   22
+b/tests/test_stasis_state.c                                                                     |  466
+b/tests/test_stream.c                                                                           |    2
+b/tests/test_strings.c                                                                          |  118
+b/tests/test_taskprocessor.c                                                                    |   10
+b/tests/test_time.c                                                                             |  170
+b/tests/test_utils.c                                                                            |    6
+b/tests/test_voicemail_api.c                                                                    |   24
+b/third-party/pjproject/Makefile                                                                |   17
+b/third-party/pjproject/configure.m4                                                            |  199
+b/third-party/pjproject/patches/0011-sip_inv_patch.patch                                        |   39
+b/third-party/pjproject/patches/0020-pjlib_cancel_timer_0.patch                                 |   39
+b/third-party/pjproject/patches/0050-fix-race-parallel-build.patch                              |   72
+b/third-party/pjproject/patches/0060-clone-sdp-for-sip-timer-refresh-invite.patch               |   28
+b/third-party/pjproject/patches/0070-fix-incorrect-copying-when-creating-cancel.patch           |   37
+b/third-party/pjproject/patches/0090-Skip-unsupported-digest-algorithm-2408.patch               |  212
+b/third-party/pjproject/patches/0100-fix-double-stun-free.patch                                 |   82
+b/third-party/pjproject/patches/0111-ssl-premature-destroy.patch                                |   50
+b/third-party/pjproject/patches/0120-pjmedia_sdp_attr_get_rtpmap-Strip-param-trailing-whi.patch |   32
+b/third-party/pjproject/pjproject-2.10.tar.bz2.md5                                              |    2
+b/third-party/versions.mak                                                                      |    2
+b/utils/Makefile                                                                                |    9
+b/utils/ael_main.c                                                                              |    2
+b/utils/astman.1                                                                                |    2
+b/utils/astman.c                                                                                |    2
+b/utils/check_expr.c                                                                            |    2
+b/utils/conf2ael.c                                                                              |    4
+b/utils/db1-ast/hash/README                                                                     |    2
+b/utils/db1-ast/hash/hash.h                                                                     |    2
+b/utils/db1-ast/include/db.h                                                                    |    1
+b/utils/db1-ast/mpool/mpool.c                                                                   |    2
+b/utils/extconf.c                                                                               |   12
+b/utils/frame.c                                                                                 |    4
+b/utils/frame.h                                                                                 |    4
+b/utils/muted.c                                                                                 |    6
+third-party/pjproject/patches/0010-ssl_sock_ossl-sip_transport_tls-Add-peer-to-error-me.patch   |  157
+third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch                        |   53
+third-party/pjproject/patches/0030-ssl-regression-fix.patch                                     |  105
+third-party/pjproject/patches/0031-transport-regression-fix.patch                               |  187
+third-party/pjproject/patches/0040-pjsip-timer-refactor.patch                                   | 1148
+third-party/pjproject/patches/0041-pjlib_cancel_timer_0.patch                                   |   39
+third-party/pjproject/pjproject-2.9.tar.bz2.md5                                                 |    2
+800 files changed, 94220 insertions(+), 105606 deletions(-)

\ No newline at end of file diff --git a/asterisk-certified-18.9-cert1-rc1-summary.txt b/asterisk-certified-18.9-cert1-rc1-summary.txt new file mode 100644 index 0000000000..619e066613 --- /dev/null +++ b/asterisk-certified-18.9-cert1-rc1-summary.txt @@ -0,0 +1,7670 @@ + Release Summary + + asterisk-certified/18.9-cert1-rc1 + + Date: 2022-01-21 + + + + ---------------------------------------------------------------------- + + Table of Contents + + 1. Summary + 2. Contributors + 3. Closed Issues + 4. Open Issues + 5. Other Changes + 6. Diffstat + + ---------------------------------------------------------------------- + + Summary + + [Back to Top] + + This release is a point release of an existing major version. The changes + included were made to address problems that have been identified in this + release series, or are minor, backwards compatible new features or + improvements. Users should be able to safely upgrade to this version if + this release series is already in use. Users considering upgrading from a + previous version are strongly encouraged to review the UPGRADE.txt + document as well as the CHANGES document for information about upgrading + to this release series. + + The data in this summary reflects changes that have been made since the + previous release, asterisk-certified/16.8-cert12. + + ---------------------------------------------------------------------- + + Contributors + + [Back to Top] + + This table lists the people who have submitted code, those that have + tested patches, as well as those that reported issues on the issue tracker + that were resolved in this release. For coders, the number is how many of + their patches (of any size) were committed into this release. For testers, + the number is the number of times their name was listed as assisting with + testing a patch. Finally, for reporters, the number is the number of + issues that they reported that were affected by commits that went into + this release. + + Coders Testers Reporters + 188 Sean Bright 3 Emmanuel BUU 72 Alexander Traud + 160 George Joseph 2 Mark Petersen 61 Joshua C. Colp + 89 Joshua C. Colp 1 Cao Minh Hiep 49 N A + 88 Alexander Traud 1 tests/test_utils.c. 31 sungtae kim + 72 Corey Farrell 1 Abhay Gupta 30 George Joseph + 71 Kevin Harwell 1 Joseph Nadiv 24 Josh Soref + 53 Joshua Colp 20 Kevin Harwell + 51 Richard Mudgett 18 Torrey Searle + 50 Naveen Albert 18 Ross Beer + 40 Ben Ford 14 Alexei Gradinari + 32 Jaco Kroon 10 Sean Bright + 30 Alexei Gradinari 10 Walter Doekes + 24 Josh Soref 10 Jean Aunis - Prescom + 21 sungtae kim 9 nappsoft + 19 Torrey Searle 8 Guido Falsi + 15 Asterisk Development 8 laszlovl + Team 7 Corey Farrell + 15 Walter Doekes 7 Boris P. Korzun + 11 Sungtae Kim 7 Jaco Kroon + 11 Chris-Savinovich 7 Frederic LE FOLL + 9 Rodrigo Ramírez 7 Ross Beer + Norambuena 6 Dan Cropp + 9 Alexander Traud 6 Salah Ahmed + 9 Guido Falsi 6 Sébastien Duthil + 8 Jean Aunis 6 Matt Jordan + 8 Pirmin Walthert 6 Dan Cropp + 8 laszlovl 5 Michael Maier + 7 Matt Jordan 5 Sebastian Damm + 7 Frederic LE FOLL 5 Gregory Massel + 6 Boris P. Korzun 5 Pascal Cadotte Michaud + 5 Salah Ahmed 5 cmaj + 5 Pascal Cadotte Michaud 4 Sergej Kasumovic + 5 Tzafrir Cohen 4 Benjamin Keith Ford + 5 Ivan Poddubnyi 4 Emmanuel BUU + 5 Dan Cropp 4 Jonathan Harris + 5 Igor Goncharovsky 4 Jeremy Lainé + 5 Sebastien Duthil 4 Abhay Gupta + 4 Emmanuel BUU 4 Michael + 4 Nick French 4 Joshua Elson + 4 Florian Floimair 3 Andre Barbosa + 4 Mike Bradeen 3 Ivan Poddubny + 4 Abhay Gupta 3 Nickolay V. Shmyrev + 3 Matthew Fredrickson 3 Robert Sutton + 3 Holger Hans Peter 3 Matthias Hensler + Freyther 3 Alexander Traud + 3 Nickolay Shmyrev 3 Emmanuel BUU + 3 Joseph Nadiv 3 Nick French + 3 Andre Barbosa 2 Joseph Ades + 3 Mark Murawski 2 under + 3 Jeremy Lainé 2 Niksa Baldun + 2 Sebastian Kemper 2 pasandev + 2 cirillor 2 Stas Kobzar + 2 Robert Cripps 2 Timothy Vanderaerden + 2 Nathan Bruning 2 Giuseppe Sucameli + 2 Bernd Zobl 2 Igor Goncharovsky + 2 cmaj 2 Cirillo Ferreira + 2 Andrew Siplas 2 Marin Odrljin + 2 Shloime Rosenblum 2 Mark Petersen + 2 Giuseppe Sucameli 2 Andrew Siplas + 2 Jasper Hafkenscheid 2 David Kuehling + 2 Mark Petersen 2 Mark Murawski + 2 Michael Neuhauser 2 Bernhard Schmidt + 2 Kirsty Tyerman 2 Sébastien Duthil + 1 Sarah Autumn 2 Luke Escude + 1 Ivan Poddubny 2 Michael Neuhauser + 1 Nasir Iqbal 2 Rusty Newton + 1 Matthew Kern 2 Peter Sokolov + 1 Jared Smith 2 Shloime Rosenblum + 1 Jonathan Rose 2 abelbeck + 1 under 2 Stefan Ruf + 1 Bernard Merindol 2 Robert Cripps + 1 Bryan Boatright 2 Mark Petersen + 1 Kfir Itzhak 2 Ruddy G + 1 Michael Cargile 2 Bernhard Schmidt + 1 Nicholas John Koch 2 Dennis + 1 Christoph Moench-Tegeder 2 Joeran Vinzens + 1 Patrick Verzele 2 Olivier Krief + 1 Dömsödi Gergely 2 Eyal Hasson + 1 Michal Hajek 2 Etienne Lessard + 1 eyalhasson 2 Andrew Yager + 1 Jason Hord (license 2 George Joseph + 6978) 2 Florian Floimair + 1 Peter Katzmann 2 Hajek Michal + 1 Michael Walton (license 2 Sebastian Kemper + 6502) 2 Jared Smith + 1 Jan Hoffmann (license 2 Brian J. Murrell + 6986) 2 Michael Neuhauser + 1 Rijnhard Hessel 1 Ramarajan + 1 Stanislav 1 Juan Carlos Castro y + 1 Peter Turczak Castro + 1 David M. Lee 1 Adam Secombe + 1 Daniel Heckl 1 Lucas Tardioli Silveira + 1 Francesco Castellano 1 Jean-Denis Girard + 1 Morten Tryfoss 1 Adam Secombe + 1 Leonid Fainshtein 1 Mark + 1 Carlos Oliva 1 Samuel Galarneau + 1 Paulo Vicentini 1 Thomas Johnson + 1 Cao Minh Hiep 1 Seán C. McCord + 1 Evgenios_Greek 1 Speed Dial Dave + 1 Alexander Anikin 1 David Kuehling + 1 Xiemin Chen 1 Alex + 1 Thomas Arimont (license 1 Paul Brooks + 5525) 1 Janu + 1 Jasper van der Neut 1 Nathan Bruning + 1 Martin Tomec 1 César Benjamín García + 1 Diederik de Groot Martínez + 1 Kevin Reeves 1 Peter Turczak + 1 Stas Kobzar 1 Jeremiah Gadd + 1 Dennis Buteyn 1 Péter Juhász + 1 Antoni Goldstein 1 Kevin Flyn + 1 Lucas Mendes 1 Kirill Katsnelson + 1 Sylvain Afchain 1 Tomas Maldonado + 1 Dovid Bender 1 Chris + 1 Evandro César Arruda 1 Luit van Drongelen + 1 Gerald Schnabel 1 Valentin Safonov + 1 Sebastian Damm 1 Dmitry Wagin + 1 Università di Bologna - 1 bbawkon + CESIA VoIP 1 Mitch Claborn + 1 Mohit Dhiman 1 Bob Atkins + 1 Nico Kooijman 1 Lei Fu + 1 Michael Goryainov 1 Paul Brooks + 1 Roger James 1 Gil Richard + 1 Valentin Vidic 1 Dmitry Svyatogorov + 1 Moises Silva 1 Vieri + 1 Chris Savinovich 1 Christoph + 1 Alexander Greiner-Baer Moench-Tegeder + 1 Peter Sokolov (License 1 Alex Hermann + #7070) 1 Cedric BASSAGET + 1 Moritz Fain 1 Schneur Rosenberg + 1 Seán C McCord 1 David M. Lee + 1 David Hajek 1 Richard Kenner + 1 snuffy 1 Dan Jenkins + 1 Dalius Mockevicius + 1 Krzysztof Trempala + 1 Università di Bologna - + CESIA VoIP + 1 David Wilcox + 1 Martin Zeh + 1 Mauri de Souza + Meneguzzo (3CPlus) + 1 Jean-Denis Girard + 1 Dmitry Shubin + 1 Roger James + 1 Eric Smith + 1 Michael Maier + 1 Andrew Nagy + 1 Mohit Dhiman + 1 Nikolay shakin + 1 Joshua Roys + 1 Brian J. Murrell + 1 Jonathan Harris + 1 Ronald Raikes + 1 Matt Addison + 1 Nicholas John Koch + 1 Lucas Mendes + 1 Niksa Baldun + 1 Kfir Itzhak + 1 Bill Kervaski + 1 Oleksandr Natalenko + 1 tootai + 1 Jacek Konieczny + 1 Julien + 1 Vyrva Igor + 1 Scott Griepentrog + 1 Sta Retji + 1 Joshua C. Colp + 1 dovid + 1 Yoooooo Ha + 1 kevin@phoneburner.com + 1 Gil Richard + 1 Alex Hermann + 1 Bernard Merindol + 1 Alexey Vasilyev + 1 Ivan Poddubny + 1 Kirill Katsnelson + 1 Joseph Nadiv + 1 Jared Hull + 1 Andrea Sannucci + 1 Asterisk to be + misaligned. + 1 Matthew Kern + 1 Mikhail Ivanov + 1 boatright + 1 Frank Matano + 1 Cédric Bassaget + 1 Luke-Jr + 1 Patrick Wakano + 1 Joeran Vinzens + 1 test011 + 1 Mark + 1 Jim Van Meggelen + 1 David Cunningham + 1 Jim Van Meggelen + 1 Daniel + 1 Jared Hull + 1 Ronald Raikes + 1 Cao Minh Hiep + 1 Robert Sutton + 1 Jonathan Hunter + 1 David Lee + 1 David Hajek + 1 Carlos Oliva + 1 Alexander Gonchiy + 1 the CC variable, + instead of + unconditionally + 1 Francesco Castellano + 1 EDV O-TON + 1 Ted G + 1 Stanislav Abramenkov + 1 Alexander Akimov + 1 Anton Satskiy + 1 Niklas Larsson + 1 Francois Blackburn + 1 Michael Newton + 1 Alexander Greiner-Baer + 1 Gant Liu + 1 Ian Gilmour + 1 Sotiris Ganouris + 1 Philip Young + 1 Università di Bologna - + CESIA VoIP + 1 Morten Tryfoss + 1 Eliel Sardañons + 1 AvayaXAsterisk + 1 Dirk Wendland + 1 Luke-Jr + 1 Moritz Fain + 1 Valentin Vidić + 1 xrobau + 1 Valentin Safonov + 1 Peter Sokolov + 1 Kirsty Tyerman + 1 Michael Welk + 1 Martin Tomec + 1 N A + 1 Stefan Repke + 1 Marco Paland + 1 Sylvain Afchain + 1 Daniel Heckl + 1 Oleksandr Natalenko + 1 N GM + 1 Abhay Gupta + 1 AvayaXAsterisk + 1 Steven Wheeler + 1 Luit van Drongelen + 1 Dirk Wendland + 1 Bryan Nelson + 1 Paul Sandys + 1 Gerald Schnabel + 1 Thomas Frederiksen + 1 Vitezslav Novy + 1 Misha Vodsedalek + 1 Eric Dantie + 1 Nicholas John Koch + 1 Caesar + 1 Sam Banks + 1 Majdi Bsoul + 1 Byron Clark + 1 Christoph + Moench-Tegeder + 1 Evandro César Arruda + 1 Michal Hajek + 1 Yury Kirsanov + 1 Jason Hord + 1 Kevin Flyn + 1 Vitold + 1 Samuel Owens + 1 Shlomi Gutman + 1 seanchann.zhou + 1 Dan Jenkins + 1 Gianluca Merlo + 1 Kilburn + 1 Aheliotech + 1 Sarah Autumn + 1 Anton Satskiy + 1 Michael Munger + 1 Kirsty Tyerman + 1 Michael Walton + 1 Janu + 1 Miguel Sanz + 1 Isaac McDonald + 1 Ove Aursand + 1 Daniel Zanutti + 1 Antoni Goldstein + 1 Joshua Roys + 1 Maciej Michno + 1 Francisco Correia + 1 Rodrigo Ramirez + Norambuena + 1 Walter Doekes + 1 Stas Kobzar + 1 Francisco Seratti + 1 Xiemin Chen + 1 Frank Matano + 1 Yury Kirsanov + 1 David Hajek + 1 Andrey V. T. + 1 Juan Martin + 1 Mario Ban + 1 Dmitry Shubin + 1 Dmitriy Serov + 1 Hendrik Wedhorn + 1 Flole Systems + 1 Ted G + 1 Martin Zeh + 1 Boolah + 1 Ernani José Camargo + Azevedo + 1 Steven Wheeler + 1 Diederik de Groot + 1 Paul Sandys + 1 Vyrva Igor + 1 IAMJames_ + 1 Nasir Iqbal + 1 Chris Savinovich + 1 Patrick Wakano + 1 Jasper van der Neut + 1 Eliel Sardañons + 1 Jasper Hafkenscheid + 1 dennis + 1 Guido Weckwerth + 1 Jan Hoffmann + 1 candrews + 1 Olivier Krief + 1 Lucas Tardioli Silveira + 1 Igor Liferenko + 1 Michael Goryainov + 1 Moises Silva + 1 xiemchen + 1 Richard Kenner + 1 EDV O-TON + 1 siggi + 1 sstream + 1 Peter Katzmann + 1 Michael Cargile + 1 Jan Hoffmann + 1 Alex Odrov + 1 Edvin Vidmar + 1 rleasure + 1 Will + 1 Jonas Swiatek + 1 Ray + 1 Roman Pertsev + 1 Cao Minh Hiep + 1 Dennis Haney + 1 Bernd Zobl + 1 Francisco Seratti + 1 Robin Leffmann + 1 Vitold + 1 Rijnhard Hessel + 1 Alexander Zharov + 1 Andrej + 1 klaus3000 + 1 Dmitriy Serov + 1 Kevin Reeves + 1 Niklas Larsson + 1 Siruja Maharjan + 1 Samuel Galarneau + 1 Maciej Michno + 1 Benjamin M. + 1 Francisco Correia + 1 Philip Mott + 1 周家建 + 1 Sotiris Ganouris + 1 vijay kumar + 1 Charlie Smurthwaite + 1 Andrew Nagy + 1 Ian Jones + 1 Jamuel Starkey + 1 Cameron + 1 Paulo Vicentini + 1 Marian Piater + 1 Jacek Konieczny + 1 David Wilcox + 1 Leandro Dardini + 1 alex + 1 Sandro Gauci + 1 Dovid Bender + 1 Sean Bright + 1 César Benjamín García + Martínez + 1 Brian Paboojian + 1 Cyril Ramière + 1 Jørgen H + + ---------------------------------------------------------------------- + + Closed Issues + + [Back to Top] + + This is a list of all issues from the issue tracker that were closed by + changes that went into this release. + + Deprecation + + Category: Addons/app_mysql + + ASTERISK-29555: app_mysql: Deprecated in 1.8, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Addons/cdr_mysql + + ASTERISK-29554: cdr_mysql: Deprecated in 1.8, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_dahdiras + + ASTERISK-29563: app_dahdiras: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_fax + + ASTERISK-29559: app_fax: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_ices + + ASTERISK-29557: app_ices: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_image + + ASTERISK-29561: app_image: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_macro + + ASTERISK-29558: app_macro: Deprecated in 16, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_meetme + + ASTERISK-29548: app_meetme: Deprecated in 19, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_nbscat + + ASTERISK-29562: app_nbscat: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_osplookup + + ASTERISK-29549: app_osploop: Deprecated in 19, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Applications/app_url + + ASTERISK-29560: app_url: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: CDR/cdr_syslog + + ASTERISK-29564: cdr_syslog: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_alsa + + ASTERISK-29550: chan_alsa: Deprecated in 19, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_mgcp + + ASTERISK-29551: chan_mgcp: Deprecated in 19, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_misdn + + ASTERISK-29569: chan_misdn: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_nbs + + ASTERISK-29568: chan_nbs: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_oss + + ASTERISK-29565: chan_oss: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_phone + + ASTERISK-29566: chan_phone: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_sip/General + + ASTERISK-29567: chan_sip: Deprecated in 17, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_skinny + + ASTERISK-29552: chan_skinny: Deprecated in 19, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Channels/chan_vpb + + ASTERISK-29570: chan_vpb: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Contrib/General + + ASTERISK-29574: muted: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: PBX/General + + ASTERISK-29573: conf2ael: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Resources/General + + ASTERISK-29553: res_pktccops: Deprecated in 19, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Resources/res_config_sqlite + + ASTERISK-29571: res_config_sqlite: Deprecated in 16, to be removed in 19 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Category: Resources/res_monitor + + ASTERISK-29572: res_monitor: Deprecated in 16, to be removed in 21 + Reported by: Joshua C. Colp + * [13fd0789a2] Joshua C. Colp -- policy: Add deprecation and removal + versions to modules. + + Security + + Category: Channels/chan_pjsip + + ASTERISK-29415: Crash in PJSIP TLS transport + Reported by: Andrew Yager + * [3025ef4f6e] Kevin Harwell -- AST-2021-009 - pjproject-bundled: Avoid + crash during handshake for TLS + ASTERISK-28260: Asterisk segfault when rtp negotiation is wrong or fails + Reported by: Sotiris Ganouris + * [8f9ffe5905] George Joseph -- res_pjsip_sdp_rtp: Fix return code from + apply_negotiated_sdp_stream + + Category: Channels/chan_sip/General + + ASTERISK-28589: chan_sip: Depending on configuration an INVITE can alter + Addr of a peer + Reported by: Andrey V. T. + * [4a1cadeadb] Ben Ford -- chan_sip.c: Prevent address change on + unauthenticated SIP request. + + Category: Channels/chan_sip/Interoperability + + ASTERISK-28465: Broken SDP can cause a segfault in a T.38 reINVITE + Reported by: Francesco Castellano + * [8438d19b81] Francesco Castellano -- chan_sip: Handle invalid SDP + answer to T.38 re-invite + + Category: Core/DNS + + ASTERISK-28127: Buffer overflow for DNS SRV/NAPTR records + Reported by: Jan Hoffmann + * [eb5b83b8ea] Jan Hoffmann -- AST-2018-010: Fix length of buffer needed + for SRV and NAPTR results + + Category: Core/ManagerInterface + + ASTERISK-28580: Bypass SYSTEM write permission in manager action allows + system commands execution + Reported by: Eliel Sardañons + * [7e3a6e158f] George Joseph -- manager.c: Prevent the Originate action + from running the Originate app + + Category: Resources/res_http_websocket + + ASTERISK-28013: res_http_websocket: Crash when reading HTTP Upgrade + requests + Reported by: Sean Bright + * [a801543f79] Sean Bright -- AST-2018-009: Fix crash processing + websocket HTTP Upgrade requests + + Category: Resources/res_pjsip_diversion + + ASTERISK-29219: res_pjsip_diversion: Crash if Tel URI contains + History-Info + Reported by: Torrey Searle + * [a7aea71e60] Torrey Searle -- res/res_pjsip_diversion: prevent crash + on tel: uri in History-Info + + Category: Resources/res_pjsip_messaging + + ASTERISK-28447: res_pjsip_messaging: In-dialog MESSAGE with no body causes + crash + Reported by: Gil Richard + * [3c520147e1] George Joseph -- res_pjsip_messaging: Check for body in + in-dialog message + + Category: Resources/res_pjsip_session + + ASTERISK-29381: chan_pjsip: Remote denial of service by an authenticated + user + Reported by: Ivan Poddubny + * [523a795289] Joshua C. Colp -- AST-2021-007 - res_pjsip_session: Don't + offer if no channel exists. + + Category: Resources/res_pjsip_t38 + + ASTERISK-29305: ASTERISK-29203 / AST-2021-002 -- Another scenario is + causing a crash + Reported by: Gregory Massel + * [77328142b4] Ben Ford -- AST-2021-006 - res_pjsip_t38.c: Check for + session_media on reinvite. + ASTERISK-28495: res_pjsip_t38: 200 OK with SDP answer with declined stream + causes crash + Reported by: Alexei Gradinari + * [18f5f5fc99] Alexei Gradinari -- AST-2019-004 - res_pjsip_t38.c: Add + NULL checks before using session media + + Category: Resources/res_srtp + + ASTERISK-29260: sRTP Replay Protection ignored; even tears down long calls + Reported by: Alexander Traud + * [703158b903] Alexander Traud -- rtp: Enable srtp replay protection + + Category: pjproject/pjsip + + ASTERISK-29227: res_pjsip_diversion: sending multiple 181 responses causes + memory corruption and crash + Reported by: Ivan Poddubny + * [2770cc5872] Ivan Poddubnyi -- res_pjsip_diversion: Fix adding more + than one histinfo to Supported + ASTERISK-29057: pjsip: Crash on call rejection during high load + Reported by: Sandro Gauci + * [6baa4b53be] Kevin Harwell -- AST-2020-001 - res_pjsip: Return dialog + locked and referenced + + New Feature + + Category: Applications/NewFeature + + ASTERISK-29496: Add SendMF application + Reported by: N A + * [60daa8f761] Naveen Albert -- app_mf: Add channel agnostic MF sender + ASTERISK-29454: New application to reload modules + Reported by: N A + * [a41d192e99] Naveen Albert -- app_reload: New Reload application + ASTERISK-29444: Add application to wait for condition + Reported by: N A + * [1b21b1abf7] Naveen Albert -- app_waitforcond: New application + + Category: Applications/app_confbridge + + ASTERISK-29446: app_confbridge: New ConfKick application + Reported by: N A + * [a40e58a4da] Naveen Albert -- app_confbridge: New ConfKick() + application + ASTERISK-29440: app_confbridge: Allow ConfBridge answer to be suppressed + Reported by: N A + * [a861522467] Naveen Albert -- app_confbridge: New option to prevent + answer supervision + + Category: Applications/app_dial + + ASTERISK-29442: app_dial: Expand A option to allow announcement playback + to caller + Reported by: N A + * [c4236dcff2] Naveen Albert -- app_dial: Expanded A option to add + caller announcement + + Category: Applications/app_queue + + ASTERISK-18069: [patch] app_queue Add Login Time and Last Paused Times to + Queue Members + Reported by: Jamuel Starkey + * [a203769c9d] Rodrigo Ramírez Norambuena -- app_queue: Add LoginTime + field for member in a queue. + + Category: Applications/app_read + + ASTERISK-18454: Option for Read to be able to accept # + Reported by: Sta Retji + * [dd980e00b4] Naveen Albert -- app_read: Allow reading # as a digit + + Category: Applications/app_senddtmf + + ASTERISK-28614: app_senddtmf: Allow "receiving" DTMF with PlayDTMF instead + of only "sending" + Reported by: laszlovl + * [772b59034f] laszlovl -- app_senddtmf: Add receive mode to AMI Action + PlayDTMF + + Category: Channels/chan_pjsip + + ASTERISK-27477: Chan_pjsip does not support unauthenticated OPTIONS ping + Reported by: Ross Beer + * [d2dcd15bd8] Sean Bright -- res_pjsip.c: OPTIONS processing can now + optionally skip authentication + + Category: Core/General + + ASTERISK-11: AGI channel_status failure + Reported by: bbawkon + * [feb1e06ac5] under -- codec_builtin.c: G729 audio gets corrupted by + Asterisk due to smoother + ASTERISK-6863: [patch] allow Asterisk to set high ToS bits as non-root on + Linux + Reported by: Matt Addison + * [a107e85b2e] Alexander Traud -- install_prereq: Add libcap for high + bits in DiffServ/ToS. + + Category: Core/Jitterbuffer + + ASTERISK-28533: func_jitterbuffer: Add support for video synchronization + Reported by: Joshua C. Colp + * [7298a785ad] Joshua Colp -- func_jitterbuffer: Add audio/video sync + support. + + Category: Functions/NewFeature + + ASTERISK-29531: Add SAYFILES function + Reported by: N A + * [b6b7b1490b] Naveen Albert -- func_sayfiles: Retrieve say file names + ASTERISK-29542: Add audio scrambler + Reported by: N A + * [3eec5b8c5c] Naveen Albert -- func_scramble: Audio scrambler function + ASTERISK-29478: Function to drop frames in the TX or RX directions + Reported by: N A + * [118d848238] Naveen Albert -- func_frame_drop: New function + ASTERISK-29477: Function to asynchronously store digits dialed + Reported by: N A + * [016f6a0e14] Naveen Albert -- app_dtmfstore: New application to store + digits + ASTERISK-29431: Minimum and maximum dialplan functions + Reported by: N A + * [9106c9d1f1] Naveen Albert -- func_math: Three new dialplan functions + + Category: Functions/func_channel + + ASTERISK-29656: Add CHANNEL_EXISTS function + Reported by: N A + * [cf0d656ae6] Naveen Albert -- func_channel: Add CHANNEL_EXISTS + function. + + Category: Functions/func_curl + + ASTERISK-17491: CURLOPT() needs a "followlocation" parameter / "maxredirs" + doesn't do anything + Reported by: candrews + * [0c2bf1664c] Sean Bright -- func_curl: Add 'followlocation' option to + CURLOPT() + ASTERISK-28613: func_curl: CURLOPT cannot set Content-Type header + Reported by: Martin Tomec + * [d257a0898e] Martin Tomec -- func_curl.c: Support custom http headers + + Category: Functions/func_env + + ASTERISK-29628: Add file and directory functions + Reported by: N A + * [19de228e8b] Naveen Albert -- func_env: Add DIRNAME and BASENAME + functions + + Category: Functions/func_strings + + ASTERISK-29627: Add STRBETWEEN function + Reported by: N A + * [6198c1d28c] Naveen Albert -- func_strings: Add STRBETWEEN function + + Category: Functions/func_volume + + ASTERISK-29439: func_volume: Volume function can't be read + Reported by: N A + * [033c2a2283] Naveen Albert -- func_volume: Add read capability to + function. + + Category: Resources/General + + ASTERISK-28403: Add native Prometheus support to Asterisk + Reported by: Matt Jordan + * [0bb38796b7] Matt Jordan -- res_prometheus: Add metrics for PJSIP + outbound registrations + * [a2648b22eb] Matt Jordan -- res_prometheus: Add CLI commands + * [066280f0cc] Matt Jordan -- res_prometheus: Add Asterisk bridge + metrics + * [ed6cd13b5b] Matt Jordan -- res_prometheus: Add Asterisk endpoint + metrics + * [0760af71ad] Matt Jordan -- res_prometheus: Add Asterisk channel + metrics + * [c50f29dfad] Matt Jordan -- Add core Prometheus support to Asterisk + + Category: Resources/NewFeature + + ASTERISK-29720: res_tonedetect: Add call progress tone detection + Reported by: N A + * [ca2e13e18f] Naveen Albert -- res_tonedetect: Add call progress tone + detection + ASTERISK-29546: Add tone detection module + Reported by: N A + * [a6eb1b6f95] Naveen Albert -- res_tonedetect: Tone detection module + + Category: Resources/res_ari + + ASTERISK-28267: res_stasis: Add ability to switch applications + Reported by: Benjamin Keith Ford + * [6626df586e] Ben Ford -- res_stasis: Add ability to switch + applications. + + Category: Resources/res_ari_channels + + ASTERISK-28320: Added ARI resource + /ari/channels/{channelid}/rtp_statistics + Reported by: sungtae kim + * [71c0c7f631] sungtae kim -- res/res_ari: Added ARI resource + /ari/channels/{channelId}/rtp_statistics + + Category: Resources/res_musiconhold + + ASTERISK-17808: [patch] Unregister a realtime moh class + Reported by: Byron Clark + * [cf364cd007] sungtae kim -- res_musiconhold: Added unregister realtime + moh class + + Category: Resources/res_pjsip + + ASTERISK-28375: res_pjsip: New configuration setting to allow disabling + norefersub + Reported by: Dan Cropp + * [cffa2a74cb] Dan Cropp -- res_pjsip: Added a norefersub configuration + setting + + Category: Resources/res_pjsip_diversion + + ASTERISK-29027: Implement support for History-Info + Reported by: Torrey Searle + * [83140c9fed] Torrey Searle -- res_pjsip_diversion: implement support + for History-Info + + Category: Resources/res_pjsip_endpoint_identifier_ip + + ASTERISK-28639: res_pjsip_endpoint_identifier_ip: Add ability to match on + source port + Reported by: Sean Bright + * [312abaa1fe] Sean Bright -- res_pjsip_endpoint_identifier_ip.c: Add + port matching support + + Category: Resources/res_pjsip_header_funcs + + ASTERISK-29389: Add PJSIP_HEADERS() and ability to read header by pattern + Reported by: Igor Goncharovsky + * [1e4ed61a2b] Igor Goncharovsky -- res_pjsip_header_funcs: Add + PJSIP_HEADERS() ability to read header by pattern + + Category: Resources/res_pjsip_outbound_registration + + ASTERISK-27971: res_pjsip: Implement additional SIP RFCs for Google Voice + trunk compatability + Reported by: Nick French + * [37b2e68628] Nick French -- res_pjsip: Implement additional SIP RFCs + for Google Voice trunk compatability + + Category: Resources/res_pjsip_refer + + ASTERISK-28375: res_pjsip: New configuration setting to allow disabling + norefersub + Reported by: Dan Cropp + * [cffa2a74cb] Dan Cropp -- res_pjsip: Added a norefersub configuration + setting + + Category: Resources/res_pjsip_session + + ASTERISK-28087: add flag to allow CALLERID(num) to be placed in Contact + header in chan_pjsip + Reported by: Torrey Searle + * [0c9e217c81] Joshua Colp -- res_pjsip: Add XML documentation for + "use_callerid_contact" + * [c7528f16e6] Richard Mudgett -- alembic: Fix use_callerid_contact + option add script. + * [cac4ccef25] Torrey Searle -- res_pjsip_session: add new flag + use_callerid_contact + + Category: pjproject/pjsip + + ASTERISK-28489: Channel variable SIPFROMDOMAIN for chan_pjsip to setup + From header URI domain + Reported by: Stas Kobzar + * [c7270dca81] Stas Kobzar -- res_pjsip: Channel variable SIPFROMDOMAIN + ASTERISK-27971: res_pjsip: Implement additional SIP RFCs for Google Voice + trunk compatability + Reported by: Nick French + * [37b2e68628] Nick French -- res_pjsip: Implement additional SIP RFCs + for Google Voice trunk compatability + + Bug + + Category: . I did not set the category correctly. + + ASTERISK-29755: frame: Fix for Doxygen + Reported by: Alexander Traud + * [b5962fe528] Alexander Traud -- frame: Fix for Doxygen. + ASTERISK-29146: GCC Warnings: ‘%s’ directive argument is null. + Reported by: Alexander Traud + * [f86af1fbd0] Alexander Traud -- Compiler fixes for GCC when printf %s + is NULL + ASTERISK-28221: Bug in ast_coredumper + Reported by: Andrew Nagy + * [809e836265] George Joseph -- ast_coredumper: Refactor the pid + determination process + + Category: .Release/Targets + + ASTERISK-28488: pjsip mwi: n+1 sip notify's sent on re-register + Reported by: Chris Savinovich + * [172e183b9d] Kevin Harwell -- res_pjsip_mwi: add better handling of + solicited vs unsolicited subscriptions + + Category: Addons/chan_mobile + + ASTERISK-29742: addons: Fix for Doxygen. + Reported by: Alexander Traud + * [026c6d51b1] Alexander Traud -- addons: Fix for Doxygen. + + Category: Addons/chan_ooh323 + + ASTERISK-28348: Failed to initialize OOH323 endpoint-OOH323 Disabled + Reported by: Dmitry Shubin + * [a8f1e26d34] Alexander Anikin -- chan_ooh323: fix h323 log file path + + Category: Applications/General + + ASTERISK-29816: SAY_DTMF_INTERRUPT channel variable is not honored + Reported by: Sean Bright + * [5274bfdc07] Sean Bright -- say.c: Honor requests for DTMF + interruption. + ASTERISK-29752: app: Fix for Doxygen + Reported by: Alexander Traud + * [e7d5db1471] Alexander Traud -- app: Fix for Doxygen. + ASTERISK-29287: app.h: C++ compatibility broken + Reported by: Jean Aunis - Prescom + * [916d5d5e45] Jaco Kroon -- app.h: Restore C++ compatibility for macro + AST_DECLARE_APP_ARGS + ASTERISK-28954: StreamEcho() only returns 1 active stream + Reported by: Bill Kervaski + * [00a52b4752] Joshua C. Colp -- app_stream_echo: Fix state of added + streams. + ASTERISK-16676: DAHDIRAS fails to properly initiate pppd unless asterisk + is running as root + Reported by: Jaco Kroon + * [4f92dcd66b] Jaco Kroon -- dahdiras: Only set plugin dahdi.so to pppd + if we're running as root. + + Category: Applications/app_agent_pool + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-29614: app_agent_pool: XML Doc: unterminated entity reference + Reported by: Alexander Traud + * [5c836c8e36] Sean Bright -- config_options: Handle ACO arrays + correctly in generated XML docs. + + Category: Applications/app_alarmreceiver + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + + Category: Applications/app_amd + + ASTERISK-28608: app_amd: Use time calculation to calculate timeout + Reported by: Michael Cargile + * [5bda460300] Michael Cargile -- app_amd: Fixed timeout issue + ASTERISK-28419: app_amd: Does not work with silence suppression + Reported by: Nasir Iqbal + * [29bc7cf6b3] Nasir Iqbal -- app_amd: issue with silence suppression + fixed + ASTERISK-28143: app_amd: Infinite loop on silent calls + Reported by: Abhay Gupta + * [7ce6d960d4] Abhay Gupta -- app_amd: Fix infinite loop on silent calls + + Category: Applications/app_bridgewait + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + + Category: Applications/app_chanisavail + + ASTERISK-28636: app_chanisavail+cdr: ChanIsAvail sometimes fails to + deactivate CDR. + Reported by: Frederic LE FOLL + * [a83625b366] Frederic LE FOLL -- app_chanisavail/cdr: ChanIsAvail + sometimes fails to deactivate CDR. + ASTERISK-28527: ChanIsAvail() creates a CDR if unanswered=yes is set in + cdr.conf + Reported by: Frederic LE FOLL + * [2d0eee5418] Frederic LE FOLL -- ChanIsAvail() generates a CDR when + unanswered=yes in cdr.conf. + + Category: Applications/app_chanspy + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-28883: Spyee information ist missing in ChanSpyStop AMI Event + Reported by: Hendrik Wedhorn + * [13682210e2] Sean Bright -- app_chanspy: Spyee information missing in + ChanSpyStop AMI Event + + Category: Applications/app_confbridge + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-29618: ConfBridge errors on creation conference room + Reported by: Alexander Zharov + * [de19836c24] George Joseph -- bridge_softmix: Suppress error on + topology change failure + ASTERISK-29071: app_confbridge: Memory rises when jitterbuffer enabled and + muting over AMI occurs + Reported by: Stefan Ruf + * [f7bda066bb] Joshua C. Colp -- channel: Fix crash in suppress API. + * [b43b81d953] Joshua C. Colp -- channel: Fix memory leak in suppress + API. + ASTERISK-28841: app_confbridge: Add support for disabling text messaging + for a user + Reported by: Joshua C. Colp + * [6cfc6ff53c] Joshua C. Colp -- confbridge: Add support for disabling + text messaging. + ASTERISK-28790: Crash during conference call using confbridge and video + Reported by: Pascal Cadotte Michaud + * [96e8d411e1] Joshua C. Colp -- res_rtp_asterisk: Ensure sufficient + space for worst case NACK. + ASTERISK-28201: [patch] confbridge: no announce to the marked users when + they join an empty conference + Reported by: Alexei Gradinari + * [cb1a08bdcb] Alexei Gradinari -- confbridge: announce to the marked + users when they join an empty conference + ASTERISK-28107: app_confbridge: Participant info labels aren't being added + to the SDPs + Reported by: George Joseph + * [8d1c6bb6e6] George Joseph -- bridge_softmix: Add SDP "label" + attribute to streams + + Category: Applications/app_dial + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-29329: app_dial: DTMF to 'D' option gets duplicated if there are + multiple progress events + Reported by: N A + * [94debe5085] Sean Bright -- app_dial.c: Only send DTMF on first + progress event. + ASTERISK-27980: Caller ID cannot be changed on Attended Transfer before + dialing out + Reported by: Alexei Gradinari + * [4a567cee3a] Alexei Gradinari -- app_dial/queue/followme: 'I' options + to block initial updates in both directions + + Category: Applications/app_directory + + ASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make + Reported by: Alexander Traud + * [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og + + Category: Applications/app_fax + + ASTERISK-28848: app_fax: Compile. + Reported by: Alexander Traud + * [26b8c99963] Alexander Traud -- app_fax: SpanDSP headers do not use + ast_malloc; ignore that. + + Category: Applications/app_followme + + ASTERISK-27980: Caller ID cannot be changed on Attended Transfer before + dialing out + Reported by: Alexei Gradinari + * [4a567cee3a] Alexei Gradinari -- app_dial/queue/followme: 'I' options + to block initial updates in both directions + + Category: Applications/app_jack + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + + Category: Applications/app_meetme + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-28604: app_meetme, chan_ooh323 and cdr_mysql don't build on + 17.0.0 + Reported by: George Joseph + * [ed394ce5b1] Joshua C. Colp -- configure: Add check for MySQL client + bool and my_bool type usage. + * [a47cb71bb1] George Joseph -- Build: Fix compile issues with seldom + used modules + ASTERISK-28328: MeetMe global non-admin mute is muting admins that + subsequently join + Reported by: Philip Mott + * [57850c7861] Sean Bright -- app_meetme: Don't mute joining admins if + conference is muted + + Category: Applications/app_milliwatt + + ASTERISK-29575: app_milliwatt: Milliwatt application doesn't use the + proper timings + Reported by: N A + * [dffc5e7f5c] Naveen Albert -- app_milliwatt: Timing fix + + Category: Applications/app_minivm + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + + Category: Applications/app_mixmonitor + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-28947: Segmentation fault in mixmonitor_ds_destroy + Reported by: Robert Sutton + * [0e1ba9a778] Kevin Harwell -- app_mixmonitor: cleanup datastore when + monitor thread fails to launch + ASTERISK-28780: app_mixmonitor: Memory leak due to race condition between + AMI MixMonitor and hangup + Reported by: Joshua C. Colp + * [98d10d0a16] Joshua C. Colp -- audiohook: Don't allow audiohooks to + attach to hung up channels. + + Category: Applications/app_morsecode + + ASTERISK-29744: app_morsecode: Fix deadlock + Reported by: N A + * [721026ff37] Naveen Albert -- app_morsecode: Fix deadlock + + Category: Applications/app_mp3 + + ASTERISK-29635: MP3Player don' t work with actual mpg123 versions + Reported by: Carlos Oliva + * [e8f7b53023] Carlos Oliva -- app_mp3: Force output to 16 bits in + mpg123 + + Category: Applications/app_osplookup + + ASTERISK-28804: [patch] app_osplookup.c: Avoid a format truncation. + Reported by: Alexander Traud + * [527e4f6542] Alexander Traud -- app_osplookup: Avoid a format + truncation. + + Category: Applications/app_page + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-16799: Callee declined when 'beep' audio file does not exist + Reported by: IAMJames_ + * [6673c1b177] Sean Bright -- app_page.c: Don't fail to Page if beep + sound file is missing + + Category: Applications/app_playback + + ASTERISK-27871: Remote URL in playback must end with file extension + Reported by: Caesar + * [76c09b1cfd] Sean Bright -- res_http_media_cache.c: Parse media URLs + to find extensions. + + Category: Applications/app_queue + + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-29578: app_queue: Custom device state using included hints do not + update + Reported by: N A + * [cfd0246d11] Naveen Albert -- app_queue: Fix hint updates for included + contexts + ASTERISK-28701: app_queue: Core reload resets queue stats, even when + keepstats=yes + Reported by: Luke Escude + * [c7af46995e] Naveen Albert -- app_queue: Don't reset queue stats on + reload + ASTERISK-28356: app_queue: CLI set ringinuse for realtime member not + working + Reported by: Michael + * [35302efe73] Sean Bright -- app_queue: Add alembic migration to add + ringinuse to queue_members. + ASTERISK-24631: Incorrect description of option "context" in + queues.conf.sample + Reported by: Etienne Lessard + * [31364fa4c8] Sean Bright -- queues.conf.sample: Correct 'context' + documentation. + ASTERISK-26614: app_queue: updatecdr option in queues.conf does + effectively nothing + Reported by: Alexander Gonchiy + * [e27fa9eceb] Sean Bright -- app_queue.c: Remove dead 'updatecdr' code. + ASTERISK-27542: app_queue: When "queue show" CLI command is executed a + crash occurs + Reported by: Miguel Sanz + * [4393207751] Sean Bright -- app_queue.c: Don't crash when realtime + queue name is empty. + ASTERISK-29355: app_queue: Queue member status message sent even if status + doesn't change + Reported by: Roman Pertsev + * [55c467eab1] Joshua C. Colp -- app_queue: Only send QueueMemberStatus + if status changes. + ASTERISK-28369: app_queue: Member device state "invalid" when second call + is ringing and hint is used + Reported by: Boolah + * [985d3e4940] Ivan Poddubnyi -- app_queue: Fix conversion of complex + extension states into device states + ASTERISK-29155: app_queue: Deadlock between queues container and + individual queues + Reported by: George Joseph + * [2413598705] George Joseph -- app_queue: Fix deadlock between update + and show queues + ASTERISK-25665: Duplicate logging in queue log for EXITEMPTY events + Reported by: Ove Aursand + * [c83e4821e5] Kfir Itzhak -- app_queue: Fix leave-empty not recording a + call as abandoned + ASTERISK-29043: app_queue: Leave empty sometimes not recorded as abandoned + Reported by: Kfir Itzhak + * [c83e4821e5] Kfir Itzhak -- app_queue: Fix leave-empty not recording a + call as abandoned + ASTERISK-29034: Lastpause of realtime members is reseting + Reported by: Evandro César Arruda + * [36dd15c659] Evandro César Arruda -- app_queue: Member lastpause time + reseting + ASTERISK-28951: Inconsistent behaviour queues.conf when there is (not) a + [general] section + Reported by: Walter Doekes + * [312c23b0e1] Walter Doekes -- app_queue: (Breaking change) + shared_lastcall and autofill default to no + ASTERISK-28950: Stale code in app_queue to check untouched channel + Reported by: Walter Doekes + * [db012e8cc6] Walter Doekes -- app_queue: Remove stale code in + try_calling + ASTERISK-28644: Stale comment in app_queue about ring_entry exception + Reported by: Walter Doekes + * [db012e8cc6] Walter Doekes -- app_queue: Remove stale code in + try_calling + * [0e750cdd10] Walter Doekes -- app_queue: Fix old confusing comment + about when the members are called + ASTERISK-28952: Queue wrapuptime sometimes not respected (based on stale + lastcall time) + Reported by: Walter Doekes + * [0fb6738314] Walter Doekes -- app_queue: Read latest wrapuptime + instead of (possibly stale) copy + ASTERISK-28829: app_queue: leaking stasis subscription when Redirecting + call + Reported by: laszlovl + * [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in + app_queue to avoid leaked stasis subscriptions + ASTERISK-25844: app_queue: Ghost channels in "core show channels" output + Reported by: Etienne Lessard + * [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in + app_queue to avoid leaked stasis subscriptions + ASTERISK-28349: Pause reason not reported in QueueMember AMI event + Reported by: Niksa Baldun + * [9522390a69] Sean Bright -- app_queue: Deprecate the + QueueMemberPause.Reason field + ASTERISK-27541: app_queue: Queue paused reason was (big number) secs ago + when reason is set + Reported by: César Benjamín García Martínez + * [e8cf3693f6] Sean Bright -- app_queue: Fix a few member pause bugs + ASTERISK-20986: QUEUE_MEMBER 's description is inaccurate + Reported by: Olivier Krief + * [834d022da5] Sean Bright -- app_queue: Fix documentation for + QUEUE_MEMBER function. + ASTERISK-27964: app_queue: ring_entry accesses nativeformats without + channel lock or reference + Reported by: Francisco Seratti + * [48e407e506] Dömsödi Gergely -- app_queue: fix ring_entry to access + nativeformats with a channel lock + ASTERISK-28168: app_queue: Adding a blank entry into sql queue_members + crashes asterisk. + Reported by: Michael + * [f6b5b7208c] Sean Bright -- app_queue: Handle empty 'interface' in + queue member config + ASTERISK-28218: app_queue: Asterisk crashes when using Queue with a + pre-dial handler (option b) + Reported by: Mark + * [b7b080a0aa] Joshua Colp -- app_queue: Fix crash when using 'b' option + on non-ringall queue. + ASTERISK-28125: app_queue: Revert broken queue channel reference patch + Reported by: laszlovl + * [140702ba2d] laszlovl -- app_queue: Revert broken queue channel + reference patch + ASTERISK-27980: Caller ID cannot be changed on Attended Transfer before + dialing out + Reported by: Alexei Gradinari + * [4a567cee3a] Alexei Gradinari -- app_dial/queue/followme: 'I' options + to block initial updates in both directions + ASTERISK-27920: app_queue: Queue member considered inuse after immediately + hanging up during dialing. + Reported by: Cao Minh Hiep + * [f23a12244d] Cao Minh Hiep -- app_queue: Fix Attended transfer hangup + with removing pending member. + ASTERISK-28032: Realtime queuemembers are not updated during retry phase + Reported by: laszlovl + * [1174759f0c] laszlovl -- app_queue: Update realtime queuemembers after + wait_a_bit(), not before + ASTERISK-27973: app_queue: QUEUESTATUS = CONTINUE instead LEAVEEMPTY + Reported by: Valentin Safonov + * [2ce061091e] Ivan Poddubny -- app_queue: set QUEUESTATUS to LEAVEEMPTY + instead of CONTINUE + + Category: Applications/app_read + + ASTERISK-29705: app_read: Fix custom terminator functionality regression + Reported by: N A + * [3c4b7cef64] Naveen Albert -- app_read: Fix custom terminator + functionality regression + ASTERISK-29673: app_read: Fix null pointer crash regression + Reported by: N A + * [5a6f140765] Naveen Albert -- app_read: Fix null pointer crash + + Category: Applications/app_record + + ASTERISK-28682: app_record: Lack of `beep` audio file causes application + to return error and hangup + Reported by: Corey Farrell + * [2f8b20b949] Corey Farrell -- app_record: Do not hang up if beep audio + is missing + + Category: Applications/app_saynumber + + ASTERISK-29475: SayNumber triggers WARNING if caller hangs up during + application execution + Reported by: N A + * [2b174a38fe] Naveen Albert -- pbx_builtins: Corrects SayNumber warning + + Category: Applications/app_skel + + ASTERISK-29614: app_agent_pool: XML Doc: unterminated entity reference + Reported by: Alexander Traud + * [5c836c8e36] Sean Bright -- config_options: Handle ACO arrays + correctly in generated XML docs. + + Category: Applications/app_system + + ASTERISK-28776: Non async-signal-safe syscalls used after fork before exec + Reported by: nappsoft + * [6b2d945174] Pirmin Walthert -- app.c: make sure that no + non-async-signal-safe syscalls are used after + + Category: Applications/app_transfer + + ASTERISK-26968: chan_pjsip: Transfer() does not result in TRANSFERSTATUS + reflecting SIP response to transfer + Reported by: Dan Cropp + * [e52fbae00f] Dan Cropp -- chan_pjsip: Transmit REFER waits for the + REFER result setting TRANSFERSTATUS + + Category: Applications/app_voicemail + + ASTERISK-29859: VoiceMailMain() fails when encountering non-numeric + CALLERID(num) + Reported by: Mark Murawski + * [059eca1546] Sean Bright -- say.c: Prevent erroneous failures with + 'say' family of functions. + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-29391: VoiceMail does not cancel recording on rerecord hangup + Reported by: N A + * [92857e70b6] Naveen Albert -- app_voicemail: Fix phantom voicemail bug + on rerecord + ASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make + Reported by: Alexander Traud + * [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og + ASTERISK-26424: app_voicemail: Undocumented behavior from VMSayName + Reported by: Eric Smith + * [abee490639] Sean Bright -- app_voicemail.c: Document VMSayName + interruption behavior + ASTERISK-27273: app_voicemail: When a voicemail is marked as "Urgent", it + is not sent by email/processed by the mailcmd command + Reported by: Leandro Dardini + * [b575868000] Sean Bright -- app_voicemail: Process urgent messages + with mailcmd + ASTERISK-23739: [patch]Segfault forwarding voicemail with ODBC storage + enabled and realtime voicemail_data is used + Reported by: Stas Kobzar + * [ba8ccb9132] Sean Bright -- app_voicemail: Prevent crash when saving + message with realtime voicemail + ASTERISK-27622: empty voicemail.conf required for ARA (realtime) voicemail + to leave message + Reported by: Jim Van Meggelen + * [9be89d9913] Sean Bright -- app_voicemail: Set globals to default + values when voicemail.conf missing + ASTERISK-27935: app_voicemail: emailbody per user can't contain commas + Reported by: Sébastien Duthil + * [d58d7d4500] Sean Bright -- app_voicemail: Don't split mailbox options + on comma + ASTERISK-28306: res_pjsip_mwi: MWI NOTIFY occasionally takes minutes to be + sent + Reported by: Jared Hull + * [63d90c38eb] George Joseph -- app.c: Remove deletion of pool topic on + mwi state delete + ASTERISK-28166: app_voicemail: Asterisk unresponsive after changing + voicemail password with ODBC + Reported by: Michael + * [719a4643ab] Sean Bright -- res_config_odbc: Avoid deadlock when + max_connections = 1 + ASTERISK-28225: app_voicemail: Channel variable VM_MESSAGEFILE not updated + correctly if message marked "urgent" + Reported by: boatright + * [2c48b5d9bf] Bryan Boatright -- app_voicemail: Fix Channel variable + VM_MESSAGEFILE for "urgent" voicemail + ASTERISK-28222: Regression: MWI polling no longer works + Reported by: abelbeck + * [4c084c6b1b] George Joseph -- Revert "stasis_cache: Stop caching + stasis subscription change messages" + ASTERISK-28215: app_voicemail: Leaving voicemail sometimes doesn't trigger + NOTIFYs + Reported by: George Joseph + * [c23c8d92d5] George Joseph -- app_voicemail: Don't delete mailbox + state unless mailbox is deleted + ASTERISK-28151: app_voicemail: MWI fails with mailboxes=##@device instead + of mailboxes=##@default + Reported by: Ronald Raikes + * [4f0bf0270e] George Joseph -- Revert "app_voicemail: Remove need to + subscribe to stasis" + + Category: Applications/app_voicemail/IMAP + + ASTERISK-28505: app_voicemail/IMAP: segfault in leave_voicemail because + not checking mailstream + Reported by: Alexei Gradinari + * [15624d9a7a] Alexei Gradinari -- app_voicemail/IMAP: check mailstream + not NULL in leave_voicemail + + Category: Applications/app_voicemail/ODBC + + ASTERISK-23739: [patch]Segfault forwarding voicemail with ODBC storage + enabled and realtime voicemail_data is used + Reported by: Stas Kobzar + * [ba8ccb9132] Sean Bright -- app_voicemail: Prevent crash when saving + message with realtime voicemail + + Category: Bridges/bridge_builtin_features + + ASTERISK-28920: bridge show all causes crash + Reported by: sungtae kim + * [25ae412f75] sungtae kim -- bridge.c: Fixed null pointer exception + + Category: Bridges/bridge_holding + + ASTERISK-29743: bridges: Fix for Doxygen + Reported by: Alexander Traud + * [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen. + + Category: Bridges/bridge_native_rtp + + ASTERISK-28637: chan_sip+native_bridge_rtp: directmedia compatibility + check failure when negociated ptime is not default ptime. + Reported by: Frederic LE FOLL + * [7624cbb155] Frederic LE FOLL -- chan_sip+native_bridge_rtp: no + directmedia for ptime other than default ptime. + + Category: Bridges/bridge_simple + + ASTERISK-29379: Segfault - ast_channel_is_multistream (chan=0x0) at + channel_internal_api.c:1590 + Reported by: Ross Beer + * [88aec107df] George Joseph -- bridge_channel_write_frame: Check for + NULL channel + ASTERISK-29161: Incorrect setup of recall channels + Reported by: Boris P. Korzun + * [33e3542132] Boris P. Korzun -- bridge_basic: Fixed setup of recall + channels + + Category: Bridges/bridge_softmix + + ASTERISK-29743: bridges: Fix for Doxygen + Reported by: Alexander Traud + * [42055f4a65] Alexander Traud -- bridges: Fix for Doxygen. + ASTERISK-28944: bridge_softmix: Transitioning a stream from inactive -> + sendrecv/sendonly doesn't re-negotiation + Reported by: Joshua C. Colp + * [8ad06394c4] Joshua C. Colp -- bridge_softmix: Add additional old + states for adding new source. + ASTERISK-28898: bridge_softmix: Conference bridge not passing silent rtp + packets + Reported by: Jonathan Hunter + * [e8c8d69d47] Joshua C. Colp -- bridge_softmix: Always remove audio + from mixed frame. + ASTERISK-28819: [patch] bridge_softmix_binaural: Show state in menuselect. + Reported by: Alexander Traud + * [7febd22304] Alexander Traud -- bridge_softmix_binaural: Show state in + menuselect. + ASTERISK-28618: bridge_softmix: hold not cleared when joining a softmix + bridge + Reported by: Kevin Harwell + * [e77cb32583] Kevin Harwell -- bridge_softmix: clear hold when joining + a softmix bridge + + Category: CDR/General + + ASTERISK-29168: Asterisk crashes during call transfer + Reported by: Dalius Mockevicius + * [d9aef0e6e5] Kevin Harwell -- pbx_realtime: wrong type stored on + publish of ast_channel_snapshot_type + ASTERISK-28677: CDR billsec is always 0 for transferred calls + Reported by: Maciej Michno + * [6818c3d1d2] George Joseph -- cdr.c: Set event time on party b when + leaving a parking bridge + ASTERISK-28636: app_chanisavail+cdr: ChanIsAvail sometimes fails to + deactivate CDR. + Reported by: Frederic LE FOLL + * [a83625b366] Frederic LE FOLL -- app_chanisavail/cdr: ChanIsAvail + sometimes fails to deactivate CDR. + ASTERISK-28566: CDR backend unload problem during active call(s) + Reported by: Marian Piater + * [51850a79ef] Sean Bright -- cdr_mysql: Don't clean up on unload unless + we can unregister from CDRs + + Category: CDR/cdr_adaptive_odbc + + ASTERISK-29494: cdr_adaptive_odbc: Prevent throwing warnings if CDR + filtering is used + Reported by: N A + * [adf707f2ae] Naveen Albert -- cdr_adaptive_odbc: Prevent filter + warnings + + Category: CDR/cdr_pgsql + + ASTERISK-28571: cdr_pgsql: accesses obsolete (and finally removed) column + Reported by: Christoph Moench-Tegeder + * [52ade18420] Christoph Moench-Tegeder -- cdr_pgsql cel_pgsql + res_config_pgsql: compatibility with PostgreSQL 12 + ASTERISK-28435: cdr_pgsql: Unix socket doesn't work + Reported by: Dmitry Svyatogorov + * [e61f2af89d] Chris-Savinovich -- cdr_pgsql: fix error in connection + string + + Category: CEL/General + + ASTERISK-28081: chan_sip: Asterisk 12+ chan_sip doesn't report + AST_CEL_PICKUP in handle_invite_replaces + Reported by: Luit van Drongelen + * [2cf5079205] Jasper Hafkenscheid -- chan_sip: Attempt ast_do_pickup in + handle_invite_replaces + + Category: Channels/General + + ASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make + Reported by: Alexander Traud + * [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og + + Category: Channels/chan_dahdi + + ASTERISK-29762: channels: Fix for Doxygen + Reported by: Alexander Traud + * [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen. + ASTERISK-29702: sig_analog: Fix truncated buffer copy + Reported by: N A + * [36c5f5e5fa] Naveen Albert -- sig_analog: Fix truncated buffer copy + ASTERISK-29518: sig_analog: FCG_CAMA fails to signal ANI spill when using + MF signaling + Reported by: Sarah Autumn + * [241686f860] Sarah Autumn -- sig_analog: Changes to improve + electromechanical signalling compatibility + ASTERISK-28702: chan_dahdi: holding a channel via flash to dialtone times + out after 0:16:40 + Reported by: Andrew Siplas + * [5bd7281442] Andrew Siplas -- chan_dahdi: Change 999999 to INT_MAX to + better reflect "no timeout" + ASTERISK-28615: chan_dahdi: PRI span status may stay "Down, Active" after + a short alarm + Reported by: Frederic LE FOLL + * [a68299f508] Frederic LE FOLL -- chan_dahdi: PRI span status may stay + "Down, Active" after a short alarm + ASTERISK-28536: Asterisk release candidates fail to build on FreeBSD + Reported by: Guido Falsi + * [4072e219f7] Guido Falsi -- chan_dahdi: Fix build with clang/llvm + ASTERISK-28525: chan_dahdi: set CHANNEL(hangupsource) when a PRI channel + hangs up + Reported by: Frederic LE FOLL + * [41b67f150e] Frederic LE FOLL -- chan_dahdi: set CHANNEL(hangupsource) + when a PRI channel hangs up + ASTERISK-28457: [patch] Fix crash in chan_dahdi on 32-bit systems caused + by ASTERISK-28317 + Reported by: abelbeck + * [0e669712e2] Chris-Savinovich -- chan_dahdi.c: crash in chan_dahdi + ASTERISK-28427: new mwi.h include missing from some dahdi source files, + causes build failure + Reported by: Guido Falsi + * [db535439f2] Guido Falsi -- chan_dahdi: add missing include. + + Category: Channels/chan_iax2 + + ASTERISK-29737: chan_iax2: Fix for Doxygen + Reported by: Alexander Traud + * [cb043633d4] Alexander Traud -- chan_iax2: Fix for Doxygen. + ASTERISK-20219: [patch] - IAX2 Call Encryption Fails with RSA + authentication + Reported by: Michael Munger + * [437b2bfbd6] Naveen Albert -- chan_iax2: Add encryption for RSA + authentication + ASTERISK-29392: chan_iax2: Asterisk crashes when queueing video with + format + Reported by: Michael Welk + * [2a141a58b6] Kevin Harwell -- AST-2021-008 - chan_iax2: remote crash + on unsupported media format + + Category: Channels/chan_local + + ASTERISK-29407: chan_local: Filtering audio formats should not occur on + removed streams + Reported by: Joshua C. Colp + * [8faed04b01] Joshua C. Colp -- chan_local: Skip filtering audio + formats on removed streams. + ASTERISK-29035: chan_local: Multistream support breaks T.38 faxing + Reported by: Matthias Hensler + * [ed2f637b47] Joshua C. Colp -- core_unreal: Fix deadlock with T.38 + control frames. + * [62e2dd484d] Ben Ford -- core_unreal: Fix T.38 faxing when using local + channels. + ASTERISK-28938: core_unreal / core_local: Add support for multistream and + re-negotiation + Reported by: Joshua C. Colp + * [de2813cf23] Joshua C. Colp -- core_unreal / core_local: Add + multistream and re-negotiation. + ASTERISK-25844: app_queue: Ghost channels in "core show channels" output + Reported by: Etienne Lessard + * [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in + app_queue to avoid leaked stasis subscriptions + ASTERISK-28399: channel.c: Exceptionally long queue length queuing + Reported by: Abhay Gupta + * [85242a9bb9] Abhay Gupta -- stasis: Hangup channel for Local channel + No such extension error + + Category: Channels/chan_mgcp + + ASTERISK-20339: chan_mgcp, resp_pktccops ast_debug support + Reported by: Tomas Maldonado + * [121860e3f6] Sean Bright -- mgcp: Remove dead debug code + + Category: Channels/chan_misdn + + ASTERISK-29764: chan_misdn: Fix for Doxygen + Reported by: Alexander Traud + * [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen. + + Category: Channels/chan_pjsip + + ASTERISK-28393: Multidomain support issue + Reported by: Andrea Sannucci + * [b21d4d1b87] Joseph Nadiv -- res_pjsip.c: Support endpoints with + domain info in username + ASTERISK-29358: chan_pjsip: Trace message for progress is output even if + frame is not queued + Reported by: Michael Maier + * [78d7862463] Sean Bright -- chan_pjsip: Correct misleading trace + message + ASTERISK-29240: chan_pjsip: Incoming PJSIP calls set global SIPDOMAIN + instead of a channel variable + Reported by: Ivan Poddubny + * [c3fad2fd01] Ivan Poddubnyi -- chan_pjsip: Assign SIPDOMAIN after + creating a channel + ASTERISK-27902: chan_pjsip isn't updating hangupcause on 4XX responses + Reported by: George Joseph + * [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control + frames twice on outgoing channels + ASTERISK-28016: PJSIP sends duplicate 183 Progress responses + Reported by: Alex Hermann + * [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control + frames twice on outgoing channels + ASTERISK-28185: chan_pjsip: Subsequent same responses are not stopped + Reported by: Julien + * [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control + frames twice on outgoing channels + ASTERISK-29230: pjsip: Asterisk goes crazy and massively spams logfile if + registration can't be send + Reported by: Michael Maier + * [b3927ff8bc] George Joseph -- Revert + "res_pjsip_outbound_registration.c: Use our own scheduler and other + stuff" + ASTERISK-29201: Crash occurs when Transfer and execute Hangup before the + Transfer result + Reported by: Dan Cropp + * [fb23f98521] Dan Cropp -- chan_pjsip: Incorporate channel reference + count into transfer_refer(). + ASTERISK-29210: res_pjsip: Crash when examining transport + Reported by: N GM + * [3c8598ffef] Nick French -- res_pjsip: Prevent segfault in UDP + registration with flow transports + ASTERISK-29022: Crash when manipulating PJSIP invite dlg ref counts + Reported by: Sean Bright + * [5b4e71fa0a] Joshua C. Colp -- pjsip: Match lifetime of INVITE session + to our session. + ASTERISK-28878: chan_pjsip: PJSIP_MEDIA_OFFER Broken asterisk 16 + Reported by: Joseph Ades + * [31fbfc5e95] Kevin Harwell -- chan_pjsip: disallow + PJSIP_SEND_SESSION_REFRESH pre-answer execution + * [4eba6b9eb2] Kevin Harwell -- PJSIP_MEDIA_OFFER: override + configuration on refresh + ASTERISK-28886: chan_pjsip: PJSIP_SC_NULL does not exist in pjproject + 2.7.2 + Reported by: Jared Smith + * [8b925fbda3] Kevin Harwell -- chan_pjsip: don't use PJSIP_SC_NULL as + it only exists pjproject 2.8+ + ASTERISK-28923: T.38 Segfaults in chan_pjsip_queryoption + Reported by: Yury Kirsanov + * [41f3a7da4d] George Joseph -- res_fax: Don't start a gateway if either + channel is hung up + ASTERISK-28835: IPv6 addresses in SDP incorrectly formatted + Reported by: Daniel Heckl + * [9f117ac9ef] Daniel Heckl -- res_pjsip: Fixed format of IPv6 addresses + for external media addresses + ASTERISK-28817: chan_pjsip: constant DTMF tone if RTP is not setup yet + Reported by: Kevin Harwell + * [fa3c8f94e0] Kevin Harwell -- chan_pjsip: digit_begin - constant DTMF + tone if RTP is not setup yet + ASTERISK-28774: chan_pjsip's rtptimeout is erroneously triggered during + direct-media (native_rtp) bridge + Reported by: Michael Neuhauser + * [5562fb2ea0] Michael Neuhauser -- chan_psip, res_pjsip_sdp_rtp: ignore + rtptimeout if direct-media is active + ASTERISK-28759: A non negotiated rtp frame causes call disconnection when + there is a SSRC change + Reported by: Paulo Vicentini + * [ed2a7e3eaf] Paulo Vicentini -- chan_pjsip: Check audio frame when + remote SSRC changes. + ASTERISK-28766: PJSIP blind transfer not completed after using + Proceeding() + Reported by: laszlovl + * [d1a2ff0aaf] laszlovl -- res_pjsip_refer: ensure refer progress is + still sent after Proceeding() + ASTERISK-28755: SIP/Stasis: SIP headers not transmitted in the "variables" + field + Reported by: Jean Aunis - Prescom + * [a715cf5aaa] Kevin Harwell -- message & stasis/messaging: make text + message variables work in ARI + ASTERISK-28492: pjsip reload not reloading wizard endpoint/pickup_group + endpoint/call_group + Reported by: Jean-Denis Girard + * [b40dd11afe] Sean Bright -- res_pjsip_config_wizard: Fix change + detection for wizard settings + ASTERISK-28502: chan_pjsip incorrectly re-writes REGISTER 200 Response + Contact + Reported by: Ross Beer + * [cbc1136704] George Joseph -- res_pjsip_nat: Restore original contact + for REGISTER responses + ASTERISK-28578: race condition on pjsip channelstats command + Reported by: Salah Ahmed + * [ddb0091da5] Salah Ahmed -- Crash during "pjsip show channelstats" + execution + ASTERISK-28561: Asterisk Deadlocks + Reported by: Aheliotech + * [bf6f27388d] Joshua Colp -- pbx: deadlock when outgoing dialed channel + hangs up too quickly + ASTERISK-28086: chan_pjsip: Crash when initiating PlayDTMF over AMI + Reported by: Jeremiah Gadd + * [c03f50c1c8] laszlovl -- chan_pjsip: Prevent segfault when running + PlayDTMF on hungup channel + ASTERISK-28538: chan_pjsip: Deadlock on fax detection + Reported by: Joshua C. Colp + * [c358da472e] Joshua Colp -- chan_pjsip: Relock correct channel during + "fax" redirect. + ASTERISK-28444: chan_pjsip: Peer IP for SSL handshake errors not logged + Reported by: Bernhard Schmidt + * [8b3ee7fe61] George Joseph -- pjproject_bundled: Add peer information + to most SSL/TLS errors + ASTERISK-26968: chan_pjsip: Transfer() does not result in TRANSFERSTATUS + reflecting SIP response to transfer + Reported by: Dan Cropp + * [e52fbae00f] Dan Cropp -- chan_pjsip: Transmit REFER waits for the + REFER result setting TRANSFERSTATUS + ASTERISK-25371: Crash in hangup at chan_pjsip.c:1749 when Asterisk + attempts to generate hangup event + Reported by: Abhay Gupta + * [d2f7b22640] Abhay Gupta -- chan_pjsip.c: Check for channel and + session to not be NULL in hangup + ASTERISK-27994: PJSIP: Early media ringback not indicated after Progress() + Reported by: Gregory Massel + * [466a17964f] Alexei Gradinari -- pjsip: replace 180 by 183 if SDP + negotiation has completed + ASTERISK-28379: pjsip: show channelstats incorrect information output + Reported by: Vyrva Igor + * [7a6fd83aca] Joshua Colp -- res_rtp_asterisk: Fix sequence number + cycling and packet loss count. + ASTERISK-28371: chan_pjsip: DTMF Mode auto_info fallback lead to both + inband and info + Reported by: Salah Ahmed + * [5009d6d97a] Salah Ahmed -- chan_pjsip: DTMF Mode auto_info fallback + lead to both inband and info + ASTERISK-28322: chan_pjsip: Add option to allow ignoring of 183 without + SDP + Reported by: Torrey Searle + * [4661c08549] Torrey Searle -- chan_pjsip: add a flag to ignore 183 + responses if no SDP present + ASTERISK-28213: res_pjsip: Threads pile up needlessly when AOR is blocked + Reported by: Ross Beer + * [930a7fe910] Kevin Harwell -- res_pjsip_registrar: blocked threads on + reliable transport shutdown take 3 + * [61a8f79a29] Kevin Harwell -- res_pjsip_registrar: lock transport + monitor when setting 'removing' flag + * [b82d2856b4] Kevin Harwell -- res_pjsip_registrar: mitigate blocked + threads on reliable transport shutdown + ASTERISK-28238: PJSIP realtime. getcontext not working with DUNDI + Reported by: Ray + * [f668db9ba0] Kevin Harwell -- pjsip/config_global: regcontext context + not created + ASTERISK-27095: chan_pjsip: When connected_line_method is set to invite, + we're not trying UPDATE + Reported by: George Joseph + * [ecb9ed0958] Pirmin Walthert -- pjproject_bundled: check whether + UPDATE is supported on outgoing calls + ASTERISK-27999: Wrong SRTP use status report + Reported by: Salah Ahmed + * [a90177cd63] Salah Ahmed -- dialplan_functions: wrong srtp use status + report of a dialplan function + + Category: Channels/chan_sip/CodecHandling + + ASTERISK-29280: chan_sip: Allow peers without audio (text+video). + Reported by: Alexander Traud + * [45e48e387c] Alexander Traud -- chan_sip: Allow [peer] without audio + (text+video). + ASTERISK-29265: chan_sip: Allow text+video media streams, again. + Reported by: Alexander Traud + * [87ad1138ff] Alexander Traud -- chan_sip: Set up calls without audio + (text+video), again. + ASTERISK-29258: chan_sip: Audio stream rejected, Other stream present: + Invalid SDP. + Reported by: Alexander Traud + * [4c154f3431] Alexander Traud -- chan_sip: SDP: Reject audio streams + correctly. + ASTERISK-29238: chan_sip: SDP: Offers without any enabled stream are + accepted. + Reported by: Alexander Traud + * [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing + when its media is disabled. + ASTERISK-29237: chan_sip: SDP: m=video is parsed even when disabled. + Reported by: Alexander Traud + * [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing + when its media is disabled. + + Category: Channels/chan_sip/General + + ASTERISK-29762: channels: Fix for Doxygen + Reported by: Alexander Traud + * [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen. + ASTERISK-29370: chan_sip does not recognize application/hook-flash + Reported by: N A + * [7b82587dd6] Naveen Albert -- chan_sip: Expand hook flash recognition. + ASTERISK-29030: res_rtp_asterisk: Additional RTP-frame (with wrong SSRC) + gets inserted when switching from progress to established + Reported by: Matthias Hensler + * [95414fc918] Sean Bright -- res_rtp_asterisk: More robust timestamp + checking + ASTERISK-29011: chan_sip: ToHost property not cleared on reload + Reported by: Dennis + * [9058d9e591] Dennis Buteyn -- chan_sip: Clear ToHost property on peer + when changing to dynamic host + ASTERISK-28957: chan_sip: chan_sip does not process 400 response to an + INVITE. + Reported by: Frederic LE FOLL + * [a423f935c9] Frederic LE FOLL -- chan_sip: chan_sip does not process + 400 response to an INVITE. + ASTERISK-28898: bridge_softmix: Conference bridge not passing silent rtp + packets + Reported by: Jonathan Hunter + * [e8c8d69d47] Joshua C. Colp -- bridge_softmix: Always remove audio + from mixed frame. + ASTERISK-28651: chan_sip logs errors on tx to non-existent TCP connections + Reported by: Jaco Kroon + * [365d007eb6] Jaco Kroon -- chan_sip: in case of tcp/tls, be less + annoying about tx errors. + ASTERISK-28647: chan_sip: RTP frames not transmitted after emitting a COLP + Reported by: Jean Aunis - Prescom + * [9c9296c635] Jean Aunis -- chan_sip: voice frames are no longer + transmitted after emitting a COLP + ASTERISK-28637: chan_sip+native_bridge_rtp: directmedia compatibility + check failure when negociated ptime is not default ptime. + Reported by: Frederic LE FOLL + * [7624cbb155] Frederic LE FOLL -- chan_sip+native_bridge_rtp: no + directmedia for ptime other than default ptime. + ASTERISK-28282: AST_SCHED_REPLACE_UNREF causes wait-on-self deadlocks (in + chan_sip) + Reported by: Walter Doekes + * [3c6f11992b] Walter Doekes -- sched: Don't allow ast_sched_del to + deadlock ast_sched_runq from same thread + ASTERISK-28362: strtok_r() makes gcc compile warning + Reported by: sungtae kim + * [dd1cc7791c] Ben Ford -- build: Fix compiler warnings/errors. + ASTERISK-25792: chan_sip: qualifygap bounds checking + Reported by: Paul Sandys + * [1499640da9] Sean Bright -- chan_sip: Ensure 'qualifygap' isn't + negative + ASTERISK-28194: chan_sip: Leak using contact ACL + Reported by: Giuseppe Sucameli + * [0bde3751a0] Giuseppe Sucameli -- chan_sip: Fix leak using contact ACL + ASTERISK-28081: chan_sip: Asterisk 12+ chan_sip doesn't report + AST_CEL_PICKUP in handle_invite_replaces + Reported by: Luit van Drongelen + * [2cf5079205] Jasper Hafkenscheid -- chan_sip: Attempt ast_do_pickup in + handle_invite_replaces + + Category: Channels/chan_sip/Interoperability + + ASTERISK-28718: chan_sip: Returns 403 if RTP ports are depleted, should + return 503 + Reported by: Walter Doekes + * [43620cbf6c] Walter Doekes -- chan_sip: Return 503 if we're out of RTP + ports + ASTERISK-28686: chan_sip strictrtp=yes fails when media source is changed: + no audio + Reported by: Walter Doekes + * [711a3fed56] Walter Doekes -- chan_sip: Always process updated SDP on + media source change + + Category: Channels/chan_sip/Messaging + + ASTERISK-28693: chan_sip: SIP MESSAGE beginning with a whitespace appears + empty in the dialplan + Reported by: Frank Matano + * [f309b86e36] Sean Bright -- chan_sip.c: Stop handling continuation + lines after reading headers + ASTERISK-28057: chan_sip: SipNotify via AMI behaves differently to CLI + Reported by: Peter Katzmann + * [6627c56b3d] Peter Katzmann -- chan_sip: SipNotify on Chan_Sip vi AMI + behave different to CLI + + Category: Channels/chan_sip/SRTP + + ASTERISK-29222: chan_sip: Hold/Resume an sRTP call on a video enabled + user-agent. + Reported by: Alexander Traud + * [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing + when its media is disabled. + + Category: Channels/chan_sip/Subscriptions + + ASTERISK-28173: Deadlock in chan_sip handling subscribe request during + res_parking reload + Reported by: Giuseppe Sucameli + * [e2bbab17b3] Giuseppe Sucameli -- Fix deadlock handling subscribe req + during res_parking reload + + Category: Channels/chan_sip/TCP-TLS + + ASTERISK-28798: [patch] chan_sip: TCP/TLS client without server. + Reported by: Alexander Traud + * [e884d935f6] Alexander Traud -- chan_sip: Remove unused + sip_socket->port. + * [da9554d925] Alexander Traud -- chan_sip: TCP/TLS client without + server. + ASTERISK-28372: Asterisk REPLY Wrong Contact header port (TCP) + Reported by: Anton Satskiy + * [52f07176b6] Alexander Traud -- chan_sip: externhost/externaddr with + non-default TCP/TLS ports. + ASTERISK-24428: Document that Asterisk will use the default SIP ports + (5060 for TCP, 5061 for TLS) if the extern option variants aren't used + Reported by: sstream + * [52f07176b6] Alexander Traud -- chan_sip: externhost/externaddr with + non-default TCP/TLS ports. + ASTERISK-27195: chan_sip: only sets ToS bits on UDP socket, ignoring TCP + and TLS sockets + Reported by: Joshua Roys + * [4d0ab620be] Alexander Traud -- chan_sip: DiffServ/ToS not only on UDP + but also on TCP and TLS sockets. + ASTERISK-26006: Show offending IP for TLS setup failures in logs + Reported by: Oleksandr Natalenko + * [c2ffb004aa] George Joseph -- tcptls.c: Add peer hostname and port to + some error messages + ASTERISK-28057: chan_sip: SipNotify via AMI behaves differently to CLI + Reported by: Peter Katzmann + * [6627c56b3d] Peter Katzmann -- chan_sip: SipNotify on Chan_Sip vi AMI + behave different to CLI + ASTERISK-28034: chan_sip unstable with TLS after asterisk start or reloads + Reported by: David Hajek + * [406be41f21] David Hajek -- chan_sip.c: chan_sip unstable with TLS + after asterisk start or reloads + ASTERISK-27881: PBX calls via chan_sip TCP trunk now get authentification + error + Reported by: Ian Gilmour + * [9680790531] Jaco Kroon -- chan_sip: improved ip:port finding of peers + for non-UDP transports. + + Category: Channels/chan_sip/Transfers + + ASTERISK-28677: CDR billsec is always 0 for transferred calls + Reported by: Maciej Michno + * [6818c3d1d2] George Joseph -- cdr.c: Set event time on party b when + leaving a parking bridge + + Category: Channels/chan_sip/Video + + ASTERISK-29238: chan_sip: SDP: Offers without any enabled stream are + accepted. + Reported by: Alexander Traud + * [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing + when its media is disabled. + ASTERISK-29237: chan_sip: SDP: m=video is parsed even when disabled. + Reported by: Alexander Traud + * [ad606d4ad1] Alexander Traud -- chan_sip: SDP: Sidestep stream parsing + when its media is disabled. + + Category: Channels/chan_unistim + + ASTERISK-28803: [patch] chan_unistim: Avoid tautological warnings with + clang. + Reported by: Alexander Traud + * [b38f664250] Alexander Traud -- chan_unistim: Avoid tautological + warnings with clang. + ASTERISK-25592: chan_unistim: Clang Warning: variable sized type not at + end of a struct + Reported by: Alexander Traud + * [3863ab9af9] Igor Goncharovsky -- chan_unistim: Fix clang warning: + variable sized type not at end of a struct + + Category: Codecs/codec_opus + + ASTERISK-28263: codec_opus: errors setting max_playback_rate and bitrate + to "sdp" + Reported by: Gianluca Merlo + * [0bcaadc037] Kevin Harwell -- codecs.conf.sample: update codec opus + docs + + Category: Codecs/codec_resample + + ASTERISK-28511: codec_resample: Bad sound quality when up sampling from + SLIN16 to SLIN32 + Reported by: Ruddy G + * [e4289b9e56] Sean Bright -- codec_resample: Ensure OUTSIDE_SPEEX is + defined when necessary + * [b096389660] Sean Bright -- codec_resample: Upgrade speex_resample to + fix up-sampling bug + + Category: Codecs/codec_silk + + ASTERISK-28706: silk 24hHz doesn't show up in 'core show translation' + output + Reported by: Sean Bright + * [dfad69ce7c] Sean Bright -- translate.c: Fix silk 24kHz truncation in + 'core show translation' + + Category: Configs/Basic-PBX + + ASTERISK-28667: Asterisk ignores parsing of config files if a Byte order + mark is present + Reported by: Robin Leffmann + * [40b5cf8f52] Sean Bright -- config.c: Skip UTF-8 BOMs if present when + reading config files + ASTERISK-28272: The basic-pbx config samples don't produce a running + asterisk + Reported by: George Joseph + * [2980622d2b] Joshua Colp -- basic-pbx: Update configuration to work + with current modules. + + Category: Configs/Samples + + ASTERISK-29123: logger.conf.sample missing comment mark on line 115 + Reported by: Andrew Siplas + * [ff33f7f44f] Andrew Siplas -- logger.conf.sample: add missing comment + mark + + Category: Contrib/General + + ASTERISK-29142: sip_to_pjsip.py: doesn't read globbed includes + Reported by: Michael Newton + * [fe540d0326] Sean Bright -- sip_to_pjsip.py: Handle #include globs and + other fixes + ASTERISK-27243: contrib: valgrind.supp doesn't suppress what it's supposed + to due to invalid syntax + Reported by: Richard Kenner + * [095c204fe0] snuffy -- contrib/valgrind: Fix use of frame-level + suppression + ASTERISK-28664: "trustrpid" is misspelled in sip_to_pjsip.py + Reported by: Pascal Cadotte Michaud + * [e494d5fd76] Pascal Cadotte Michaud -- sip_to_pjsip.py: Fix trustrpid + typo + ASTERISK-28323: pjsip: sip.conf to pjsip.conf conversion script fails + Reported by: Guido Weckwerth + * [f098d4a325] Sean Bright -- sip_to_pjsip: Make multiline comment + parsing consistent with Asterisk + ASTERISK-27968: systemd: asterisk.service + Reported by: seanchann.zhou + * [d7db9f2152] Corey Farrell -- contrib: Update systemd README.txt. + + Category: Core/ACL + + ASTERISK-28978: acl: named_acl rule misconfiguration results in segfault + on reading rule from realtime + Reported by: Andrew Yager + * [7a43bedd72] Sean Bright -- acl.c: Coerce a NULL pointer into the + empty string + + Category: Core/Bridging + + ASTERISK-29821: Deadlock in bridge_channel_internal_join() on local + channels. + Reported by: Krzysztof Trempala + * [c1129fdd8c] Joshua C. Colp -- bridge: Unlock channel during Local + peer check. + ASTERISK-29748: bridging: Infinite loop when both Local channel halves in + same bridge + Reported by: Joshua C. Colp + * [7d4e37a180] Joshua C. Colp -- bridge: Deny full Local channel pair in + bridge. + ASTERISK-29736: bridge_channel: Fix for Doxygen + Reported by: Alexander Traud + * [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen. + ASTERISK-29071: app_confbridge: Memory rises when jitterbuffer enabled and + muting over AMI occurs + Reported by: Stefan Ruf + * [f7bda066bb] Joshua C. Colp -- channel: Fix crash in suppress API. + * [b43b81d953] Joshua C. Colp -- channel: Fix memory leak in suppress + API. + ASTERISK-28841: app_confbridge: Add support for disabling text messaging + for a user + Reported by: Joshua C. Colp + * [6cfc6ff53c] Joshua C. Colp -- confbridge: Add support for disabling + text messaging. + ASTERISK-28076: bridging: Asterisk crashes when receiving an empty + realtime text frame + Reported by: Emmanuel BUU + * [24cece660b] Emmanuel BUU -- core/frame: Fix ast_frdup() and + ast_frisolate() for empty text frames + + Category: Core/BuildSystem + + ASTERISK-29724: BuildSystem: In POSIX sh, == in place of = is undefined. + Reported by: Alexander Traud + * [608e52c939] Alexander Traud -- BuildSystem: In POSIX sh, == in place + of = is undefined. + ASTERISK-29682: Squash compiler issues generated by gcc 11 + Reported by: George Joseph + * [0b2646aee6] Mike Bradeen -- various: Fix GCC 11 compilation issues. + ASTERISK-29693: Using --with-crypto and --with-ssl fails on a recompile + Reported by: George Joseph + * [c07e3c2f4d] George Joseph -- BuildSystem: Check for alternate openssl + packages + ASTERISK-26497: make install downloads x86_32 variants of external modules + on non Intel architectures + Reported by: Corey Farrell + * [bac66e9743] Mike Bradeen -- build: prevent binary downloads for non + x86 architectures + ASTERISK-29348: menuselect doesn't return errors in many cases + Reported by: George Joseph + * [f47c5cbdf9] Jaco Kroon -- menuselect: exit non-zero in case of + failure on --enable|disable options. + ASTERISK-28929: pjproject_bundled: Honor --without-pjproject. + Reported by: Alexander Traud + * [0a4dffe6f8] Alexander Traud -- pjproject_bundled: Honor + --without-pjproject. + ASTERISK-28837: pjproject_bundled: Honor --without-pjproject. + Reported by: Alexander Traud + * [966acc6251] Alexander Traud -- pjproject_bundled: Honor + --without-pjproject. + ASTERISK-28824: BuildSystem: Search for Python/C API when possibly needed + only. + Reported by: Alexander Traud + * [610e058189] Alexander Traud -- BuildSystem: Search for Python/C API + when possibly needed only. + ASTERISK-27717: [patch] BuildSystem: In NetBSD, the Python Programming + Language is python-2.7. + Reported by: Alexander Traud + * [610e058189] Alexander Traud -- BuildSystem: Search for Python/C API + when possibly needed only. + ASTERISK-28816: [patch] BuildSystem: Remove doc/tex and doc/pdf leftovers. + Reported by: Alexander Traud + * [7cdb493a1e] Alexander Traud -- BuildSystem: Remove doc/tex and + doc/pdf leftovers. + ASTERISK-28818: [patch] BuildSystem: Allow space in path. + Reported by: Alexander Traud + * [7a04947abd] Alexander Traud -- BuildSystem: Allow space in path. + ASTERISK-28487: compile menuselect on gentoo + Reported by: Kilburn + * [e40f248fac] Sean Bright -- menuselect: Fix curses build on Gentoo + Linux + ASTERISK-28392: The no-partial-inlining flag isn't passed to the bundled + pjproject or jansson builds + Reported by: George Joseph + * [089581f20a] George Joseph -- build: Pass --fno-partial-inlining to + third-party when appropriate + ASTERISK-28374: latest asterisk unconditionally launch gcc --version, even + if the compiler is different + Reported by: Guido Falsi + * [8b7324ed3f] Guido Falsi -- core/buildsystem: check the actual + compiler being version + ASTERISK-28271: Opensuse Leap 15 --with-jannson-bundled will not compile + Reported by: David Wilcox + * [ac2d302c2c] George Joseph -- bundled-jansson: On OpenSuse Leap + libjansson.a was placed in lib64 + ASTERISK-28250: build: Cross-compilation fails for target + arm-linux-gnueabihf + Reported by: Jean Aunis - Prescom + * [d9fae4a824] Jean Aunis -- build : Fix cross-compilation errors + ASTERISK-27991: BuildSystem: Enable Jansson in Solaris 11. + Reported by: Alexander Traud + * [0a4d58735f] Alexander Traud -- BuildSystem: Enable Jansson in Solaris + 11. + + Category: Core/Channels + + ASTERISK-29751: channel: Fix for Doxygen + Reported by: Alexander Traud + * [e27b91d542] Alexander Traud -- channel: Fix for Doxygen. + ASTERISK-29713: GCC 11.2: two stringop-overread + Reported by: Alexander Traud + * [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues. + ASTERISK-29259: channel: Allow text+video media streams, again. + Reported by: Alexander Traud + * [f64ddf3db3] Alexander Traud -- channel: Set up calls without audio + (text+video), again. + ASTERISK-29091: Crash when ast_translator_build_path fails + Reported by: Jasper van der Neut + * [08ccfd4588] Jasper van der Neut -- channels: Don't dereference NULL + pointer + ASTERISK-25844: app_queue: Ghost channels in "core show channels" output + Reported by: Etienne Lessard + * [f217fcdc62] Nathan Bruning -- app_queue: track masquerades in + app_queue to avoid leaked stasis subscriptions + ASTERISK-28795: channel: write to a stream on multi-frame writes + Reported by: Kevin Harwell + * [3c345ec56d] Kevin Harwell -- channel: write to a stream on + multi-frame writes + ASTERISK-28499: translate: Crash when frame does not have a "src" field + set + Reported by: Gregory Massel + * [1e9714a050] Joshua Colp -- AST-2019-005 - translate: Don't assume all + frames will have a src. + ASTERISK-28197: stasis: ast_endpoint struct holds the channel_ids of + channels past destruction in certain cases + Reported by: Mohit Dhiman + * [d60ee2eeae] Mohit Dhiman -- stasis/endpoint: Fix memory leak of + channel_ids in ast_endpoint structure. + ASTERISK-28089: function ast_sendtext() create RTP realtime packets with a + trailing null byte in the payload + Reported by: Emmanuel BUU + * [17f4e6ad4d] Emmanuel BUU -- core/frame: generate correct T.140 + payload in ast_sendtext_data() + + Category: Core/CodecInterface + + ASTERISK-29526: G729 audio gets corrupted by Asterisk due to smoother + Reported by: under + * [feb1e06ac5] under -- codec_builtin.c: G729 audio gets corrupted by + Asterisk due to smoother + ASTERISK-29328: translate.c: possible buffer overflow when upsampling + Reported by: Jean Aunis - Prescom + * [dec44306cf] Jean Aunis -- translate.c: Take sampling rate into + account when checking codec's buffer size + + Category: Core/Configuration + + ASTERISK-29771: Crash occurs when 2 realtime sippeers mysql connections + are configured and we have a schema warning + Reported by: Mario Ban + * [04ac4fe509] Sean Bright -- config.c: Prevent UB in + ast_realtime_require_field. + ASTERISK-28955: "setvar" doesn't work properly in dahdi-channels.conf + Reported by: Marin Odrljin + * [d88e230037] Guido Falsi -- chan_dadhi: Fix setvar in dahdi channels + ASTERISK-23756: setvar directive when used in template and a child of said + template, results in duplicate variable names + Reported by: Michael Goryainov + * [32ce6e9a06] Michael Goryainov -- channels: Allow updating variable + value + ASTERISK-28158: Some conditions prevent running of el_end, break the + terminal. + Reported by: Corey Farrell + * [c3d7b19cdd] Corey Farrell -- core: Fix handling of restart from + remote console. + * [194e40122a] Corey Farrell -- core: Ensure that el_end is always run + when needed. + + Category: Core/DNS + + ASTERISK-28004: dns: Core ast_dns_get_nameservers does not support + configured IPv6 servers + Reported by: Isaac McDonald + * [689c703b2c] Sean Bright -- dns.c: Load IPv6 DNS resolvers if + configured. + + Category: Core/General + + ASTERISK-29730: Segfault in __ao2_ref if refdebug = yes + Reported by: Alexei Gradinari + * [ea941032ff] Mike Bradeen -- astobj2.c: Fix core when ref_log enabled + ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request + Reported by: Dennis Haney + * [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN + request timeout + ASTERISK-12: app_voicemail2 became a bit silent, lately + Reported by: siggi + * [feb1e06ac5] under -- codec_builtin.c: G729 audio gets corrupted by + Asterisk due to smoother + ASTERISK-29372: file.c switch does not account for flash events + Reported by: N A + * [283fa3a93b] Naveen Albert -- main/file.c: Don't throw error on flash + event. + ASTERISK-29306: strings: Incorrect use of __attribute__((pure)) in + ast_str_to_lower definition + Reported by: Vitezslav Novy + * [e4cd7a7d0b] Sean Bright -- strings.h: ast_str_to_upper() and + _to_lower() are not pure. + ASTERISK-28430: res_rtp_asterisk.c: FRACK!, Failed assertion errno != + EBADF + Reported by: under + * [a6faa53af0] Sean Bright -- tcptls.c: Don't close TCP client file + descriptors more than once + ASTERISK-28311: dsp: ast_dsp_silence_noise_with_energy wrong judgment of + frame format + Reported by: 周家建 + * [9b08eddf90] Sean Bright -- dsp.c: Update calls to ast_format_cmp to + check result properly + ASTERISK-28797: [patch] tcptls: Fix notice when TLS is enabled but not + configured. + Reported by: Alexander Traud + * [f9ea75d117] Alexander Traud -- tcptls: Fix notice when TLS is enabled + but not supported. + ASTERISK-28839: Sporadic crashes with Segmentation fault + Reported by: Joeran Vinzens + * [e56f4de7e6] Joshua C. Colp -- fax: Fix crashes in PJSIP + re-negotiation scenarios. + ASTERISK-28780: app_mixmonitor: Memory leak due to race condition between + AMI MixMonitor and hangup + Reported by: Joshua C. Colp + * [98d10d0a16] Joshua C. Colp -- audiohook: Don't allow audiohooks to + attach to hung up channels. + ASTERISK-28498: cel / cdr: Event times may be incorrect + Reported by: Joshua C. Colp + * [261646c1c4] Joshua Colp -- cdr / cel: Use event time at event + creation instead of processing. + ASTERISK-28232: core: RAII using clang use-after-scope issue + Reported by: Diederik de Groot + * [7bd30905fd] Diederik de Groot -- RAII: Change order or variables in + clang version + ASTERISK-28158: Some conditions prevent running of el_end, break the + terminal. + Reported by: Corey Farrell + * [c3d7b19cdd] Corey Farrell -- core: Fix handling of restart from + remote console. + * [194e40122a] Corey Farrell -- core: Ensure that el_end is always run + when needed. + ASTERISK-28005: channel.c: ARI ring only once + Reported by: Hajek Michal + * [f97d92bd0a] Joshua Colp -- core: Don't stop generators when writing + RTCP frames. + ASTERISK-12382: menuselect compilation failure on Solaris 10 / gcc 3.4.3 + Reported by: rleasure + * [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for + menuselect in Solaris 11. + ASTERISK-9107: menuselect compilation failure on Solaris 10/gcc-4.1.1 + Reported by: Bob Atkins + * [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for + menuselect in Solaris 11. + + Category: Core/Internationalization + + ASTERISK-29297: say: Y2021 problem – Asterisk cannot say year 2021 in + Dutch + Reported by: Jacek Konieczny + * [7b052ec965] Nico Kooijman -- main: With Dutch language year after + 2020 is not spoken in say.c + + Category: Core/Jitterbuffer + + ASTERISK-27176: test_abstract_jb: frames leak + Reported by: Corey Farrell + * [ee62a07914] Sean Bright -- test_abstract_jb.c: Fix put and + put_out_of_order memory leaks. + ASTERISK-29480: fixedjitterbuffer contains an un-wrappered assert that + triggers on a negative time slew + Reported by: Dan Cropp + * [88da59efe7] George Joseph -- jitterbuffer: Correct signed/unsigned + mismatch causing assert + + Category: Core/Logging + + ASTERISK-29713: GCC 11.2: two stringop-overread + Reported by: Alexander Traud + * [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues. + ASTERISK-29209: Debug messages printed by scope trace might be missing + newlines + Reported by: Alexander Traud + * [ccb4951bf8] George Joseph -- logger.c: Automatically add a newline to + formats that don't have one + ASTERISK-26006: Show offending IP for TLS setup failures in logs + Reported by: Oleksandr Natalenko + * [c2ffb004aa] George Joseph -- tcptls.c: Add peer hostname and port to + some error messages + + Category: Core/ManagerInterface + + ASTERISK-28350: manager: Stasis backed up due to locking + Reported by: Joshua C. Colp + * [d480f5eab2] Joshua Colp -- manager: Use separate lock for session + event notification. + ASTERISK-28084: app_queue: QueueMemberStatus Event flooding AMI + Reported by: Andrej + * [b68b3012ea] Richard Mudgett -- app_queue.c: Fix json ref leak + ASTERISK-28033: AMI event "NewExten" is set to the wrong class + Reported by: laszlovl + * [012272a114] laszlovl -- manager: Set AMI event "Newexten" to the + EVENT_FLAG_DIALPLAN class + + Category: Core/PBX + + ASTERISK-28040: pbx: "dialplan reload" is removing minus symbol from + dynamic hints + Reported by: Daniel Zanutti + * [e63461b008] Sean Bright -- pbx.c: Don't remove dashes from hints on + reload. + ASTERISK-29485: core: Inband generation of tones for Busy() and + Congestion() may not occur + Reported by: Joshua C. Colp + * [5e1cb3253c] Joshua C. Colp -- core: Don't play silence for Busy() and + Congestion() applications. + ASTERISK-29441: Core reload making TCP endpoints go offline + Reported by: Luke Escude + * [16e4a9d8cf] Joshua C. Colp -- res_pjsip: On partial transport reload + also move factories. + ASTERISK-28300: AST_PBX_MAX_STACK is too low for some applications + Reported by: George Joseph + * [bc8dead610] George Joseph -- Core: Increase AST_PBX_MAX_STACK to 512 + if not LOW_MEMORY + ASTERISK-28140: repeated segmentation faults + Reported by: Eyal Hasson + * [ece5f8015f] George Joseph -- backtrace: Refactor ast_bt_get_symbols + so it doesn't crash + + Category: Core/Portability + + ASTERISK-15331: make menuselect fails due to undefined symbols (initscr32, + w32addch) in menuselect_curses.o + Reported by: Majdi Bsoul + * [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for + menuselect in Solaris 11. + ASTERISK-14935: [regression] menuselect compilation failure on Solaris 10 + Reported by: Samuel Owens + * [7418dfa2c7] Alexander Traud -- BuildSystem: Enable ncurses for + menuselect in Solaris 11. + + Category: Core/RTP + + ASTERISK-28416: Unable to get rtp codec payload code for slin + Reported by: Brian J. Murrell + * [4964302984] Sean Bright -- format_cap: Perform codec lookups by + pointer instead of name + ASTERISK-28480: json integer overflow in ssrc and timestamp + Reported by: Salah Ahmed + * [3656c42cb0] Kevin Harwell -- various modules: json integer overflow + ASTERISK-27854: rtp: Crash in off-nominal case where RTP instance can't be + set up + Reported by: Lei Fu + * [bdc8159799] Corey Farrell -- res_rtp_asterisk: Fix crash on + ast_rtp_new failure. + + Category: Core/Stasis + + ASTERISK-29750: stasis: Fix for Doxygen + Reported by: Alexander Traud + * [6988386234] Alexander Traud -- stasis: Fix for Doxygen. + ASTERISK-29710: stasis: Clang 13 warns about the unused but set variable + dispatched. + Reported by: Alexander Traud + * [8b76a3cd3b] Alexander Traud -- stasis: Avoid 'dispatched' as unused + variable in normal mode. + ASTERISK-28237: "FRACK!, Failed assertion bad magic number" happens when + unsubscribe an application from an event source + Reported by: Lucas Tardioli Silveira + * [59d15c4c2a] Evgenios_Greek -- stasis: Fix "FRACK!, Failed assertion + bad magic number" when unsubscribing + ASTERISK-29355: app_queue: Queue member status message sent even if status + doesn't change + Reported by: Roman Pertsev + * [55c467eab1] Joshua C. Colp -- app_queue: Only send QueueMemberStatus + if status changes. + ASTERISK-28755: SIP/Stasis: SIP headers not transmitted in the "variables" + field + Reported by: Jean Aunis - Prescom + * [a715cf5aaa] Kevin Harwell -- message & stasis/messaging: make text + message variables work in ARI + ASTERISK-28553: stasis.c: Crash during unload + Reported by: Kevin Harwell + * [729b286d59] Joshua Colp -- stasis: Pass bumped topic_all reference to + proxy_dtor. + ASTERISK-28353: stasis: Crash at shutdown when statistics enabled + Reported by: Joshua C. Colp + * [dc02d0d9f2] Ben Ford -- stasis: Fix crash at shutdown. + ASTERISK-28335: stasis: Make topic and maybe subscription names unique and + more useful + Reported by: Joshua C. Colp + * [0231dd6ae7] Joshua Colp -- stasis: Improve topic/subscription names + and statistics. + ASTERISK-28252: HangupHandler manager events are never thrown + Reported by: Gerald Schnabel + * [f9ca0afb39] Gerald Schnabel -- manager_channels: Fix throwing of + HangupHandler manager events + ASTERISK-28244: stasis: Filter messages at publishing to AMI/ARI + Reported by: Joshua C. Colp + * [1323730f6c] Joshua C. Colp -- stasis / manager / ari: Better filter + messages. + ASTERISK-28197: stasis: ast_endpoint struct holds the channel_ids of + channels past destruction in certain cases + Reported by: Mohit Dhiman + * [d60ee2eeae] Mohit Dhiman -- stasis/endpoint: Fix memory leak of + channel_ids in ast_endpoint structure. + ASTERISK-28212: stasis: Statistics broke ABI under developer mode + Reported by: Joshua C. Colp + * [110934706f] Corey Farrell -- stasis: Fix ABI between DEVMODE and + non-DEVMODE. + ASTERISK-28117: stasis: Add statistics for usage when in developer mode + Reported by: Joshua C. Colp + * [fe07093660] Joshua C. Colp -- stasis: Add statistics gathering in + developer mode. + ASTERISK-28186: stasis: Filter messages at publishing based on to_* + presence + Reported by: Joshua C. Colp + * [3f3dd992a2] George Joseph -- stasis: Allow filtering by formatter + ASTERISK-28119: stasis: Segment channel snapshot to reduce creation cost + Reported by: Joshua C. Colp + * [50ac85cb40] Joshua Colp -- stasis: Segment channel snapshot to reduce + creation cost. + ASTERISK-28102: stasis: Use implementation specific cache for channel + snapshots + Reported by: Joshua C. Colp + * [d0ccbb3377] Joshua Colp -- stasis: Use an implementation specific + channel snapshot cache. + ASTERISK-28103: stasis: Filter messages at publishing to reduce work done + Reported by: Joshua C. Colp + * [3077ad0c24] Joshua Colp -- stasis: Add internal filtering of + messages. + ASTERISK-28084: app_queue: QueueMemberStatus Event flooding AMI + Reported by: Andrej + * [b68b3012ea] Richard Mudgett -- app_queue.c: Fix json ref leak + ASTERISK-27591: Frack errors in stasis.c and memory leakage + Reported by: Siruja Maharjan + * [66f581313f] Joshua Colp -- devicestate: Don't create topic when + change isn't cached. + + Category: Core/Streams + + ASTERISK-28870: streams: One memory leak and one issue cloning streams + Reported by: George Joseph + * [7fbfbe7da0] George Joseph -- streams: Fix one memory leak and one + formats ref issue + ASTERISK-28846: stream: Enforce formats immutability + Reported by: Joshua C. Colp + * [1c5e68580a] Joshua C. Colp -- stream: Enforce formats immutability + and ensure formats exist. + ASTERISK-28625: Playback of local files impacted by large media cache + Reported by: Kevin Reeves + * [c626ccec12] Kevin Reeves -- main/file.c: Limit media cache usage to + remote files. + + Category: Core/UDPTL + + ASTERISK-28483: packet lost on UDPTL wrap around + Reported by: Torrey Searle + * [084901d548] Torrey Searle -- main/udptl.c: correctly handle udptl + sequence wrap around + + Category: Documentation + + ASTERISK-29779: progdocs: Hidden code sections with syntax errors. + Reported by: Alexander Traud + * [f946b92553] Alexander Traud -- progdocs: Fix for Doxygen, the hidden + parts. + ASTERISK-29732: progdocs: Fix grouping for latest Doxygen + Reported by: Alexander Traud + * [751bbf4b97] Alexander Traud -- progdocs: Fix grouping for latest + Doxygen. + ASTERISK-29764: chan_misdn: Fix for Doxygen + Reported by: Alexander Traud + * [858c9e1d80] Alexander Traud -- chan_misdn: Fix for Doxygen. + ASTERISK-29773: progdocs: doxyref.h outdated + Reported by: Alexander Traud + * [422f5389f6] Alexander Traud -- progdocs: Remove outdated references + in doxyref.h. + ASTERISK-29765: xmldoc: Fix for Doxygen + Reported by: Alexander Traud + * [31e385bebb] Alexander Traud -- xmldoc: Fix for Doxygen. + ASTERISK-29762: channels: Fix for Doxygen + Reported by: Alexander Traud + * [3f86c95cf5] Alexander Traud -- channels: Fix for Doxygen. + ASTERISK-29754: odbc: Fix for Doxygen + Reported by: Alexander Traud + * [783b775946] Alexander Traud -- odbc: Fix for Doxygen. + ASTERISK-29753: parking: Fix for Doxygen + Reported by: Alexander Traud + * [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen. + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + ASTERISK-29751: channel: Fix for Doxygen + Reported by: Alexander Traud + * [e27b91d542] Alexander Traud -- channel: Fix for Doxygen. + ASTERISK-29752: app: Fix for Doxygen + Reported by: Alexander Traud + * [e7d5db1471] Alexander Traud -- app: Fix for Doxygen. + ASTERISK-29749: res_xmpp: Fix for Doxygen + Reported by: Alexander Traud + * [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen. + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29741: tests: Fix for Doxygen + Reported by: Alexander Traud + * [1a9df88d98] Alexander Traud -- tests: Fix for Doxygen. + ASTERISK-29740: apps: Fix for Doxygen + Reported by: Alexander Traud + * [09bac49a01] Alexander Traud -- apps: Fix for Doxygen. + ASTERISK-29733: progdocs: Avoid name with Doxygen \file + Reported by: Alexander Traud + * [44a9c16e9c] Alexander Traud -- progdocs: Avoid 'name' with Doxygen + \file. + ASTERISK-29736: bridge_channel: Fix for Doxygen + Reported by: Alexander Traud + * [d08792ceba] Alexander Traud -- bridge_channel: Fix for Doxygen. + ASTERISK-29735: progdocs: Avoid multiple use of section labels + Reported by: Alexander Traud + * [57b4956a8a] Alexander Traud -- progdocs: Avoid multiple use of + section labels. + ASTERISK-29734: progdocs: Use Doxygen \example correctly + Reported by: Alexander Traud + * [23b16c5372] Alexander Traud -- progdocs: Use Doxygen \example + correctly. + ASTERISK-29614: app_agent_pool: XML Doc: unterminated entity reference + Reported by: Alexander Traud + * [5c836c8e36] Sean Bright -- config_options: Handle ACO arrays + correctly in generated XML docs. + ASTERISK-24434: Fix differing usage of assignment operators in + modules.conf + Reported by: Rusty Newton + * [be3153346b] Sean Bright -- modules.conf: Fix more differing usages of + assignment operators. + * [3084084648] Sean Bright -- modules.conf: Fix differing usage of + assignment operators. + ASTERISK-24631: Incorrect description of option "context" in + queues.conf.sample + Reported by: Etienne Lessard + * [31364fa4c8] Sean Bright -- queues.conf.sample: Correct 'context' + documentation. + ASTERISK-25358: dateformat not read from logger.conf by remote console + Reported by: Igor Liferenko + * [a0009c807e] Mark Murawski -- logger: Console sessions will now + respect logger.conf dateformat= option + ASTERISK-29136: config: Sample features.conf incorrectly includes " around + sound files + Reported by: Benjamin M. + * [6f321b561a] Sean Bright -- features.conf.sample: Sample sound files + incorrectly quoted + ASTERISK-26424: app_voicemail: Undocumented behavior from VMSayName + Reported by: Eric Smith + * [abee490639] Sean Bright -- app_voicemail.c: Document VMSayName + interruption behavior + ASTERISK-28816: [patch] BuildSystem: Remove doc/tex and doc/pdf leftovers. + Reported by: Alexander Traud + * [7cdb493a1e] Alexander Traud -- BuildSystem: Remove doc/tex and + doc/pdf leftovers. + ASTERISK-24484: Update documentation for statsd module - usage + requirements unclear + Reported by: Dan Jenkins + * [c376e9f8a8] Sean Bright -- res_statsd: Document that res_statsd does + nothing on its own + ASTERISK-25429: res_pjsip_endpoint_identifier_ip: Document support for + hostnames + Reported by: Joshua C. Colp + * [29d867ed67] Sean Bright -- res_pjsip_endpoint_identifier_ip: Document + support for hostnames + ASTERISK-28507: Wiki docs missing for MessageWaiting + Reported by: David M. Lee + * [d5f3ec92d0] George Joseph -- CI: Update buildAsterisk.sh to do a + "make full" + ASTERISK-20986: QUEUE_MEMBER 's description is inaccurate + Reported by: Olivier Krief + * [834d022da5] Sean Bright -- app_queue: Fix documentation for + QUEUE_MEMBER function. + ASTERISK-24173: File menuselect/menuselect_gtk.c has no license header + Reported by: Jeremy Lainé + * [8dc5f86095] Sean Bright -- menuselect: Add license header to + menuselect_gtk.c + ASTERISK-28150: Formatting error in documentation + Reported by: Scott Griepentrog + * [fdca9cb64f] Kevin Harwell -- res_pjsip: formatting error in + documentation + + Category: Formats/General + + ASTERISK-29539: Segmentation fault at ast_writestream() when write handler + not defined (happens with OGG/Speex) + Reported by: Ernani José Camargo Azevedo + * [628830921e] Kevin Harwell -- format_ogg_speex: Implement a "not + supported" write handler + + Category: Functions/General + + ASTERISK-28626: Missing arguments in PJSIP_CONTACT function documentation + Reported by: Pascal Cadotte Michaud + * [bf4dd3d837] Pascal Cadotte Michaud -- PJSIP_CONTACT: add missing + argument documentation + * [7e3015d779] Pascal Cadotte Michaud -- PJSIP_CONTACT: add missing + argument documentation + ASTERISK-26481: FILE function grabs garbage along with read data when + target line has no newline + Reported by: Jonathan Harris + * [bf7c808604] Sean Bright -- func_env: Prevent FILE() from reading + garbage at end-of-file + + Category: Functions/func_aes + + ASTERISK-28788: func_aes: incorrectly printing error 'declined to load' + Reported by: Alexander Traud + * [cd8cbf7384] Alexander Traud -- func_aes: Avoid incorrect error + message on load. + + Category: Functions/func_channel + + ASTERISK-28796: func_channel: cannot read fields exten, context, + userfield, channame from dialplan + Reported by: Sébastien Duthil + * [d40e343710] Sebastien Duthil -- func_channel: allow reading 4 fields + from dialplan + + Category: Functions/func_curl + + ASTERISK-28825: Any curl response checks out as valid even if 404 is + returned. + Reported by: dovid + * [c635c78265] Dovid Bender -- func_curl.c: Allow user to set what + return codes constitute a failure. + ASTERISK-29085: func_curl: Segmentation fault when using CURL after + setting httpheader CURLOPT + Reported by: Péter Juhász + * [28c88e8fe2] Sean Bright -- func_curl.c: Prevent crash when using + CURLOPT(httpheader) + + Category: Functions/func_enum + + ASTERISK-26711: func_enum: ENUM code wrong case + Reported by: Vitold + * [517224ce85] Sean Bright -- enum.c: Add support for regular expression + flag in NAPTR record + ASTERISK-19460: [patch] Function TXTCIDNAME never actually makes DNS calls + and always returns an empty string + Reported by: George Joseph + * [ab63f0cd0f] Sean Bright -- enum.c: Make ast_get_txt() actually do + something. + + Category: Functions/func_lock + + ASTERISK-29217: LOCK() can grant the same lock to multiple channels + spuriously + Reported by: Jaco Kroon + * [3a230cc6a9] Jaco Kroon -- func_lock: fix multiple-channel-grant + problems. + + Category: Functions/func_odbc + + ASTERISK-29754: odbc: Fix for Doxygen + Reported by: Alexander Traud + * [783b775946] Alexander Traud -- odbc: Fix for Doxygen. + ASTERISK-29144: GCC Warnings with OPTIMIZE=-Og make + Reported by: Alexander Traud + * [e0ee53dc9c] Alexander Traud -- Compiler fixes for GCC with -Og + ASTERISK-20325: Comments in configs/func_odbc.conf.sample are not + consistent with examples. Missing examples. + Reported by: Olivier Krief + * [c4e0983742] Sean Bright -- func_odbc.conf.sample: Clarify sample + documentation + ASTERISK-28497: func_odbc: truncating Unicode string on readsql + Reported by: Boris P. Korzun + * [8979921da9] Boris P. Korzun -- func_odbc: acf_odbc_read() and + cli_odbc_read() unicode support + + Category: Functions/func_strings + + ASTERISK-28159: SIGABRT caused by stack corruption in hashkeys_read when + no matching keys present + Reported by: Michael Walton + * [4b5d11ec17] Michael Walton -- func_strings: HASHKEY - negative array + index can cause corruption + + Category: Functions/func_talkdetect + + ASTERISK-27816: func_talkdetect's logic is completely broken + Reported by: Moritz Fain + * [8c2720e540] Sean Bright -- func_talkdetect.c: Fix logical errors in + silence detection. + + Category: Functions/func_version + + ASTERISK-29021: [patch] Fix VERSION(ASTERISK_VERSION_NUM) on certified + versions + Reported by: cmaj + * [543f936147] cmaj -- Makefile: Fix certified version numbers + + Category: General + + ASTERISK-29630: Asterisk is unable to read extended number format terminfo + files + Reported by: Sean Bright + * [858cb386fd] Sean Bright -- term.c: Add support for extended number + format terminfo files. + ASTERISK-29148: AST_MODULE_INFO no, MODULEINFO depend + Reported by: Alexander Traud + * [bf9f0f13c4] Alexander Traud -- loader: Sync load- and build-time + deps. + ASTERISK-28930: ./configure --without-ssl build failure + Reported by: Jaco Kroon + * [9b5042433b] Joshua C. Colp -- menuselect: Resolve infinite loop in + dependency scenario. + ASTERISK-28838: AST_MODULE_INFO requires, MODULEINFO does not mention + Reported by: Alexander Traud + * [abf4d74384] Alexander Traud -- cdr_odbc: Sync load- and build-time + deps. + * [191f136260] Alexander Traud -- res_pjsip_refer: Add build-time + dependency. + * [5c2b8fdeca] Alexander Traud -- app_getcpeid: Add build-time + dependency. + * [008f46bf1e] Alexander Traud -- res_pjsip: Sync load- and build-time + deps. + * [e2affa3b0a] Alexander Traud -- curl: Add build-time dependency. + * [f1135b453b] Alexander Traud -- res_pjsip: Add build-time dependency. + ASTERISK-28609: Memory Leak in res_rtp_asterisk.c + Reported by: Ted G + * [39c920ac78] George Joseph -- res_rtp_asterisk: Add frame list + cleanups to ast_rtp_read + ASTERISK-28590: utils.c throws repeated warnings; + "pthread_attr_setstacksize: Invalid argument" + Reported by: Speed Dial Dave + * [a4222614c4] Sean Bright -- utils.h: Set lower bound for thread stack + size to PTHREAD_STACK_MIN + ASTERISK-28523: Asterisk 16.5.0 Memory leak + Reported by: Cyril Ramière + * [a4caaef64c] Kevin Harwell -- res_sorcery_memory_cache: stale item + update leak + ASTERISK-28472: Asterisk occasionally passes a NULL as srtp->session to + srtp_protect/unprotect causing SEGV + Reported by: Jonas Swiatek + * [b805e1237d] Kevin Harwell -- srtp: Fix possible race condition, and + add NULL checks + ASTERISK-28412: GCC 9 catches more string formatting issues + Reported by: George Joseph + * [c5c953c1f1] George Joseph -- Fixes for GCC 9 + ASTERISK-28319: musl: Crash on startup when loading modules + Reported by: Sebastian Kemper + * [ccac55b894] Sebastian Kemper -- loader: support for permanent + dlopen() + ASTERISK-28332: Variable ALTCONF ignored when service is used in Debian + Reported by: Cirillo Ferreira + * [7d5409912f] cirillor -- Variable ALTCONF ignored when service is used + in Debian + + Category: PBX/General + + ASTERISK-29046: pbx: Deadlock when doing a reload, while simultaneously + doing an ExtensionState on a pattern match hint that ends up adding an + extension + Reported by: Ramarajan + * [6d50d152d8] Joshua C. Colp -- pbx: Fix hints deadlock between reload + and ExtensionState. + ASTERISK-28695: core: minmemfree watermark uses free RAM, not available + RAM + Reported by: Kevin Flyn + * [50d02d6194] Sean Bright -- pbx.c: Include filesystem cache in free + memory calculation + ASTERISK-28605: chan_dahdi: Deadlock in Hangup Scenarios with concurrent + command pri show span X + Reported by: Dirk Wendland + * [ee7d72eb72] George Joseph -- sig_pri: Fix deadlock caused by + sig_pri_queue_hangup + ASTERISK-20182: Parsing a label beginning with a numeric character in all + Goto/GotoIf/GotoIfTime application causes unexpected behavior + Reported by: Janu + * [2cf4e8bff9] Sean Bright -- pbx.c: Properly parse labels with leading + digits + + Category: PBX/pbx_ael + + ASTERISK-29609: Subsequent 'ael reload' will cause a lock up + Reported by: Mark Murawski + * [042ae05be7] Mark Murawski -- pbx_ael: Fix crash and lockup issue + regarding 'ael reload' + ASTERISK-17799: AEL reload causes loss of control in a macro + Reported by: Kirill Katsnelson + * [f827193424] Sean Bright -- res_ael: Create consistent label names + across reloads + ASTERISK-18593: AEL for loops use Macro app and pipe delimiter + Reported by: Luke-Jr + * [f7f1a2cbb7] Sean Bright -- res_ael: Use Gosub in for loop expressions + ASTERISK-14939: AEL parsers does not find existing label + Reported by: klaus3000 + * [395c7ed5b7] Sean Bright -- res_ael: Fix pattern matching against + literal '+' + + Category: PBX/pbx_config + + ASTERISK-28534: Segmentation fault when there is no priority for an + extension + Reported by: Timothy Vanderaerden + * [702019fc80] Sean Bright -- pbx: Prevent Realtime switch crash on + invalid priority + ASTERISK-28146: pbx_config: Only the first [globals] section is processed. + Reported by: Corey Farrell + * [8e34cb302e] Corey Farrell -- pbx_config: Only the first [globals] + section is seen. + + Category: PBX/pbx_dundi + + ASTERISK-21205: [patch] dundi_read_result crash due to negative number + Reported by: Jaco Kroon + * [40e93b0240] Jaco Kroon -- dundi: fix NULL dereference. + + Category: Resources/General + + ASTERISK-29130: prometheus: Crash when scraping bridge + Reported by: Francisco Correia + * [19eef2a6dc] George Joseph -- res_prometheus: Clone containers before + iterating + ASTERISK-28301: Allow voicemail boxes to be subscribed to with a presence + event package + Reported by: George Joseph + * [9ee76cf070] George Joseph -- res_mwi_devstate.c: New module to allow + presence subs to VM boxes + ASTERISK-28045: configure script does not enforce libunbound2 version + Reported by: Samuel Galarneau + * [1ba51b00cc] George Joseph -- configure.ac: Check for unbound version + >= 1.5 + + Category: Resources/res_ari + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + ASTERISK-28948: ARI channel create doesn't referencing the channel_id + parameter + Reported by: sungtae kim + * [bbe0f2230d] sungtae kim -- res_ari: Fix create channel request + channelId parameter parsing + ASTERISK-28679: stasis application is destroyed after its creation + Reported by: Francois Blackburn + * [4206830a52] Kevin Harwell -- res_stasis: trigger cleanup after update + ASTERISK-28585: ari/resource_events: Crash in event session cleanup + Reported by: Kevin Harwell + * [360936ead5] Joshua Colp -- res_ari_events: Add module reference when + a WebSocket is open. + ASTERISK-26718: ARI: Bridge destroying doesn't work as expected + Reported by: Marin Odrljin + * [3087c82eb6] Holger Hans Peter Freyther -- stasis: Call callbacks when + imparting fails + ASTERISK-28106: Astricon Feedback: Unable to filter ARI events when + GETting causes overload of events + Reported by: George Joseph + * [8681fc9db7] Kevin Harwell -- ARI event type filtering + ASTERISK-28104: AstriCon Feedback: Automatically create a 1 line dialplan + context for stasis apps + Reported by: George Joseph + * [3f9c5fba95] Ben Ford -- res_stasis: Auto-create context and extens on + Stasis app launch. + + Category: Resources/res_ari_applications + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + ASTERISK-28302: ARI: "Error destroying mutex" when listing all ARI + applications + Reported by: Stefan Repke + * [e687cf214d] Joshua C. Colp -- res_ari_applications: Fix incorrect + call to ao2_lock. + + Category: Resources/res_ari_bridges + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + ASTERISK-29668: ari: Listing bridges fails when dialing bridge exists + Reported by: Joshua C. Colp + * [ea36473c45] Joshua C. Colp -- ari: Ignore invisible bridges when + listing bridges. + ASTERISK-28898: bridge_softmix: Conference bridge not passing silent rtp + packets + Reported by: Jonathan Hunter + * [e8c8d69d47] Joshua C. Colp -- bridge_softmix: Always remove audio + from mixed frame. + + Category: Resources/res_ari_channels + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + ASTERISK-29629: ARI external media channel creation doesn't set option + data + Reported by: sungtae kim + * [d9747104ff] Sungtae Kim -- resource_channels.c: Fix external media + data option + ASTERISK-29622: ARI: external media create doesn't use body parameter + Reported by: sungtae kim + * [479cc17f45] sungtae kim -- resource_channels.c: Fix wrong external + media parameter parse + ASTERISK-29514: ari: Audiosocket segfault when no data specified + Reported by: Igor Goncharovsky + * [b9bb96ffed] Igor Goncharovsky -- res_ari: Fix audiosocket segfault + ASTERISK-29188: null media causing the Asterisk crash + Reported by: sungtae kim + * [4b450b4334] Sungtae Kim -- res_ari: Fix wrong media uri handle for + channel play + ASTERISK-28940: /channels/create doesn't get any parameters from the body + Reported by: sungtae kim + * [fa7c69f40f] sungtae kim -- res_ari: Fix create request body parameter + parsing. + ASTERISK-28847: ARI channels cuts the endpoint string over 80 characters + Reported by: sungtae kim + * [9ad3d2829c] sungtae kim -- res_ari_channels: Fixed endpoint 80 + characters limit + ASTERISK-28181: ari: Originating overwrites channel start time + Reported by: sungtae kim + * [5a2a7d65b5] Sungtae Kim -- main/cdr: Fixed cdr start overwriting + ASTERISK-28169: ARI /channels/create handler causes core dump + Reported by: sungtae kim + * [1dea497454] Sungtae Kim -- res/res_ari: Fix null endpoint handle + + Category: Resources/res_ari_device_states + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + + Category: Resources/res_ari_endpoints + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + ASTERISK-29108: resource_endpoints.c : Memory leak if endpoint not found + Reported by: Jean Aunis - Prescom + * [7ced144867] Jean Aunis -- resource_endpoints.c: memory leak when + providing a 404 response + + Category: Resources/res_ari_events + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + + Category: Resources/res_ari_mailboxes + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + + Category: Resources/res_ari_playbacks + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + + Category: Resources/res_ari_recordings + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + + Category: Resources/res_ari_sounds + + ASTERISK-29756: res_ari: Fix for Doxygen + Reported by: Alexander Traud + * [5b5a9ea4f0] Alexander Traud -- res_ari: Fix for Doxygen. + + Category: Resources/res_calendar_exchange + + ASTERISK-28572: Memory leaks in res_calendar_exchange and + res_calendar_icalendar + Reported by: Yoooooo Ha + * [16e668c7dd] Sean Bright -- res_calendar: Resolve memory leak on + calendar destruction + + Category: Resources/res_calendar_icalendar + + ASTERISK-28572: Memory leaks in res_calendar_exchange and + res_calendar_icalendar + Reported by: Yoooooo Ha + * [16e668c7dd] Sean Bright -- res_calendar: Resolve memory leak on + calendar destruction + + Category: Resources/res_config_odbc + + ASTERISK-28341: res_config_odbc eliminates empty custom (“@” prefix) + variables + Reported by: Alexei Gradinari + * [e5d990d01d] Alexei Gradinari -- res_config_odbc: set empty extended + field as a single whitespace + ASTERISK-28166: app_voicemail: Asterisk unresponsive after changing + voicemail password with ODBC + Reported by: Michael + * [719a4643ab] Sean Bright -- res_config_odbc: Avoid deadlock when + max_connections = 1 + + Category: Resources/res_config_pgsql + + ASTERISK-29293: res_config_pgsql: Limit realtime_pgsql() to return one (no + more) record + Reported by: Boris P. Korzun + * [beb579bc99] Boris P. Korzun -- res_config_pgsql: Limit + realtime_pgsql() to return one (no more) record. + + Category: Resources/res_config_sqlite3 + + ASTERISK-28477: Crash when not specifying "dbfile" in + res_config_sqlite3.conf + Reported by: Dennis + * [2424ecaf66] Sean Bright -- res_config_sqlite3: Only join threads that + we started + ASTERISK-28478: Crash performing "core reload" with modified + res_config_sqlite3.conf + Reported by: Dennis + * [2424ecaf66] Sean Bright -- res_config_sqlite3: Only join threads that + we started + + Category: Resources/res_convert + + ASTERISK-29539: Segmentation fault at ast_writestream() when write handler + not defined (happens with OGG/Speex) + Reported by: Ernani José Camargo Azevedo + * [628830921e] Kevin Harwell -- format_ogg_speex: Implement a "not + supported" write handler + + Category: Resources/res_corosync + + ASTERISK-28888: res_corosync: causes asterisk crash in huge distributed + environment. + Reported by: Università di Bologna - CESIA VoIP + * [0c1c386634] Università di Bologna - CESIA VoIP -- res_corosync: Fix + crash in huge distributed environment. + + Category: Resources/res_fax + + ASTERISK-29312: res_fax: asterisk fails to publish the Stasis and + ReceiveFax status messages if the remote Station ID contains invalid UTF-8 + characters + Reported by: Alexei Gradinari + * [d5e73d2121] Alexei Gradinari -- res_fax: validate the remote/local + Station ID for UTF-8 format + ASTERISK-28900: res_fax: Double frame free when gateway in use with + off-nominal format usage + Reported by: Gregory Massel + * [d2500c6273] Joshua C. Colp -- res_fax: Don't consume frames given to + fax gateway on write. + ASTERISK-28660: res_fax: wrap Asterisk initiated negotiation with config + option + Reported by: Kevin Harwell + * [b6f5607359] Kevin Harwell -- res_fax: wrap v21 detected Asterisk + initiated negotiation with config option + ASTERISK-27981: res_fax: Fax session leak with fax gatewaying + Reported by: pasandev + * [1b62781be0] Alexei Gradinari -- res_fax: fix segfault on inactive + "reserved" fax session + * [40def05949] Joshua Colp -- res_fax: Handle fax gateway being started + more than once. + + Category: Resources/res_format_attr_h264 + + ASTERISK-27959: [patch] Asterisk 15.4.1 h264 fmtp negotiation problem + Reported by: David Kuehling + * [5b12dfa6dd] Sean Bright -- res_format_attr_h264.c: Make sure + profile-level-id fmtp attribute is set + + Category: Resources/res_http_media_cache + + ASTERISK-27871: Remote URL in playback must end with file extension + Reported by: Caesar + * [76c09b1cfd] Sean Bright -- res_http_media_cache.c: Parse media URLs + to find extensions. + ASTERISK-29173: Media cache URL requests allow infinite redirects + Reported by: Sean Bright + * [f39d5ea7cd] Sean Bright -- res_http_media_cache.c: Set reasonable + number of redirects + + Category: Resources/res_http_websocket + + ASTERISK-28975: res_http_websocket: Text payload data doesn't necessary + include trailing zero + Reported by: Nickolay V. Shmyrev + * [e4d24f5137] Nickolay Shmyrev -- res_http_websocket: Avoid reading + past end of string + ASTERISK-28562: SIP WSS message not processed until next frame arrives + Reported by: Robert Sutton + * [87110c1bdf] Sean Bright -- websocket: Consider pending SSL data when + waiting for socket input + ASTERISK-28257: res_http_websocket: PING / PONG opcodes break data + reception + Reported by: Jeremy Lainé + * [69e9fd63e1] Jeremy Lainé -- res_http_websocket: ensure control frames + do not interfere with data + ASTERISK-28231: res_http_websocket: Not responding to Connection Close + Frame (opcode 8) + Reported by: Jeremy Lainé + * [0b8867f7d6] Jeremy Lainé -- res_http_websocket: respond to CLOSE + opcode + + Category: Resources/res_indications + + ASTERISK-28391: res_indications: Crash requesting autocomplete on + indications cli command + Reported by: Lucas Mendes + * [4f69ea928a] Lucas Mendes -- res_indications: Fix indications remove + command autocomplete + + Category: Resources/res_monitor + + ASTERISK-28249: res_monitor: Segfault with Monitor(wav,file,i) + Reported by: Valentin Vidić + * [17f76d27cc] Valentin Vidic -- channel.c: Fix segfault with + Monitor(wav,file,i) + + Category: Resources/res_musiconhold + + ASTERISK-29211: res_musiconhold: Segfault on realtime music on hold + without entries + Reported by: Nathan Bruning + * [0774d9f9aa] Nathan Bruning -- res_musiconhold: Don't crash when + real-time doesn't return any entries + ASTERISK-29099: res_musiconhold: Realtime MOH only loads a single entry + Reported by: laszlovl + * [b3b6b5e9f7] laszlovl -- res_musiconhold: Load all realtime entries, + not just the first + ASTERISK-24329: Music On Hold announcement cuts intro of music the first + time it is played + Reported by: Thomas Frederiksen + * [d0644faa5a] Sean Bright -- res_musiconhold: Start playlist after + initial announcement + ASTERISK-28927: Asterisk crash in music on hold + Reported by: David Cunningham + * [57554c2834] Sean Bright -- res_musiconhold.c: Prevent crash with + realtime MoH + ASTERISK-28892: res_musiconhold: Module res_musiconhold throws false + warning + Reported by: Nicholas John Koch + * [fef97a9a72] Nicholas John Koch -- res_musiconhold: Added check for + dot character in path of playlist entries to avoid warnings + ASTERISK-28735: Realtime MoH Unknown format '' -- defaulting to SLIN + Reported by: Ross Beer + * [aeff1f2c53] Sean Bright -- res_musiconhold: Avoid spurious warning + when 'format' is the empty string + ASTERISK-28029: [patch] res_musiconhold : music on hold will not start if + previous hold just reached end of file + Reported by: Frederic LE FOLL + * [35e02d6f17] Frederic LE FOLL -- res_musiconhold.c: Restart MOH if + previous hold just reached end-of-file + + Category: Resources/res_odbc + + ASTERISK-29754: odbc: Fix for Doxygen + Reported by: Alexander Traud + * [783b775946] Alexander Traud -- odbc: Fix for Doxygen. + ASTERISK-29311: res_odbc_transaction sets forcecommit default value based + on isolation level instead of forcecommit + Reported by: Jaco Kroon + * [7ab53fce7a] Jaco Kroon -- res_odbc_transaction: correctly initialise + forcecommit value from DSN. + ASTERISK-28166: app_voicemail: Asterisk unresponsive after changing + voicemail password with ODBC + Reported by: Michael + * [719a4643ab] Sean Bright -- res_config_odbc: Avoid deadlock when + max_connections = 1 + ASTERISK-28277: database: Add some basic logging + Reported by: Joshua C. Colp + * [54a912b26d] Joshua Colp -- res_odbc: Add basic query logging. + ASTERISK-28065: res_odbc: missing SQL error diagnostic + Reported by: Alexei Gradinari + * [e6a69ea2cf] Alexei Gradinari -- res_odbc: fix missing SQL error + diagnostic + + Category: Resources/res_parking + + ASTERISK-29753: parking: Fix for Doxygen + Reported by: Alexander Traud + * [c549eda0a7] Alexander Traud -- parking: Fix for Doxygen. + ASTERISK-29042: res_parking: Parker UUID is no longer copied + Reported by: Misha Vodsedalek + * [4f0766dcda] Joshua C. Colp -- parking: Copy parker UUID as well. + ASTERISK-28631: res_parking: Doesn't park when parkee and parker are the + same + Reported by: Ross Beer + * [811ae88da4] Joshua Colp -- parking: Fall back to parker channel name + even if it matches parkee. + ASTERISK-28616: parking: Deadlock when multi call parking + Reported by: Joshua C. Colp + * [807a70b7ae] Joshua Colp -- parking: Fix case where we can't get the + parker. + * [e924c5107c] Joshua Colp -- parking: Use channel snapshot instead of + channel. + ASTERISK-28173: Deadlock in chan_sip handling subscribe request during + res_parking reload + Reported by: Giuseppe Sucameli + * [e2bbab17b3] Giuseppe Sucameli -- Fix deadlock handling subscribe req + during res_parking reload + + Category: Resources/res_pjproject + + ASTERISK-29582: res_pjproject: Can't map pjproject log messages to + Asterisk TRACE + Reported by: George Joseph + * [b72425b1f0] George Joseph -- res_pjproject: Allow mapping to Asterisk + TRACE level + + Category: Resources/res_pjsip + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29618: ConfBridge errors on creation conference room + Reported by: Alexander Zharov + * [de19836c24] George Joseph -- bridge_softmix: Suppress error on + topology change failure + ASTERISK-29354: res_pjsip: Allow partial reloading of transports + Reported by: Joshua C. Colp + * [f213833514] Joshua C. Colp -- res_pjsip: Add support for partial + transport reload. + ASTERISK-29196: res_pjsip: Segmentation fault + Reported by: Mauri de Souza Meneguzzo (3CPlus) + * [acb7ce4fe7] Joshua C. Colp -- pjsip: Make modify_local_offer2 + tolerate previous failed SDP. + ASTERISK-29261: res_pjsip: user=phone validation fail for isup numbers + containing *# + Reported by: Mark Petersen + * [176274caa4] Mark Petersen -- res/res_pjsip.c: allow user=phone when + number contain *# + ASTERISK-29165: res_pjsip: malformed header Accept-Encoding in OPTIONS + response + Reported by: Alexander Greiner-Baer + * [c79bd583d9] Alexander Greiner-Baer -- res_pjsip: set Accept-Encoding + to identity in OPTIONS response + ASTERISK-28933: res_pjsip.so fails to load when bundled pjproject is + compiled without libssl + Reported by: Walter Doekes + * [5a6037778b] Alexander Traud -- res_pjsip/config_transport: Load and + run without OpenSSL. + ASTERISK-29013: res_pjsip: Asterisk doesn't stop sending invites (with + auth) on 407 replies + Reported by: Sebastian Damm + * [82325ba58b] Ben Ford -- AST-2020-002 - res_pjsip: Stop sending + INVITEs after challenge limit. + ASTERISK-29124: res_pjsip: flow transport broken for outbound requests + Reported by: Nick French + * [f041763e3b] Nick French -- res_pjsip_session: Restore calls to + ast_sip_message_apply_transport() + ASTERISK-28995: res_pjsip_registrar: Expires on statically configured + contacts is not correct + Reported by: tootai + * [99eafe5771] Joshua C. Colp -- res_pjsip_registrar: Don't specify an + expiration for static contacts. + ASTERISK-28965: res_pjsip: Apply outbound proxy to static contacts on AOR + Reported by: Joshua C. Colp + * [4f86118bd8] Joshua C. Colp -- res_pjsip: Apply AOR outbound proxy to + static contacts. + ASTERISK-28936: res_pjsip: crash when dialing non-sip uri + Reported by: Walter Doekes + * [e74dde5100] Walter Doekes -- pjsip: Prevent invalid memory access + when attempting to contact a non-sip URI + ASTERISK-28794: res_pjsip: Crash when escaping during URI printing + Reported by: nappsoft + * [9c2871edf4] Joshua C. Colp -- res_pjsip: Use correct pool for storing + the contact_user value. + ASTERISK-26780: res_pjsip: PJSIP Registration Fails when + transport=transport-udp6 + Reported by: Peter Sokolov + * [c8dec423d2] Peter Sokolov -- pjsip_resolver.c: Ensure AAAA dns + requests are made. + ASTERISK-28854: SIGSEGV when pjsip show history encounters IPV6 address + Reported by: Roger James + * [4a072c4890] Roger James -- res_pjsip_history.c: Fix to stop SIGSEGV + when IPv6 addresses are encountered. + ASTERISK-28056: res_pjsip: Incorrect endpoint status after endpoint + synchronization for a specific AOR + Reported by: Jason Hord + * [d845464c76] Jason Hord -- res_pjsip: Don't set endpoint to + unavailable in all cases. + ASTERISK-28790: Crash during conference call using confbridge and video + Reported by: Pascal Cadotte Michaud + * [96e8d411e1] Joshua C. Colp -- res_rtp_asterisk: Ensure sufficient + space for worst case NACK. + ASTERISK-28743: Asterisk is crashing if the 200 OK with SDP + Reported by: sungtae kim + * [8147f43756] Sungtae Kim -- res_pjsip_session: Fixed wrong session + termination + ASTERISK-23407: Fix the FSF address in the headers of lots of pjproject + files + Reported by: Jared Smith + * [0a7fe3097f] Jared Smith -- indications.conf.sample: Add indication + tones for Indonesia + ASTERISK-28139: RTP Stream Incorrect Payload Type Causes Asterisk To Drop + Calls + Reported by: Paul Brooks + * [313189aae2] Sean Bright -- chan_pjsip: Ignore RTP that we haven't + negotiated + ASTERISK-28641: res_pjsip Segfaults when realtime configuration to an AOR + points to a not existent AOR + Reported by: Ross Beer + * [b1be06df8d] Sean Bright -- res_pjsip_registrar.c: Prevent potential + double free if AOR is not found + ASTERISK-28544: Wrong contact representation in ipv6 mode + Reported by: Jørgen H + * [377d7bdab6] Sean Bright -- res_pjsip_transport_websocket: Don't put + brackets around local_name if IPv6 + ASTERISK-28521: pjsip: Memory Leak + Reported by: Mark + * [cc83e76aa5] George Joseph -- pjproject_bundled: Revert pjproject 2.9 + commits causing leaks + ASTERISK-28228: res_pjsip: pjsip show contacts prints double entries + Reported by: Ian Jones + * [86452c9fa4] Joshua Colp -- res_pjsip: Fix multiple of the same + contact in "pjsip show contacts". + ASTERISK-28161: Removal of Previous Patch Causes PJSIP Timer Issues + Reported by: Ross Beer + * [3853fab3f5] Joshua Colp -- pjproject-bundled: Add upstream timer + fixes + * [7043ed6ac9] Sean Bright -- pjproject: Add timer patch from pjproject + r5934 + ASTERISK-28309: res_pjsip: Wrong Contact and Via fields with multiple UDP + interfaces + Reported by: Nikolay shakin + * [101272d0dc] Sean Bright -- Revert "pjsip_message_filter: Only do + interface lookup for wildcard addresses." + ASTERISK-28077: res_pjsip: improve realtime performance on CLI 'pjsip show + contacts' + Reported by: Alexei Gradinari + * [8bb031abc7] Alexei Gradinari -- res_pjsip: improve realtime + performance on CLI 'pjsip show contacts' + ASTERISK-27988: alembic: PJSIP "mwi_subscribe_replaces_unsolicited" field + is integer not boolean + Reported by: Joshua C. Colp + * [d60411a2b4] Richard Mudgett -- res_pjsip: Fix + mwi_subscribe_replaces_unsolicited type mismatch + ASTERISK-28022: res_pjsip realtime: uri column in ps_contacts table can be + too short + Reported by: Florian Floimair + * [3bdbbb7637] Florian Floimair -- alembic: increase uri column size + ASTERISK-27978: res_pjsip: Change default transport keepalive to preserve + behavior + Reported by: Joshua C. Colp + * [2c9757bc90] Joshua Colp -- res_pjsip: Update default keepalive + interval to 90 seconds. + + Category: Resources/res_pjsip/Bundling + + ASTERISK-29654: pjproject includes trailing whitespace in sdp format + attributes + Reported by: George Joseph + * [0947c30224] George Joseph -- pjproject: Add patch to fix trailing + whitespace issue in rtpmap + ASTERISK-28059: PJSIP: Update bundled PJPROJECT to version 2.8 + Reported by: Joshua C. Colp + * [58035702cb] Richard Mudgett -- pjproject: Update initial 2.8 patches + to apply cleanly. + * [ce9a980be6] Joshua Colp -- pjproject: Upgrade to 2.8. + + Category: Resources/res_pjsip_acl + + ASTERISK-28697: res_pjsip: Named ACL does not update on reload if changed + Reported by: Timothy Vanderaerden + * [d6712790cd] Joshua C. Colp -- pjsip: Update ACLs on named ACL + changes. + + Category: Resources/res_pjsip_authenticator_digest + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29013: res_pjsip: Asterisk doesn't stop sending invites (with + auth) on 407 replies + Reported by: Sebastian Damm + * [82325ba58b] Ben Ford -- AST-2020-002 - res_pjsip: Stop sending + INVITEs after challenge limit. + + Category: Resources/res_pjsip_caller_id + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29703: res_pjsip_callerid: Fix OLI parsing + Reported by: N A + * [1cd2584b27] Naveen Albert -- res_pjsip_callerid: Fix OLI parsing + + Category: Resources/res_pjsip_config_wizard + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29503: Updated identify/match syntax not supported by config + wizard + Reported by: Sean Bright + * [146b59df3f] Sean Bright -- res_pjsip_config_wizard.c: Add port + matching support. + ASTERISK-29097: res_pjsip_config_wizard: Crash when freeing string when + failing to add extension + Reported by: Vieri + * [5a0b19a4f3] Sean Bright -- pbx.c: On error, + ast_add_extension2_lockopt should always free 'data' + ASTERISK-27992: PJSIP: Adding `sends_registrations = yes` to + pjsip_wizard.conf causes crash + Reported by: Jonathan Harris + * [82a43394ed] Sean Bright -- res_pjsip_config_wizard: Don't crash if + misconfigured + + Category: Resources/res_pjsip_diversion + + ASTERISK-29191: tel: URI in Diversion header causes crash + Reported by: Mikhail Ivanov + * [a7aea71e60] Torrey Searle -- res/res_pjsip_diversion: prevent crash + on tel: uri in History-Info + ASTERISK-29001: chan_pjsip does not process or forward 181 responses + Reported by: Torrey Searle + * [addd295cda] Torrey Searle -- res_pjsip_diversion: handle 181 + ASTERISK-28312: res_pjsip_diversion: Corrupted SIP Diversion field after + handling a 302 redirect + Reported by: Alex Odrov + * [106a8ff05c] Sean Bright -- res_pjsip_diversion: Use static pj_str_t + for Diversion header names + + Category: Resources/res_pjsip_endpoint_identifier_ip + + ASTERISK-29503: Updated identify/match syntax not supported by config + wizard + Reported by: Sean Bright + * [146b59df3f] Sean Bright -- res_pjsip_config_wizard.c: Add port + matching support. + ASTERISK-25429: res_pjsip_endpoint_identifier_ip: Document support for + hostnames + Reported by: Joshua C. Colp + * [29d867ed67] Sean Bright -- res_pjsip_endpoint_identifier_ip: Document + support for hostnames + ASTERISK-27548: res_pjsip_endpoint_identifier_ip only matches against + "generic string" headers + Reported by: George Joseph + * [e5ae04b48b] Richard Mudgett -- res_pjsip_endpoint_identifier_ip.c: + Added regex support to match_header + + Category: Resources/res_pjsip_logger + + ASTERISK-28932: res_pjsip_logger writing too big packets + Reported by: nappsoft + * [e8c6e9ae5d] Pirmin Walthert -- res_pjsip_logger: use the correct + pointer when logging tx_messages to pcap + ASTERISK-28921: Wrong return value check for fwrite when writing to pcap + file + Reported by: nappsoft + * [c16937cdbe] Pirmin Walthert -- res_pjsip_logger.c: correct the return + value checks when writing to pcap + + Category: Resources/res_pjsip_messaging + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29663: messaging: AMI MessageSend does not support same + parameters as dialplan application + Reported by: Brian J. Murrell + * [e98839b73c] Sean Bright -- message.c: Support 'To' header override + with AMI's MessageSend. + ASTERISK-29404: Consolidate res_pjsip_messaging fixes for domain name + Reported by: George Joseph + * [8e2672d2a4] George Joseph -- res_pjsip_messaging: Refactor outgoing + URI processing + ASTERISK-26082: res_pjsip_messaging: MessageSend Content-Type can't be + changed + Reported by: Alex + * [03d24ca4c1] Sean Bright -- res_pjsip_messaging: Allow Content-Type to + be overridden + ASTERISK-25421: PJSIP. MESSAGE_SEND_STATUS set to SUCCESS in spite of the + error when sending + Reported by: Dmitriy Serov + * [b1ca2c5d71] Sean Bright -- res_pjsip_messaging: Ensure + MESSAGE_SEND_STATUS is set properly + + Category: Resources/res_pjsip_mwi + + ASTERISK-28575: MWI Send Notify Crash on 16.6 + Reported by: Joshua Elson + * [5dae803eea] Kevin Harwell -- res_pjsip_mwi: potential double unref, + and potential unwanted double link + ASTERISK-28552: res_pjsip_mwi: Frack during unload on unsolicited_mwi + container + Reported by: Kevin Harwell + * [12dbeb69b0] Kevin Harwell -- res_pjsip_mwi: use an ao2_global object + for mwi containers + ASTERISK-27121: res_pjsip_mwi: Memory leak on reload + Reported by: Sergej Kasumovic + * [c93c579190] Kevin Harwell -- app_voicemail: Remove dependency on the + stasis cache + * [cdece3b637] George Joseph -- app_voicemail: Remove need to subscribe + to stasis + * [5ec6d2c33e] George Joseph -- stasis_cache: Stop caching stasis + subscription change messages + * [0dd8ab3532] George Joseph -- stasis_cache: Prune + stasis_subscription_change messages + ASTERISK-28306: res_pjsip_mwi: MWI NOTIFY occasionally takes minutes to be + sent + Reported by: Jared Hull + * [63d90c38eb] George Joseph -- app.c: Remove deletion of pool topic on + mwi state delete + + Category: Resources/res_pjsip_nat + + ASTERISK-29235: res_pjsip_nat: Contact is rewritten on REGISTER responses + with external_signaling_address + Reported by: Brian Paboojian + * [976b1a1d7a] Joshua C. Colp -- res_pjsip_nat: Don't rewrite Contact on + REGISTER responses. + ASTERISK-28884: x-ast-orig-host not filtered out from request URI and To + header + Reported by: nappsoft + * [1399f8b4fe] Pirmin Walthert -- res_pjsip_nat.c: remove + x-ast-orig-host from request URI and To header + ASTERISK-28129: Incorrect Behavior for rewrite_contact when Re-Invite + omits routset + Reported by: Torrey Searle + * [d0554783e2] Torrey Searle -- res/res_pjsip_nat: Fix logic for + REINVITES + + Category: Resources/res_pjsip_notify + + ASTERISK-27775: res_pjsip_notify: Multiple Event headers can be present + instead of just one + Reported by: AvayaXAsterisk + * [90af050fa4] Sean Bright -- res_pjsip_notify: Only allow a single + Event header to be added to a NOTIFY + ASTERISK-28137: res_pjsip_notify: improve realtime performance on CLI + completion on the endpoint + Reported by: Alexei Gradinari + * [e407b8af21] Alexei Gradinari -- res_pjsip_notify: improve realtime + performance on CLI completion on the endpoint + + Category: Resources/res_pjsip_outbound_authenticator_digest + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29397: pjsip: Asterisk isn't tolerant of RFC8760 UASs + Reported by: George Joseph + * [655ee680cd] George Joseph -- res_pjsip_outbound_authenticator_digest: + Be tolerant of RFC8760 UASs + + Category: Resources/res_pjsip_outbound_registration + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29315: res_pjsip: re-registration gets stuck if setting initial + auth credentials fails + Reported by: Nick French + * [dedfb334bd] Nick French -- res_pjsip: dont return early from + registration if init auth fails + ASTERISK-29231: pjsip: SIGSEGV in CLI if no trunk is registered + Reported by: Michael Maier + * [b3927ff8bc] George Joseph -- Revert + "res_pjsip_outbound_registration.c: Use our own scheduler and other + stuff" + ASTERISK-28746: res_pjsip_outbound_registration keeps retrying the first + entry in a SRV record set + Reported by: George Joseph + * [78b01f41ae] George Joseph -- res_pjsip_outbound_registration: Fix SRV + failover on timeout + ASTERISK-28624: res_pjsip_outbound_registration: add SRV failover + Reported by: Kevin Harwell + * [d5d41409e2] Kevin Harwell -- res_pjsip_outbound_registration: add + support for SRV failover + ASTERISK-28521: pjsip: Memory Leak + Reported by: Mark + * [cc83e76aa5] George Joseph -- pjproject_bundled: Revert pjproject 2.9 + commits causing leaks + + Category: Resources/res_pjsip_path + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-28463: res_pjsip_path: Crash when invalid contact is configured + Reported by: Juan Martin + * [982a5025b3] Sean Bright -- res_pjsip_registrar: Validate Contact URI + before adding to responses + + Category: Resources/res_pjsip_publish_asterisk + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + + Category: Resources/res_pjsip_pubsub + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-28714: REGRESSION: Feature subscription_persistence_recreate + (ASTERISK-27759) Causes Segfaults + Reported by: Ross Beer + * [a1f0c833ab] Joshua C. Colp -- res_pjsip_pubsub: Increment persistence + data ref when recreating. + ASTERISK-27759: res_pjsip_pubsub: Subscription persistence does not + preserve XML version number + Reported by: Bryan Nelson + * [4e7adbd8f4] Joshua C. Colp -- res_pjsip_pubsub: Add ability to + persist generator state information. + + Category: Resources/res_pjsip_refer + + ASTERISK-29313: res_pjsip_refer: Segfault in progress notify + Reported by: George Joseph + * [15afabdf8e] George Joseph -- res_pjsip_refer: Refactor progress + locking and serialization + + Category: Resources/res_pjsip_registrar + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29235: res_pjsip_nat: Contact is rewritten on REGISTER responses + with external_signaling_address + Reported by: Brian Paboojian + * [976b1a1d7a] Joshua C. Colp -- res_pjsip_nat: Don't rewrite Contact on + REGISTER responses. + ASTERISK-28995: res_pjsip_registrar: Expires on statically configured + contacts is not correct + Reported by: tootai + * [99eafe5771] Joshua C. Colp -- res_pjsip_registrar: Don't specify an + expiration for static contacts. + ASTERISK-28402: res_pjsip_registrar: SEGV in registrar_find_contact + Reported by: Ross Beer + * [ef92c69fa8] George Joseph -- res_pjsip: Check return from + pjsip_parse_uri calls + ASTERISK-28001: res_pjsip_registrar: Improve performance of inbound + handling + Reported by: Joshua C. Colp + * [cbf082ed53] Joshua Colp -- res_pjsip_registrar: Improve performance + on inbound handling. + + Category: Resources/res_pjsip_sdp_rtp + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29479: [patch] Channels are not put on hold for Session Progress + with inactive audio + Reported by: Bernd Zobl + * [6b041d1092] Bernd Zobl -- res_pjsip_sdp_rtp: Evaluate remotely held + for Session Progress + ASTERISK-29105: chan_pjsip: 180 Ringing with SDP not changed into progress + Reported by: Sebastian Damm + * [3286c04856] Holger Hans Peter Freyther -- pjsip: Generate progress + (once) when receiving a 180 with a SDP + ASTERISK-28452: pjsip: of SDP is not incremented though SDP may be changed + on reinvite without SDP offer + Reported by: Michael Maier + * [1af2a84c8b] Joshua C. Colp -- res_pjsip_session: Always produce offer + on re-INVITE without SDP. + ASTERISK-29051: res_pjsip_sdp_rtp: Does not set correct values on RTP + instance when "auto" DTMF is used + Reported by: Sebastian Damm + * [4499fbc819] Holger Hans Peter Freyther -- res_pjsip_sdp_rtp: Fix + accidentally native bridging calls + ASTERISK-28784: res_pjsip_sdp_rtp: Only do hold/unhold on first audio + stream + Reported by: Joshua C. Colp + * [34750d2068] Joshua C. Colp -- res_pjsip_sdp_rtp: Only do hold/unhold + on default audio stream. + ASTERISK-28774: chan_pjsip's rtptimeout is erroneously triggered during + direct-media (native_rtp) bridge + Reported by: Michael Neuhauser + * [5562fb2ea0] Michael Neuhauser -- chan_psip, res_pjsip_sdp_rtp: ignore + rtptimeout if direct-media is active + ASTERISK-28754: ASTERISK-28738 Causes Audio Issue After Hold + Reported by: Ross Beer + * [77c9ba8e63] Torrey Searle -- res/res_pjsip_sdp_rtp: Fix MOH + transitions + ASTERISK-28738: Incorrect state machine used when MOH_PASSTHRU is used + Reported by: Torrey Searle + * [bf4340f0ec] Torrey Searle -- res_pjsip_sdp_rtp: implement hold state + handling on moh_passthrough + ASTERISK-28659: res_pjsip_sdp_rtp: Bundle includes non-existent media + stream if codecs create additional streams and offer does not have them + Reported by: nappsoft + * [a603d7d324] Joshua C. Colp -- res_pjsip_session: Set stream state on + created streams for incoming SDP. + ASTERISK-28458: res_pjsip_sdp_rtp: Remove unused variable + Reported by: Michael Maier + * [93936e367d] Kevin Harwell -- res_pjsip_sdp_rtp: Remove unused + variable + ASTERISK-28110: rtp: Incorrect Packetization + Reported by: Robert Cripps + * [da562eb82d] Robert Cripps -- bridge_native_rtp.c: Fail native bridge + if no framing match. + ASTERISK-28007: rtcp-mux is put in SDP answer regardless of offer + Reported by: Torrey Searle + * [926d647def] Torrey Searle -- res/res_pjsip_sdp_rtp: put rtcp-mux in + answer only if offered + ASTERISK-27398: No joint capabilities with video and audio-only streams + Reported by: Benjamin Keith Ford + * [c31a01bd75] Ben Ford -- res_pjsip/rtp: No joint capabilities between + streams. + + Category: Resources/res_pjsip_session + + ASTERISK-29747: res_pjsip: Fix for Doxygen + Reported by: Alexander Traud + * [bae495601a] Alexander Traud -- res_pjsip: Fix for Doxygen. + ASTERISK-29215: res_pjsip_session: NULL active_media_state topology caused + asterisk crash + Reported by: sungtae kim + * [c78d0ce429] George Joseph -- res_pjsip_session: Make + reschedule_reinvite check for NULL topologies + * [d8b7a6f599] Sungtae Kim -- res_pjsip_session: Fixed NULL active media + topology handle + ASTERISK-29303: pjsip: Re-invite occurs when it shouldn't + Reported by: Benjamin Keith Ford + * [83b0f5963f] Ben Ford -- res_pjsip_session.c: Check topology on + re-invite. + ASTERISK-29203: res_pjsip_t38: Crash when changing state + Reported by: Gregory Massel + * [fad0cf12e6] Kevin Harwell -- AST-2021-002: Remote crash possible when + negotiating T.38 + ASTERISK-29220: After T38 reinvite response of 488 a subsequent G711 + reinvite is not processed correctly. Instead the previous T38 session + media is used + Reported by: Robert Cripps + * [017e09b40a] Robert Cripps -- res/res_pjsip_session.c: Check that + media type matches in + ASTERISK-29248: res_pjsip_session: res sometimes uninitialized reported by + compiler Clang. + Reported by: Alexander Traud + * [3f119192bb] Alexander Traud -- res_pjsip_session: Avoid + sometimes-uninitialized warning with Clang. + ASTERISK-29240: chan_pjsip: Incoming PJSIP calls set global SIPDOMAIN + instead of a channel variable + Reported by: Ivan Poddubny + * [c3fad2fd01] Ivan Poddubnyi -- chan_pjsip: Assign SIPDOMAIN after + creating a channel + ASTERISK-29109: res_pjsip_session: Asterisk 18 does not progress calls due + to codec negotiation after upgrading from Asterisk 16 + Reported by: Ross Beer + * [412b385de5] Joshua C. Colp -- res_pjsip: Adjust outgoing offer call + pref. + ASTERISK-29014: res_pjsip_session: Re-INVITE collisions aren't handled + correctly + Reported by: George Joseph + * [cc71be0078] George Joseph -- res_pjsip_session: Fix issue with COLP + and 491 + * [d4f3b17dd3] George Joseph -- res_pjsip_session: Handle multi-stream + re-invites better + ASTERISK-29033: res_pjsip_session: Aggressively terminates session on + failed re-INVITE + Reported by: Joshua C. Colp + * [3c074038fe] Joshua C. Colp -- res_pjsip_session: Don't aggressively + terminate on failed re-INVITE. + ASTERISK-28953: res_pjsip_session: Preserve stream label + Reported by: Joshua C. Colp + * [ee8ea9275f] Joshua C. Colp -- res_pjsip_session: Preserve label on + incoming re-INVITE. + ASTERISK-28871: res_pjsip_session: Unnecessary re-Invite on call answer + Reported by: Alexei Gradinari + * [afa2c9a868] Joshua C. Colp -- bridge: Don't try to match audio + formats. + ASTERISK-28783: res_pjsip_session: Allow default non-audio streams to have + reflected state + Reported by: Joshua C. Colp + * [9620ecbf80] Joshua C. Colp -- res_pjsip_session: Don't restrict + non-audio default streams to sendrecv. + ASTERISK-28730: res_pjsip_session: Fix out of order session refreshes + Reported by: Joshua C. Colp + * [ac155decae] Joshua C. Colp -- res_pjsip_session: Fix off-nominal + session refreshes. + ASTERISK-28659: res_pjsip_sdp_rtp: Bundle includes non-existent media + stream if codecs create additional streams and offer does not have them + Reported by: nappsoft + * [a603d7d324] Joshua C. Colp -- res_pjsip_session: Set stream state on + created streams for incoming SDP. + ASTERISK-28445: res_pjsip_session: ast_json_vpack: Invalid UTF-8 string on + hangup when TEST_FRAMEWORK enabled + Reported by: Bernhard Schmidt + * [6ee1f1f507] Sean Bright -- res_pjsip_session.c: Prevent + use-after-free with TEST_FRAMEWORK enabled + ASTERISK-28086: chan_pjsip: Crash when initiating PlayDTMF over AMI + Reported by: Jeremiah Gadd + * [c03f50c1c8] laszlovl -- chan_pjsip: Prevent segfault when running + PlayDTMF on hungup channel + ASTERISK-28157: Asterisk crashes when the res_pjsip_* modules unload + Reported by: sungtae kim + * [8644511cbf] Sungtae Kim -- res_pjsip: Patch for res_pjsip_* module + load/reload crash + ASTERISK-28047: chan_pjsip: Declined video stream is added when no video + codecs configured and session refresh with removed video stream occurs + Reported by: Will + * [32a7b9f4b3] Joshua Colp -- res_pjsip_session: Don't add declined + stream if one does not exist. + + Category: Resources/res_pjsip_t38 + + ASTERISK-29402: res_pjsip_t38: Socket is bound to IPv4/IPv6 but platform + does not support it + Reported by: Matthew Kern + * [15e432220c] Matthew Kern -- res_pjsip_t38: bind UDPTL sessions like + RTP + ASTERISK-29203: res_pjsip_t38: Crash when changing state + Reported by: Gregory Massel + * [fad0cf12e6] Kevin Harwell -- AST-2021-002: Remote crash possible when + negotiating T.38 + ASTERISK-28621: Enforce T.38 error correction mode at 200 ok received + Reported by: Salah Ahmed + * [330ffa2bce] Salah Ahmed -- res_pjsip_t38: T.38 error correction mode + selection at 200 ok received + ASTERISK-27944: res_pjsip_t38: Crash receiving 1xx responses other than + 100 before 200 for T.38 reINVITE + Reported by: Joshua Elson + * [40f1604e2f] Richard Mudgett -- res_pjsip_t38.c: Fix crash if already + saw a final T.38 reINVITE response. + + Category: Resources/res_pjsip_transport_websocket + + ASTERISK-28020: res_pjsip_transport_websocket: Properly set 'received' for + IPv6 + Reported by: Sean Bright + * [39459b1ee4] Sean Bright -- res_pjsip_transport_websocket: Properly + set src_name for IPv6 + + Category: Resources/res_realtime + + ASTERISK-21794: CLI command 'realtime update2' syntax failure when using + according to usage help + Reported by: Cedric BASSAGET + * [094e87b0dc] Sean Bright -- res_realtime: Fix 'realtime update2' + argument handling + + Category: Resources/res_rtp_asterisk + + ASTERISK-29671: res_rtp_asterisk: memory leak + Reported by: Jean Aunis - Prescom + * [0ab4e7491d] Jean Aunis -- res_rtp_asterisk: fix memory leak + ASTERISK-29660: Build failure when disabling PJSIP support + Reported by: Guido Falsi + * [03377c35fc] Guido Falsi -- res_rtp_asterisk.c: Fix build failure when + not building with pjproject. + ASTERISK-29616: res_rtp_asterisk: sqrt(.) requires the header math.h. + Reported by: Alexander Traud + * [82d6bd7ec9] Alexander Traud -- res_rtp_asterisk: sqrt(.) requires the + header math.h. + ASTERISK-29507: STUN timeout is silently delaying calls + Reported by: Sébastien Duthil + * [4bd975f415] Sebastien Duthil -- stun: Emit warning message when STUN + request times out + ASTERISK-29433: res_rtp_asterisk: Server reflexive candidates use + incorrect raddr for RTCP + Reported by: Chris + * [3aed363716] Joshua C. Colp -- res_rtp_asterisk: Set correct raddr + port on RTCP srflx candidates. + ASTERISK-29030: res_rtp_asterisk: Additional RTP-frame (with wrong SSRC) + gets inserted when switching from progress to established + Reported by: Matthias Hensler + * [95414fc918] Sean Bright -- res_rtp_asterisk: More robust timestamp + checking + ASTERISK-29364: res_rtp_asterisk: standard deviation miscalculation + Reported by: Kevin Harwell + * [17c86dcfaa] Kevin Harwell -- res_rtp_asterisk: Fix standard deviation + calculation + ASTERISK-29373: res_rtp_asterisk: Flash events are duplicated + Reported by: N A + * [b0d828f14a] Joshua C. Colp -- res_rtp_asterisk: Only raise flash + control frame on end. + ASTERISK-29352: res_rtp_asterisk: Fix frame delivery time when SSRC + changes + Reported by: Joshua C. Colp + * [2e7fc84398] Joshua C. Colp -- res_rtp_asterisk: Force resync on SSRC + change. + ASTERISK-29300: res_rtp_asterisk: When native local bridging the remote + SSRC becomes permanent + Reported by: Sebastian Damm + * [90ef6a14a7] Torrey Searle -- res/res_rtp_asterisk: generate new SSRC + on native bridge end + ASTERISK-29266: ICE Role conflict with an unauthorized session + Reported by: Salah Ahmed + * [df8d335ad1] Salah Ahmed -- res_rtp_asterisk: Check remote ICE reset + and reset local ice attrb + ASTERISK-29205: res_rtp_asterisk: Asterisk crashes when making hold/unhold + from webrtc client + Reported by: Edvin Vidmar + * [5a6f2f913b] Sean Bright -- res_rtp_asterisk.c: Fix signed mismatch + that leads to overflow + ASTERISK-29089: RTP Ports not cleared after hangup + Reported by: Ross Beer + * [957aff751d] Joshua C. Colp -- res_pjsip_session: Fix session + reference leak. + ASTERISK-28974: res_rtp_asterisk: T.140 messages have appended RTP string + to each message block. + Reported by: Thomas Johnson + * [5ec7099312] Sean Bright -- bridge_channel: Ensure text messages are + zero terminated + ASTERISK-28939: res_rtp_asterisk: Don't have send/receive buffers on + non-WebRTC + Reported by: Joshua C. Colp + * [c84d962eae] Joshua C. Colp -- res_rtp_asterisk: Don't assume setting + retrans props means to enable. + ASTERISK-28904: RTP ICE leaks the memory + Reported by: sungtae kim + * [c8c94b6cf1] sungtae kim -- res_rtp_asterisk.c: Fixed memory leak + ASTERISK-28852: Unprotected access to nochecksums variable, causes build + failures + Reported by: Guido Falsi + * [e4366308e1] Guido Falsi -- res_rtp_asterisk: Protect access to + nochecksums with #ifdef + ASTERISK-28827: res_rtp_asterisk: Loop when receive buffer is flushed by a + received packet that is also in receive buffer with NACK + Reported by: nappsoft + * [d50fd0acc0] Pirmin Walthert -- res_rtp_asterisk: Resolve loop when + receive buffer is flushed + ASTERISK-28826: res_rtp_asterisk: Duplicate seqnos being added to send + buffer with NACK + Reported by: nappsoft + * [ca032d1e2e] Pirmin Walthert -- res_rtp_asterisk: Free payload when + error on insertion to data buffer + ASTERISK-28812: First DTMF is not get + Reported by: Bernard Merindol + * [7db03e12a7] Bernard Merindol -- res_rtp_asterisk.c: Check for first + DTMF having timestamp set to 0 + ASTERISK-28809: [patch] res_rtp_asterisk: Avoid absolute value on unsigned + subtraction. + Reported by: Alexander Traud + * [1ef1b1b0c2] Alexander Traud -- res_rtp_asterisk: Avoid absolute value + on unsigned subtraction. + ASTERISK-28773: Incorrect Sender SSRC in RTCP when p2p rtp bridge is + active + Reported by: Torrey Searle + * [a1dba820cf] Torrey Searle -- res_rtp_asterisk: Send correct sender + SSRC when p2p bridge in use + ASTERISK-28769: DTLS Handshake Fails to Occur if ice_support is enabled + but not used + Reported by: Torrey Searle + * [14ba1806f3] Torrey Searle -- res_pjsip_sdp_rtp: Don't wait for ICE if + not negotiated + ASTERISK-28759: A non negotiated rtp frame causes call disconnection when + there is a SSRC change + Reported by: Paulo Vicentini + * [ed2a7e3eaf] Paulo Vicentini -- chan_pjsip: Check audio frame when + remote SSRC changes. + ASTERISK-28764: res_rtp_asterisk: Improve NACK support and seqno handling + Reported by: Joshua C. Colp + * [87fda066ea] Joshua C. Colp -- res_rtp_asterisk: Improve video + performance in certain networks. + ASTERISK-28716: ICE: pjnath shouldn't wait for ICE to complete before + allowing sending + Reported by: Benjamin Keith Ford + * [168637cc0c] Ben Ford -- RTP/ICE: Send on first valid pair. + ASTERISK-28742: res_rtp_asterisk: static for audio due to incomplete + dtls/srtp setup + Reported by: Kevin Harwell + * [3865b3fd6a] Kevin Harwell -- res_rtp_asterisk: bad audio (static) due + to incomplete dtls/srtp setup + ASTERISK-28576: res_rtp_asterisk: ICE Completion Crash when sent packet + length doesn't match + Reported by: Joshua Elson + * [02129ad4d0] Joshua Colp -- res_rtp_asterisk: Always return provided + DTLS packet length. + ASTERISK-28018: IP Fragmentation happening instead of DTLS fragmentation + on handshake server hello certificate + Reported by: vijay kumar + * [a8e5cf557d] Joshua Colp -- res_rtp_asterisk: Add support for DTLS + packet fragmentation. + ASTERISK-28421: Wrong type used for timestamp in res_rtp_asterisk + Reported by: Morten Tryfoss + * [3224ac07c9] Morten Tryfoss -- res_rtp_asterisk: timestamp should be + unsigned instead of signed int + ASTERISK-28255: res_rtp_asterisk: REMB RTCP packet sending may be + incorrect + Reported by: Joshua C. Colp + * [d1d0692858] Kevin Harwell -- bridge_softmix: use a float type to + store the internal REMB bitrate + ASTERISK-28321: res_rtp_asterisk: Fixing possible divide by zero for rtcp + stat calculation + Reported by: sungtae kim + * [8641fd9700] sungtae kim -- res/res_rtp_asterisk.c: Fixing possible + divide by zero + ASTERISK-28303: res_rtp_asterisk: Interaction between smoother and DTMF + can cause out of order timestamps + Reported by: Torrey Searle + * [360f543677] Torrey Searle -- res/res_rtp_asterisk: smoother can cause + wrong timestamps if dtmf happen + ASTERISK-28284: switching between native_bridge and simple_bridge can + cause one way audio + Reported by: Torrey Searle + * [8ea9608efb] Torrey Searle -- res/res_rtp_asterisk: clear smoother + when local bridging + ASTERISK-28230: res_rtp_asterisk: abs-send-time extension added with + Asterisk 15.5.0 breaks GXV3140 video telephony + Reported by: David Kuehling + * [18e206381a] Joshua Colp -- res_pjsip_sdp_rtp: Only enable + abs-send-time when WebRTC is enabled. + ASTERISK-28162: [patch] need to reset DTMF last sequence number and + timestamp on RTP renegotiation + Reported by: Alexei Gradinari + * [f662a26ea0] Alexei Gradinari -- RTP: reset DTMF last seqno/timestamp + on RTP renegotiation + * [3f53041267] Alexei Gradinari -- RTP: need to reset DTMF last + seqno/timestamp on voice packet with marker bit + ASTERISK-28110: rtp: Incorrect Packetization + Reported by: Robert Cripps + * [da562eb82d] Robert Cripps -- bridge_native_rtp.c: Fail native bridge + if no framing match. + ASTERISK-28002: When T.140 realtime text is negociated, a lot of debug + traces are generated + Reported by: Emmanuel BUU + * [289016239d] Emmanuel BUU -- res/res_rtp_asterisk: remove debug traces + generated by an empty frame + ASTERISK-27990: res_rtp_asterisk: Requires OpenSSL in Developer Mode. + Reported by: Alexander Traud + * [870fe7f60c] Alexander Traud -- res_rtp_asterisk: In Developer Mode, + do not require OpenSSL. + + Category: Resources/res_snmp + + ASTERISK-29709: res_snmp: Not build on recent Debian distributions. + Reported by: Alexander Traud + * [95da40cd50] Alexander Traud -- res_snmp: As build tool, prefer + pkg-config over net-snmp-config. + ASTERISK-29634: res_snmp: gcc 11 needs -fPIC to compile correctly + Reported by: George Joseph + * [2806a45034] George Joseph -- res_snmp: Add -fPIC to _ASTCFLAGS + + Category: Resources/res_sorcery_memory_cache + + ASTERISK-28942: res_sorcery_memory_cache: Individual object expiration + behaves unexpectedly with full backend caching + Reported by: Joshua C. Colp + * [a143c3a7b7] Joshua C. Colp -- res_sorcery_memory_cache: Disallow + per-object expire with full backend. + + Category: Resources/res_speech + + ASTERISK-29040: res_speech: Assertion on format + Reported by: Nickolay V. Shmyrev + * [0319e0b07f] Nickolay Shmyrev -- res_speech: Bump reference on format + object + + Category: Resources/res_srtp + + ASTERISK-28903: res_srtp: Answered Crypto Suite might be wrong in + SDP/SDES. + Reported by: Alexander Traud + * [4de0e50c32] Alexander Traud -- res_srtp: Set all possible flags while + selecting the Crypto Suite. + ASTERISK-22920: Crash while Forwarding from TLS extension with CHANNEL + args secure_bridge_media and secure_bridge_signaling + Reported by: Shlomi Gutman + * [29070b61f7] Alexander Traud -- core_local: Local calls are always + secure. + + Category: Resources/res_stasis + + ASTERISK-29229: Stasis/messaging: text messages not dispatched to all + subscribers when using generic subscription + Reported by: Jean Aunis - Prescom + * [c10557c401] Jean Aunis -- Stasis/messaging: tech subscriptions + conflict with endpoint subscriptions. + ASTERISK-29081: res_stasis: Add compare function for bridges moh container + Reported by: Hajek Michal + * [2bce21da88] Michal Hajek -- res_stasis.c: Add compare function for + bridges moh container + ASTERISK-28987: BridgeCreated ARI event shows wrong video_mode info + Reported by: sungtae kim + * [2e32b56bdb] sungtae kim -- stasis_bridge.c: Fixed wrong video_mode + shown + ASTERISK-28423: ARI causes STASIS Deadlock + Reported by: Ross Beer + * [cce2b0da95] Kevin Harwell -- stasis/app: don't lock an app before a + call to send + * [990a91b44a] George Joseph -- stasis: Don't hold app_registry and + session locks unnecessarily + ASTERISK-28633: stasis bridge topic leak + Reported by: Joeran Vinzens + * [1c9ddad4db] George Joseph -- stasis.c: Use correct topic name in + stasis_topic_pool_delete_topic + ASTERISK-27756: bridge: Failure to impart a channel results in bad data + causing crash + Reported by: Abhay Gupta + * [71040078a3] Abhay Gupta -- stasis: Only place stasis created and + dialed channels into dial bridge. + ASTERISK-26718: ARI: Bridge destroying doesn't work as expected + Reported by: Marin Odrljin + * [3087c82eb6] Holger Hans Peter Freyther -- stasis: Call callbacks when + imparting fails + ASTERISK-28333: StasisEnd event makes wrong timestamp value + Reported by: sungtae kim + * [629962d1f7] sungtae kim -- res/res_stasis: Fixed wrong StasisEnd + timestamp + ASTERISK-26094: stasis: Playing MOH to bridge with ARI does not work + Reported by: Cameron + * [f3422312ea] Moritz Fain -- res_stasis: Fix stale data in ARI bridges + + Category: Resources/res_stasis_playback + + ASTERISK-28713: res_stasis_playback: Error building JSON + Reported by: Sébastien Duthil + * [31dc904380] Sean Bright -- res_stasis_playback: Prevent media_index + from going out of bounds + + Category: Resources/res_stasis_recording + + ASTERISK-29750: stasis: Fix for Doxygen + Reported by: Alexander Traud + * [6988386234] Alexander Traud -- stasis: Fix for Doxygen. + + Category: Resources/res_stasis_snoop + + ASTERISK-29750: stasis: Fix for Doxygen + Reported by: Alexander Traud + * [6988386234] Alexander Traud -- stasis: Fix for Doxygen. + + Category: Resources/res_statsd + + ASTERISK-29513: statsd: Remove non-standard metric type Meter + Reported by: Rijnhard Hessel + * [71dd1d91ad] Rijnhard Hessel -- res_statsd: handle non-standard meter + type safely + ASTERISK-24484: Update documentation for statsd module - usage + requirements unclear + Reported by: Dan Jenkins + * [c376e9f8a8] Sean Bright -- res_statsd: Document that res_statsd does + nothing on its own + + Category: Resources/res_stir_shaken + + ASTERISK-29776: stir/shaken: Requires GNU designator + Reported by: Alexander Traud + * [b290bb1251] Alexander Traud -- stir/shaken: Avoid a compiler + extension of GCC. + ASTERISK-29175: res_pjsip_stir_shaken: Fix module description + Reported by: Stanislav Abramenkov + * [6a85dc860f] Stanislav -- res_pjsip_stir_shaken: Fix module + description + + Category: Resources/res_stun_monitor + + ASTERISK-29691: stun: Not all users provide a dst to ast_stun_request + Reported by: Dennis Haney + * [e3466893e9] Sebastien Duthil -- main/stun.c: fix crash upon STUN + request timeout + + Category: Resources/res_xmpp + + ASTERISK-29749: res_xmpp: Fix for Doxygen + Reported by: Alexander Traud + * [31c26fcbc6] Alexander Traud -- res_xmpp: Fix for Doxygen. + + Category: Tests/General + + ASTERISK-29741: tests: Fix for Doxygen + Reported by: Alexander Traud + * [1a9df88d98] Alexander Traud -- tests: Fix for Doxygen. + ASTERISK-27176: test_abstract_jb: frames leak + Reported by: Corey Farrell + * [ee62a07914] Sean Bright -- test_abstract_jb.c: Fix put and + put_out_of_order memory leaks. + ASTERISK-28808: [patch] test_stasis: Avoid always true warning with clang. + Reported by: Alexander Traud + * [bb28ed0d1b] Alexander Traud -- test_stasis: Avoid always true warning + with clang. + ASTERISK-28251: CI: Fix CI so it reverifies commit message changes + Reported by: George Joseph + * [c2ea9c90a2] Joshua Colp -- ci: Rerun unit tests when non-code changes + occur. + ASTERISK-28070: testsuite: Sniffer assumes pjmedia will use ports below + 10000 + Reported by: Joshua C. Colp + * [8bb264841a] Joshua Colp -- res_rtp_asterisk: Raise event when RTP + port is allocated + + Category: Tests/NewFeature + + ASTERISK-17695: 1.8.3.2 extenpatternmatchnew=yes cannot find extensions + with '-' in them + Reported by: test011 + * [7e5709d726] Sean Bright -- pbx.c: Ignore dashes in extensions when + using extenpatternmatchnew + + Category: Tests/testsuite + + ASTERISK-27717: [patch] BuildSystem: In NetBSD, the Python Programming + Language is python-2.7. + Reported by: Alexander Traud + * [610e058189] Alexander Traud -- BuildSystem: Search for Python/C API + when possibly needed only. + ASTERISK-28789: test_utils: incorrectly printing error 'declined to load' + Reported by: Alexander Traud + * [fc07eeaba1] Alexander Traud -- test_utils: Avoid incorrect error + message on load. + + Category: Third-Party/pjproject + + ASTERISK-28182: chan_pjsip: When connected_line_method is set to invite, + asterisk is not trying UPDATE + Reported by: nappsoft + * [ecb9ed0958] Pirmin Walthert -- pjproject_bundled: check whether + UPDATE is supported on outgoing calls + ASTERISK-27966: pjsip: Race condition in 183 re transmission can result in + a deadlock + Reported by: Torrey Searle + * [3424795f3a] Torrey Searle -- thirdparty/pjproject: fix deadlock in + response retransmissions + + Category: Utilities/General + + ASTERISK-28685: check_expr2: linking (when hardening) and cross-compiling + troubles + Reported by: Sebastian Kemper + * [b7fbb9c41f] Sebastian Kemper -- check_expr2: fix + cross-compile/hardening issues + + Category: Utilities/aelparse + + ASTERISK-29711: aelparse: GCC 11.2 found two maybe uninitialized + Reported by: Alexander Traud + * [2c03f73016] Sean Bright -- various: Fix GCC 11.2 compilation issues. + ASTERISK-29540: aelparse: include of context with timings fails + Reported by: Alexander Traud + * [0b1a629ecd] Alexander Traud -- aelparse: Accept an included context + with timings. + ASTERISK-18593: AEL for loops use Macro app and pipe delimiter + Reported by: Luke-Jr + * [f7f1a2cbb7] Sean Bright -- res_ael: Use Gosub in for loop expressions + + Category: Utilities/conf2ael + + ASTERISK-18593: AEL for loops use Macro app and pipe delimiter + Reported by: Luke-Jr + * [f7f1a2cbb7] Sean Bright -- res_ael: Use Gosub in for loop expressions + + Category: Utilities/muted + + ASTERISK-29145: GCC Warnings with OPTIMIZE=-Os make + Reported by: Alexander Traud + * [2dacadd9df] Alexander Traud -- Compiler fixes for GCC with -Os + + Category: pjproject/pjsip + + ASTERISK-24601: [patch]Missing RFC4235 tags and attributes in PJSIP NOTIFY + event: dialog XML body + Reported by: Marco Paland + * [83c2a16b2e] Joseph Nadiv -- res_pjsip_dialog_info_body_generator: Add + LOCAL/REMOTE tags in dialog-info+xml + ASTERISK-29377: cpool_release_pool "double free or corruption (out)" + Reported by: Robert Sutton + * [6d5cac1d10] Joshua C. Colp -- pjsip: Add patch for resolving STUN + packet lifetime issues. + ASTERISK-28452: pjsip: of SDP is not incremented though SDP may be changed + on reinvite without SDP offer + Reported by: Michael Maier + * [1af2a84c8b] Joshua C. Colp -- res_pjsip_session: Always produce offer + on re-INVITE without SDP. + ASTERISK-29191: tel: URI in Diversion header causes crash + Reported by: Mikhail Ivanov + * [a7aea71e60] Torrey Searle -- res/res_pjsip_diversion: prevent crash + on tel: uri in History-Info + ASTERISK-29024: pjsip: Route Header in Cancel request incorrectly set + Reported by: Flole Systems + * [7a6cfde4db] Pirmin Walthert -- res_pjsip_nat.c: Create deep copies of + strings when appropriate + ASTERISK-28973: Malformed IP address in SDP of 2nd SIP timer triggered + INVITE when NAT is active (UDP transport with external_media_address) + Reported by: Michael Neuhauser + * [6482ab5bea] Michael Neuhauser -- pjproject: clone sdp to protect + against (nat) modifications + ASTERISK-28929: pjproject_bundled: Honor --without-pjproject. + Reported by: Alexander Traud + * [0a4dffe6f8] Alexander Traud -- pjproject_bundled: Honor + --without-pjproject. + ASTERISK-28794: res_pjsip: Crash when escaping during URI printing + Reported by: nappsoft + * [9c2871edf4] Joshua C. Colp -- res_pjsip: Use correct pool for storing + the contact_user value. + ASTERISK-28859: pjsip: Increase maximum candidate count + Reported by: Joshua C. Colp + * [3078a00a6d] Joshua C. Colp -- pjsip: Increase maximum ICE candidate + count. + ASTERISK-28811: Crash occurs when fax session switches from T.38 to audio + Reported by: Alexey Vasilyev + * [e56f4de7e6] Joshua C. Colp -- fax: Fix crashes in PJSIP + re-negotiation scenarios. + ASTERISK-28837: pjproject_bundled: Honor --without-pjproject. + Reported by: Alexander Traud + * [966acc6251] Alexander Traud -- pjproject_bundled: Honor + --without-pjproject. + ASTERISK-28758: pjsip startup errors when using "with-ssl" configure + option + Reported by: Patrick Wakano + * [3431949a52] Alexander Traud -- pjproject_bundled: Repair ./configure + --with-ssl without ARG. + ASTERISK-26955: pjsip: SIP Packets with Via "received=" Containing IPv6 + Address Delimited by "[]" Rejected + Reported by: Peter Sokolov + * [9d9bde76a9] Sean Bright -- pjproject_bundled: Allow brackets in via + parameters + ASTERISK-28574: pjproject fails to build on 16.6.0, works on 16.5 + Reported by: Niklas Larsson + * [5d9f9f4871] George Joseph -- pjproject_bundled: Replace earlier + reverts with official fixes. + ASTERISK-28509: PJSIP cnonce generated on Linux contains 36 characters, + NEC only supports up to 32 characters + Reported by: Dan Cropp + * [0844d6b127] Dan Cropp -- pjproject: Configurable setting for cnonce + to include hyphens or not + ASTERISK-28049: res_pjproject build failure + Reported by: Jaco Kroon + * [65e0eb8fc6] Sean Bright -- res_pjproject: Fix sockaddr conversion + routines for non-bundled PJSIP + ASTERISK-27997: pjproject_bundled: Fix for Solaris builds. Do not undef + s_addr. + Reported by: Alexander Traud + * [603d1e8d4b] Alexander Traud -- pjproject_bundled: Fix for Solaris + builds. Do not undef s_addr. + + Improvement + + Category: Addons/General + + ASTERISK-29714: Spelling errors + Reported by: Josh Soref + * [4bc3dc6543] Josh Soref -- bridges: Spelling fixes + * [59715a073b] Josh Soref -- utils: Spelling fixes + * [3685e55673] Josh Soref -- pbx: Spelling fixes + * [4cf87f6175] Josh Soref -- rest-api-templates: Spelling fixes + * [c1b21bee6d] Josh Soref -- channels: Spelling fixes + * [4fc59ccc92] Josh Soref -- tests: Spelling fixes + * [c3978efef6] Josh Soref -- Makefile: Spelling fixes + * [2a8b651b7e] Josh Soref -- contrib: Spelling fixes + * [3ac7afe09c] Josh Soref -- formats: Spelling fixes + * [49ef881eb4] Josh Soref -- addons: Spelling fixes + * [70af726dcd] Josh Soref -- agi: Spelling fixes + * [c0fafa1863] Josh Soref -- funcs: Spelling fixes + * [8fb9588e8c] Josh Soref -- build_tools: Spelling fixes + * [7a59a9365a] Josh Soref -- menuselect: Spelling fixes + * [b13acf3ae6] Josh Soref -- include: Spelling fixes + * [135d51e55e] Josh Soref -- doc: Spelling fixes + * [ae83d927d8] Josh Soref -- configs: Spelling fixes + * [dcf492e7b6] Josh Soref -- res: Spelling fixes + * [ccfebc3cfc] Josh Soref -- codecs: Spelling fixes + * [4019a93edf] Josh Soref -- main: Spelling fixes + * [998ad0e179] Josh Soref -- CREDITS: Spelling fixes + * [e7b1dcf769] Josh Soref -- apps: Spelling fixes + * [0150c3b698] Josh Soref -- UPGRADE.txt: Spelling fixes + * [42d1c134f7] Josh Soref -- CHANGES: Spelling fixes + + Category: Addons/chan_mobile + + ASTERISK-28832: chan_mobile creates PCMA streams that make some VoIP + clients crash or not render received audio + Reported by: Peter Turczak + * [3303defd3f] Peter Turczak -- chan_mobile: Add smoother to make + SIP/RTP endpoints happy. + + Category: Applications/General + + ASTERISK-29637: Add support for future dates in Say.c + Reported by: Shloime Rosenblum + * [29c44caecb] Shloime Rosenblum -- main/say.c: Support future dates + with Q and q format params + + Category: Applications/NewFeature + + ASTERISK-28484: Add AudioSocket support + Reported by: Seán C. McCord + * [163efbd724] Seán C McCord -- feat: AudioSocket channel, application, + and ARI support. + + Category: Applications/app_confbridge + + ASTERISK-28658: app_confbridge: Add support for setting maximum sample + rate + Reported by: Joshua C. Colp + * [89b7144fbd] Joshua C. Colp -- confbridge: Add support for specifying + maximum sample rate. + ASTERISK-28401: app_confbridge: Add *_all remb behavior variants + Reported by: Joshua C. Colp + * [80dba268ea] Joshua Colp -- app_confbridge: Add "all" variants of REMB + behavior. + + Category: Applications/app_dial + + ASTERISK-28363: Millisecond-resolution call stats including PDD in channel + variables + Reported by: Antoni Goldstein + * [8e21c25ce5] Antoni Goldstein -- app_dial.c: RINGTIME, PROGRESSTIME + and ms resolution dial timings + + Category: Applications/app_mixmonitor + + ASTERISK-29244: Add MixMonitorStart / Stop / Mute AMI events + Reported by: Sébastien Duthil + * [092628c982] Sebastien Duthil -- app_mixmonitor: Add AMI events + MixMonitorStart, -Stop and -Mute. + ASTERISK-24798: Documentation - Clarify That Format Is Set By File Name + Extension In MixMonitor + Reported by: xrobau + * [ddfb60ac2c] Sean Bright -- app_mixmonitor: Set MIXMONITOR_FILENAME to + correct value when wav49 is used + + Category: Applications/app_morsecode + + ASTERISK-29541: app_morsecode: Add American Morse code + Reported by: N A + * [9cac1c16da] Naveen Albert -- app_morsecode: Add American Morse code + + Category: Applications/app_originate + + ASTERISK-29543: app_originate: Allow specifying codec(s) to use + Reported by: N A + * [cb1dfecc11] Naveen Albert -- app_originate: Add ability to set codecs + ASTERISK-29450: Allow setting channel variables using Originate + application + Reported by: N A + * [a611a0cd42] Naveen Albert -- app_originate: Allow setting Caller ID + and variables + + Category: Applications/app_page + + ASTERISK-27946: dial (API): Storage of dialed target uses + AST_MAX_EXTENSION when it shouldn't + Reported by: Joshua Elson + * [dbddb6725d] sungtae kim -- dial.c: Removed dial string 80 character + limitation + + Category: Applications/app_playback + + ASTERISK-29662: Add mix option to Playback application for say and + filename + Reported by: Shloime Rosenblum + * [63c8d12e95] Shloime Rosenblum -- apps/app_playback.c: Add 'mix' + option to app_playback + + Category: Applications/app_queue + + ASTERISK-29528: Add support for multiple files for agent announcements + Reported by: N A + * [940f6c4a03] Naveen Albert -- app_queue: Allow streaming multiple + announcement files + ASTERISK-27483: Allow wrapuptime to be set for each queue member + Reported by: Rodrigo Ramirez Norambuena + * [ce0523a57e] Rodrigo Ramírez Norambuena -- app_queue: Enable set the + wrapuptime from AddQueueMember application + ASTERISK-28055: app_queue: Per-member wrapup time missing from + AddQueueMember application + Reported by: Niksa Baldun + * [ce0523a57e] Rodrigo Ramírez Norambuena -- app_queue: Enable set the + wrapuptime from AddQueueMember application + + Category: Applications/app_stack + + ASTERISK-29626: app_stack: Include calling location if attempting to + branch to nonexistent location + Reported by: N A + * [c736cef310] Naveen Albert -- app_stack: Include current location if + branch fails + + Category: Applications/app_transfer + + ASTERISK-29252: TRANSFERSTATUSPROTOCOL variable to report Transfer (REFER) + failure SIP code + Reported by: Dan Cropp + * [088816284a] Dan Cropp -- chan_pjsip, app_transfer: Add + TRANSFERSTATUSPROTOCOL variable + + Category: Applications/app_voicemail + + ASTERISK-29715: app_voicemail: Refactor email generation functions + Reported by: N A + * [70cdb0f9a8] Naveen Albert -- app_voicemail: Refactor email generation + functions + ASTERISK-29632: Add option to Application_VoiceMail to suppress + instructions only when a custom greeting is present + Reported by: Charlie Smurthwaite + * [347e9a7e4d] Sean Bright -- app_voicemail.c: Ability to silence + instructions if greeting is present. + ASTERISK-29349: Silent voicemail option is not completely silent + Reported by: N A + * [bfc25e5de2] Naveen Albert -- app_voicemail: Configurable voicemail + beep + ASTERISK-28567: Problem with ASTERISK-20207: Asterisk should clear out any + .lock files in the voice mail directory on startup. + Reported by: Michael + * [7362647e2f] Sean Bright -- Revert "app_voicemail: Cleanup stale lock + files on module load" + ASTERISK-28443: app_voicemail: remove dependency on stasis cache + Reported by: Kevin Harwell + * [c93c579190] Kevin Harwell -- app_voicemail: Remove dependency on the + stasis cache + ASTERISK-20207: Asterisk should clear out any .lock files in the voice + mail directory on startup. + Reported by: Steven Wheeler + * [63f86cac09] Sean Bright -- app_voicemail: Cleanup stale lock files on + module load + + Category: Applications/app_voicemail/NewFeature + + ASTERISK-29118: VoiceMail() should have an option to play greetings as + Early Media + Reported by: Juan Carlos Castro y Castro + * [fd57fae048] Joshua C. Colp -- voicemail: add option 'e' to play + greetings as early media + + Category: Applications/app_voicemail/ODBC + + ASTERISK-22192: [patch] Allow voicemail forwards with ODBC backend when + format differs from attachfmt column + Reported by: cmaj + * [2d67dbfef5] cmaj -- app_voicemail.c: Support multiple file formats + for forwarded messages. + + Category: Bridges/bridge_builtin_features + + ASTERISK-28279: Added creation timestamp for bridge + Reported by: sungtae kim + * [3638c433ac] sungtae kim -- bridging: Add creation timestamps + + Category: Bridges/bridge_native_rtp + + ASTERISK-28733: stream: Add support for adding/removing streams during + SFU/calls + Reported by: Joshua C. Colp + * [5a5be92b79] Joshua C. Colp -- bridging: Add better support for + adding/removing streams. + + Category: Bridges/bridge_simple + + ASTERISK-28733: stream: Add support for adding/removing streams during + SFU/calls + Reported by: Joshua C. Colp + * [5a5be92b79] Joshua C. Colp -- bridging: Add better support for + adding/removing streams. + + Category: Bridges/bridge_softmix + + ASTERISK-28733: stream: Add support for adding/removing streams during + SFU/calls + Reported by: Joshua C. Colp + * [5a5be92b79] Joshua C. Colp -- bridging: Add better support for + adding/removing streams. + ASTERISK-28658: app_confbridge: Add support for setting maximum sample + rate + Reported by: Joshua C. Colp + * [89b7144fbd] Joshua C. Colp -- confbridge: Add support for specifying + maximum sample rate. + ASTERISK-28401: app_confbridge: Add *_all remb behavior variants + Reported by: Joshua C. Colp + * [80dba268ea] Joshua Colp -- app_confbridge: Add "all" variants of REMB + behavior. + ASTERISK-28196: bridge_softmix: Does not support WebRTC source with multi + video tracks. + Reported by: Xiemin Chen + * [a526676836] Xiemin Chen -- bridge_softmix: Use MSID:LABEL metadata as + the cloned stream's appendix + + Category: Channels/General + + ASTERISK-29380: Add Flash AMI event to handle flash events + Reported by: N A + * [0ad3504ce0] Naveen Albert -- AMI: Add AMI event to expose hook flash + events + + Category: Channels/NewFeature + + ASTERISK-29380: Add Flash AMI event to handle flash events + Reported by: N A + * [0ad3504ce0] Naveen Albert -- AMI: Add AMI event to expose hook flash + events + ASTERISK-28484: Add AudioSocket support + Reported by: Seán C. McCord + * [163efbd724] Seán C McCord -- feat: AudioSocket channel, application, + and ARI support. + + Category: Channels/chan_dahdi + + ASTERISK-28317: Add logical group at DAHDIChannel event and create + "dahdi_group" at CHANNEL function + Reported by: Cirillo Ferreira + * [0d6d51b175] cirillor -- chan_dahdi: Add logical group at DAHDIChannel + event and CHANNEL function + + Category: Channels/chan_iax2 + + ASTERISK-29707: chan_iax2: Allow both key and secret to be specified at + dial time + Reported by: N A + * [bea08a563b] Naveen Albert -- chan_iax2: Allow both secret and outkey + at dial time + ASTERISK-29605: chan_iax2: Add ANI2 + Reported by: N A + * [5a685249ce] Naveen Albert -- chan_iax2: Add ANI2/OLI information + element + + Category: Channels/chan_pjsip + + ASTERISK-29472: res_pjsip: OLI/ANI2 support missing + Reported by: N A + * [1a23c9c047] Naveen Albert -- res_pjsip_caller_id: Add ANI2/OLI + parsing + ASTERISK-29459: Missing configuration from PJSIP to SIP conversion script + Reported by: N A + * [6873c5f3e4] Naveen Albert -- sip_to_pjsip: Fix missing cases + ASTERISK-29252: TRANSFERSTATUSPROTOCOL variable to report Transfer (REFER) + failure SIP code + Reported by: Dan Cropp + * [088816284a] Dan Cropp -- chan_pjsip, app_transfer: Add + TRANSFERSTATUSPROTOCOL variable + ASTERISK-28549: Two repeated 183 + Reported by: Gant Liu + * [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control + frames twice on outgoing channels + ASTERISK-28638: Simplify dialplan for Dial, Page, and ChanIsAvail + Reported by: cmaj + * [fe3cce816c] Richard Mudgett -- app_chanisavail.c: Simplify dialplan + using ChanIsAvail. + * [abcb4ab321] Richard Mudgett -- app_dial.c: Simplify dialplan using + Dial. + * [d86a6ac5ce] Richard Mudgett -- app_page.c: Simplify dialplan using + Page. + ASTERISK-28292: Changed to show all channel stats including wrong media + Reported by: sungtae kim + * [fb651756c7] sungtae kim -- chan_pjsip: Changed to continued after + invalid media for pjsip show channelstats + ASTERISK-28144: [patch] New function PJSIP_PARSE_URI to parse an URI and + return a specified part of the URI + Reported by: Alexei Gradinari + * [fa048183aa] Alexei Gradinari -- pjsip: New function PJSIP_PARSE_URI + to parse URI and return part of URI + + Category: Contrib/General + + ASTERISK-29216: contrib: systemd asterisk service for centos8 or other + newer linux versions + Reported by: Mark Petersen + * [cba8426b4c] Mark Petersen -- contrib/systemd: Added note on common + issues with systemd and asterisk + ASTERISK-28726: install_prereq script uses the interactive mode when + installing aptitude + Reported by: Sylvain Afchain + * [0c02d0a450] Sylvain Afchain -- install_prereq: Install aptitude + non-interactively + ASTERISK-28136: Allow the sip_to_pjsip script to be used in a pipe + Reported by: Pascal Cadotte Michaud + * [ebff81e3a0] Pascal Cadotte Michaud -- contrib/sip_to_pjsip: add a + --quiet option to avoid prints + + Category: Core/Bridging + + ASTERISK-29612: bridge_basic: Don't throw warning if attended transfer is + cancelled + Reported by: N A + * [e660a2c03b] Naveen Albert -- bridge_basic: Change warning to verbose + if transfer cancelled + + Category: Core/BuildSystem + + ASTERISK-28111: build: CHANGES/UPGRADE are irritating to work with. + Reported by: Corey Farrell + * [a4ab7f5f80] Ben Ford -- build: Revise CHANGES and UPGRADE.txt + handling. + + Category: Core/CodecInterface + + ASTERISK-28512: Add pass-through support for H.265 (HEVC) codec + Reported by: Florian Floimair + * [c18983207d] Florian Floimair -- core: Add H.265/HEVC passthrough + support + + Category: Core/DNS + + ASTERISK-28853: Missing include on FreeBSD + Reported by: Guido Falsi + * [97494d8984] Guido Falsi -- core/dns: Add system include required on + FreeBSD + + Category: Core/Dial + + ASTERISK-27946: dial (API): Storage of dialed target uses + AST_MAX_EXTENSION when it shouldn't + Reported by: Joshua Elson + * [dbddb6725d] sungtae kim -- dial.c: Removed dial string 80 character + limitation + + Category: Core/General + + ASTERISK-29544: Media Cache - Delayed remote sound file retrieve delays + all playbacks + Reported by: Andre Barbosa + * [eb486db3af] Andre Barbosa -- media_cache: Don't lock when curl the + remote file + ASTERISK-29339: loader: Let's output warnings for deprecated modules! + Reported by: Joshua C. Colp + * [a9a9864478] Joshua C. Colp -- loader: Output warnings for deprecated + modules. + ASTERISK-29337: menuselect: Add ability to set deprecated in and removed + in versions for modules + Reported by: Joshua C. Colp + * [6aac148d59] Joshua C. Colp -- menuselect: Add ability to set + deprecated and removed versions. + * [60fb559ccc] Joshua C. Colp -- xml: Allow deprecated_in and removed_in + for MODULEINFO. + ASTERISK-29335: xml: Embed module information into core XML documentation. + Reported by: Joshua C. Colp + * [60800b038a] Joshua C. Colp -- xml: Embed module information into core + XML documentation. + ASTERISK-29326: asterisk: Update copyright/company + Reported by: Joshua C. Colp + * [682f7d9437] Joshua C. Colp -- asterisk: Update copyright. + + Category: Core/HTTP + + ASTERISK-28750: TLS/SSL Key too small error + Reported by: Martin Zeh + * [7f2d56fc8c] Sean Bright -- tcptls.c: Log more informative OpenSSL + errors + ASTERISK-28710: Should be able to disable the /httpstatus URI in the + built-in HTTP server + Reported by: Sean Bright + * [0dce6f746b] Sean Bright -- http: Add ability to disable /httpstatus + URI + + Category: Core/Logging + + ASTERISK-29529: Add custom logging level + Reported by: N A + * [a65bb134f5] Naveen Albert -- logger: Add custom logging capabilities + ASTERISK-29054: Logger: Add debug logging categories + Reported by: Kevin Harwell + * [6255e7976c] Kevin Harwell -- Logging: Add debug logging categories + + Category: Core/ManagerInterface + + ASTERISK-28945: AMI SendText - add Content-Type parameter + Reported by: Kevin Harwell + * [cfed0ea033] Kevin Harwell -- manager - Add Content-Type parameter to + the SendText action + + Category: Core/RTP + + ASTERISK-29727: Add type for JSON stasis message RTCP Report Received/Sent + Reported by: Boris P. Korzun + * [70b14f3eda] Boris P. Korzun -- rtp_engine: Add type field for JSON + RTCP Report stasis messages + + Category: Core/Sorcery + + ASTERISK-29321: sorcery: Add support for more intelligent reloading. + Reported by: Joshua C. Colp + * [a9acbd19f3] Joshua C. Colp -- sorcery: Add support for more + intelligent reloading. + + Category: Core/Stasis + + ASTERISK-28442: stasis_state: Create a stasis module to cache last known + state + Reported by: Kevin Harwell + * [9637e1dfdc] Kevin Harwell -- MWI: Update modules that subscribe to + MWI to use new API calls + * [b31ac83900] Kevin Harwell -- mwi: Update the MWI core to use + stasis_state API + * [83c6ebbae8] Kevin Harwell -- stasis_state: Make unsubscribes NULL + tolerant + * [363bafc29e] Kevin Harwell -- stasis_state: Add new stasis_state + module + + Category: Core/Streams + + ASTERISK-28733: stream: Add support for adding/removing streams during + SFU/calls + Reported by: Joshua C. Colp + * [5a5be92b79] Joshua C. Colp -- bridging: Add better support for + adding/removing streams. + + Category: Documentation + + ASTERISK-29777: documentation: Standardize example syntax + Reported by: N A + * [bcb7aee723] Naveen Albert -- documentation: Standardize examples + ASTERISK-29336: documentation: Fix inconsistent support levels + Reported by: Joshua C. Colp + * [be3e469f98] Joshua C. Colp -- documentation: Fix non-matching module + support levels. + ASTERISK-29335: xml: Embed module information into core XML documentation. + Reported by: Joshua C. Colp + * [60800b038a] Joshua C. Colp -- xml: Embed module information into core + XML documentation. + ASTERISK-24798: Documentation - Clarify That Format Is Set By File Name + Extension In MixMonitor + Reported by: xrobau + * [ddfb60ac2c] Sean Bright -- app_mixmonitor: Set MIXMONITOR_FILENAME to + correct value when wav49 is used + ASTERISK-28673: GET FULL VARIABLE documentation clarification + Reported by: Jonathan Harris + * [7d94bdde9d] Sean Bright -- res_agi: Improve GET FULL VARIABLE + documentation + ASTERISK-28586: Typo in README-SERIOUSLY.bestpractices.md + Reported by: Sam Banks + * [0dc7e29dd8] Sean Bright -- README-SERIOUSLY.bestpractices.md: Speling + correetions. + ASTERISK-27993: pjsip_wizard example gives wrong info about unsupported + SRV records + Reported by: Jonathan Harris + * [68a3d39a99] Richard Mudgett -- pjsip_wizard.conf.sample: Update + remote_hosts description. + + Category: Formats/format_g726 + + ASTERISK-28246: Support skipping on the g726 format + Reported by: Eyal Hasson + * [aede739778] eyalhasson -- format_g726: add support for seeking + + Category: Formats/format_wav + + ASTERISK-29275: Support of MIME-type for wav16 + Reported by: Boris P. Korzun + * [b2c834e349] Sean Bright -- res_http_media_cache.c: Compare unaltered + MIME types. + * [57d130d3aa] Boris P. Korzun -- format_wav: Support of MIME-type for + wav16 + + Category: Functions/func_math + + ASTERISK-29495: Return integer instead of float if response is a whole + number + Reported by: N A + * [c52ef4ac79] Naveen Albert -- func_math: Return integer instead of + float if possible + + Category: Functions/func_vmcount + + ASTERISK-29661: func_vmcount: Add support for multiple mailboxes + Reported by: N A + * [484da42d6c] Naveen Albert -- func_vmcount: Add support for multiple + mailboxes + + Category: Functions/func_volume + + ASTERISK-28813: func_volume: Allow decimal numbers as parameter to improve + granularity + Reported by: Jean Aunis - Prescom + * [de66713fd5] Jean Aunis -- func_volume: Accept decimal number as + argument + + Category: General + + ASTERISK-28046: Remove stale nonoptreq references + Reported by: Walter Doekes + * [bc8cdcefa8] Walter Doekes -- optional_api: Remove unused nonoptreq + fields + + Category: PBX/General + + ASTERISK-28264: Added topic_all container + Reported by: sungtae kim + * [30d568ddec] sungtae kim -- stasis.c: Added topic_all container + + Category: PBX/pbx_dundi + + ASTERISK-28234: pbx_dundi: Add IPv4/IPv6 dual bind support for DUNDi + Reported by: Kirsty Tyerman + * [bcaa01b024] Kirsty Tyerman -- pbx_dundi: added IPv4/IPv6 dual bind + support to DUNDi + ASTERISK-27164: [patch] Add IPv6 Support for DUNDi + Reported by: Adam Secombe + * [328f772d3b] Kirsty Tyerman -- pbx_dundi: Added IPv6 support for dundi + + Category: Resources/General + + ASTERISK-29056: Increase reg_server column size for ps_contacts table + realtime + Reported by: sungtae kim + * [1fd12b88c7] Sungtae Kim -- realtime: Increased reg_server character + size + + Category: Resources/NewFeature + + ASTERISK-28484: Add AudioSocket support + Reported by: Seán C. McCord + * [163efbd724] Seán C McCord -- feat: AudioSocket channel, application, + and ARI support. + + Category: Resources/res_ari + + ASTERISK-28326: ari: Added timestamp for some ari events. + Reported by: sungtae kim + * [e2eb19b363] sungtae kim -- res/res_ari: Added timestamp as a + requirement for all ARI events + ASTERISK-28198: res_ari: Add new hangup causes for ARI Channel DELETE + command + Reported by: Sebastian Damm + * [a24bb1c4b6] Sebastian Damm -- res/res_ari: Add additional hangup + reasons + + Category: Resources/res_ari_bridges + + ASTERISK-28629: [patch] Add an "inhibitCOLP" flag to the bridges REST API + Reported by: Jean Aunis - Prescom + * [034ac357ad] Jean Aunis -- ARI: Ability to inhibit COLP frames when + adding channels to a bridge + + Category: Resources/res_ari_channels + + ASTERISK-28896: ari: Add support for specifying variables on channel + create + Reported by: Joshua C. Colp + * [15cbff9d54] Joshua C. Colp -- ari: Allow variables to be set on + channel create. + ASTERISK-28385: res_ari_channels: Added detail hangup code settings + Reported by: sungtae kim + * [613a335de5] sungtae kim -- res/ari/resource_channels.c: Added hangup + reason code for channels + ASTERISK-28343: Added app_name, app_data to channel type + Reported by: sungtae kim + * [76768ad6ce] sungtae kim -- main/json.c: Added app_name, app_data to + channel type + ASTERISK-28198: res_ari: Add new hangup causes for ARI Channel DELETE + command + Reported by: Sebastian Damm + * [a24bb1c4b6] Sebastian Damm -- res/res_ari: Add additional hangup + reasons + + Category: Resources/res_ari_playbacks + + ASTERISK-29501: ARI - Stasis Playback doesn't hangup call when processing + a list of invalid files + Reported by: Andre Barbosa + * [2c3defc6c6] Andre Barbosa -- res_stasis_playback: Check for chan + hangup on play_on_channels + + Category: Resources/res_http_media_cache + + ASTERISK-29143: res_http_media_cache: HTTP media cache stored hardcoded in + /tmp + Reported by: laszlovl + * [92fcd4edba] laszlovl -- Introduce astcachedir, to be used for + temporary bucket files + + Category: Resources/res_http_websocket + + ASTERISK-28958: Continue reading string when ping received by websocket + Reported by: Nickolay V. Shmyrev + * [7163efd934] Nickolay Shmyrev -- res_http_websocket.c: Continue + reading after ping/pong + ASTERISK-28949: res_http_websocket: Add masking to websocket client + Reported by: Moises Silva + * [9445dac43b] Moises Silva -- res_http_websocket: Add payload masking + to the websocket client + + Category: Resources/res_musiconhold + + ASTERISK-29262: Support of various URL-schemes by MoH + Reported by: Boris P. Korzun + * [f1c88a497b] Boris P. Korzun -- res_musiconhold: Add support of + various URL-schemes by MoH. + + Category: Resources/res_pjsip + + ASTERISK-28959: res_pjsip: Added option for disable rport parameter set + Reported by: sungtae kim + * [81b5e4a73f] sungtae kim -- res_pjsip.c: Added disable_rport option + for pjsip.conf + ASTERISK-28777: Codec Negotiation: add outgoing_call_offer_prefs option + Reported by: Kevin Harwell + * [2ee455958e] George Joseph -- codec_negotiation: Implement + outgoing_call_offer_pref + ASTERISK-28756: Codec Negotiation: add incoming_call_offer_pref option + Reported by: Kevin Harwell + * [06dada3f01] Kevin Harwell -- codec negotiation: add + incoming_call_offer_prefs option + ASTERISK-28542: [patch] add the ability for asterisk to generate on-hold + re-invites + Reported by: Torrey Searle + * [b43cdc7f1e] Torrey Searle -- channel/chan_pjsip: add dialplan + function for music on hold + + Category: Resources/res_pjsip_caller_id + + ASTERISK-29472: res_pjsip: OLI/ANI2 support missing + Reported by: N A + * [1a23c9c047] Naveen Albert -- res_pjsip_caller_id: Add ANI2/OLI + parsing + ASTERISK-28006: PJSIP: Missing "party=calling"/"party=called" in + Remote-Party-ID + Reported by: Eric Dantie + * [fca3d4fe5f] Joshua Colp -- res_pjsip_caller_id: Add "party" parameter + to RPID header. + + Category: Resources/res_pjsip_dtmf_info + + ASTERISK-29460: Recognize application/hook-flash in PJSIP + Reported by: N A + * [99573f9540] Naveen Albert -- res_pjsip_dtmf_info: Hook flash + + Category: Resources/res_pjsip_logger + + ASTERISK-28895: res_pjsip_logger: Add tons'o'functionality + Reported by: Joshua C. Colp + * [a7aaee70c6] Joshua C. Colp -- res_pjsip_logger: Expand functionality + to improve logging. + + Category: Resources/res_pjsip_outbound_registration + + ASTERISK-28602: res_pjsip_outbound_registration: Maximum retries reached + Reported by: Daniel + * [e73eba85c1] Joshua Colp -- res_pjsip_outbound_registration: Extend + documentation for "max_retries". + + Category: Resources/res_pjsip_registrar + + ASTERISK-29325: res_pjsip_registrar: Include source IP address and port in + log messages + Reported by: Joshua C. Colp + * [5f1c21e4ca] Joshua C. Colp -- res_pjsip_registrar: Include source IP + and port in log messages. + + Category: Resources/res_pjsip_sdp_rtp + + ASTERISK-28777: Codec Negotiation: add outgoing_call_offer_prefs option + Reported by: Kevin Harwell + * [2ee455958e] George Joseph -- codec_negotiation: Implement + outgoing_call_offer_pref + ASTERISK-28756: Codec Negotiation: add incoming_call_offer_pref option + Reported by: Kevin Harwell + * [06dada3f01] Kevin Harwell -- codec negotiation: add + incoming_call_offer_prefs option + ASTERISK-28733: stream: Add support for adding/removing streams during + SFU/calls + Reported by: Joshua C. Colp + * [5a5be92b79] Joshua C. Colp -- bridging: Add better support for + adding/removing streams. + ASTERISK-28400: res_rtp_asterisk / res_pjsip_sdp_rtp: Add support for + transport-cc + Reported by: Joshua C. Colp + * [6bb70c93f1] Joshua Colp -- rtp: Add support for transport-cc in + receiver direction. + + Category: Resources/res_pjsip_session + + ASTERISK-28549: Two repeated 183 + Reported by: Gant Liu + * [cc496044db] Ivan Poddubnyi -- chan_pjsip: Stop queueing control + frames twice on outgoing channels + ASTERISK-28777: Codec Negotiation: add outgoing_call_offer_prefs option + Reported by: Kevin Harwell + * [2ee455958e] George Joseph -- codec_negotiation: Implement + outgoing_call_offer_pref + ASTERISK-28782: Add support for Content-Disposition header in multi-part + INVITES + Reported by: Torrey Searle + * [e12244153a] Torrey Searle -- res_pjsip_session: implement processing + of Content-Disposition + ASTERISK-28787: res_pjsip_session: Decide more intelligently when to add + video + Reported by: Joshua C. Colp + * [21e9051461] Joshua C. Colp -- res_pjsip_session: Apply intention + behind requested formats. + ASTERISK-28756: Codec Negotiation: add incoming_call_offer_pref option + Reported by: Kevin Harwell + * [06dada3f01] Kevin Harwell -- codec negotiation: add + incoming_call_offer_prefs option + ASTERISK-28253: res_pjsip_session: Adding rtcp stats result into the + session + Reported by: sungtae kim + * [7e1d881d89] Sungtae Kim -- res_pjsip_session Added rtcp stats result + vector into the session + + Category: Resources/res_rtp_asterisk + + ASTERISK-29508: STUN server address refresh + Reported by: Sébastien Duthil + * [ac492f2ff8] Sebastien Duthil -- res_rtp_asterisk: Automatically + refresh stunaddr from DNS + ASTERISK-29434: Asterisk reveals pjproject version in STUN packets + Reported by: Jeremy Lainé + * [0f8e2174a7] Jeremy Lainé -- res_rtp_asterisk: make it possible to + remove SOFTWARE attribute + ASTERISK-28400: res_rtp_asterisk / res_pjsip_sdp_rtp: Add support for + transport-cc + Reported by: Joshua C. Colp + * [6bb70c93f1] Joshua Colp -- rtp: Add support for transport-cc in + receiver direction. + ASTERISK-27970: res_rtp_asterisk: T.140 packets containing backspace or + end of line are merged with regular text and it causes some UA to break + Reported by: Emmanuel BUU + * [cb276b5085] Emmanuel BUU -- res_rtp_asterisk: Avoid merging command + and regular T.140 text packets + + Category: Resources/res_stasis + + ASTERISK-29055: Create a Bridge with video_single mode + Reported by: sungtae kim + * [a0d41a27d4] Sungtae Kim -- res_stasis.c: Added video_single option + for bridge creation + ASTERISK-28378: Added detail subscriber/subscription info for stasis show + app cli + Reported by: sungtae kim + * [1d3272d4ed] sungtae kim -- main/stasis.c: Added detail info for + stasis show app cli + + Category: Resources/res_stasis_playback + + ASTERISK-29464: ARI - PlaybackFinish skip error events + Reported by: Andre Barbosa + * [283812e492] Andre Barbosa -- res_stasis_playback: Send PlaybackFinish + event only once for errors + + Category: Third-Party/pjproject + + ASTERISK-28866: third-party/pjproject/configure.m4 contains bashisms + Reported by: Guido Falsi + * [c831f03273] Guido Falsi -- pjproject: Remove bashism from + configure.m4 script + + Category: pjproject/pjsip + + ASTERISK-29525: PJSIP remove_existing unavailable contacts + Reported by: Joseph Nadiv + * [4368764032] Joseph Nadiv -- res_pjsip_registrar: Remove unavailable + contacts if exceeds max_contacts + ASTERISK-28899: Upgrade Asterisk to bundled pjproject 2.10 + Reported by: Kevin Harwell + * [415b55af5a] Kevin Harwell -- pjproject: Upgrade bundled version to + pjproject 2.10 + ASTERISK-28879: pjproject has race conditions in it's build system + Reported by: Guido Falsi + * [801d570f6e] Guido Falsi -- pjproject: Fix race condition when + building with parallel make + ASTERISK-27995: pjproject_bundled: Find shared libraries in root + --with-ssl=PATH. + Reported by: Alexander Traud + * [1c7c867ce0] Alexander Traud -- pjproject_bundled: Find shared + libraries in root --with-ssl=PATH. + + ---------------------------------------------------------------------- + + Open Issues + + [Back to Top] + + This is a list of all open issues from the issue tracker that were + referenced by changes that went into this release. + + Bug + + Category: Applications/app_voicemail/ODBC + + ASTERISK-28992: app_voicemail: Deadlock in ODBC when retrieving file + Reported by: Schneur Rosenberg + * [9ff548f1db] Sean Bright -- app_voicemail: Prevent deadlocks when out + of ODBC database connections + + Category: Core/Configuration + + ASTERISK-28719: Cannot remove defaultrule from queue using realtime queues + Reported by: EDV O-TON + * [eb9252ea27] Sean Bright -- res_config_odbc: Preserve empty strings + returned by the database + + Category: Resources/res_pjsip_endpoint_identifier_ip + + ASTERISK-29624: Contact identifier is not updated when FDQN resolves to a + new address + Reported by: Philip Young + * [28f187d6c5] George Joseph -- chan_iax2.c: Require secret and auth + method if encryption is enabled + + Category: Resources/res_pjsip_outbound_registration + + ASTERISK-29241: pjsip / register: wrong port used in Contact and Via if + multiple transports are defined. + Reported by: Michael Maier + * [804788037e] Bernd Zobl -- res_pjsip/pjsip_message_filter: set + preferred transport in pjsip_message_filter + + Category: Resources/res_srtp + + ASTERISK-29625: srtp cryptos accepted if not enabled + Reported by: Jasper Hafkenscheid + * [c1a575907b] Jasper Hafkenscheid -- res_srtp: Disable parsing of not + enabled cryptos + + Improvement + + Category: Core/HTTP + + ASTERISK-28236: Support separated HTTP request + Reported by: sungtae kim + * [b4ccaad671] Sungtae Kim -- http.c: Support separated HTTP request + + ---------------------------------------------------------------------- + + Commits Not Associated with an Issue + + [Back to Top] + + This is a list of all changes that went into this release that did not + reference a JIRA issue. + + +------------------------------------------------------------------------+ + | Revision | Author | Summary | + |------------+------------------+----------------------------------------| + | fefe1cac3a | Mike Bradeen | Asterisk Certified 18.9 Preparation | + |------------+------------------+----------------------------------------| + | 85601849c6 | Asterisk | Update for 18.9.0 | + | | Development Team | | + |------------+------------------+----------------------------------------| + | 82637aaa18 | Asterisk | Update for 18.9.0-rc1 | + | | Development Team | | + |------------+------------------+----------------------------------------| + | 868d2d5e53 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.9.0 | + |------------+------------------+----------------------------------------| + | 89237be105 | Jaco Kroon | logger: use __FUNCTION__ instead of | + | | | __PRETTY_FUNCTION__ | + |------------+------------------+----------------------------------------| + | b4eebfa191 | Alexander Traud | ari-stubs: Avoid 'is' as comparism | + | | | with an literal. | + |------------+------------------+----------------------------------------| + | 53610679bf | Alexander Traud | BuildSystem: Consistently allow 'ye' | + | | | even for Jansson. | + |------------+------------------+----------------------------------------| + | 301647788e | George Joseph | CI: Rename 'master' node to 'built-in' | + |------------+------------------+----------------------------------------| + | 08cb67251f | George Joseph | ast_coredumper: Refactor to better | + | | | find things | + |------------+------------------+----------------------------------------| + | | | strings/json: Add string delimter | + | ae97aaedb0 | Kevin Harwell | match, and object create with vars | + | | | methods | + |------------+------------------+----------------------------------------| + | 2e55c0fded | Ben Ford | STIR/SHAKEN: Option split and response | + | | | codes. | + |------------+------------------+----------------------------------------| + | 859f579504 | Kevin Harwell | res_speech: Add a type conversion, and | + | | | new engine unregister methods | + |------------+------------------+----------------------------------------| + | 482281deff | Sean Bright | configure: Remove unused OpenSSL SRTP | + | | | check. | + |------------+------------------+----------------------------------------| + | 9063680148 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.8.0 | + |------------+------------------+----------------------------------------| + | 804b1987fb | Sean Bright | Makefile: Use basename in a | + | | | POSIX-compliant way. | + |------------+------------------+----------------------------------------| + | e091aa2763 | Mark Murawski | pbx_ael: Fix crash and lockup issue | + | | | regarding 'ael reload' | + |------------+------------------+----------------------------------------| + | dce142baa4 | Sean Bright | app_externalivr.c: Fix mixed leading | + | | | whitespace in source code. | + |------------+------------------+----------------------------------------| + | 00cf86dafe | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.7.0 | + |------------+------------------+----------------------------------------| + | | | test_http_media_cache.c: Fix | + | 847349853a | Sean Bright | copy/paste error during test | + | | | deregistration. | + |------------+------------------+----------------------------------------| + | 8410afc7ab | Alexander Traud | dialplan: Add one static and fix two | + | | | whitespace errors. | + |------------+------------------+----------------------------------------| + | a8e8b3aaff | Alexander Traud | BuildSystem: Remove two dead | + | | | exceptions for compiler Clang. | + |------------+------------------+----------------------------------------| + | 288d018fb7 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.6.0 | + |------------+------------------+----------------------------------------| + | 9117f09d28 | Joshua C. Colp | docs: Remove embedded macro in | + | | | WaitForCond XML documentation. | + |------------+------------------+----------------------------------------| + | 993b3ba919 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.5.1 | + |------------+------------------+----------------------------------------| + | 30feaadabf | Sean Bright | res_pjsip_stir_shaken: RFC 8225 | + | | | compliance and error message cleanup. | + |------------+------------------+----------------------------------------| + | fcebc4d24a | Sean Bright | main/cdr.c: Correct Party A selection. | + |------------+------------------+----------------------------------------| + | 0747162d4f | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.5.0 | + |------------+------------------+----------------------------------------| + | 702e1d33b5 | George Joseph | res_pjsip_messaging: Overwrite user in | + | | | existing contact URI | + |------------+------------------+----------------------------------------| + | 6b67821098 | Jaco Kroon | func_lock: Prevent module unloading | + | | | in-use module. | + |------------+------------------+----------------------------------------| + | 6f303335d3 | Jaco Kroon | func_lock: Add "dialplan locks show" | + | | | cli command. | + |------------+------------------+----------------------------------------| + | a3df5d7de8 | Jaco Kroon | func_lock: Fix memory corruption | + | | | during unload. | + |------------+------------------+----------------------------------------| + | 6bd741b77d | Jaco Kroon | func_lock: Fix requesters counter in | + | | | error paths. | + |------------+------------------+----------------------------------------| + | 26059f8616 | Sean Bright | menuselect: Fix description of several | + | | | modules. | + |------------+------------------+----------------------------------------| + | 26a38c4084 | Ben Ford | STIR/SHAKEN: Add Date header, | + | | | dest->tn, and URL checking. | + |------------+------------------+----------------------------------------| + | 60ed1847b8 | Joshua C. Colp | asterisk: We've moved to Libera Chat! | + |------------+------------------+----------------------------------------| + | a84d34035a | Ben Ford | STIR/SHAKEN: Switch to base64 URL | + | | | encoding. | + |------------+------------------+----------------------------------------| + | e0cbdfe063 | Ben Ford | STIR/SHAKEN: OPENSSL_free serial hex | + | | | from openssl. | + |------------+------------------+----------------------------------------| + | 5e6508b56f | Ben Ford | STIR/SHAKEN: Fix certificate type and | + | | | storage. | + |------------+------------------+----------------------------------------| + | 40bdfff73b | George Joseph | Updates for the MessageSend Dialplan | + | | | App | + |------------+------------------+----------------------------------------| + | 78f518622d | Sean Bright | translate.c: Avoid refleak when | + | | | checking for a translation path | + |------------+------------------+----------------------------------------| + | 1949d828b7 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.4.0 | + |------------+------------------+----------------------------------------| + | c2f4925ee0 | Joshua C. Colp | svn: Switch to https scheme. | + |------------+------------------+----------------------------------------| + | 5f3d96a765 | George Joseph | res_pjsip: Update documentation for | + | | | the auth object | + |------------+------------------+----------------------------------------| + | 404533c149 | Sean Bright | loader.c: Speed up deprecation | + | | | metadata lookup | + |------------+------------------+----------------------------------------| + | 0ad1ff8a72 | Kevin Harwell | res_rtp_asterisk: Don't count 0 as a | + | | | minimum lost packets | + |------------+------------------+----------------------------------------| + | 1414b9cc57 | Kevin Harwell | res_rtp_asterisk: Statically declare | + | | | rtp_drop_packets_data object | + |------------+------------------+----------------------------------------| + | b912b31853 | Kevin Harwell | res_rtp_asterisk: Add a DEVMODE RTP | + | | | drop packets CLI command | + |------------+------------------+----------------------------------------| + | | | res_pjsip: Give error when TLS | + | 65a4a3a4e6 | Joshua C. Colp | transport configured but not | + | | | supported. | + |------------+------------------+----------------------------------------| + | 15de2f1727 | Kevin Harwell | time: Add timeval create and unit | + | | | conversion functions | + |------------+------------------+----------------------------------------| + | bbfb8f2b9d | Ben Ford | logger.conf.sample: Add more debug | + | | | documentation. | + |------------+------------------+----------------------------------------| + | 263f906af4 | Kevin Harwell | manager: Increase the non breaking AMI | + | | | version number | + |------------+------------------+----------------------------------------| + | 0afd37e3b5 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.3.0 | + |------------+------------------+----------------------------------------| + | | | func_callerid+res_agi: Fix compile | + | 23e41313a8 | Jaco Kroon | errors related to | + | | | -Werror=zero-length-bounds | + |------------+------------------+----------------------------------------| + | 52707fba7f | Jaco Kroon | app.h: Fix -Werror=zero-length-bounds | + | | | compile errors in dev mode. | + |------------+------------------+----------------------------------------| + | 262473c6d9 | Alexander Traud | res_format_attr_*: Parameter Names are | + | | | Case-Insensitive. | + |------------+------------------+----------------------------------------| + | 4fc0e16838 | Alexander Traud | chan_iax2: System Header strings is | + | | | included via asterisk.h/compat.h. | + |------------+------------------+----------------------------------------| + | 16e4d1f36f | Sean Bright | res_musiconhold.c: Plug ref leak | + | | | caused by ao2_replace() misuse. | + |------------+------------------+----------------------------------------| + | 269bb08ea2 | George Joseph | res_pjsip_refer: Move the progress dlg | + | | | release to a serializer | + |------------+------------------+----------------------------------------| + | 0323293142 | Alexander Traud | res_format_attr_h263: Generate valid | + | | | SDP fmtp for H.263+. | + |------------+------------------+----------------------------------------| + | be0a61bc3d | Kevin Harwell | res_rtp_asterisk: Add packet subtype | + | | | during RTCP debug when relevant | + |------------+------------------+----------------------------------------| + | 1adf9368ee | Alexander Traud | chan_sip: Filter pass-through | + | | | audio/video formats away, again. | + |------------+------------------+----------------------------------------| + | bee35fe04a | Jaco Kroon | func_odbc: Introduce minargs config | + | | | and expose ARGC in addition to ARGn. | + |------------+------------------+----------------------------------------| + | dbd8908f8d | George Joseph | res_pjsip_refer: Always serialize | + | | | calls to refer_progress_notify | + |------------+------------------+----------------------------------------| + | 24d6adfe99 | Sean Bright | app_read: Release tone zone reference | + | | | on early return. | + |------------+------------------+----------------------------------------| + | 7c0fbaf010 | Ivan Poddubnyi | main/frame: Add missing control frame | + | | | names to ast_frame_subclass2str | + |------------+------------------+----------------------------------------| + | fb42b60326 | Sean Bright | res_pjsip_pubsub: Fix truncation of | + | | | persisted SUBSCRIBE packet | + |------------+------------------+----------------------------------------| + | 9c56870929 | Jaco Kroon | AC_HEADER_STDC causes a compile | + | | | failure with autoconf 2.70 | + |------------+------------------+----------------------------------------| + | | | pjsip_scheduler: Fix pjsip show | + | a25bcf70ed | Alexander Traud | scheduled_tasks like for compiler | + | | | Clang. | + |------------+------------------+----------------------------------------| + | 87a35f8e94 | Ben Ford | chan_pjsip.c: Add parameters to frame | + | | | in indicate. | + |------------+------------------+----------------------------------------| + | 89fea9bafe | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.2.0 | + |------------+------------------+----------------------------------------| + | 49f625b8db | Jaco Kroon | pbx_lua: Add LUA_VERSIONS environment | + | | | variable to ./configure. | + |------------+------------------+----------------------------------------| + | 68d3d3af6f | Sean Bright | asterisk: Export additional manager | + | | | functions | + |------------+------------------+----------------------------------------| + | 3d379845e6 | Richard Mudgett | chan_vpb.cc: Fix compile errors. | + |------------+------------------+----------------------------------------| + | 027f4e3a21 | Richard Mudgett | res_pjsip_session.c: Fix compiler | + | | | warnings. | + |------------+------------------+----------------------------------------| + | 938a240793 | Joshua C. Colp | res_pjsip_pidf_digium_body_supplement: | + | | | Support Sangoma user agent. | + |------------+------------------+----------------------------------------| + | f9438e6457 | Sean Bright | media_cache: Fix reference leak with | + | | | bucket file metadata | + |------------+------------------+----------------------------------------| + | 994fbdaf48 | Sean Bright | CHANGES: Remove already applied | + | | | CHANGES update | + |------------+------------------+----------------------------------------| + | 6e1fb58183 | Alexander Traud | modules.conf: Align the comments for | + | | | more conclusiveness. | + |------------+------------------+----------------------------------------| + | 98d1537c1e | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.1.0 | + |------------+------------------+----------------------------------------| + | 860e40dd80 | George Joseph | res_pjsip_outbound_registration.c: Use | + | | | our own scheduler and other stuff | + |------------+------------------+----------------------------------------| + | 569fc28966 | George Joseph | pjsip_scheduler.c: Add type ONESHOT | + | | | and enhance cli show command | + |------------+------------------+----------------------------------------| + | da0f2ea99e | Alexei Gradinari | sched: AST_SCHED_REPLACE_UNREF can | + | | | lead to use after free of data | + |------------+------------------+----------------------------------------| + | be54c7e9ea | Alexander Traud | res_stir_shaken: Include OpenSSL | + | | | headers where used actually. | + |------------+------------------+----------------------------------------| + | 5b25c75d7b | Alexander Traud | chan_sip: On authentication, pick MD5 | + | | | for sure. | + |------------+------------------+----------------------------------------| + | fb3b14ab7d | Walter Doekes | main/say: Work around gcc 9 | + | | | format-truncation false positive | + |------------+------------------+----------------------------------------| + | 439f7bb848 | Kevin Harwell | res_pjsip, res_pjsip_session: | + | | | initialize local variables | + |------------+------------------+----------------------------------------| + | f89531cb98 | Alexander Traud | install_prereq: Add GMime 3.0. | + |------------+------------------+----------------------------------------| + | 2773f93154 | Alexander Traud | BuildSystem: Enable Lua 5.4. | + |------------+------------------+----------------------------------------| + | 4a049ad510 | George Joseph | app_confbridge/bridge_softmix: Add | + | | | ability to force estimated bitrate | + |------------+------------------+----------------------------------------| + | c470327e6c | Torrey Searle | res_pjsip_diversion: fix double 181 | + |------------+------------------+----------------------------------------| + | 5929e0ccbd | Sean Bright | res_musiconhold: Clarify that playlist | + | | | mode only supports HTTP(S) URLs | + |------------+------------------+----------------------------------------| + | 9eeb40af33 | Joshua C. Colp | res_pjsip_session: Fix stream name | + | | | memory leak. | + |------------+------------------+----------------------------------------| + | 99bd7d95de | George Joseph | logger.h: Fix ast_trace to respect | + | | | scope_level | + |------------+------------------+----------------------------------------| + | c90c182932 | Sean Bright | audiosocket: Fix module menuselect | + | | | descriptions | + |------------+------------------+----------------------------------------| + | fdc13060df | George Joseph | bridge_softmix/sfu_topologies_on_join: | + | | | Ignore topology change failures | + |------------+------------------+----------------------------------------| + | 6f32c254be | Sean Bright | res_pjsip_session.c: Fix build when | + | | | TEST_FRAMEWORK is not defined | + |------------+------------------+----------------------------------------| + | ad4f2a8c99 | George Joseph | debugging: Add enough to choke a mule | + |------------+------------------+----------------------------------------| + | | | Bridging: Use a ref to | + | 7eaae4e7b6 | Ben Ford | bridge_channel's channel to prevent | + | | | crash. | + |------------+------------------+----------------------------------------| + | f589985840 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.0.0 | + |------------+------------------+----------------------------------------| + | | | res_pjsip_session: Deferred re-INVITE | + | 5a49757e40 | Patrick Verzele | without SDP send a=sendrecv instead of | + | | | a=sendonly | + |------------+------------------+----------------------------------------| + | ec03909831 | Kevin Harwell | conversions: Add string to signed | + | | | integer conversion functions | + |------------+------------------+----------------------------------------| + | e32815dddb | George Joseph | ast_coredumper: Fix issues with naming | + |------------+------------------+----------------------------------------| + | 9ed1b1452d | Alexander Traud | sip_nat_settings: Update script for | + | | | latest Linux. | + |------------+------------------+----------------------------------------| + | 217449a1e5 | Alexander Traud | samples: Fix keep_alive_interval | + | | | default in pjsip.conf. | + |------------+------------------+----------------------------------------| + | 5a8cacb93d | George Joseph | logger.c: Added a new log formatter | + | | | called "plain" | + |------------+------------------+----------------------------------------| + | | | res_musiconhold.c: Use | + | 5dfeeba623 | Sean Bright | ast_file_read_dir to scan MoH | + | | | directory | + |------------+------------------+----------------------------------------| + | c4c72d55a2 | George Joseph | scope_trace: Added debug messages and | + | | | added additional macros | + |------------+------------------+----------------------------------------| + | d26ab7f8f9 | George Joseph | stream.c: Added 2 more debugging utils | + | | | and added pos to stream string | + |------------+------------------+----------------------------------------| + | 6faf76308d | George Joseph | ACN: Changes specific to the core | + |------------+------------------+----------------------------------------| + | a3d87f78ed | Joshua C. Colp | res_pjsip: Fix codec preference | + | | | defaults. | + |------------+------------------+----------------------------------------| + | da8a617dc9 | Sean Bright | vector.h: Fix implementation of | + | | | AST_VECTOR_COMPACT() for empty vectors | + |------------+------------------+----------------------------------------| + | 769a9611e7 | Ben Ford | utils.c: NULL terminate | + | | | ast_base64decode_string. | + |------------+------------------+----------------------------------------| + | 802aa97fa0 | George Joseph | ACN: Configuration renaming for pjsip | + | | | endpoint | + |------------+------------------+----------------------------------------| + | de23cb4002 | Ben Ford | res_stir_shaken: Fix memory allocation | + | | | error in curl.c | + |------------+------------------+----------------------------------------| + | 71446b68fc | George Joseph | res_pjsip_session: Ensure reused | + | | | streams have correct bundle group | + |------------+------------------+----------------------------------------| + | d9ae902f52 | Sean Bright | utf8.c: Add UTF-8 validation and | + | | | utility functions | + |------------+------------------+----------------------------------------| + | 9022f35f09 | Sean Bright | vector.h: Add AST_VECTOR_SORT() | + |------------+------------------+----------------------------------------| + | a678dafac8 | George Joseph | CI: Force publishAsteriskDocs to use | + | | | python2 | + |------------+------------------+----------------------------------------| + | af70bbb13a | Joshua C. Colp | websocket / pjsip: Increase maximum | + | | | packet size. | + |------------+------------------+----------------------------------------| + | 8d15f72721 | Joshua C. Colp | pjsip: Include timer patch to prevent | + | | | cancelling timer 0. | + |------------+------------------+----------------------------------------| + | 3330764213 | George Joseph | Update .gitreview defaultbranch to 18 | + |------------+------------------+----------------------------------------| + | 1f5e6805bf | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 18.0.0 | + |------------+------------------+----------------------------------------| + | 5fbed5af24 | Ben Ford | res_stir_shaken: Add stir_shaken | + | | | option and general improvements. | + |------------+------------------+----------------------------------------| + | e88beedd08 | George Joseph | res_pjsip_session: Fix segv in | + | | | session_on_rx_response | + |------------+------------------+----------------------------------------| + | 9bd1d686a1 | George Joseph | ACN: Add tracing to existing code | + |------------+------------------+----------------------------------------| + | 2d22e34206 | George Joseph | ACN: res_pjsip endpoint options | + |------------+------------------+----------------------------------------| + | d093e44b1e | George Joseph | frame.c: Make debugging easier | + |------------+------------------+----------------------------------------| + | 955b7b4fdb | George Joseph | Scope Trace: Make it easier to trace | + | | | through synchronous tasks | + |------------+------------------+----------------------------------------| + | 8d1064eaaf | George Joseph | Streams: Add features for Advanced | + | | | Codec Negotiation | + |------------+------------------+----------------------------------------| + | 7440fd0397 | George Joseph | Scope Trace: Add some new tracing | + | | | macros and an ast_str helper | + |------------+------------------+----------------------------------------| + | 1274117102 | Ben Ford | res_stir_shaken: Add outbound INVITE | + | | | support. | + |------------+------------------+----------------------------------------| + | | | res_pjsip: Include | + | f1cfd54976 | Walter Doekes | instead of internal | + | | | "pjsua-lib/pjsua.h" | + |------------+------------------+----------------------------------------| + | b9f42a717e | George Joseph | app_confbridge: Plug ref leak of | + | | | bridge channel with send_events | + |------------+------------------+----------------------------------------| + | 3d1bf3c537 | Kevin Harwell | Compiler fixes for gcc 10 | + |------------+------------------+----------------------------------------| + | 559fa0e89c | Ben Ford | cli.c: Fix compiler error. | + |------------+------------------+----------------------------------------| + | 3927f79cb5 | Ben Ford | res_stir_shaken: Add inbound INVITE | + | | | support. | + |------------+------------------+----------------------------------------| + | 1fcb6b1b21 | Joshua C. Colp | bridge_channel: Don't queue unmapped | + | | | frames. | + |------------+------------------+----------------------------------------| + | ca3c22c5f1 | George Joseph | Scope Tracing: A new facility for | + | | | tracing scope enter/exit | + |------------+------------------+----------------------------------------| + | ec7890d7c6 | Joshua C. Colp | res_sorcery_config: Always reload | + | | | configuration on errors. | + |------------+------------------+----------------------------------------| + | f506cc4896 | Ben Ford | res_stir_shaken: Add unit tests for | + | | | signing and verification. | + |------------+------------------+----------------------------------------| + | e29df34de0 | Ben Ford | res_stir_shaken: Added dialplan | + | | | function and API call. | + |------------+------------------+----------------------------------------| + | 44e5dd288b | Jaco Kroon | Remove #include | + |------------+------------------+----------------------------------------| + | 1cfd30bd8a | Joshua C. Colp | res_stir_shaken: Use ast_asprintf for | + | | | creating file path. | + |------------+------------------+----------------------------------------| + | 9acf840f7c | Ben Ford | res_stir_shaken: Implemented signature | + | | | verification. | + |------------+------------------+----------------------------------------| + | 7baf2c4bf1 | George Joseph | app_voicemail: Add workaround for a | + | | | gcc 10 issue with -Wrestrict | + |------------+------------------+----------------------------------------| + | 4ef5ba58f5 | Alexander Traud | BuildSystem: Only if found LibPRI, | + | | | check its optional parts. | + |------------+------------------+----------------------------------------| + | ef580f96e7 | Alexander Traud | BuildSystem: Only if found external | + | | | PJProject, check its optional parts. | + |------------+------------------+----------------------------------------| + | 611529fa52 | Alexander Traud | res_stir_shaken: Do not build without | + | | | OpenSSL. | + |------------+------------------+----------------------------------------| + | | | res_audiosocket: Avoid | + | 27de0c9700 | Alexander Traud | Sometimes-uninitialized Warning with | + | | | Clang. | + |------------+------------------+----------------------------------------| + | 2b80e5f5da | Jaco Kroon | res_rtp_asterisk: iterate all local | + | | | addresses looking to populate ICE. | + |------------+------------------+----------------------------------------| + | 1cf569ba2b | Jaco Kroon | res_pjsip: document legal dtls_verify | + | | | endpoint options. | + |------------+------------------+----------------------------------------| + | 52ecbbd014 | Alexander Traud | _pjsua: Build even with Clang. | + |------------+------------------+----------------------------------------| + | ee1c7f465b | Alexander Traud | res_rtp_asterisk: Build without | + | | | PJProject. | + |------------+------------------+----------------------------------------| + | | | Revert "res_config_odbc: Preserve | + | 60925c68e8 | Sean Bright | empty strings returned by the | + | | | database" | + |------------+------------------+----------------------------------------| + | c5f3836bcc | Jaco Kroon | main/backtrace: binutils-2.34 fix. | + |------------+------------------+----------------------------------------| + | 7ba6d43083 | George Joseph | test_res_pjsip_session_caps: Create | + | | | unit test | + |------------+------------------+----------------------------------------| + | 57a457c26c | Ben Ford | res_stir_shaken: Implemented signing | + | | | of JSON payload. | + |------------+------------------+----------------------------------------| + | d32e559e8a | Jaco Kroon | acl: implement a centralized ACL | + | | | output mechanism for HAs and ACLs. | + |------------+------------------+----------------------------------------| + | 1b6c58896f | Joshua C. Colp | chan_sip: Send 403 when ACL fails. | + |------------+------------------+----------------------------------------| + | 3ed80fc57b | Joshua C. Colp | CHANGES: Change md file extension to | + | | | txt. | + |------------+------------------+----------------------------------------| + | 26713dc88b | Kevin Harwell | ast_coredumper: add Asterisk | + | | | information dump | + |------------+------------------+----------------------------------------| + | 6f731f153b | Jaco Kroon | netsock2: compile fixes. | + |------------+------------------+----------------------------------------| + | 211bb8a79c | Ben Ford | res_stir_shaken: Initial commit and | + | | | reading private key. | + |------------+------------------+----------------------------------------| + | a699e016dd | Jaco Kroon | build: enable building with uClibc | + |------------+------------------+----------------------------------------| + | f824cd6a13 | Jaco Kroon | build: search from newest to oldest | + | | | for gmime. | + |------------+------------------+----------------------------------------| + | 82c3939c38 | Jaco Kroon | res_rtp_asterisk: implement ACL | + | | | mechanism for ICE and STUN addresses. | + |------------+------------------+----------------------------------------| + | 2ad64e97c0 | Jaco Kroon | Update main/backtrace.c to deal with | + | | | changes in binutils 2.34. | + |------------+------------------+----------------------------------------| + | 49cf84578e | Sean Bright | chan_vpb: Fix 'catching polymorphic | + | | | type ... by value' error | + |------------+------------------+----------------------------------------| + | d68f940f6e | Sean Bright | dns_txt: Add TXT record parsing | + | | | support | + |------------+------------------+----------------------------------------| + | 00a7e4b51d | George Joseph | CI: Create generic jenkinsfile | + |------------+------------------+----------------------------------------| + | e089779908 | Rodrigo Ramírez | res_rtp_asterisk: Add 'rtp show | + | | Norambuena | settings' cli command | + |------------+------------------+----------------------------------------| + | 680e6b9774 | Walter Doekes | app_queue: Refactor odd placement of | + | | | if's around say_position | + |------------+------------------+----------------------------------------| + | 1e1651b4f4 | Kevin Harwell | format_cap: make function parameters | + | | | 'const' | + |------------+------------------+----------------------------------------| + | 0b5c6fddf1 | Walter Doekes | say: Remove unused "plural" option | + | | | from main/say | + |------------+------------------+----------------------------------------| + | 5cd7230f3c | Jaco Kroon | addons/res_config_mysql: silense | + | | | warnings about printf format errors. | + |------------+------------------+----------------------------------------| + | de6919f339 | Sean Bright | ast_tls_cert: Allow private key size | + | | | to be set on command line | + |------------+------------------+----------------------------------------| + | 8dcdce42a9 | Sean Bright | app_mixmonitor: Turn on | + | | | synchronization by default | + |------------+------------------+----------------------------------------| + | 0f6ee98c3f | Joshua C. Colp | stasis: Use format specifier for | + | | | size_t. | + |------------+------------------+----------------------------------------| + | 1e037ebb97 | Sean Bright | func_odbc: Prevent snprintf() | + | | | truncation warning | + |------------+------------------+----------------------------------------| + | a72caa041f | George Joseph | doc: Fix CHANGES entries to have .txt | + | | | suffix and update READMEs | + |------------+------------------+----------------------------------------| + | 1b53d329ac | Joshua C. Colp | res_rtp_asterisk: Don't produce | + | | | transport-cc if no packets. | + |------------+------------------+----------------------------------------| + | b76ab5e5c9 | George Joseph | message.c: Add option to suppress the | + | | | Message channel AMI and ARI events | + |------------+------------------+----------------------------------------| + | 113d05e504 | Walter Doekes | chan_sip: Clarify in sample docs how | + | | | directmediapermit/-acl should be used | + |------------+------------------+----------------------------------------| + | 262221f4d9 | Sean Bright | func_odbc.conf.sample: Add example | + | | | lookup | + |------------+------------------+----------------------------------------| + | f09cf4da44 | Sean Bright | app_voicemail: Remove MessageExists | + | | | and MESSAGE_EXISTS() | + |------------+------------------+----------------------------------------| + | 5cbf47714a | Sean Bright | app_voicemail, say: Fix various | + | | | leading whitespace problems | + |------------+------------------+----------------------------------------| + | | | netsock2: | + | 3bc8b36537 | Jaco Kroon | ast_addressfamily_to_sockaddrsize and | + | | | ast_sockaddr_from_sockaddr. | + |------------+------------------+----------------------------------------| + | 00a7432156 | Kevin Harwell | app_agent_pool: Update XML docs for | + | | | AgentLogin | + |------------+------------------+----------------------------------------| + | 19069f7db7 | Richard Mudgett | app_bridgeaddchan.c: Make BridgeAdd be | + | | | more like Bridge | + |------------+------------------+----------------------------------------| + | 0376f2bba9 | Richard Mudgett | features.c: Make Bridge application | + | | | tolerate unspecified channel. | + |------------+------------------+----------------------------------------| + | 0d1f3d9bf3 | Richard Mudgett | app_chanspy.c: Reduce log message | + | | | level from notice to verbose. | + |------------+------------------+----------------------------------------| + | a457947198 | Richard Mudgett | app_softhangup.c: Reduce unnecessary | + | | | warning to verbose message. | + |------------+------------------+----------------------------------------| + | fc99ac8c9a | Sean Bright | db: Initialize condition primitive | + | | | before use | + |------------+------------------+----------------------------------------| + | 32160cb456 | Jaco Kroon | ACL: ast_apply_acl_nolog - identical | + | | | to ast_apply_acl but without logging. | + |------------+------------------+----------------------------------------| + | d0b198b330 | Joshua Colp | Revert "PJSIP_CONTACT: add missing | + | | | argument documentation" | + |------------+------------------+----------------------------------------| + | | | res_pjsip_registrar.c: Prevent | + | 0183e2bc67 | Sean Bright | possible buffer overflow with domain | + | | | aliases | + |------------+------------------+----------------------------------------| + | fd823225a6 | Thomas Arimont | channel.c: Resolve issue with | + | | | receiving SIP INFO packets for DTMF | + |------------+------------------+----------------------------------------| + | 366da90f74 | George Joseph | CI: Turn off shallow cloning | + | | | altogether | + |------------+------------------+----------------------------------------| + | 91c3b5b09d | Sean Bright | media_cache.c: Various CLI | + | | | improvements | + |------------+------------------+----------------------------------------| + | 48161dfc71 | Rodrigo Ramírez | queue_log: Add alembic script for | + | | Norambuena | generate db table for queue_log | + |------------+------------------+----------------------------------------| + | 2a6a2800e7 | George Joseph | CI: Fix missing script block in | + | | | jenkinsfiles | + |------------+------------------+----------------------------------------| + | 4abb54b2e4 | George Joseph | CI: Fix missing script block in | + | | | jenkinsfiles | + |------------+------------------+----------------------------------------| + | e8e1314fcb | George Joseph | CI: Increase clone depth and do better | + | | | cleanup | + |------------+------------------+----------------------------------------| + | a5fa0d662e | Sean Bright | res_pjsip_registrar: Fix uninitlized | + | | | variable warning | + |------------+------------------+----------------------------------------| + | f2d5ed54ea | Alexei Gradinari | serializer: set high/low alert levels | + | | | on whole pool | + |------------+------------------+----------------------------------------| + | bdd785d31c | Kevin Harwell | various files - fix some alerts raised | + | | | by lgtm code analysis | + |------------+------------------+----------------------------------------| + | 0e3b397812 | Kevin Harwell | res_pjsip_session: initialize | + | | | pending's topology to endpoint's | + |------------+------------------+----------------------------------------| + | 8a1f30af04 | Corey Farrell | core: Improve MALLOC_DEBUG for frames. | + |------------+------------------+----------------------------------------| + | d71d0f9489 | George Joseph | ExternalMedia: Change return object | + | | | from ExternalMedia to Channel | + |------------+------------------+----------------------------------------| + | 6e907ae5d4 | Joshua Colp | res_rtp_asterisk: Remove a log message | + | | | that slipped in. | + |------------+------------------+----------------------------------------| + | a60d2e905c | Joshua Colp | test_res_rtp: Enable FIR and REMB | + | | | nominal tests. | + |------------+------------------+----------------------------------------| + | b27a5183da | Chris Savinovich | test_taskprocessor.c: Fix test failure | + | | | on Ubuntu | + |------------+------------------+----------------------------------------| + | c0efe19cec | Kevin Harwell | serializer: move/add asterisk | + | | | serializer pool functionality | + |------------+------------------+----------------------------------------| + | 2970a13fb8 | Kevin Harwell | res_pjsip/res_pjsip_mwi: use | + | | | centralized serializer pools | + |------------+------------------+----------------------------------------| + | 068ed2c626 | Alexei Gradinari | res_pjsip_pubsub: add endpoint to some | + | | | warning | + |------------+------------------+----------------------------------------| + | ba64d68273 | Jonathan Rose | basic-pbx: Bring forward queue | + | | | configuration from 13 | + |------------+------------------+----------------------------------------| + | 4c3655ecfd | Ben Ford | taskprocessor.c: Added "like" support | + | | | to 'core show taskprocessors' | + |------------+------------------+----------------------------------------| + | 966488ab52 | Sean Bright | res_musiconhold: Add new 'playlist' | + | | | mode | + |------------+------------------+----------------------------------------| + | f7045cefd9 | Corey Farrell | stasis_state: Create internal | + | | | stasis_state_proxy object. | + |------------+------------------+----------------------------------------| + | 67ba62f4e6 | Kevin Harwell | res_pjsip_pubsub: change warning to | + | | | debug | + |------------+------------------+----------------------------------------| + | 4de1e6d0e6 | Ben Ford | taskprocessor.c: Add CLI commands to | + | | | reset taskprocessor stats. | + |------------+------------------+----------------------------------------| + | 725e991faf | Corey Farrell | core: Add AO2_ALLOC_OPT_NO_REF_DEBUG | + | | | option. | + |------------+------------------+----------------------------------------| + | e82f2f6e82 | George Joseph | astmm.c: Display backtrace with memory | + | | | show allocations | + |------------+------------------+----------------------------------------| + | a4142c8437 | Corey Farrell | core: Fix ABI mismatch of | + | | | ao2_global_obj. | + |------------+------------------+----------------------------------------| + | ca608d2575 | Corey Farrell | stasis: refcounter.py can incorrectly | + | | | report skewed objects. | + |------------+------------------+----------------------------------------| + | 3dfbc05c53 | Corey Farrell | stasis: Fix leaks | + |------------+------------------+----------------------------------------| + | 863fe2225f | Corey Farrell | app_voicemail: Fix module unload leak. | + |------------+------------------+----------------------------------------| + | 723b695ce5 | Ben Ford | res_rtp_asterisk.c: Send RTCP as | + | | | compound packets. | + |------------+------------------+----------------------------------------| + | 0e56643d9f | Ben Ford | res_rtp: Add unit tests for RTCP | + | | | stats. | + |------------+------------------+----------------------------------------| + | 2ae1a22e0e | George Joseph | ARI: External Media | + |------------+------------------+----------------------------------------| + | 5fb9b23105 | George Joseph | chan_sip: Update links referenced in | + | | | deprecation notice | + |------------+------------------+----------------------------------------| + | ed757cc7bb | Chris-Savinovich | test_utils.c: Skip test | + | | | adsi_loaded_test if module not loaded. | + |------------+------------------+----------------------------------------| + | 1d06a1efb3 | Igor | chan_unistim: Fix code, causing all | + | | Goncharovsky | incoming DTMF sent back to asterisk | + |------------+------------------+----------------------------------------| + | 649003821e | Igor | chan_unistim: Fix RTP port byte order | + | | Goncharovsky | for big-endian arch | + |------------+------------------+----------------------------------------| + | 3ef52b0b17 | Alexei Gradinari | Fix misname 'res_external_mwi' to | + | | | 'res_mwi_external' in comments. | + |------------+------------------+----------------------------------------| + | 19045db392 | George Joseph | chan_rtp: Accept hostname as well as | + | | | ip address as destination | + |------------+------------------+----------------------------------------| + | 9e015713cc | George Joseph | dns_core: Create new API | + | | | ast_dns_resolve_ipv6_and_ipv4 | + |------------+------------------+----------------------------------------| + | 8da4e28a81 | George Joseph | res_ari.c: Prefer exact handler match | + | | | over wildcard | + |------------+------------------+----------------------------------------| + | 64906c4c9b | Sean Bright | audiohook.c: Substitute silence for | + | | | unavailable audio frames | + |------------+------------------+----------------------------------------| + | 446bac733d | George Joseph | CI: Escape backslashes in | + | | | printenv/sort/tr | + |------------+------------------+----------------------------------------| + | be6130607d | George Joseph | CI: Add "throttle" label and | + | | | "skip_gate" capability | + |------------+------------------+----------------------------------------| + | c01dd2a41a | George Joseph | CI: Make node labels job-specific | + |------------+------------------+----------------------------------------| + | 9d07d5a6d6 | Sean Bright | app_voicemail: Remove extra menuselect | + | | | build options | + |------------+------------------+----------------------------------------| + | 1f8ae708a0 | Sean Bright | res_musiconhold: Use a vector instead | + | | | of custom array allocation | + |------------+------------------+----------------------------------------| + | 5f66fb5139 | Sean Bright | manager: Send fewer packets | + |------------+------------------+----------------------------------------| + | 5e6e1175d5 | Asterisk | Update CHANGES and UPGRADE.txt for | + | | Development Team | 17.0.0 | + |------------+------------------+----------------------------------------| + | 8d10028b98 | George Joseph | Update master for Asterisk 18 | + |------------+------------------+----------------------------------------| + | 7ce9ee7f2e | Sean Bright | res_musiconhold: Use | + | | | ast_pipe_nonblock() wrapper | + |------------+------------------+----------------------------------------| + | 8e44d823c1 | George Joseph | loader.c: Fix possible SEGV when a | + | | | module fails to register | + |------------+------------------+----------------------------------------| + | 03813e51f0 | George Joseph | CI: Don't enable non-core modules in | + | | | Certified branches | + |------------+------------------+----------------------------------------| + | 098797628e | Leonid | openr2(6/6): Set hangup cause | + | | Fainshtein | | + |------------+------------------+----------------------------------------| + | f67094503d | Tzafrir Cohen | openr2(5/6): added cli command -- | + | | | mfcr2 destroy link | + |------------+------------------+----------------------------------------| + | 64bf3e3e82 | Tzafrir Cohen | openr2(4/6): added new cli command -- | + | | | mfcr2 show links | + |------------+------------------+----------------------------------------| + | f61adf2cf5 | Tzafrir Cohen | openr2(3/6): Convert r2links to | + | | | standard Asterisk AST_LIST* | + |------------+------------------+----------------------------------------| + | | | openr2(2/6): Stop polling channels | + | 97d2549bb1 | Tzafrir Cohen | when DAHDI returns -ENODEV (e.g: | + | | | plug-out) | + |------------+------------------+----------------------------------------| + | 2f0a8e12f9 | Tzafrir Cohen | openr2(1/6): bugfix in configuration | + | | | saving | + |------------+------------------+----------------------------------------| + | | | contrib/scripts: Make | + | 4304c6534a | Walter Doekes | spandspflow2pcap.py Python 2.7+/3.3+ | + | | | compatible | + |------------+------------------+----------------------------------------| + | be8d41bd24 | George Joseph | CI: Add cleanWs to cleanup steps in | + | | | jenkinsfiles | + |------------+------------------+----------------------------------------| + | 8b88994b18 | George Joseph | CI: Add install-headers to the install | + | | | make targets | + |------------+------------------+----------------------------------------| + | c781806e26 | George Joseph | Build: Separate header | + | | | install/uninstall | + |------------+------------------+----------------------------------------| + | ba25038fd5 | Kevin Harwell | manager: Log AMI actions | + |------------+------------------+----------------------------------------| + | 2feac1d361 | Joshua Colp | res_rtp_asterisk: Move where DTLS MTU | + | | | variable is defined. | + |------------+------------------+----------------------------------------| + | 64a908f897 | Rodrigo Ramírez | README.md: Update year | + | | Norambuena | | + |------------+------------------+----------------------------------------| + | | | app_voicemail.c: Build all three | + | 6b1f6ea2c4 | Chris-Savinovich | variants for app_voicemail at the same | + | | | time | + |------------+------------------+----------------------------------------| + | 13e89d372b | George Joseph | sig_pri: Address gcc9 issues | + |------------+------------------+----------------------------------------| + | f414ca069c | Alexei Gradinari | res_fax: gateway sends T.38 request to | + | | | both endpoints if V.21 detected | + |------------+------------------+----------------------------------------| + | 0ba52ce3cf | George Joseph | CI: New way to determnine libdir | + |------------+------------------+----------------------------------------| + | e3866cb714 | Alexei Gradinari | translate.c do not log WARNING on | + | | | empty audio frame | + |------------+------------------+----------------------------------------| + | 92d4ec2906 | George Joseph | chan_dahdi: Address gcc9 issues | + |------------+------------------+----------------------------------------| + | f3e5419d41 | George Joseph | app_confbridge: Attended transfer | + | | | event fixup | + |------------+------------------+----------------------------------------| + | c70d874f7d | Sean Bright | pjproject: Update to 2.9 release | + |------------+------------------+----------------------------------------| + | 3eaeb3e6c4 | Alexei Gradinari | app_attended_transfer: new application | + | | | AttendedTransfer | + |------------+------------------+----------------------------------------| + | 745cbab501 | Alexei Gradinari | app_blind_transfer: new application | + | | | BlindTransfer | + |------------+------------------+----------------------------------------| + | bfd93995d9 | Alexei Gradinari | res_fax: add channel name to CLI 'fax | + | | | show session' | + |------------+------------------+----------------------------------------| + | 9969c77bc2 | Ben Ford | build: Fix file format in | + | | | CHANGES-staging. | + |------------+------------------+----------------------------------------| + | 408210bd4c | Alexei Gradinari | app_readexten: new option 'p' to stop | + | | | reading on '#' key | + |------------+------------------+----------------------------------------| + | 54f7f7dc20 | Matt Jordan | pjproject/Makefile: Updates for Darwin | + | | | compatible builds | + |------------+------------------+----------------------------------------| + | be83591f99 | George Joseph | res_rtp_asterisk: Add ability to | + | | | propose local address in ICE | + |------------+------------------+----------------------------------------| + | 86836e0442 | Ben Ford | pjsip_options.c: Allow immediate | + | | | qualifies for new contacts. | + |------------+------------------+----------------------------------------| + | def6bbc96b | Kevin Harwell | conversions.c: Add conversions for | + | | | largest max sized integer | + |------------+------------------+----------------------------------------| + | ed615afb7e | Rodrigo Ramírez | app_queue: Set correct value by | + | | Norambuena | default for shared_lastcall | + |------------+------------------+----------------------------------------| + | ff0d0ac23a | Kevin Harwell | mwi core: Move core MWI functionality | + | | | into its own files | + |------------+------------------+----------------------------------------| + | d4e25710f7 | George Joseph | res_remb_modifier: Propertly | + | | | initialize bitrate to 0.0 | + |------------+------------------+----------------------------------------| + | | | res_mwi_devstate: Specify | + | e69fcdfd83 | Sean Bright | AST_MODFLAG_LOAD_ORDER to enable load | + | | | priority | + |------------+------------------+----------------------------------------| + | 8a32b68038 | George Joseph | CI: Move test group config files to | + | | | Jenkins | + |------------+------------------+----------------------------------------| + | 26cdf042f4 | George Joseph | ARI: Run 'make ari-stubs' | + |------------+------------------+----------------------------------------| + | fe58bc7bdf | Alexei Gradinari | res_pjsip: Fix transport_states ref | + | | | leak | + |------------+------------------+----------------------------------------| + | 391112d89a | Chris-Savinovich | config.c: Fix a crash in extconfig | + | | | parsing | + |------------+------------------+----------------------------------------| + | 8ae9339f71 | George Joseph | CI: Add --no-dev-mode option to | + | | | buildAsterisk.sh | + |------------+------------------+----------------------------------------| + | 4edd24841d | Ben Ford | alembic: Fix errors during upgrade | + | | | head. | + |------------+------------------+----------------------------------------| + | f78306470b | Matthew | res/res_rtp_asterisk: Enable rxjitter | + | | Fredrickson | calculation for video | + |------------+------------------+----------------------------------------| + | d5d8448ce5 | Ben Ford | build: Add staging directories for | + | | | future changes. | + |------------+------------------+----------------------------------------| + | | | pjsip: restrict function | + | f236377ce9 | Alexei Gradinari | PJSIP_PARSE_URI to parse only SIP/SIPS | + | | | URIs | + |------------+------------------+----------------------------------------| + | 41a2662e16 | Matthew | main/taskprocessor: Increase max name | + | | Fredrickson | length of taskprocessors | + |------------+------------------+----------------------------------------| + | 7e77815ad1 | George Joseph | sorcery.c: Sorcery enhancements for | + | | | wizard management | + |------------+------------------+----------------------------------------| + | 0fac5bcbe5 | Sean Bright | vector: Add AST_VECTOR_COMPACT() to | + | | | reclaim wasted space | + |------------+------------------+----------------------------------------| + | 45a8892e67 | Richard Mudgett | taskprocessor.c: Fix printf type | + | | | mismatch | + |------------+------------------+----------------------------------------| + | 1d074debfb | Joshua Colp | stasis: Allow empty application | + | | | arguments to move. | + |------------+------------------+----------------------------------------| + | a40198a4d4 | Corey Farrell | Revert "Test_cel: Fails when | + | | | DONT_OPTIMIZE is off" | + |------------+------------------+----------------------------------------| + | | | Makefile.moddir_rules: Pass | + | 6f158d27fc | George Joseph | PJPROJECT_BUNDLED to | + | | | download_externals | + |------------+------------------+----------------------------------------| + | 449dff997c | Chris-Savinovich | partial-inlining: disable | + | | | partial-inlining if gcc>=8.2.1 | + |------------+------------------+----------------------------------------| + | 825ea9ddb9 | Sean Bright | res_musiconhold: Remove redundant | + | | | option parsing | + |------------+------------------+----------------------------------------| + | 9b7b8cb155 | Corey Farrell | jansson: json_pack with new format to | + | | | verify required runtime version. | + |------------+------------------+----------------------------------------| + | 2473b791b9 | Sean Bright | Replace calls to strtok() with | + | | | strtok_r() | + |------------+------------------+----------------------------------------| + | 7b02a9617c | Sean Bright | samples: Fix comment typo in | + | | | pjsip.conf.sample | + |------------+------------------+----------------------------------------| + | | Rodrigo Ramírez | CHANGES: Document addition of | + | f8295e0771 | Norambuena | 'wrapuptime' argument to | + | | | AddQueueMember() | + |------------+------------------+----------------------------------------| + | e0fc663295 | George Joseph | CI: Update jenkinsfiles with new | + | | | Gerrit URLs | + |------------+------------------+----------------------------------------| + | | | rest-api-templates/asterisk_processor | + | 574128dec6 | Kevin Harwell | - replace http line breaks with line | + | | | feed | + |------------+------------------+----------------------------------------| + | e6b67b2a5d | Joshua Colp | res_pjsip_sdp_rtp: Allow only single | + | | | ssrc attribute. | + |------------+------------------+----------------------------------------| + | a286f546f1 | Joshua C. Colp | stasis: Store subscriber uniqueids | + | | | with topic statistics. | + |------------+------------------+----------------------------------------| + | c2adeb9dc2 | George Joseph | taskprocessor: Enable subsystems and | + | | | overload by subsystem | + |------------+------------------+----------------------------------------| + | f4c9a351d8 | Joshua Colp | CI: Use tmpfs option to Docker instead | + | | | of mount. | + |------------+------------------+----------------------------------------| + | 8f1b3edde8 | Kevin Harwell | json.c/strings.c - Add a couple of | + | | | utility functions | + |------------+------------------+----------------------------------------| + | f174eb4ac1 | Sean Bright | sounds: Sort 'core show sounds' output | + |------------+------------------+----------------------------------------| + | ac90968afd | sungtae kim | Added ARI resource /ari/asterisk/ping | + |------------+------------------+----------------------------------------| + | 7071e9d64c | George Joseph | media_index.c: Refactored so it | + | | | doesn't cache the index | + |------------+------------------+----------------------------------------| + | 1c8378bbc9 | Chris-Savinovich | Test_cel: Fails when DONT_OPTIMIZE is | + | | | off | + |------------+------------------+----------------------------------------| + | c6980e32ae | George Joseph | app_voicemail: Add Mailbox Aliases | + |------------+------------------+----------------------------------------| + | deffb8a6e0 | George Joseph | pjproject_bundled: Add patch for | + | | | double free issue in timer heap | + |------------+------------------+----------------------------------------| + | 20f672539e | Sean Bright | pjsip_transport_management: Shutdown | + | | | transport immediately on disconnect | + |------------+------------------+----------------------------------------| + | 58b55f2a30 | Sean Bright | sched: Make sched_settime() return | + | | | void because it cannot fail | + |------------+------------------+----------------------------------------| + | 2b8602e8cf | Sean Bright | res_pjsip_transport_websocket: Don't | + | | | assert on 0 length payloads | + |------------+------------------+----------------------------------------| + | | | res_pjsip: add option to enable | + | f0546d1d87 | Alexei Gradinari | ContactStatus event when contact is | + | | | updated | + |------------+------------------+----------------------------------------| + | 7c08ff51d7 | Richard Mudgett | stasic.c: Fix printf format type | + | | | mismatches with arguments. | + |------------+------------------+----------------------------------------| + | 314782e874 | Richard Mudgett | backtrace.c: Fix casting pointer | + | | | to/from integral type. | + |------------+------------------+----------------------------------------| + | 357219dfb3 | Sean Bright | res_rtp_asterisk: Remove some unused | + | | | structure fields. | + |------------+------------------+----------------------------------------| + | | | bridge_builtin_features.c: Set | + | 3db1df301e | Sean Bright | auto(mix)mon variables on both | + | | | channels | + |------------+------------------+----------------------------------------| + | 42ff856216 | Sean Bright | Use non-blocking socket() and pipe() | + | | | wrappers | + |------------+------------------+----------------------------------------| + | bedf16b041 | Sean Bright | utils: Don't set or clear flags that | + | | | don't need setting or clearing | + |------------+------------------+----------------------------------------| + | 00b36bb045 | Sean Bright | build: Update config.guess and | + | | | config.sub | + |------------+------------------+----------------------------------------| + | | | Revert "RTP: reset DTMF last | + | d1598dbc7d | George Joseph | seqno/timestamp on voice packet with | + | | | marker bit" | + |------------+------------------+----------------------------------------| + | 6d69fb3cc2 | Sean Bright | utils: Wrap socket() and pipe() to | + | | | reduce syscalls | + |------------+------------------+----------------------------------------| + | b899119a5d | David M. Lee | Removing registrar_expire from | + | | | basic-pbx config | + |------------+------------------+----------------------------------------| + | 19c4e0f592 | George Joseph | CI: Various updates to | + | | | buildAsterisk.sh | + |------------+------------------+----------------------------------------| + | cbb7633ad3 | Kevin Harwell | pjsip_add_use_callerid_contact: fixed | + | | | alembic script | + |------------+------------------+----------------------------------------| + | 8f5df046f6 | Sean Bright | core: Add some documentation to the | + | | | malloc_trim code | + |------------+------------------+----------------------------------------| + | 58e50e56cb | Chris-Savinovich | core: Merge malloc_trim patch | + |------------+------------------+----------------------------------------| + | | | test_websocket_client.c: Disable | + | 6c13b20803 | Chris-Savinovich | websocket_client_create_and_connect | + | | | test. | + |------------+------------------+----------------------------------------| + | f4924d40db | George Joseph | test_cel: Plug a few ref leaks | + |------------+------------------+----------------------------------------| + | 3667c5e1d2 | George Joseph | bridges: Remove reliance on stasis | + | | | caching | + |------------+------------------+----------------------------------------| + | 8e1ab4f11c | Corey Farrell | jansson: Upgrade to 2.12. | + |------------+------------------+----------------------------------------| + | 021ce938ca | Corey Farrell | astobj2: Remove legacy | + | | | ao2_container_alloc routine. | + |------------+------------------+----------------------------------------| + | bc7f4f4db3 | Corey Farrell | astobj2: Create function to copy weak | + | | | proxied objects from container. | + |------------+------------------+----------------------------------------| + | bcdfb90362 | George Joseph | CI: Get job timeouts from environment | + |------------+------------------+----------------------------------------| + | 64e21c9ea9 | Corey Farrell | app_queue: Cleanup queue_ref / | + | | | queue_unref routines. | + |------------+------------------+----------------------------------------| + | 56eb18f395 | Joshua C. Colp | stasis: Remove stringfields and lock | + | | | from change message. | + |------------+------------------+----------------------------------------| + | 915b80709d | George Joseph | CI: Add tmpfs to all jenkinsfiles | + |------------+------------------+----------------------------------------| + | f5e3832dff | George Joseph | CI: Mount a tmpfs on /tmp for | + | | | testsuite docker containers | + |------------+------------------+----------------------------------------| + | be87185f6d | George Joseph | CI: Pass work directory to | + | | | runTestsuite | + |------------+------------------+----------------------------------------| + | 8ff3435c8a | George Joseph | CI: Allow runUnittests to use 'expect' | + | | | to run the tests | + |------------+------------------+----------------------------------------| + | 9abd5e1004 | Corey Farrell | taskprocessor: Prevent race creating | + | | | new taskprocessor. | + |------------+------------------+----------------------------------------| + | 752fd06d12 | Corey Farrell | pjproject-bundled: Use AST_DEVMODE for | + | | | conditional compilation. | + |------------+------------------+----------------------------------------| + | 02c7a061ea | Corey Farrell | res_pjsip_caller_id: Use static | + | | | pj_str_t for fromto header names. | + |------------+------------------+----------------------------------------| + | 4b24731640 | Corey Farrell | test_res_pjsip_scheduler: Fix possible | + | | | write after free in scheduler_policy. | + |------------+------------------+----------------------------------------| + | 944d90a7ea | Corey Farrell | taskprocessor: Do not use separate | + | | | allocation for stats or name. | + |------------+------------------+----------------------------------------| + | d9add7e086 | Corey Farrell | jansson-bundled: Patch for off-nominal | + | | | crash. | + |------------+------------------+----------------------------------------| + | a3fc97aa13 | Chris-Savinovich | res_pjsip: Send a 503 response when | + | | | overload state if reliable transport. | + |------------+------------------+----------------------------------------| + | | | res_pjsip.c: Make taskprocessor | + | 5f3f707793 | Alexei Gradinari | scheduling algorithm pick the shortest | + | | | queue | + |------------+------------------+----------------------------------------| + | bf579222c4 | Joshua Colp | stasis: Clarify lifetime of topics. | + |------------+------------------+----------------------------------------| + | eee935983b | Alexei Gradinari | pjsip: new endpoint's options to | + | | | control Connected Line updates | + |------------+------------------+----------------------------------------| + | b0155f7e58 | Pascal Cadotte | contrib/sip_to_pjsip: handle setvar in | + | | Michaud | conversion | + |------------+------------------+----------------------------------------| + | 90a11c4ae7 | Corey Farrell | chan_sip deprecation. | + |------------+------------------+----------------------------------------| + | e81d33e78f | Corey Farrell | UPDATE.txt: Fix formatting to match | + | | | previous files. | + |------------+------------------+----------------------------------------| + | | | res_parking: Stop setting the | + | 79c2b4fddd | Sean Bright | deprecated PARKINGSLOT channel | + | | | variable. | + |------------+------------------+----------------------------------------| + | 1b397ebd00 | Richard Mudgett | logger.c: Fix default console logging | + | | | when no logger.conf available. | + |------------+------------------+----------------------------------------| + | 96d5e444f0 | Richard Mudgett | modules.conf.sample: Update preload | + | | | usage documentation. | + |------------+------------------+----------------------------------------| + | 056ca07449 | Sean Bright | func_callerid: Remove deprecated | + | | | CALLERPRES() function. | + |------------+------------------+----------------------------------------| + | f940b7b63d | Sean Bright | say: Remove legacy language | + | | | deprecation logic | + |------------+------------------+----------------------------------------| + | 9e8d671658 | Sean Bright | res_xmpp: Remove deprecated | + | | | JabberStatus application. | + |------------+------------------+----------------------------------------| + | 687ab7aeee | Corey Farrell | astobj2: Eliminate legacy container | + | | | allocation macros. | + |------------+------------------+----------------------------------------| + | 4c19b94968 | Corey Farrell | lock: Replace __ast_mutex_logger with | + | | | private log_mutex_error. | + |------------+------------------+----------------------------------------| + | 9838a5e57a | Richard Mudgett | app_dial/app_queue: Update application | + | | | option documentation | + |------------+------------------+----------------------------------------| + | 90bd8371f2 | Sean Bright | samples: PARKINGSLOT -> PARKING_SPACE | + | | | in parking sample config | + |------------+------------------+----------------------------------------| + | be04a64c49 | Sean Bright | options.c: Remove 'internal_timing' | + | | | notice | + |------------+------------------+----------------------------------------| + | 467f7c6724 | Richard Mudgett | Fix 'statement' typo throughout code. | + |------------+------------------+----------------------------------------| + | 7ab4befc2b | Richard Mudgett | res_rtp_asterisk.c: Add conditional | + | | | module dependency to res_pjproject | + |------------+------------------+----------------------------------------| + | 1fad6b9079 | Richard Mudgett | modules: Add missing run time module | + | | | support levels. | + |------------+------------------+----------------------------------------| + | 5ab94d2a3e | Corey Farrell | taskprocessor: Warn on unused result | + | | | from pushing task. | + |------------+------------------+----------------------------------------| + | 915861b431 | Richard Mudgett | bundled pjproject: Remove timer | + | | | cleanup usage patch. | + |------------+------------------+----------------------------------------| + | 79677ead28 | Corey Farrell | refdebug: Create refstats.py script. | + |------------+------------------+----------------------------------------| + | aae5bdc22e | Alexei Gradinari | res_pjsip: set callerid_tag to empty | + | | | string | + |------------+------------------+----------------------------------------| + | f06de6900e | Corey Farrell | threadpool: Eliminate pointless AO2 | + | | | usage. | + |------------+------------------+----------------------------------------| + | 675d8a46b4 | Corey Farrell | main/astfd: Fix GCC8 format-truncation | + | | | warning. | + |------------+------------------+----------------------------------------| + | 682f96cb5c | Richard Mudgett | res_statsd.c: Fix returned reload | + | | | status. | + |------------+------------------+----------------------------------------| + | c8ee1a183f | Corey Farrell | loader: Flag module as declined in all | + | | | cases where it fails to load. | + |------------+------------------+----------------------------------------| + | c6c3a63696 | Richard Mudgett | func_periodic_hook.c: Cleanup module | + | | | resources on failure. | + |------------+------------------+----------------------------------------| + | 9f02861d22 | Richard Mudgett | codec_speex.c: Cleanup module loading | + | | | to DECLINE and not FAILURE. | + |------------+------------------+----------------------------------------| + | 30717bafbf | George Joseph | CI: Fix missing () in | + | | | gates.jenkinsfile | + |------------+------------------+----------------------------------------| + | 58622a87f4 | George Joseph | CI: Add timestamps and timeouts to | + | | | jenkinsfiles | + |------------+------------------+----------------------------------------| + | b2ed667712 | Sean Bright | ast_coredumper: Remove .gdbinit file | + | | | on exit | + |------------+------------------+----------------------------------------| + | e19f27a667 | Sean Bright | CI: Look up configured | + | | | kernel.core_pattern sysctl | + |------------+------------------+----------------------------------------| + | 42880fab50 | Corey Farrell | jenkins: Fix cleanup command | + | | | redirection. | + |------------+------------------+----------------------------------------| + | a29cefe5b2 | George Joseph | ast_coredumper: Don't use "declare -n" | + |------------+------------------+----------------------------------------| + | 3601329c5a | Richard Mudgett | res_smdi.c: Fix module ref counting | + | | | and inverted test. | + |------------+------------------+----------------------------------------| + | 305d08f112 | Richard Mudgett | res_smdi.c: Made use defaults if the | + | | | smdi.conf file does not exist. | + |------------+------------------+----------------------------------------| + | 932d0a40cf | Corey Farrell | astobj2: Comment on OBJ_NOLOCK in | + | | | ao2_container_clone. | + |------------+------------------+----------------------------------------| + | f608b73a29 | Sean Bright | CI: Use brace expansion instead of | + | | | calling out to seq | + |------------+------------------+----------------------------------------| + | 9c9f060b3a | Sean Bright | CI: Use bindport instead of port in | + | | | test http.conf | + |------------+------------------+----------------------------------------| + | 286339aa34 | Sean Bright | http.c: Reload TLS even if http.conf | + | | | hasn't changed | + |------------+------------------+----------------------------------------| + | a69a50b6ec | Richard Mudgett | res_statsd.c: Made use defaults if the | + | | | statsd.conf file does not exist. | + |------------+------------------+----------------------------------------| + | cacbe32534 | Corey Farrell | core: Disable astobj2 locking for some | + | | | common objects. | + |------------+------------------+----------------------------------------| + | 639718211a | Corey Farrell | Resolve warning about duplicate | + | | | 'dialplan' CLI. | + |------------+------------------+----------------------------------------| + | b25a261aa5 | Corey Farrell | loader: Fix result of module reload | + | | | error. | + |------------+------------------+----------------------------------------| + | e4cf513f81 | Corey Farrell | loader: Improve error handling. | + |------------+------------------+----------------------------------------| + | 13df745278 | Corey Farrell | astobj2: Record lock usage to refs log | + | | | when DEBUG_THREADS is enabled. | + |------------+------------------+----------------------------------------| + | 52b530503f | Corey Farrell | app_page: Add dependency against | + | | | app_confbridge. | + |------------+------------------+----------------------------------------| + | 497973c8a2 | Corey Farrell | Append CHANGES/UPGRADE.txt for module | + | | | loader changes. | + |------------+------------------+----------------------------------------| + | 24b92291d5 | Corey Farrell | jansson-bundled: Add patches to | + | | | improve json_pack error reporting. | + |------------+------------------+----------------------------------------| + | 205c6be895 | Corey Farrell | lock: Improve performance of | + | | | DEBUG_THREADS. | + |------------+------------------+----------------------------------------| + | f10c7b6eeb | George Joseph | app_confbridge: Use bridge join hook | + | | | to send join and leave events | + |------------+------------------+----------------------------------------| + | 62a0db2df1 | Corey Farrell | astobj2: Reduce memory overhead. | + |------------+------------------+----------------------------------------| + | ac23e5ad48 | Sean Bright | config.c: Cleanup AST_INCLUDE_GLOB | + |------------+------------------+----------------------------------------| + | 39bf9881e0 | Corey Farrell | astobj2: Fix shutdown order. | + |------------+------------------+----------------------------------------| + | b11a6643cf | Ben Ford | res_rtp_asterisk.c: Add "seqno" | + | | | strictrtp option | + |------------+------------------+----------------------------------------| + | 950d0b65e5 | George Joseph | CI: Add --test-timeout option to | + | | | runTestsuite.sh | + |------------+------------------+----------------------------------------| + | adf539b2f0 | Corey Farrell | jansson: Backport fixes to bundled, | + | | | use json_vsprintf if available. | + |------------+------------------+----------------------------------------| + | 93777faf36 | Corey Farrell | json: Take advantage of new API's. | + |------------+------------------+----------------------------------------| + | 06c0676da0 | George Joseph | app_voicemail: Cleanup mailbox topic | + | | | and cache | + |------------+------------------+----------------------------------------| + | 31fba4e869 | Kevin Harwell | rtp_engine: rtcp_report_to_json can | + | | | overflow the ssrc integer value | + |------------+------------------+----------------------------------------| + | 22cf065ec9 | George Joseph | app_voicemail: Fix stack overrun in | + | | | append_mailbox | + |------------+------------------+----------------------------------------| + | 4d51a8e05b | George Joseph | channel.c: Address stack overflow in | + | | | does_id_conflict() | + |------------+------------------+----------------------------------------| + | ad4a6bc27a | Sean Bright | res_rtp_asterisk: Reset all settings | + | | | on module reload | + |------------+------------------+----------------------------------------| + | d277db4a38 | George Joseph | stasis: Add function to delete topic | + | | | from pool | + |------------+------------------+----------------------------------------| + | b9874da790 | Joshua Colp | res_remb_modifier: Add module for | + | | | controlling REMB from CLI. | + |------------+------------------+----------------------------------------| + | c99a9b228b | Richard Mudgett | stasis: No need to keep a stasis type | + | | | ref in a stasis msg or cache object. | + |------------+------------------+----------------------------------------| + | 79e3becc5d | Richard Mudgett | stasis_message.c: Don't create | + | | | immutable stasis objects with locks. | + |------------+------------------+----------------------------------------| + | | | alembic: fix | + | 6a1c313fac | Florian Floimair | suppress_q850_reason_headers column | + | | | name | + |------------+------------------+----------------------------------------| + | 246c39e46c | Corey Farrell | install_prereq: Remove unpackaged | + | | | version of jansson. | + |------------+------------------+----------------------------------------| + | | | autoconf: Check for | + | 3d9deb35f0 | Sean Bright | srtp_get_version_string() before using | + | | | it | + |------------+------------------+----------------------------------------| + | ceafac3d7f | George Joseph | CI: Fix typo in testsuite git checkout | + |------------+------------------+----------------------------------------| + | b68617ac2c | Sean Bright | res_srtp.c: Show linked version of | + | | | libsrtp on module init | + |------------+------------------+----------------------------------------| + | 07cb13f75f | Sean Bright | res_pjsip: Log IPv6 addresses | + | | | correctly | + |------------+------------------+----------------------------------------| + | 8be6998f8d | George Joseph | CI: Use proper credentials for | + | | | Security testsuite checkout | + |------------+------------------+----------------------------------------| + | 2ba2ff050d | Corey Farrell | CI: Use .gitreview to default | + | | | BRANCH_NAME. | + |------------+------------------+----------------------------------------| + | 28b32fbd44 | Corey Farrell | Build System: Resolve conflict between | + | | | DESTDIR and bundled jansson. | + |------------+------------------+----------------------------------------| + | 600c5d79fd | Sean Bright | res_pjproject: Add utility functions | + | | | to convert between socket structures | + |------------+------------------+----------------------------------------| + | | Rodrigo Ramírez | app_dial: set the comment for | + | 1a3115d1c5 | Norambuena | OPT_ARG_ANNOUNCE to really what is | + | | | done | + |------------+------------------+----------------------------------------| + | b779a93d8d | Chris-Savinovich | pbx_config.c: Fix reloading module if | + | | | initially declined to load | + |------------+------------------+----------------------------------------| + | e387750104 | Richard Mudgett | http.c: Give HTTP error response when | + | | | received lines are too long. | + |------------+------------------+----------------------------------------| + | f657793ee4 | Richard Mudgett | iostream.c: Fix ast_iostream_gets() | + | | | needlessly returning failure. | + |------------+------------------+----------------------------------------| + | a2001c00e6 | Corey Farrell | Create --disable-binary-modules | + | | | option. | + |------------+------------------+----------------------------------------| + | a74f8e51a6 | Jaco Kroon | AMI: be less verbose when adding HTTP | + | | | headers to AMI/HTTP messages. | + |------------+------------------+----------------------------------------| + | c8bacd45f1 | Matthew | sample_configs: noload res_hep.so by | + | | Fredrickson | default | + |------------+------------------+----------------------------------------| + | 14c6f8be9d | Sean Bright | app_queue: Silence GCC 8 compiler | + | | | warning | + |------------+------------------+----------------------------------------| + | 5ec27d5206 | Richard Mudgett | AMI: Remove docs for nonexistent AMI | + | | | ContactStatus event headers | + |------------+------------------+----------------------------------------| + | 457ba355aa | Joshua Colp | res_pjsip: Reduce processing when a | + | | | Contact is updated. | + |------------+------------------+----------------------------------------| + | 8cd36ab9b6 | Richard Mudgett | res_sorcery_realtime.c: Fix | + | | | unqualified fetch warning. | + |------------+------------------+----------------------------------------| + | 273e2802aa | Richard Mudgett | pbx_dundi.c: Misc memory management | + | | | fixes when destroying peers | + |------------+------------------+----------------------------------------| + | d4e72ee296 | Richard Mudgett | pbx_dundi.c: Handle thread shutdown | + | | | better. | + |------------+------------------+----------------------------------------| + | 916abe7cdc | Richard Mudgett | pbx_dundi: Fix debug frame decode | + | | | string. | + |------------+------------------+----------------------------------------| + | c035d0afe0 | Richard Mudgett | pbx_dundi: Update sample config | + | | | documentation. | + |------------+------------------+----------------------------------------| + | aee5f7c1b6 | Richard Mudgett | res_rtp_asterisk.c: Fix unused | + | | | variable warnings | + |------------+------------------+----------------------------------------| + | 00563ce21a | George Joseph | CI: Fixup for non-13 branches | + |------------+------------------+----------------------------------------| + | e5f30eba79 | George Joseph | CI: Final version of setting correct | + | | | gerrit creds | + |------------+------------------+----------------------------------------| + | 8e1c541acf | George Joseph | CI: Add https credentials to gerrit | + | | | checkouts | + |------------+------------------+----------------------------------------| + | 01c90fefb3 | Rodrigo Ramírez | make config: os-release output error. | + | | Norambuena | | + |------------+------------------+----------------------------------------| + | a83c464d9d | Corey Farrell | res_resolver_unbound: Fix leak of | + | | | config nameserver strings. | + |------------+------------------+----------------------------------------| + | 24302bda21 | Corey Farrell | res_pjsip: Resolve transport | + | | | management leak at shutdown. | + |------------+------------------+----------------------------------------| + | eb34b881a4 | Corey Farrell | res_odbc: Allow unload at shutdown. | + |------------+------------------+----------------------------------------| + | 52fe5fe2c8 | Corey Farrell | res_pjsip: Fix leak in pjsip_options. | + |------------+------------------+----------------------------------------| + | 58c3677581 | Richard Mudgett | contrib/scripts: Make astgenkey | + | | | executable | + |------------+------------------+----------------------------------------| + | 63ca367ab9 | Corey Farrell | Sample configs: Fix pjsip.conf syntax | + | | | error. | + |------------+------------------+----------------------------------------| + | addfc93815 | Corey Farrell | CI: Add support for coverage | + | | | processing. | + |------------+------------------+----------------------------------------| + | c6ad25dcb7 | Richard Mudgett | res_pjsip.h: Fix doxygen comments. | + |------------+------------------+----------------------------------------| + | 455ca1095e | Joshua Colp | stasis: Reduce calculation of stasis | + | | | message type hash. | + |------------+------------------+----------------------------------------| + | acbb9f52b2 | Richard Mudgett | res_pjsip: Make pjlib.h consistently | + | | | included. | + |------------+------------------+----------------------------------------| + | a10a3aff6a | Corey Farrell | Build System: Improve ccache matching | + | | | for different menuselect options. | + |------------+------------------+----------------------------------------| + | a354599ecc | George Joseph | CI: Add optional uninstall step before | + | | | installing asterisk | + |------------+------------------+----------------------------------------| + | 3aa6be6b51 | Joshua Colp | res_pjsip_pubsub: Use ast_true for | + | | | "prune_on_boot". | + |------------+------------------+----------------------------------------| + | 4265391859 | Joshua Colp | res_pjsip_pubsub: Treat | + | | | "prune_on_boot" as a yes / no. | + |------------+------------------+----------------------------------------| + | 116a599b7e | George Joseph | CI: Fix placement of job summary | + | | | statments | + |------------+------------------+----------------------------------------| + | 709f4b81e7 | Corey Farrell | loader: Process dependencies for | + | | | built-in modules. | + |------------+------------------+----------------------------------------| + | e55cad967e | George Joseph | CI: Add docker info to job summary | + |------------+------------------+----------------------------------------| + | 852e157b19 | Corey Farrell | Build System: Create 'make | + | | | install-configs' target. | + |------------+------------------+----------------------------------------| + | 783bff0637 | Kevin Harwell | json.c: improve | + | | | ast_json_to_ast_variables performance | + |------------+------------------+----------------------------------------| + | 3dcf26cb94 | George Joseph | CI: Explicitly pass BRANCH_NAME to | + | | | buildAsterisk and installAsterisk | + |------------+------------------+----------------------------------------| + | 797835c5b9 | George Joseph | CI: Add options to initialize and | + | | | cleanup database to runTestsuite.sh | + |------------+------------------+----------------------------------------| + | 05a4b448af | Corey Farrell | CI: Do not `mkdir 2`. | + |------------+------------------+----------------------------------------| + | 2f275f8472 | Corey Farrell | Build System: Silence build of bundled | + | | | jansson. | + |------------+------------------+----------------------------------------| + | ceb199e19f | George Joseph | CI: RefDebug: Fix reference to | + | | | testsuite URL | + |------------+------------------+----------------------------------------| + | af5984d694 | Corey Farrell | Build System: Fix bundled jansson | + | | | install. | + |------------+------------------+----------------------------------------| + | cdb725526e | Corey Farrell | CI: Use bundled jansson if needed. | + |------------+------------------+----------------------------------------| + | c5bac9ed90 | Florian Floimair | res_pjsip: Change log message from | + | | | error to warning for valid use cases | + |------------+------------------+----------------------------------------| + | f827f36ff3 | George Joseph | CI: Add --privileged flag to docker | + | | | options | + |------------+------------------+----------------------------------------| + | eed429c811 | George Joseph | CI: Set correct user:group when | + | | | publishing docs | + |------------+------------------+----------------------------------------| + | 0504594a3e | Richard Mudgett | core: AST_DEVMODE no longer affects | + | | | ABI. | + |------------+------------------+----------------------------------------| + | 0f8657aae9 | Richard Mudgett | asterisk.c: Make displayed copyright | + | | | always consistent | + |------------+------------------+----------------------------------------| + | 3b78651c3c | Corey Farrell | CI: Split --test-command argument. | + |------------+------------------+----------------------------------------| + | ba8f2c401c | George Joseph | xmldoc.c: Fix dump of xml document | + |------------+------------------+----------------------------------------| + | 0ee061326a | Corey Farrell | CI: Fix mkdir CACHE_DIR. | + |------------+------------------+----------------------------------------| + | 747b65f675 | Corey Farrell | build_tools/make_version: Get | + | | | MAINLINE_BRANCH from .gitreview. | + |------------+------------------+----------------------------------------| + | 33f855bb69 | Joshua Colp | sched: Make ABI compatible between dev | + | | | mode and non-dev mode. | + |------------+------------------+----------------------------------------| + | 09c4be9433 | Richard Mudgett | asterisk.c: Update displayed copyright | + | | | year for v16 release. | + |------------+------------------+----------------------------------------| + | ee154464d7 | Corey Farrell | Enable bundling of jansson, require | + | | | 2.11. | + |------------+------------------+----------------------------------------| + | fa6d5db229 | Corey Farrell | CI: Fix logger.conf for unit tests. | + |------------+------------------+----------------------------------------| + | 739cfe128d | George Joseph | CI: Add wiki doc publish to periodics | + |------------+------------------+----------------------------------------| + | e6bb2efaab | Richard Mudgett | res_pjsip: Update endpoint transport | + | | | option documentation. | + |------------+------------------+----------------------------------------| + | 8a100ca52b | Richard Mudgett | pjsip_resolver.c: Use replacement | + | | | function | + |------------+------------------+----------------------------------------| + | e01e636959 | Joshua Colp | Update UPDATE.txt for 16 and update | + | | | ARI stubs. | + +------------------------------------------------------------------------+ + + ---------------------------------------------------------------------- + + Diffstat Results + + [Back to Top] + + This is a summary of the changes to the source code that went into this + release that was generated using the diffstat utility. + + asterisk-certified-16.8-cert12-summary.html | 22 + asterisk-certified-16.8-cert12-summary.txt | 92 + b/.gitreview | 2 + b/.version | 2 + b/CHANGES | 1032 + b/CREDITS | 2 + b/ChangeLog |143513 +++------- + b/Makefile | 27 + b/UPGRADE.txt | 288 + b/addons/app_mysql.c | 2 + b/addons/cdr_mysql.c | 2 + b/addons/chan_mobile.c | 91 + b/addons/chan_ooh323.c | 13 + b/addons/ooh323c/README | 2 + b/addons/ooh323c/src/decode.c | 2 + b/addons/ooh323c/src/encode.c | 4 + b/addons/ooh323c/src/eventHandler.h | 6 + b/addons/ooh323c/src/h323/H323-MESSAGES.h | 2 + b/addons/ooh323c/src/h323/H323-MESSAGESDec.c | 8 + b/addons/ooh323c/src/h323/H323-MESSAGESEnc.c | 4 + b/addons/ooh323c/src/memheap.c | 20 + b/addons/ooh323c/src/ooCalls.c | 2 + b/addons/ooh323c/src/ooCapability.h | 12 + b/addons/ooh323c/src/ooCmdChannel.c | 4 + b/addons/ooh323c/src/ooGkClient.c | 4 + b/addons/ooh323c/src/ooGkClient.h | 2 + b/addons/ooh323c/src/ooLogChan.c | 2 + b/addons/ooh323c/src/ooSocket.h | 2 + b/addons/ooh323c/src/ooUtils.c | 2 + b/addons/ooh323c/src/ooUtils.h | 2 + b/addons/ooh323c/src/ooasn1.h | 2 + b/addons/ooh323c/src/oochannels.c | 2 + b/addons/ooh323c/src/ooh245.c | 2 + b/addons/ooh323c/src/ooh245.h | 4 + b/addons/ooh323c/src/ooh323.c | 29 + b/addons/ooh323c/src/ooh323ep.c | 2 + b/addons/ooh323c/src/ooq931.c | 8 + b/addons/ooh323c/src/ooq931.h | 2 + b/addons/res_config_mysql.c | 16 + b/agi/eagi-test.c | 4 + b/agi/jukebox.agi | 2 + b/apps/Makefile | 36 + b/apps/app_adsiprog.c | 2 + b/apps/app_agent_pool.c | 44 + b/apps/app_alarmreceiver.c | 5 + b/apps/app_amd.c | 2 + b/apps/app_attended_transfer.c | 4 + b/apps/app_audiosocket.c | 241 + b/apps/app_blind_transfer.c | 4 + b/apps/app_bridgeaddchan.c | 62 + b/apps/app_bridgewait.c | 22 + b/apps/app_chanisavail.c | 2 + b/apps/app_chanspy.c | 16 + b/apps/app_confbridge.c | 151 + b/apps/app_dahdiras.c | 10 + b/apps/app_dial.c | 156 + b/apps/app_dictate.c | 2 + b/apps/app_directory.c | 2 + b/apps/app_dtmfstore.c | 293 + b/apps/app_externalivr.c | 290 + b/apps/app_fax.c | 6 + b/apps/app_festival.c | 2 + b/apps/app_forkcdr.c | 2 + b/apps/app_getcpeid.c | 3 + b/apps/app_ices.c | 4 + b/apps/app_image.c | 4 + b/apps/app_jack.c | 4 + b/apps/app_macro.c | 4 + b/apps/app_meetme.c | 16 + b/apps/app_mf.c | 362 + b/apps/app_milliwatt.c | 23 + b/apps/app_minivm.c | 171 + b/apps/app_mixmonitor.c | 153 + b/apps/app_morsecode.c | 167 + b/apps/app_mp3.c | 32 + b/apps/app_nbscat.c | 4 + b/apps/app_originate.c | 122 + b/apps/app_osplookup.c | 17 + b/apps/app_page.c | 19 + b/apps/app_playback.c | 18 + b/apps/app_queue.c | 677 + b/apps/app_read.c | 36 + b/apps/app_reload.c | 111 + b/apps/app_sms.c | 2 + b/apps/app_speech_utils.c | 2 + b/apps/app_stack.c | 6 + b/apps/app_stasis.c | 2 + b/apps/app_statsd.c | 4 + b/apps/app_stream_echo.c | 2 + b/apps/app_talkdetect.c | 2 + b/apps/app_test.c | 4 + b/apps/app_transfer.c | 24 + b/apps/app_url.c | 4 + b/apps/app_verbose.c | 9 + b/apps/app_voicemail.c | 819 + b/apps/app_voicemail_imap.c | 1 + b/apps/app_voicemail_imap.exports.in | 1 + b/apps/app_voicemail_odbc.c | 1 + b/apps/app_voicemail_odbc.exports.in | 1 + b/apps/app_waitforcond.c | 235 + b/apps/app_waitforring.c | 2 + b/apps/app_waitforsilence.c | 19 + b/apps/app_zapateller.c | 2 + b/apps/confbridge/conf_config_parser.c | 47 + b/apps/confbridge/conf_state.c | 2 + b/apps/confbridge/confbridge_manager.c | 4 + b/apps/confbridge/include/confbridge.h | 14 + b/asterisk-18.9.0-summary.html | 732 + b/asterisk-18.9.0-summary.txt | 1219 + b/bridges/bridge_holding.c | 4 + b/bridges/bridge_native_rtp.c | 2 + b/bridges/bridge_simple.c | 2 + b/bridges/bridge_softmix.c | 44 + b/bridges/bridge_softmix/bridge_softmix_binaural.c | 4 + b/bridges/bridge_softmix/include/bridge_softmix_internal.h | 10 + b/build_tools/download_externals | 9 + b/build_tools/install_subst | 1 + b/build_tools/make_defaults_h | 1 + b/build_tools/mkpkgconfig | 1 + b/cdr/cdr_adaptive_odbc.c | 2 + b/cdr/cdr_beanstalkd.c | 2 + b/cdr/cdr_csv.c | 2 + b/cdr/cdr_odbc.c | 9 + b/cdr/cdr_pgsql.c | 6 + b/cdr/cdr_radius.c | 2 + b/cdr/cdr_sqlite3_custom.c | 2 + b/cdr/cdr_syslog.c | 7 + b/cdr/cdr_tds.c | 7 + b/cel/cel_beanstalkd.c | 5 + b/cel/cel_custom.c | 3 + b/cel/cel_pgsql.c | 6 + b/cel/cel_radius.c | 4 + b/cel/cel_sqlite3_custom.c | 7 + b/cel/cel_tds.c | 7 + b/channels/Makefile | 2 + b/channels/chan_alsa.c | 4 + b/channels/chan_audiosocket.c | 302 + b/channels/chan_console.c | 4 + b/channels/chan_dahdi.c | 129 + b/channels/chan_dahdi.h | 18 + b/channels/chan_iax2.c | 148 + b/channels/chan_mgcp.c | 70 + b/channels/chan_misdn.c | 90 + b/channels/chan_motif.c | 6 + b/channels/chan_nbs.c | 4 + b/channels/chan_oss.c | 4 + b/channels/chan_phone.c | 4 + b/channels/chan_pjsip.c | 513 + b/channels/chan_rtp.c | 2 + b/channels/chan_sip.c | 499 + b/channels/chan_skinny.c | 30 + b/channels/chan_unistim.c | 14 + b/channels/chan_vpb.cc | 6 + b/channels/console_board.c | 2 + b/channels/console_gui.c | 14 + b/channels/console_video.c | 12 + b/channels/dahdi/bridge_native_dahdi.c | 10 + b/channels/iax2/codec_pref.c | 2 + b/channels/iax2/include/astobj.h | 2 + b/channels/iax2/include/firmware.h | 8 + b/channels/iax2/include/iax2.h | 6 + b/channels/iax2/include/parser.h | 1 + b/channels/iax2/parser.c | 34 + b/channels/misdn/ie.c | 2 + b/channels/misdn/isdn_lib.c | 6 + b/channels/misdn/isdn_lib_intern.h | 2 + b/channels/misdn/isdn_msg_parser.c | 12 + b/channels/misdn/portinfo.c | 2 + b/channels/misdn_config.c | 2 + b/channels/pjsip/cli_commands.c | 70 + b/channels/pjsip/dialplan_functions.c | 19 + b/channels/sig_analog.c | 66 + b/channels/sig_analog.h | 4 + b/channels/sig_pri.c | 172 + b/channels/sig_pri.h | 10 + b/channels/sig_ss7.c | 64 + b/channels/sig_ss7.h | 2 + b/channels/sip/config_parser.c | 63 + b/channels/sip/dialplan_functions.c | 2 + b/channels/sip/include/config_parser.h | 2 + b/channels/sip/include/reqresp_parser.h | 12 + b/channels/sip/include/route.h | 9 + b/channels/sip/include/sip.h | 37 + b/channels/sip/reqresp_parser.c | 10 + b/channels/sip/route.c | 2 + b/channels/sip/security_events.c | 4 + b/channels/sip/utils.c | 2 + b/channels/vcodecs.c | 4 + b/channels/vgrabbers.c | 2 + b/codecs/codec_dahdi.c | 2 + b/codecs/codec_g726.c | 2 + b/codecs/gsm/src/rpe.c | 2 + b/codecs/ilbc/LPCencode.c | 8 + b/codecs/ilbc/StateSearchW.c | 4 + b/codecs/ilbc/StateSearchW.h | 2 + b/codecs/ilbc/constants.c | 2 + b/codecs/ilbc/createCB.c | 2 + b/codecs/ilbc/createCB.h | 2 + b/codecs/ilbc/enhancer.h | 4 + b/codecs/ilbc/iLBC_decode.c | 2 + b/codecs/ilbc/rfc3951.txt | 26 + b/codecs/lpc10/lpc10.h | 2 + b/codecs/lpc10/pitsyn.c | 2 + b/codecs/lpc10/placea.c | 2 + b/codecs/speex/resample.c | 2 + b/configs/basic-pbx/extensions.conf | 2 + b/configs/basic-pbx/modules.conf | 8 + b/configs/samples/app_mysql.conf.sample | 2 + b/configs/samples/ari.conf.sample | 2 + b/configs/samples/ast_debug_tools.conf.sample | 47 + b/configs/samples/asterisk.conf.sample | 1 + b/configs/samples/cdr.conf.sample | 2 + b/configs/samples/chan_dahdi.conf.sample | 20 + b/configs/samples/cli_permissions.conf.sample | 2 + b/configs/samples/confbridge.conf.sample | 12 + b/configs/samples/dundi.conf.sample | 2 + b/configs/samples/extensions.ael.sample | 2 + b/configs/samples/extensions.conf.sample | 4 + b/configs/samples/extensions.lua.sample | 4 + b/configs/samples/extensions_minivm.conf.sample | 2 + b/configs/samples/features.conf.sample | 4 + b/configs/samples/func_odbc.conf.sample | 22 + b/configs/samples/hep.conf.sample | 2 + b/configs/samples/iax.conf.sample | 11 + b/configs/samples/indications.conf.sample | 11 + b/configs/samples/logger.conf.sample | 25 + b/configs/samples/manager.conf.sample | 2 + b/configs/samples/minivm.conf.sample | 2 + b/configs/samples/modules.conf.sample | 32 + b/configs/samples/motif.conf.sample | 2 + b/configs/samples/musiconhold.conf.sample | 4 + b/configs/samples/ooh323.conf.sample | 2 + b/configs/samples/pjproject.conf.sample | 5 + b/configs/samples/pjsip.conf.sample | 178 + b/configs/samples/prometheus.conf.sample | 58 + b/configs/samples/queues.conf.sample | 27 + b/configs/samples/res_curl.conf.sample | 1 + b/configs/samples/rtp.conf.sample | 40 + b/configs/samples/sip.conf.sample | 4 + b/configs/samples/stasis.conf.sample | 3 + b/configs/samples/statsd.conf.sample | 3 + b/configs/samples/stir_shaken.conf.sample | 85 + b/configure | 801 + b/configure.ac | 211 + b/contrib/ast-db-manage/README.md | 2 + b/contrib/ast-db-manage/config/versions/1ae0609b6646_increse_reg_server_size.py | 22 + b/contrib/ast-db-manage/config/versions/2bb1a85135ad_pjsip_add_use_callerid_contact.py | 2 + b/contrib/ast-db-manage/config/versions/465f47f880be_add_pjsip_google_voice_sip_options.py | 115 + b/contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py | 2 + b/contrib/ast-db-manage/config/versions/61797b9fced6_add_stir_shaken.py | 31 + b/contrib/ast-db-manage/config/versions/79290b511e4b_pjsip_add_disable_rport.py | 39 + b/contrib/ast-db-manage/config/versions/8915fcc5766f_add_ringinuse_to_queue_members.py | 30 + b/contrib/ast-db-manage/config/versions/a06d8f8462d9_add_t38_bind_udptl_to_media_address.py | 29 + b/contrib/ast-db-manage/config/versions/b80485ff4dd0_add_pjsip_endpoint_acn_options.py | 29 + b/contrib/ast-db-manage/config/versions/c20d6e3992f4_add_allow_unauthenticated_options.py | 29 + b/contrib/ast-db-manage/config/versions/e658c26033ca_create_history_info_flag.py | 38 + b/contrib/ast-db-manage/config/versions/f56d79a9f337_pjsip_create_remove_unavailable.py | 30 + b/contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py | 2 + b/contrib/init.d/rc.debian.asterisk | 2 + b/contrib/realtime/mysql/mysql_config.sql | 82 + b/contrib/realtime/postgresql/postgresql_config.sql | 90 + b/contrib/scripts/ast_coredumper | 949 + b/contrib/scripts/ast_loggrabber | 4 + b/contrib/scripts/ast_tls_cert | 8 + b/contrib/scripts/asterisk.ldap-schema | 2 + b/contrib/scripts/asterisk.ldif | 2 + b/contrib/scripts/get_mp3_source.sh | 2 + b/contrib/scripts/install_prereq | 36 + b/contrib/scripts/loadtest.tcl | 2 + b/contrib/scripts/retrieve_extensions_from_sql.pl | 2 + b/contrib/scripts/safe_asterisk.8 | 2 + b/contrib/scripts/sip_nat_settings | 19 + b/contrib/scripts/sip_to_pjsip/astconfigparser.py | 43 + b/contrib/scripts/sip_to_pjsip/sip_to_pjsip.py | 8 + b/contrib/scripts/spandspflow2pcap.py | 284 + b/contrib/scripts/valgrind_compare | 2 + b/contrib/scripts/voicemailpwcheck.py | 2 + b/contrib/systemd/asterisk.service | 7 + b/contrib/utils/zones2indications.c | 4 + b/doc/appdocsxml.dtd | 26 + b/doc/asterisk-ng-doxygen.in | 4 + b/formats/format_ogg_speex.c | 13 + b/formats/format_ogg_vorbis.c | 2 + b/formats/format_vox.c | 2 + b/formats/format_wav.c | 3 + b/funcs/func_aes.c | 4 + b/funcs/func_callerid.c | 293 + b/funcs/func_channel.c | 46 + b/funcs/func_curl.c | 49 + b/funcs/func_devstate.c | 6 + b/funcs/func_env.c | 87 + b/funcs/func_frame_drop.c | 292 + b/funcs/func_frame_trace.c | 2 + b/funcs/func_lock.c | 228 + b/funcs/func_math.c | 185 + b/funcs/func_odbc.c | 42 + b/funcs/func_periodic_hook.c | 3 + b/funcs/func_pitchshift.c | 10 + b/funcs/func_pjsip_aor.c | 2 + b/funcs/func_pjsip_contact.c | 2 + b/funcs/func_pjsip_endpoint.c | 2 + b/funcs/func_sayfiles.c | 397 + b/funcs/func_scramble.c | 236 + b/funcs/func_sprintf.c | 2 + b/funcs/func_strings.c | 148 + b/funcs/func_talkdetect.c | 26 + b/funcs/func_vmcount.c | 23 + b/funcs/func_volume.c | 60 + b/include/asterisk.h | 1 + b/include/asterisk/abstract_jb.h | 2 + b/include/asterisk/acl.h | 32 + b/include/asterisk/adsi.h | 4 + b/include/asterisk/aoc.h | 2 + b/include/asterisk/app.h | 95 + b/include/asterisk/ari.h | 22 + b/include/asterisk/astdb.h | 2 + b/include/asterisk/astmm.h | 6 + b/include/asterisk/astobj2.h | 102 + b/include/asterisk/audiohook.h | 79 + b/include/asterisk/autoconfig.h.in | 13 + b/include/asterisk/bridge.h | 69 + b/include/asterisk/bridge_channel.h | 27 + b/include/asterisk/bridge_channel_internal.h | 11 + b/include/asterisk/bridge_features.h | 6 + b/include/asterisk/bridge_roles.h | 4 + b/include/asterisk/calendar.h | 8 + b/include/asterisk/callerid.h | 2 + b/include/asterisk/causes.h | 6 + b/include/asterisk/cdr.h | 4 + b/include/asterisk/channel.h | 314 + b/include/asterisk/cli.h | 2 + b/include/asterisk/config.h | 4 + b/include/asterisk/config_options.h | 2 + b/include/asterisk/conversions.h | 54 + b/include/asterisk/core_unreal.h | 21 + b/include/asterisk/crypto.h | 2 + b/include/asterisk/datastore.h | 4 + b/include/asterisk/devicestate.h | 4 + b/include/asterisk/dlinkedlists.h | 7 + b/include/asterisk/dns_core.h | 2 + b/include/asterisk/dns_internal.h | 26 + b/include/asterisk/dns_txt.h | 64 + b/include/asterisk/doxygen/architecture.h | 2 + b/include/asterisk/doxyref.h | 13 + b/include/asterisk/dsp.h | 4 + b/include/asterisk/endpoints.h | 2 + b/include/asterisk/enum.h | 8 + b/include/asterisk/event_defs.h | 2 + b/include/asterisk/file.h | 15 + b/include/asterisk/format_cache.h | 13 + b/include/asterisk/format_cap.h | 4 + b/include/asterisk/frame.h | 37 + b/include/asterisk/framehook.h | 41 + b/include/asterisk/hashtab.h | 4 + b/include/asterisk/http.h | 4 + b/include/asterisk/http_websocket.h | 5 + b/include/asterisk/io.h | 2 + b/include/asterisk/iostream.h | 2 + b/include/asterisk/json.h | 17 + b/include/asterisk/linkedlists.h | 3 + b/include/asterisk/logger.h | 83 + b/include/asterisk/logger_category.h | 178 + b/include/asterisk/manager.h | 29 + b/include/asterisk/media_index.h | 24 + b/include/asterisk/message.h | 13 + b/include/asterisk/mod_format.h | 2 + b/include/asterisk/module.h | 4 + b/include/asterisk/mwi.h | 344 + b/include/asterisk/netsock2.h | 12 + b/include/asterisk/parking.h | 19 + b/include/asterisk/paths.h | 1 + b/include/asterisk/pbx.h | 22 + b/include/asterisk/plc.h | 4 + b/include/asterisk/privacy.h | 2 + b/include/asterisk/res_audiosocket.h | 87 + b/include/asterisk/res_mwi_external.h | 2 + b/include/asterisk/res_odbc.h | 25 + b/include/asterisk/res_pjsip.h | 411 + b/include/asterisk/res_pjsip_cli.h | 6 + b/include/asterisk/res_pjsip_presence_xml.h | 2 + b/include/asterisk/res_pjsip_pubsub.h | 7 + b/include/asterisk/res_pjsip_session.h | 27 + b/include/asterisk/res_pjsip_session_caps.h | 82 + b/include/asterisk/res_prometheus.h | 515 + b/include/asterisk/res_stir_shaken.h | 139 + b/include/asterisk/rtp_engine.h | 83 + b/include/asterisk/say.h | 106 + b/include/asterisk/sched.h | 5 + b/include/asterisk/sdp_srtp.h | 3 + b/include/asterisk/sem.h | 2 + b/include/asterisk/smoother.h | 8 + b/include/asterisk/sorcery.h | 53 + b/include/asterisk/speech.h | 6 + b/include/asterisk/srv.h | 3 + b/include/asterisk/stasis.h | 138 + b/include/asterisk/stasis_app.h | 36 + b/include/asterisk/stasis_app_device_state.h | 2 + b/include/asterisk/stasis_app_impl.h | 5 + b/include/asterisk/stasis_app_mailbox.h | 12 + b/include/asterisk/stasis_app_playback.h | 16 + b/include/asterisk/stasis_app_recording.h | 32 + b/include/asterisk/stasis_app_snoop.h | 5 + b/include/asterisk/stasis_bridges.h | 148 + b/include/asterisk/stasis_channels.h | 359 + b/include/asterisk/stasis_endpoints.h | 2 + b/include/asterisk/stasis_internal.h | 1 + b/include/asterisk/stasis_message_router.h | 26 + b/include/asterisk/stasis_state.h | 549 + b/include/asterisk/stasis_system.h | 4 + b/include/asterisk/stasis_test.h | 1 + b/include/asterisk/statsd.h | 6 + b/include/asterisk/stream.h | 438 + b/include/asterisk/stringfields.h | 2 + b/include/asterisk/strings.h | 36 + b/include/asterisk/stun.h | 28 + b/include/asterisk/syslog.h | 3 + b/include/asterisk/taskprocessor.h | 5 + b/include/asterisk/tcptls.h | 5 + b/include/asterisk/term.h | 16 + b/include/asterisk/test.h | 30 + b/include/asterisk/threadpool.h | 6 + b/include/asterisk/threadstorage.h | 6 + b/include/asterisk/time.h | 81 + b/include/asterisk/timing.h | 2 + b/include/asterisk/transcap.h | 8 + b/include/asterisk/translate.h | 2 + b/include/asterisk/utf8.h | 188 + b/include/asterisk/utils.h | 130 + b/include/asterisk/vector.h | 52 + b/include/asterisk/xmldoc.h | 2 + b/include/jitterbuf.h | 8 + b/main/Makefile | 2 + b/main/abstract_jb.c | 28 + b/main/acl.c | 31 + b/main/aoc.c | 6 + b/main/app.c | 55 + b/main/ast_expr2.c | 1 + b/main/ast_expr2.y | 1 + b/main/asterisk.c | 41 + b/main/astfd.c | 2 + b/main/astmm.c | 38 + b/main/astobj2.c | 5 + b/main/astobj2_container.c | 4 + b/main/astobj2_container_private.h | 2 + b/main/astobj2_rbtree.c | 2 + b/main/audiohook.c | 124 + b/main/bridge.c | 155 + b/main/bridge_basic.c | 27 + b/main/bridge_channel.c | 160 + b/main/bucket.c | 5 + b/main/callerid.c | 2 + b/main/ccss.c | 6 + b/main/cdr.c | 356 + b/main/cel.c | 151 + b/main/channel.c | 202 + b/main/channel_internal_api.c | 171 + b/main/cli.c | 128 + b/main/codec_builtin.c | 1 + b/main/config.c | 11 + b/main/config_options.c | 60 + b/main/conversions.c | 51 + b/main/core_local.c | 115 + b/main/core_unreal.c | 233 + b/main/dial.c | 14 + b/main/dns.c | 21 + b/main/dns_core.c | 3 + b/main/dns_recurring.c | 9 + b/main/dns_test.c | 38 + b/main/dns_txt.c | 127 + b/main/dnsmgr.c | 2 + b/main/dsp.c | 47 + b/main/endpoints.c | 14 + b/main/enum.c | 108 + b/main/features.c | 10 + b/main/features_config.c | 4 + b/main/file.c | 20 + b/main/fixedjitterbuf.c | 2 + b/main/format_cache.c | 21 + b/main/format_cap.c | 6 + b/main/frame.c | 82 + b/main/fskmodem_float.c | 2 + b/main/fskmodem_int.c | 2 + b/main/indications.c | 6 + b/main/io.c | 2 + b/main/json.c | 19 + b/main/loader.c | 183 + b/main/logger.c | 218 + b/main/logger_category.c | 324 + b/main/manager.c | 36 + b/main/manager_bridges.c | 128 + b/main/manager_channels.c | 178 + b/main/media_cache.c | 89 + b/main/media_index.c | 5 + b/main/message.c | 121 + b/main/mwi.c | 295 + b/main/named_acl.c | 9 + b/main/optional_api.c | 12 + b/main/options.c | 14 + b/main/pbx.c | 48 + b/main/pbx_builtins.c | 192 + b/main/pbx_functions.c | 6 + b/main/pbx_include.c | 2 + b/main/pbx_timing.c | 2 + b/main/pbx_variables.c | 2 + b/main/rtp_engine.c | 71 + b/main/say.c | 732 + b/main/smoother.c | 2 + b/main/sorcery.c | 63 + b/main/stasis.c | 65 + b/main/stasis_bridges.c | 218 + b/main/stasis_cache.c | 10 + b/main/stasis_channels.c | 655 + b/main/stasis_message_router.c | 22 + b/main/stasis_state.c | 771 + b/main/stdtime/localtime.c | 2 + b/main/strcompat.c | 94 + b/main/stream.c | 379 + b/main/strings.c | 25 + b/main/stun.c | 92 + b/main/tcptls.c | 45 + b/main/term.c | 105 + b/main/test.c | 11 + b/main/threadpool.c | 2 + b/main/time.c | 145 + b/main/translate.c | 34 + b/main/udptl.c | 2 + b/main/utf8.c | 380 + b/main/utils.c | 329 + b/main/xmldoc.c | 94 + b/makeopts.in | 7 + b/menuselect/Makefile | 4 + b/menuselect/README | 2 + b/menuselect/contrib/menuselect-dummy | 20 + b/menuselect/menuselect.c | 52 + b/menuselect/menuselect.h | 4 + b/menuselect/menuselect_curses.c | 12 + b/menuselect/menuselect_gtk.c | 2 + b/menuselect/menuselect_newt.c | 12 + b/menuselect/menuselect_stub.c | 2 + b/pbx/ael/ael-test/ael-test2/apptest.ael2 | 2 + b/pbx/ael/ael-test/ael-test3/extensions.ael | 2 + b/pbx/ael/ael-test/ael-test3/telemarket_torture.ael2 | 10 + b/pbx/ael/ael-test/ael-test4/apptest.ael2 | 2 + b/pbx/ael/ael-test/ael-vtest13/extensions.ael | 2 + b/pbx/ael/ael-test/ael-vtest13/telemarket_torture.ael2 | 10 + b/pbx/dundi-parser.c | 2 + b/pbx/pbx_ael.c | 9 + b/pbx/pbx_config.c | 4 + b/pbx/pbx_dundi.c | 14 + b/pbx/pbx_lua.c | 19 + b/pbx/pbx_realtime.c | 39 + b/res/Makefile | 8 + b/res/ael/ael.y | 2 + b/res/ael/pval.c | 14 + b/res/ari/ari_model_validators.c | 59 + b/res/ari/ari_model_validators.h | 487 + b/res/ari/resource_bridges.c | 60 + b/res/ari/resource_bridges.h | 6 + b/res/ari/resource_channels.c | 263 + b/res/ari/resource_channels.h | 8 + b/res/ari/resource_endpoints.c | 1 + b/res/ari/resource_events.c | 4 + b/res/ari/resource_events.h | 3 + b/res/parking/parking_applications.c | 10 + b/res/parking/parking_bridge.c | 16 + b/res/parking/parking_bridge_features.c | 11 + b/res/parking/res_parking.h | 30 + b/res/prometheus/bridges.c | 189 + b/res/prometheus/channels.c | 247 + b/res/prometheus/cli.c | 143 + b/res/prometheus/endpoints.c | 204 + b/res/prometheus/pjsip_outbound_registrations.c | 375 + b/res/prometheus/prometheus_internal.h | 102 + b/res/res_adsi.c | 2 + b/res/res_ael_share.c | 2 + b/res/res_agi.c | 42 + b/res/res_ari.c | 8 + b/res/res_ari_applications.c | 10 + b/res/res_ari_asterisk.c | 32 + b/res/res_ari_bridges.c | 35 + b/res/res_ari_channels.c | 81 + b/res/res_ari_device_states.c | 8 + b/res/res_ari_endpoints.c | 10 + b/res/res_ari_events.c | 2 + b/res/res_ari_mailboxes.c | 8 + b/res/res_ari_playbacks.c | 6 + b/res/res_ari_recordings.c | 24 + b/res/res_ari_sounds.c | 4 + b/res/res_audiosocket.c | 345 + b/res/res_audiosocket.exports.in | 4 + b/res/res_calendar.c | 12 + b/res/res_calendar_caldav.c | 6 + b/res/res_calendar_ews.c | 2 + b/res/res_calendar_exchange.c | 2 + b/res/res_calendar_icalendar.c | 6 + b/res/res_chan_stats.c | 33 + b/res/res_config_curl.c | 4 + b/res/res_config_ldap.c | 6 + b/res/res_config_odbc.c | 37 + b/res/res_config_pgsql.c | 36 + b/res/res_config_sqlite.c | 4 + b/res/res_corosync.c | 564 + b/res/res_fax.c | 25 + b/res/res_fax_spandsp.c | 2 + b/res/res_format_attr_celt.c | 14 + b/res/res_format_attr_h263.c | 141 + b/res/res_format_attr_ilbc.c | 15 + b/res/res_format_attr_opus.c | 31 + b/res/res_format_attr_silk.c | 17 + b/res/res_format_attr_siren14.c | 13 + b/res/res_format_attr_siren7.c | 13 + b/res/res_format_attr_vp8.c | 12 + b/res/res_hep.c | 2 + b/res/res_hep_pjsip.c | 4 + b/res/res_hep_rtcp.c | 2 + b/res/res_http_media_cache.c | 127 + b/res/res_http_post.c | 2 + b/res/res_http_websocket.c | 56 + b/res/res_monitor.c | 4 + b/res/res_musiconhold.c | 337 + b/res/res_odbc.c | 14 + b/res/res_odbc_transaction.c | 5 + b/res/res_parking.c | 9 + b/res/res_phoneprov.c | 4 + b/res/res_pjproject.c | 24 + b/res/res_pjsip.c | 684 + b/res/res_pjsip/config_auth.c | 26 + b/res/res_pjsip/config_global.c | 4 + b/res/res_pjsip/config_system.c | 6 + b/res/res_pjsip/config_transport.c | 283 + b/res/res_pjsip/include/res_pjsip_private.h | 6 + b/res/res_pjsip/location.c | 1 + b/res/res_pjsip/pjsip_configuration.c | 273 + b/res/res_pjsip/pjsip_distributor.c | 2 + b/res/res_pjsip/pjsip_message_filter.c | 11 + b/res/res_pjsip/pjsip_options.c | 9 + b/res/res_pjsip/pjsip_resolver.c | 26 + b/res/res_pjsip/pjsip_scheduler.c | 182 + b/res/res_pjsip/pjsip_session.c | 63 + b/res/res_pjsip/pjsip_transport_events.c | 2 + b/res/res_pjsip/pjsip_transport_management.c | 2 + b/res/res_pjsip_acl.c | 20 + b/res/res_pjsip_authenticator_digest.c | 30 + b/res/res_pjsip_caller_id.c | 60 + b/res/res_pjsip_config_wizard.c | 17 + b/res/res_pjsip_dialog_info_body_generator.c | 119 + b/res/res_pjsip_diversion.c | 352 + b/res/res_pjsip_dlg_options.c | 5 + b/res/res_pjsip_dtmf_info.c | 11 + b/res/res_pjsip_empty_info.c | 1 + b/res/res_pjsip_endpoint_identifier_ip.c | 3 + b/res/res_pjsip_header_funcs.c | 194 + b/res/res_pjsip_history.c | 20 + b/res/res_pjsip_logger.c | 451 + b/res/res_pjsip_messaging.c | 908 + b/res/res_pjsip_mwi.c | 35 + b/res/res_pjsip_nat.c | 42 + b/res/res_pjsip_one_touch_record_info.c | 1 + b/res/res_pjsip_outbound_authenticator_digest.c | 511 + b/res/res_pjsip_outbound_publish.c | 2 + b/res/res_pjsip_outbound_registration.c | 315 + b/res/res_pjsip_path.c | 17 + b/res/res_pjsip_phoneprov_provider.c | 2 + b/res/res_pjsip_publish_asterisk.c | 6 + b/res/res_pjsip_pubsub.c | 37 + b/res/res_pjsip_refer.c | 173 + b/res/res_pjsip_registrar.c | 170 + b/res/res_pjsip_rfc3326.c | 3 + b/res/res_pjsip_sdp_rtp.c | 365 + b/res/res_pjsip_session.c | 572 + b/res/res_pjsip_session.exports.in | 1 + b/res/res_pjsip_session/pjsip_session_caps.c | 164 + b/res/res_pjsip_stir_shaken.c | 519 + b/res/res_pjsip_t38.c | 43 + b/res/res_pjsip_transport_websocket.c | 2 + b/res/res_pktccops.c | 38 + b/res/res_prometheus.c | 1009 + b/res/res_prometheus.exports.in | 6 + b/res/res_remb_modifier.c | 2 + b/res/res_rtp_asterisk.c | 1551 + b/res/res_smdi.c | 4 + b/res/res_snmp.c | 2 + b/res/res_sorcery_config.c | 26 + b/res/res_sorcery_memory_cache.c | 18 + b/res/res_speech.c | 34 + b/res/res_srtp.c | 43 + b/res/res_stasis.c | 51 + b/res/res_stasis_playback.c | 43 + b/res/res_stasis_snoop.c | 14 + b/res/res_statsd.c | 18 + b/res/res_stir_shaken.c | 1736 + b/res/res_stir_shaken.exports.in | 6 + b/res/res_stir_shaken/certificate.c | 380 + b/res/res_stir_shaken/certificate.h | 109 + b/res/res_stir_shaken/curl.c | 274 + b/res/res_stir_shaken/curl.h | 75 + b/res/res_stir_shaken/general.c | 286 + b/res/res_stir_shaken/general.h | 111 + b/res/res_stir_shaken/stir_shaken.c | 200 + b/res/res_stir_shaken/stir_shaken.h | 67 + b/res/res_stir_shaken/store.c | 202 + b/res/res_stir_shaken/store.h | 37 + b/res/res_timing_kqueue.c | 2 + b/res/res_timing_pthread.c | 2 + b/res/res_tonedetect.c | 1023 + b/res/res_xmpp.c | 211 + b/res/snmp/agent.c | 4 + b/res/stasis/app.c | 137 + b/res/stasis/app.h | 71 + b/res/stasis/control.c | 29 + b/res/stasis/control.h | 14 + b/res/stasis/messaging.c | 83 + b/res/stasis/messaging.h | 5 + b/res/stasis/stasis_bridge.c | 20 + b/res/stasis/stasis_bridge.h | 5 + b/res/stasis_recording/stored.c | 4 + b/rest-api-templates/ari_model_validators.h.mustache | 50 + b/rest-api-templates/ari_resource.h.mustache | 3 + b/rest-api-templates/asterisk_processor.py | 4 + b/rest-api-templates/make_ari_stubs.py | 2 + b/rest-api-templates/res_ari_resource.c.mustache | 2 + b/rest-api-templates/transform.py | 2 + b/rest-api/api-docs/bridges.json | 15 + b/rest-api/api-docs/channels.json | 33 + b/rest-api/api-docs/endpoints.json | 20 + b/rest-api/api-docs/playbacks.json | 3 + b/rest-api/resources.json | 2 + b/tests/CI/buildAsterisk.sh | 2 + b/tests/CI/gates.jenkinsfile | 4 + b/tests/CI/periodics-daily.jenkinsfile | 2 + b/tests/CI/publishAsteriskDocs.sh | 4 + b/tests/CI/ref_debug.jenkinsfile | 2 + b/tests/CI/unittests.jenkinsfile | 2 + b/tests/CI/universal-asterisk-nongerrit.jenkinsfile | 4 + b/tests/test_abstract_jb.c | 39 + b/tests/test_aoc.c | 2 + b/tests/test_astobj2.c | 2 + b/tests/test_astobj2_thrash.c | 10 + b/tests/test_cel.c | 13 + b/tests/test_config.c | 2 + b/tests/test_conversions.c | 153 + b/tests/test_devicestate.c | 2 + b/tests/test_dns_naptr.c | 2 + b/tests/test_hashtab_thrash.c | 10 + b/tests/test_http_media_cache.c | 79 + b/tests/test_json.c | 60 + b/tests/test_linkedlists.c | 1 + b/tests/test_media_cache.c | 2 + b/tests/test_message.c | 2 + b/tests/test_mwi.c | 407 + b/tests/test_optional_api.c | 2 + b/tests/test_res_pjsip_session_caps.c | 176 + b/tests/test_res_prometheus.c | 829 + b/tests/test_res_rtp.c | 40 + b/tests/test_sorcery.c | 2 + b/tests/test_sorcery_memory_cache_thrash.c | 4 + b/tests/test_stasis.c | 8 + b/tests/test_stasis_channels.c | 4 + b/tests/test_stasis_endpoints.c | 22 + b/tests/test_stasis_state.c | 466 + b/tests/test_stream.c | 2 + b/tests/test_strings.c | 118 + b/tests/test_taskprocessor.c | 10 + b/tests/test_time.c | 170 + b/tests/test_utils.c | 6 + b/tests/test_voicemail_api.c | 24 + b/third-party/pjproject/Makefile | 17 + b/third-party/pjproject/configure.m4 | 199 + b/third-party/pjproject/patches/0011-sip_inv_patch.patch | 39 + b/third-party/pjproject/patches/0020-pjlib_cancel_timer_0.patch | 39 + b/third-party/pjproject/patches/0050-fix-race-parallel-build.patch | 72 + b/third-party/pjproject/patches/0060-clone-sdp-for-sip-timer-refresh-invite.patch | 28 + b/third-party/pjproject/patches/0070-fix-incorrect-copying-when-creating-cancel.patch | 37 + b/third-party/pjproject/patches/0090-Skip-unsupported-digest-algorithm-2408.patch | 212 + b/third-party/pjproject/patches/0100-fix-double-stun-free.patch | 82 + b/third-party/pjproject/patches/0111-ssl-premature-destroy.patch | 50 + b/third-party/pjproject/patches/0120-pjmedia_sdp_attr_get_rtpmap-Strip-param-trailing-whi.patch | 32 + b/third-party/pjproject/pjproject-2.10.tar.bz2.md5 | 2 + b/third-party/versions.mak | 2 + b/utils/Makefile | 9 + b/utils/ael_main.c | 2 + b/utils/astman.1 | 2 + b/utils/astman.c | 2 + b/utils/check_expr.c | 2 + b/utils/conf2ael.c | 4 + b/utils/db1-ast/hash/README | 2 + b/utils/db1-ast/hash/hash.h | 2 + b/utils/db1-ast/include/db.h | 1 + b/utils/db1-ast/mpool/mpool.c | 2 + b/utils/extconf.c | 12 + b/utils/frame.c | 4 + b/utils/frame.h | 4 + b/utils/muted.c | 6 + third-party/pjproject/patches/0010-ssl_sock_ossl-sip_transport_tls-Add-peer-to-error-me.patch | 157 + third-party/pjproject/patches/0020-patch_cnonce_only_digits_option.patch | 53 + third-party/pjproject/patches/0030-ssl-regression-fix.patch | 105 + third-party/pjproject/patches/0031-transport-regression-fix.patch | 187 + third-party/pjproject/patches/0040-pjsip-timer-refactor.patch | 1148 + third-party/pjproject/patches/0041-pjlib_cancel_timer_0.patch | 39 + third-party/pjproject/pjproject-2.9.tar.bz2.md5 | 2 + 800 files changed, 94220 insertions(+), 105606 deletions(-)